Job Responsibilities:
This position will be responsible for developing production ready software following a defined software development process. The person must be capable of analyzing specifications, developing architecture, developing unit designs and developing test plans and cases. The person will be responsible for end-to-end software development by taking a proof-of-concept technology to production.
- Define next generation SW architecture aligning to client’s silicon roadmap.
- Develop production ready embedded solutions and host applications.
- Develop PC/host-based SW components to translate user inputs to data which can be interpreted by embedded framework/stack.
- Analyze customer and internal requirements and specifications and translate these into software requirements and designs.
- Analyze existing embedded software to add features, optimize, fix defects, and/or port to different platforms.
- Test software designs and code at the unit level (developer tests) to ensure that all requirements are met, and the highest software quality is achieved.
- Develop automated embedded software tests.
- Reproduce complex software problems and provide solutions to them.
- Identify product requirement or performance issues. Work with external teams as necessary to resolve issues in a timely manner.
Basic Qualifications:
- Bachelor’s/Master’s degree in Electrical/Electronic Engineering, Computer Engineering, or equivalent and 5-8 years of related industry experience.
- Strong embedded C and/or C++ programming skills.
- Background in system firmware (including drivers like SPI, I2C, UART).
- Experience in programming in any assembly language will be an added advantage.
- Basic experience in one or more technologies for host application development such as WPF, MAUI, Xamarin, React, Angular or comparable languages.
- Ability to read schematics and assist in debugging analog and digital hardware.
- Able to use oscilloscopes and logic analyzers for troubleshooting.
- Working knowledge of software development tools (debugger’s, emulators, compilers, etc.).
- Experience in object-oriented software design and development.
- Experience developing and debugging software in a real-time, embedded, multiprocessor, multi-interface environment.
- Strong attention to detail.
- Exemplary verbal and written communication skills