Software Engineer/Full Stack Developer

John Hopkins University
Parkville, MD
Nov 25, 2020
Nov 29, 2020
Full Time
Position Overview: The Schatz Lab in the Biology department at Johns Hopkins University is looking for self-driven individuals that can work independently to fill multiple software development positions on the Galaxy Team ( The work will revolve around the Galaxy application and supporting software with emphasis on DevOps and systems engineering. These positions seek someone who can: Design and build cloud infrastructure necessary to allow Galaxy to operate on remote data and connect to remote compute resources; Enhance the Galaxy Helm chart and Galaxy Kubernetes deployments for high-availability and self-healing; Decompose Galaxy into service-based architecture to facilitate more federated approach to resource harnessing; Integrate external authentication and authorization services and solution. General Position Summary: Responsible for the creation, implementation, maintenance, performance, production support and documentation of various research software. This includes but is not limited to the installation, modification, and testing of new and/or upgraded applications (packages or home grown), operating systems, file structures, hardware, communication devices, and productivity tools. Applies analysis techniques and procedures to gather and then translate user requirements into functional/technical specifications and designs. Using functional specifications and designs, produces all or part of the deliverables. Describe the position s roles & interactions: As an engineer on the Galaxy Team, you will be responsible for continuing to build support for running and using Galaxy on Kubernetes. This involves developing the Helm chart, designing back-end software to allow Galaxy to make better use of the Kubernetes-based deployments, run experiments to optimize user experience, finding emerging tools and methodologies and showing to the team how to integrate them into the existing systems and processes. Describe the specific systems, applications, projects for which the position is responsible: Galaxy application (, which is a software framework that (a) enables researchers to store, analyze, visualize and share genomic data and (b) provides genomic tool developers with the ability to deploy their tools within a complete analysis framework. Galaxy is an extremely popular data analysis platform with thousands of worldwide researchers using it on a daily basis. Describe scale/size of area, project and/or system supported: All work performed in the lab is open source and we are committed to the openness of scientific enterprise. Galaxy is written in Python and Javascript with vue.js while the support infrastructure relies on Helm, Kubernetes, Docker containers, and Ansible. We are looking to expand the capacity of the current application and provider better integration with other similar tools. List required & preferred skills specific to position: Full stack developer: Helm / Python / Javascript; Knowledge of systems tools such as Helm and Kubernetes, strong understanding of Python and web development principles, including REST API design, understanding of web frameworks, such as Django; familiarity with Javascript (vue.js specifically) is a plus. Job Scope/Complexity: 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. Required Education: Bachelor s degree required. Additional experience may be substituted for education. Required Experience: Five years of related work experience with computer systems and applications. Additional education may substitute for experience. Equivalency Formula: 30 undergraduate degree credits or 18 graduate degree credits = 1 year of experience. For jobs where equivalency is permitted, up to two years of non-related college coursework may be applied towards the total minimum education/experience required for the respective job. Preferred Job Qualifications: Knowledge in the assigned application as well as the platform on which it runs. Knowledge, Skills, & Abilities (KSA s): Must possess all requisite knowledge, skills, and abilities as posted in the supplemental section. Must demonstrate strong critical thinking and analytical reasoning skills. Ability to work on multiple priorities effectively. Ability to prioritize conflicting demands. Ability to execute assigned project tasks within established schedule. Ability to work collaboratively in a team environment. Ability to communicate effectively in the service of users and colleagues. Writes and communicates clearly and concisely. Possesses sound documentation skills. Ability to maintain confidentiality. Must demonstrate exemplary customer service skills Job Requirements: Job 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 AND REQUIREMENTS GATHERING Define computer systems architecture for complex research processes related to genomic data analyses by interacting with users to observe and understand current processes and the issues related to those processes. Provide written documentation of findings to share with colleagues. Gather system requirements by meeting with users and researching existing technology to understand the project requirements and possible solutions for new applications. DESIGN AND DEVELOPMENT Develop detailed tasks and project plans by analyzing project scope and milestones to ensure product is delivered in a timely fashion according to software lifecycle standards. Write functional/technical specifications from the 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 AND DOCUMENTATION Create and document test scenarios using the appropriate testing tools to validate and verify application functionality. Test all changes by using the appropriate test scenarios to ensure all delivered solutions work as expected and errors are handling 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 AND 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 in order 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.