Whiting School of Engineering's Computer Science Department is seeking a
Software Engineer to assist the Phillippy lab in the development of bioinformatics methods for the analysis of long-read DNA sequencing data and personalized genomes. Assigned projects may include methods development for DNA sequencing, comparative genomics, genome assembly, and genome interpretation. The candidate will work closely with other members of the team, including students, postdocs, and senior staff, to advance the lab's research mission.
Responsible for the creation, implementation, maintenance, performance, production support and documentation of various departmental and enterprise-wide application systems. This includes but is not limited to the installation, modification, and testing of new and/or upgraded applications (packages or homegrown), operating systems, file structures, hardware, communication devices, and productivity tools. Applies analysis techniques and procedures to gather and then translate business requirements into functional/technical specifications and designs. Using functional specifications and designs, produces all or part of the deliverables. Maintains databases and application system code.
Responsible for full life cycle of medium to large sized complex projects; strong technical skills; strong ability to understand complex business processes. Develops solutions based on extensive technical knowledge, skills and experience; influences client towards innovative/integrated solutions.
Specific Duties & Responsibilities- The responsibilities listed below are typical examples of the work performed by this position.
- Not all duties assigned to this position are included, nor is it expected that everyone in this position will be assigned every job responsibility.
Analysis & Requirements Gathering
- Define complex business/clinical/education problems by meeting with clients to observe and understand current processes and the issues related to those processes.
- Provide written documentation of findings to share with the client and other IT colleagues.
- Gather complex system requirements by meeting with clients and researching existing technology to understand the business requirements and possible solutions for new applications.
Design & Development
- Develop detailed tasks and project plans by analyzing project scope and milestones for complex projects to ensure product is delivered quickly according to software lifecycle standards.
- Write functional/technical specifications from the complex system requirements, putting them into functional and technical descriptions for use by programmers and business analysts to develop technical solutions.
- Develop/change data input, files/database structures, data transformation, algorithms, and data output by using appropriate computer language/tools to provide technical solutions for complex application development tasks.
- Document code and associated processes by adhering to development methodologies, adding code comments and appropriate documentation to various knowledge-base system(s) to simplify code maintenance and to improve support.
- Provide monitoring and guidance in application design and development to more junior staff.
- Provide thought leadership in designing and developing innovative integrated solutions.
Testing & Documentation
- Create and document complex test scenarios using the appropriate testing tools to validate and verify application functionality.
- Test all changes by using the appropriate complex test scenarios to ensure all delivered solutions work as expected and errors are handled in a meaningful way.
- Author and maintain documentation by writing audience-appropriate materials to serve as technical and/or end-user references.
- Mentor junior staff in testing tools and technologies by reviewing their work.
Implementation & Maintenance
- Implement changes by adhering to the change management policies and procedures for any given project to communicate to all parties the nature, significance, and risk factors of the solution.
- Monitor changes and resolve complex problems by responding as they occur, by reviewing all processing and output of the newly implemented solution, and by proactively ensuring the solution works successfully to satisfy the customer requirements and to provide a smooth transition to the new solution.
- Provide support by investigating and resolving issues, including complex issues to ensure prompt, effective service.
In addition to the duties described above
- Develop robust computational methods to advance comparative and personalized genomics.
- Analyze data to contribute to biological discovery about previously inaccessible regions of the genome.
- Maintain software engineering best practices and disseminate results and software.
- Read scientific literature for background and to stay up to date in the field.
- Meet frequently with supervisor to report on progress.
- Present at internal lab meetings as well as to collaborators, and engage in all other lab activities.
- Author scientific publications reporting on results and methods.
- Support teaching activities as requested.
Minimum Qualifications- Bachelor's Degree (or foreign equivalent) in Computer Science, Computer Information Systems, Information Technology, Electronic Engineering, or a related field.
- Five years of related work experience with computer systems and applications.
- Additional education may substitute for required experience, to the extent permitted by the JHU equivalency formula.
Preferred Qualifications- Knowledge in the assigned application as well as the platform on which it runs. [JD4.1].
- Bachelor's Degree in Computer Science or related field, with a breadth of coursework covering the sciences and math; advanced computing topics such as algorithms, graph theory, machine learning, and ethics; and specialized topics in computational biology.
- Strong practical computational skills, particularly in Python, R, and shell scripting (as well as C, Java, JS, Go, React, SQL).
- Experience in a research computing environment, including with version control, pipeline development, and high-performance computing systems.
- Two plus years of experience working with genomic data, including knowledge and use of common.
- file formats: sam/bam, fastq, vcf, paf, bed
- software: samtools, bedtools, deepvariant, modkit, minimap
- pipelines / skills: alignment, variant calling, methylation data analysis
- Effective written and verbal communication skills and the ability to read and interpret scientific literature
- Interest in developing and/or applying computational methods for genome assembly, sequence alignment, variant detection, variant annotation, and information visualization
Technical Skills: Expected Skills & Proficiency Level- Agile Methodology - Intermediate
- Algorithms - Intermediate
- Application Programming Interface (API) - Intermediate
- CI/CD - Intermediate
- Cloud Serverless Computing Architecture - Intermediate
- Code Review - Intermediate
- Data Architecture and Design - Intermediate
- Data Structures - Intermediate
- Debugging - Intermediate
- Dev Ops - Intermediate
- JIRA - Intermediate
- New Product Development -Intermediate
- Secure Coding -Intermediate
- Service Orientated Architecture - Intermediate
- Software Design Patterns - Intermediate
- Software Development Life Cycle - Intermediate
- Software Engineering - Intermediate
- Unit Testing - Intermediate
The core technical skills listed are most essential; additional technical skills may be required based on specific division or department needs.
Classified Title: Software Engineer
Role/Level/Range: ATP/04/PE
Starting Salary Range: $73,300 - $128,300 Annually (Commensurate w/exp.)
Employee group: Full Time
Schedule: M-F, 37.5 hrs weekly
FLSA Status: Exempt
Location: Hybrid/Homewood Campus
Department name: Department of Computer Science
Personnel area: Whiting School of Engineering