Embedded – Software Engineer III
Company | Iridium Communications |
---|---|
Location | McLean, VA, USA |
Salary | $Not Provided – $Not Provided |
Type | Full-Time |
Degrees | Bachelor’s |
Experience Level | Senior |
Requirements
- Bachelor’s degree in electrical engineering, computer engineering, or a related technical field with 5+ years of relative software experience
- 3+ years’ experience developing embedded software, preferably for microcontrollers
- 4+ years’ experience developing software in C; solid understanding of ANSI C, common data structures and memory management techniques
- Familiarity with asynchronous event driven paradigms
- Proven experience in embedded systems design with preemptive, multitasking, real-time operating systems
- Excellent knowledge of OSI model, networking protocols, interfaces, and hardware subsystems
- Solid understanding of communication protocols such as UART, SPI, and I2C
- Adequate knowledge of reading schematics and data sheets for components
- Experience with benchmarking algorithm performance on embedded systems using software and hardware techniques
- Strong communication skills, with the ability to confidently present products, deliverables, analyses, and/or issues
- Possess an analytical mindset, with the ability to understand a situation or problem and think critically to make decisions or come up with solutions
- Be comfortable managing upward, including being a proactive communicator and asking for help when needed
- Have confidence and be able to establish valuable relationships with others
- Must be able to prioritize key tasks and have a strong sense of ownership over your work
- Be active in seeking out ways to continuously improve yourself and gain new knowledge
Responsibilities
- Design and develop embedded software for microcontrollers ensuring high-quality, performance, and reliability
- Implement and optimize real-time operating systems, device drivers, and communication protocols
- Debug and troubleshoot reported firmware issues, ensuring timely resolution
- Reproduce, isolate and debug complex low-level problems that may span between hardware and software interfaces
- Integrate, build, and manage embedded software configuration
- Write and maintain unit, regression and pairwise test suites for mobile product software
- Create and maintain documentation, including software requirements, ICDs, test plans and procedures
- Review work products created by other team members
- Collaborate with software, hardware, and system development engineers
- Work cross functionally to instill a strong culture of product quality within the organization
Preferred Qualifications
- 1+ years of experience in developing ancillary tools in Python
- Experience developing software for ARM M series microcontrollers
- Experience using Linux command-line interfaces
- Familiarity with multi-threading/multi-tasking
- Familiarity with signal analysis tools such as Wireshark
- Demonstrated embedded systems troubleshooting experience
- 1+ years of experience working with agile methods & environment using the Atlassian suite
- Demonstrated understanding of software production via continuous integration
- Demonstrated understanding of best practices for software version control (Git, SVN etc)
- Knowledge of RF communication systems and protocols
- Working knowledge of bash, make and similar programming languages