Embedded software developers are in charge of creating effective embedded software applications for their organization. They are responsible for programming software capabilities based on project requirements, as well as resolving obstacles as they arise during the development process. Their main functions include coding firmware, troubleshooting software packages as required, providing support packages for embedded systems, and producing high-quality technical documentation for future reference. Generally, embedded software developers report their progress to the software lead in their department.
Other tasks performed by embedded software developers include eliminating software bugs by implementing modules and sub-systems, overseeing defect verification, and taking part in training sessions for newly implemented software. They interact with hardware devices to check for software inconsistencies, as well as perform product and feature design. Additionally, embedded software developers participate in testing meetings to facilitate control processes before shipping and provide valuable feedback for future versions.
A bachelor's degree in computer science or a related field is necessary for this position, as is relevant prior experience. Industry certifications may be required or preferred. Embedded software developers should have experience writing boot loaders and developing signal-processing algorithms. They should also be proficient with a variety of operating systems to test for quality problems. They must be organized individuals that can multitask and effectively prioritize key activities, as well as have strong communication abilities to interact with other software developers in a team environment. Embedded software developers need to pay close attention to detail and be able to work on their own with minimal supervision.
Embedded Software Developer Tasks
Write performance critical code in resource-limited environments, including low power, low memory, restricted bandwidth, CPU, etc.
Test and document software.
Use kernel debuggers, system dumps, and assembly language, as well as higher level languages.
Write, modify, and debug software for embedded devices.