**Senior Software Engineer Job Description**
**General Position Summary:**
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 home grown), 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.
The ideal candidate will possess technical expertise in engineering, building, and deploying enterprise class systems and applications, have a deep understanding of the software development lifecycle and associated operations and best practices, along with a breadth and depth of understanding of related development and automation tools and techniques.
In this role, the Senior Software Engineer will work collaboratively and, in some cases, oversee other software engineering professionals to deploy and operate complex clinical and enterprise systems. The Senior Software Engineer understands the "big picture" and possesses the soft skills necessary to coordinate with various multidisciplinary teams spread across multiple geographic locations to accomplish development and deployment objectives.
Specifically, the Senior Software Engineer will participate in the development, installation, modification and testing of enterprise applications and supporting server environments and software development pipeline tooling, which may include but not be limited to Precision Medicine, Enterprise platforms, and/or TIC contract projects.
In addition to writing code using Java, Spring Boot, Angular, and using various backend technologies (i.e. relational and NoSQL databases), the candidate should also have a strong background in server administration and must be comfortable developing custom scripting and configuration as code to support deployment and infrastructure automation, containerization (i.e. Docker), orchestration (i.e. Kubernetes, Swarm), and monitoring. Must have the ability to use a wide variety of open source technologies and cloud services, specifically Azure. Experience building and deploying native and hybrid mobile apps to the respective Apple Store and Google Play Store is a plus, but not required.
The Senior Software Engineer is responsible for full life-cycle of large/long-term highly complex projects. Typically manages multiple projects of varying complexities. Based on expert technical knowledge, skills and experience, develops broad-based solutions involving multifaceted technologies, and business processes. Leads overall strategy, design & architecture for solutions.
The Technology Innovation Center (TIC) is uniquely positioned within Johns Hopkins to help design, build, and deploy novel enterprise, departmental, and clinical applications that strive to improve workflow, outcomes, and patient care. Our applications focus on turning data and algorithms into useful visualization tools, improving workflows such as patient hand-off, rounding, and cross-team collaboration, and helping patients with medication adherence, data gathering, and overall clinical education.
**Our development languages include:**
**Our development platforms include:**
**Our database technologies include:**
**Our DevOps and CI/CD stack includes:**
On-premise Windows & Linux
Microsoft SQL Server
Our team frequently works with data from multiple sources including our Enterprise EMR (Epic), researcher curated data, and other IT systems. The applications we design, build, and support are critical to our healthcare operations and require high-availability, 24/7 monitoring, and on-call support.
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
1. Define highly 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.
2. Gather highly complex system requirements by meeting with clients and researching existing technology to understand the business requirements and possible solutions for new applications.
DESIGN AND DEVELOPMENT
1. Develop detailed tasks and project plans by analyzing project scope and milestones for highly complex projects in order to ensure product is delivered in a timely fashion according to software lifecycle standards. Direct lower level staff by reviewing tasks and milestones for adherence to quality of deliverables.
2. Write functional/technical specifications from the highly complex system requirements, putting them into functional and technical descriptions for use by programmers and business analysts to develop technical solutions. Direct lower level staff by reviewing their completed work.
3. Develop/change data input, files/database structures, data transformation, algorithms, and data output by using appropriate computer language/tools to provide technical solutions for highly complex application development tasks. Direct lower level staff by reviewing their work.
4. Document code and associated processes by adhering to development methodologies, adding code comments and appropriate documentation to various knowledgebase system(s) to simplify code maintenance and to improve support. Direct lower level staff by reviewing their work.
5. Provide monitoring and guidance in application design and development to more junior staff. Give direction and leadership in techniques and tools to lower level staff.
6. Provide experienced leadership for strategic planning in designing and developing comprehensive innovative integrated solutions.
TESTING AND DOCUMENTATION
1. Create and document highly complex test scenarios using the appropriate testing tools to validate and verify application functionality.
2. Test all changes by using the appropriate highly complex test scenarios to ensure all delivered solutions work as expected and errors are handling in a meaningful way.
3. Author and maintain documentation by writing audience-appropriate materials to serve as technical and/or end-user references.
4. Mentor junior staff in testing tools and technologies by reviewing their work.
IMPLEMENTATION AND MAINTENANCE
1. 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.
2. Monitor changes and resolve highly complex problems requiring the highest level of technical expertise 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.
3. Provide support by investigating and resolving highly complex issues to ensure prompt, effective service.
**Focus and Responsibilities of this Position**
The Senior Software Engineer will serve clients across the enterprise as assigned with an emphasis on web application development, deployment, and maintenance for enterprise projects using Java, Angular JS and Microsoft SQL Server. The Senior Software Engineer may also be asked to work with other application technologies such as: .Net, C#, PHP, Node.js, MongoDB. A close working relationship with customers will be required to define requirements for myJH content, application design, testing, deployment, and maintenance.
The Senior Software Engineer will focus efforts on enterprise related projects. Application development will utilize agile development techniques as well as following department defined continuous integration protocols for application documentation, testing, and deployment. The Senior Software Engineer will be expected to use Jira, Confluence, B