Responsibilities
- Participate in software development projects following a formal process, including software design, development, code reviews, hardware reviews, use of software standards, and generation and use of testing frameworks
- Provides broad support, analysis, design, development, debugging, and maintenance related to software running on real-time and non-real-time OS and bare metal microprocessor and microcontroller systems
- Integrate firmware, embedded software apps with sensors, communication modules (e.g., BLE, LTE, Wi-Fi), and other hardware components.
- Debug, optimize, and validate embedded software applications on target hardware.
- Coordinates the design, development, and testing of new software, drivers, interfaces, TCP/IP stack, SDKs, APIs, and applications
- Prepares documents, including requirements analysis, design, unit testing plans, release notes, and user guides, etc.
- Investigates, recommends, and implements new technologies
Requirements
- Experience in defining project scope, deliverables, and team requirements
- Ability deliver results against milestones and deliverables
- Proficiency in C/C++ for embedded systems.
- Experience with MCUs, SoCs, and embedded development tools (e.g., JTAG, oscilloscopes, logic analyzers).
- Familiarity with real-time operating systems (FreeRTOS, Zephyr, etc.), Linux OS, and Drivers.
- Familiarity with secure boot, firmware OTA, and TLS encryption.
- Strong debugging and troubleshooting skills.
- Able to work successfully in a deadline-driven, fast-paced environment and effectively multitask priorities in a team-oriented environment.
- Must be flexible and able to adapt to changing requirements and schedules
- Demonstrates problem-solving skills with the ability to think strategically.
- Ability to effectively present information and respond to questions from groups
- Strong attention to detail
- Minimum of 3 years’ experience in software development
Nice to Have
- Experience with Agile projects (Scrum)