Posted in

Sr. Embedded Software Engineer

Sr. Embedded Software Engineer

CompanyIridium Communications
LocationMcLean, VA, USA
Salary$Not Provided – $Not Provided
TypeFull-Time
DegreesBachelor’s
Experience LevelSenior, 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