Job Description
SUMMARY:
The Software Engineer participates in requirements, design, development, integration, and testing of software systems used to create, store, optimize, and manage patient treatment plans. The Software engineer collaborates in a complex environment integrating software with other software and hardware subsystems for an advanced medical device. Our work has a daily impact on patients worldwide, and we hold a high bar for quality and rigor.
REPORTING TO/DEPARTMENT:
Reports to the Manager, Software Engineering in the Software Engineering team
ESSENTIAL DUTIES AND RESPONSIBILITIES
Software Development (Build, Extend, Maintain)
- Develop and maintain software that supports the lifecycle of a complex radiation therapy medical device.
- Write high-quality, reliable code that fulfills product and subsystem requirements in a complex clinical domain.
- Implement automated tests (unit/integration as appropriate) to validate functionality and reduce regressions.
- Contribute to sustaining engineering by troubleshooting, participating in root-cause analysis, and resolving issues found in new or existing functionality.
Software Design & Architecture (Make the System Better)
- Directly impact the development and architecture of software that creates, stores, optimizes and delivers patient treatments.
- Drive critical design and implementation decisions and participate in design discussions for complex systems.
- Present concise designs through written and oral reviews; contribute to clear documentation of designs, decisions, and outcomes.
- Contribute to subsystem requirements and verification approaches for new features.
Performance & Computational Solutions (Accuracy + Responsiveness)
- Participate in decisions affecting high-performance computation solutions to provide responsive and accurate results that meet clinical expectations.
- Collaborate on technology choices (e.g., languages/libraries, compute approaches) to support performance, maintainability, and testability.
Quality, Compliance, and Ways of Working
- Work closely with team members to implement quality applications that meet or exceed rigorous testing expectations.
- Operate effectively in a regulated industry with strict process requirements; document work and follow the defined development processes.
- Support continuous improvement efforts (e.g., coding standards, code reviews, test coverage, build/test automation) to increase engineering efficiency without sacrificing quality.
Collaboration & Technical Contribution
- Collaborate across disciplines (software, systems, test, product, clinical/field stakeholders as needed) to deliver integrated solutions.
- Cross-pollinate the team with theory and practice of software development, object-oriented design, and computer languages.
- Proactively share information and communicate technical status, risks, and decisions to the right audience at the right level of detail.
Travel
- Some travel (<10%) may be required.
QUALIFICATIONS
Required
- BS in Computer Science, Computer Engineering, or an equivalent combination of education and experience.
- Proficiency in an object-oriented programming language such as C#, Java or C++.
- Experience with simulators and scaffolding for testing interoperability with third-party system specifications.
- Experience with object-oriented analysis & design, including correct use of design patterns and awareness of anti-patterns. Experience with client/server architecture. Strong written and verbal communication skills; able to present and defend designs in reviews.
- Must be able to work effectively in a team environment
Preferred
- Experience with interoperability concerns such as Semantic Modeling and Data Exchange protocols such as DICOM, HL7v2 and FHIR.
- Experience with Medical Device development or other regulated environments.
- Experience with Python or related languages.
- Experience with client / server architecture.
- Strong mathematics and/or physics background.
- Experience developing software in multi-threaded / multi-core environments.
- Experience with modern software practices and toolchains (e.g., configuration management such as Perforce/Git; CI/CD build, deployment, and test tooling).
WORKING CONDITIONS
- Indoor Environment: The position takes place indoors, providing a comfortable and climate-controlled workspace.
- Sedentary Work: This role involves extended periods of sitting and working at a desk, requiring good ergonomic practices.
- Computer Usage: Proficiency with computers, including software applications and communication tools, is essential for tasks and collaboration.
- Minimal Physical Strain: While physical demands are generally low, occasional light lifting and moving of objects might be required.
- Structured Schedule: This position usually follows regular business hours, promoting a consistent and predictable work routine.
To qualify for this position, candidates must be able to furnish proof that they are authorized to work in the country they are applying on a permanent basis without sponsorship.