Software Engineer
AtriCure, Inc. · Minneapolis, MN · 6 days ago
Information Technology$71k–$104k/yrFull-time
Position Summary
This position will contribute to the company’s success through the design and development of software on capital equipment and devices. The individual will work on capital equipment projects to develop and test software for instrumentation that is used by cardiac surgeons and electrophysiologists. This position contributes in a collaborative way with management, project teams, production associates, and other work groups to achieve the company’s goals of producing market-leading products through positive patient outcomes. The Software Engineer may work independently on projects with broad scope or be a team leader/member on PD projects.
Essential Functions of the Position
- Develop software specifications including the integration and consideration of applicable standards and regulations.
- Absorb assistance in software development tasks to include design, integration, and formal testing of capital equipment and devices.
- Work with other engineers and cross-functional team members in planning, prioritizing, and executing assigned tasks within deadlines.
- Perform a variety of complex engineering design and development tasks, to include design, testing and analysis, verification, and validation of software components in capital equipment and machinery.
- Execute and complete assigned projects within the constraints of time, scope, and budget for the project.
- Implement and test advanced software security techniques.
- Attend team meetings to communicate project status, new ideas, and any issues.
- Participate in design reviews and recommend improvements.
- Assist in risk assessment and mitigation activities.
- Work with QA team in preparing test cases, plans, and procedures.
- Develop software test methods.
- Recommend course of actions to resolve software issues, improving the functionality of existing software, and ensuring that the design, application, and maintenance of software meets the quality standards.
- Assist in maintenances and upgrades of existing software applications.
- Provide support in all phases of Software Development Life Cycle (SDLC) and ensure to deliver high-quality products.
- Generate and document intellectual property.
- Determine technology choices and ensure proper software engineering practices are in place for projects.
- Provide input and participate in the development and delivery of solutions by estimating, planning, designing, implementing, and testing software applications.
- Evaluate user needs, time limitations, and system limitations when developing software plan and strategy for an effective technical solution to meet business requirements.
Basic Qualifications
- BS in Systems Engineering, Electrical Engineering, Software Engineering, or Computer Engineering.
- 2+ years of experience in software development.
- Demonstrated skills and knowledge in software engineering.
- Experience writing in C/C++ or similar language.
- Experience in software development methodologies and structured approaches to software deployment.
- Excellent written and oral communication skills.
- Knowledge of Design Controls and CyberSecurity.
- Capable of prioritizing tasks and provide a timely schedule of completion.
- Demonstrated proficiencies of communicating software best practices.
- Ability to travel up to 10%.
PREFERRED QUALIFICATIONS
- MS in Systems Engineering, Electrical Engineering, Software Engineering, or Computer Engineering.
- 3+ years of experience in software development.
- Experience designing, developing, and maintaining software for embedded devices in safety-critical systems.
- Proficiency in C/C++, Rust, Python, JavaScript.
- Familiarity in I2C, SPI, and CAN communications.
- Familiarity with oscilloscopes and logic analyzers.
- Experience using Docker, including creating docker images and writing docker compose files.
- Experience using embedded Linux build systems (Yocto preferred).
- Experience automating build and test for embedded software development workflows (experience with Jenkins preferred).
- Experience writing and debugging code for RTOS-based (FreeRTOS and/or Zephyr preferred) and embedded Linux devices.
Other Requirements
- Ability to regularly walk, sit, or stand as needed.
- Ability to occasionally bend and push/pull as needed.
- Ability to regularly lift up to 25 pounds, occasionally lift up to 50 pounds.
- Ability to pass pre-employment drug screen and background check.