Sr. Embedded Software Engineer
Company | Iridium Communications |
---|---|
Location | McLean, VA, USA |
Salary | $Not Provided – $Not Provided |
Type | Full-Time |
Degrees | Bachelor’s |
Experience Level | Senior, Expert or higher |
Requirements
- Bachelor’s degree in electrical engineering, computer engineering, or a related technical field with 8+ years of relative software experience
- 5+ years (post-college) developing embedded software for microcontrollers
- 6+ years (post-college) developing software in C, with a solid understanding of ANSI C, common data structures and memory management techniques
- 4+ years using Linux command-line interfaces
- Demonstrated expertise in asynchronous, event-driven programming paradigms
- Extensive experience designing embedded systems using preemptive, multitasking, real-time operating systems
- Strong knowledge of OSI model, networking protocols, interfaces, and hardware subsystems
- Comprehensive knowledge of communication protocols such as UART, SPI, and I2C
- Hands-on experience in reading schematics and data sheets for components
- Experience benchmarking algorithm performance for embedded systems using a combination of software and hardware techniques
- Ability to proactively seek assistance when needed
- Strong focus on continuously improving skills and acquiring new knowledge
- Excellent communication skills, with the ability to clearly convey products, deliverables, analyses, and issues to diverse audiences
- Confidence and ability to build and sustain relationships with leadership and colleagues across teams
- Analytical mindset, with the ability to assess situations or problems, think critically, and devise out-of-the-box solutions
- Proactive in providing feedback and enthusiastic in sharing your knowledge
- Capable of prioritizing your own tasks and potentially the tasks of others while making sure deadlines are met
Responsibilities
- Design and develop embedded software for microcontrollers, ensuring high-quality, performance, and reliability
- Autonomously execute software development tasks while meeting project timelines
- Implement and optimize real-time operating systems, device drivers, and communication protocols
- Debug and troubleshoot firmware issues, ensuring timely resolution
- Reproduce, isolate and debug complex low-level problems that may span 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, such as software requirements, ICDs, test plans and procedures
- Lead and mentor junior software engineers to improve their skills and increase team productivity
- 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
- Provide technical guidance to cross-functional teams and stakeholders
- Confidently present complex information to groups outside of your team through briefings, documentation, implementation plans, or issue resolutions
Preferred Qualifications
- 3+ years of experience in developing ancillary tools in Python
- 2+ Years of experience developing software for ARM M-series microcontrollers
- 2+ Years of expertise in multi-threading/multi-tasking
- 3+ years of experience working with agile methods (including Scrum or Kanban) & environment using the Atlassian suite
- Hands-on experience with signal analysis tools such as Wireshark
- Embedded systems troubleshooting experience
- Understanding of software production workflow using continuous integration
- Knowledge of best practices for software version control (e.g., Git, Bitbucket)
- Familiarity with RF communication systems and protocols
- Working knowledge of bash, make and similar programming languages