Architect – Embedded Systems
Responsibilities
- Layout the end-to-end technical architecture considering the right technology stack, short to long-term goals of the business solution, and functional / non-functional requirements.
- Liaise with vendors, onsite and client architects, and other technical specialists counterparts such as security, performance, and user experience and deliver the optimum solution.
- Take ownership of the architecture, review and revise the solution architecture according to updating requirements and emerging technologies and standards.
- Work closely with the technology specialists to come up with a solid design and ensure superior code quality with an emphasis on simplicity, maintainability, and performance.
- Be responsible for non-functional requirements of the solution including performance, security, robustness, reusability, etc.
- Develops and maintain technical documentation covering architecture, design, and verification.
- Evaluate, suggest, enforce and track best engineering practices.
- Engage in the recruitment and selection process to attract new talents and mentor and coach the team members.
Required Skills
- Strong software engineering skills and hands-on development in C/C++ programming languages, modem C++ concepts, standard libraries, OOP/SOLID concepts, and design patterns.
- Development experience in Microsoft Windows, Linux, and other Unix-like operating systems.
- Understanding of design concepts and APIs.
- Unit-testing, knowledge of concepts such as code coverage, TDD, good debugging, and troubleshooting skills
- Experience using tools for source control, code analysis, code coverage, unit testing, troubleshooting, and CI/CD practices.
- Application development in resource-constrained embedded environments, cross-compiling, and associated development toolchains.
- A good understanding of embedded system architectures and hardware communication protocols such as RS232/I2C/SPI/CAN is a plus.
- User interface design in MFC, WPF, or other frameworks compatible with C / C++ languages will be an added advantage.
- Experience in multi-threaded programming, inter-process communication, and boost libraries will be an added advantage.
- Strong proficiency in Python, Java, or .Net programming languages will be a plus.
- Ability to quickly grasp new technology and use it for rapid prototyping.
- Sound knowledge in electronics/embedded systems.
- Experience with electronic test equipment (oscilloscope, function generator, power supply, etc.) and embedded software tools, debuggers, cross compilers, etc.
- Excellent interpersonal, presentation, and communication skills.
Qualifications and Experience
- A degree in electronic / computer science or equivalent in a relevant capacity.
- 06+ years of engineering experience of which at least 03+ years of experience in a tech lead/architect position.
- Experience with agile development methodologies.
- Exposure to TDD/Unit Testing and thorough adherence to maintaining code quality.
- Architectural skills and practical experience in applying design principles.
- Ability to analyze large features and implement practical/scalable solutions.
- Proven leadership skills with the ability to perform in a multi-disciplinary technical team environment.