Develop and maintain embedded software for Analog Devices' extensive product portfolio
Collaborate with cross-functional teams to deliver high-quality software solutions for embedded systems
Architect, develop, and maintain efficient, reusable, and reliable embedded software for diverse hardware platforms
Lead software architecture and design efforts, integration and system testing, mentor junior engineers, and foster a culture of continuous learning
Define and execute system-level test strategies and test plans across multiple subsystems to ensure software functionality, performance, and quality in compliance with requirements and company standards
Design, develop, and maintain test automation frameworks; execute manual and automated tests; analyze results; and identify, document, and track defects
Conduct thorough testing, debugging, and validation to ensure high performance and reliability
Optimize code for performance, memory usage, and power consumption
Participate in code reviews, enforce best practices, and maintain high standards of reliability
Stay current with industry trends, emerging tools and technologies, processes and best practices
Produce clear technical documentation, including design specifications and user guides
Contribute to open-source initiatives and collaborate on large codebases
Requirements
Bachelor’s degree in computer engineering, Electronics Engineering, Computer Science, or related field; master’s degree is preferred
Extensive experience in firmware or embedded software development, with a strong understanding of C/C++ programming languages
Proficiency in developing software for microcontrollers and microprocessors
Experience with bare-metal programming, real-time operating systems (RTOS), Zephyr, or Linux OS
Deep knowledge of hardware communication protocols (SPI, I2C, UART, CAN, etc.) and other microcontroller peripherals such as ADCs, DACs, timers, PWMs and GPIO
Strong experience in multi-core environment system validation, unit testing, software verification, and test automation
Strong experience with integrating, building, and testing of multi-threaded applications
Experience in Python programming
Mastery of Git and version control and defect tracking tools; active contributions to open-source projects are a plus
Excellent problem-solving skills, attention to detail, and ability to debug complex systems
Proficiency in using different IDEs, laboratory equipment such as oscilloscope, logic analyzers, signal generators, and JTAG/ICE debugger
Strong communication and collaboration skills
Proven experience in software architecture and design patterns.