What We’re Looking For:
Iridium is seeking a Senior Embedded Software Engineer to join our Mobile Product Software Engineering Team! As an Embedded Software Engineer, you will be responsible for enhancing and sustaining the source code used in our mobile products and associated engineering tools. In this role, you’ll be support the software for Iridium’s transceivers while contributing to the development of high-quality, long-lasting products for our customers. This role is perfect for someone who is passionate about creating reliable and robust products, takes pride in the long-term success of their work, and is highly self-reliant.
What You’ll Do:
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
What You’ll Need to Succeed:
Bachelor’s degree in electrical engineering, computer engineering, or a related technical field with 8+ years of relative software experience, including:
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
Things That Would be Great if You Brought to the Table:
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
We’ll also need you to:
Ability to travel to meetings with geographically remote teams as needed (typically once per quarter)
Willingness to work a hybrid schedule, with at least one week per month in the office (located in McLean, VA) and additional in-office days as needed
US Citizenship required
Work Environment:
This position primarily works in an office setting and is largely sedentary with the majority of the position working with a computer. The role typically requires the use of basic office equipment such as a phone, video, computer, keyboard, mouse, and printer.
Iridium is an Equal Opportunity Employer, including individuals with disabilities and protected veterans.