Software & Automation Engineer
Software & Automation Engineer
We are looking for a Software & Automation Engineer to join our client in Bedford, Ma on a direct hire basis.
The day-to-day work of the Software and Automation Engineer consists mainly of time at a computer with some time in meetings. The SAE is responsible for the automation software of the company's software. Software and Automation Engineer might designate the implementation and testing tasks to lower-level employees and focus on the overall integration progress and stability of the system.
- Leads software automation (a unique combination of precision 3d and 2d image processing and fluidics control)
- Develops and implements new and improves existing algorithms
- Contribute and lead all phases of the hardware and software integration lifecycle
- Verify hardware and software interface design
- Represent software requirements for automation (camera positioning, camera angles, camera resolution, focus of the camera, filter selection, brightness/darkness of the camera images) in meetings with the electrical and mechanical engineering team
- Establishing strong partnerships with the electrical and mechanical engineering team
- Identify areas of technical risks on the project and proactively mitigate these risks
- Translating hardware and software integration findings into design improvements
- Ensure high quality and punctual software development
- If needed and required - develop Use Cases and various UML diagrams (e.g., Class Diagrams, Activity Diagrams, Sequence Diagrams, Communication Diagrams, State charts, etc.) that represent the behaviors and behavioral constraints of the hardware and software integration.
- Develop executable models of systems or subsystems.
- Perform model checking.
- Develop existing applications by analyzing and identifying areas for modification
- ‘Bolting together’ existing software products so that they work together and create code to link them
- Researching, designing, writing and testing new software programs
- Problem-solving and thinking laterally as part of a team, or individually, to meet the needs of the project
- Maintaining applications by monitoring, identifying and correcting software defects
- Database administration or maintenance if required
- Author technical system design documents and proper documentation as required by the quality assurance development process
- Creating technical specifications, testing and implementation plans
- Working closely with other staff to meet customer needs
- Consulting with clients / colleagues concerning the maintenance and performance of software application and asking questions to obtain information
- Integrating internal and external product design into a cohesive user experience
- Creating prototypes and authoring detailed interaction specifications
- Successfully communicating conceptual ideas and design rationale
Software and Automation Engineer must be able to do the following task in their job function:
- Architect and design quality software (embedded software if required) for integrated complex medical instruments, to be implemented under an FDA compliant product development process
- The Software and Automation Engineer works very closely with the Software Architect on an appropriate software architecture based on the requirements and design elements contained in a system specification.
- Maintains and evolves hardware and software integration documents based on evolving system requirements and industry trends and technologies.
- Works very closely with the electrical and mechanical engineering team.
- Designs and develops software, architecture components and services to facilitate development and test of production software.
- Analyzes risk and report problems in meeting system requirements.
- Provides supporting information to the engineers to aid in the creation of a system specification.
- Assists software designer/implementers with the creation of detailed design specifications for the hardware and software integration.
- Leads the review process for hardware, mechanical and software integration documents.
- Performs software version control and maintain periodic compilation schedule.
- Participates in the system specification review process to ensure system requirements can be translated into valid and robust hardware and software integration.
- Complies with all applicable product development processes.
- Performs detailed software design as well as implements and/or maintains code according to duties and responsibilities.
- Ensures the overall integrity of the software architecture and validate it against the hardware, mechanical and software integration and system specification.
- Records hardware, mechanical and software integration requirements in a software architecture document using use cases and the Unified Modeling Language (UML), when needed and required.
- As a part of a multi-disciplinary team, create product proposals with cost and time estimates.
- Identifies tools, technologies and practices to adopt to improve SW development and hardware and software integration efforts.
- Works cooperatively within the software group as well as across disciplines such as systems, electrical, optical and mechanical
- Mentors less experienced engineers.
What you need for this position:
- BSEE, BSCE, BSCS a must, Master's is preferred.
- Professional history in computer vision related to image processing, image analysis, object recognition and classification
- Excellent knowledge of theory and practice of computer vision methods - Object detection/recognition, scene understanding
- Solid software development skills and ability to write production quality code for consumer electronics products or medical devices
- At least 3+ years of practical experience designing and writing C and C++ multi-threaded, and multi-process software
- Must have excellent C++ programming skills - Efficient algorithm development
- Must have strong knowledge of object oriented design and development
- Must be willing to work on time critical issues as needed.
- Experience with scripting languages, build systems, and version control systems
- Experience with video (including compressed) and streaming
- Other skills required include:
- Knowledge of linear algebra, algorithms and data structures and statistics
- Familiarity with MATLAB
- Experience with compilers, profilers, and debuggers
- Clear and concise communicator; good at setting expectations and raising issues as needed
- Strong team player and positive attitude
- Loves working in a collaborative SW environment (SDLC, Agile SCRUM).
- Medical Device background is a plus
- Direct driver (kernel and user mode) and systems level experience with Windows operating system is a plus
- Familiarity with OpenCV is a plus