This list contains only the countries for which job offers have been published in the selected language (e.g., in the French version, only job offers written in French are displayed, and in the English version, only those in English).
A Software Engineer 2 is an experienced professional responsible for designing, developing, and maintaining software applications. This person serves as an independent contributor implementing software solutions with light supervision from more senior members of the software department. They have a strong understanding of programming languages, software development methodologies, and debugging techniques and contribute to the entire software development lifecycle, from initial design to testing and deployment.
Job Responsibility:
Contribute during the entire software development process including requirements, design, implementation, test, debugging and deployment
Develop Embedded Linux, Windows PC and microcontroller software applications using C, C++, and occasionally other programming languages
Maintain computer programs using advanced software programming and/or scripting languages, techniques and standards
Specification, design, development, maintenance, integration, documentation, debug and testing of software for Windows and embedded software applications in C and C++
Embedded applications in custom headless devices with focus on real-time performance aspects including multi-threading, time synchronization
Configuration, troubleshooting, data analysis, and integration of a wide variety of applications and equipment such as internal software libraries and products, GPS receivers, LiDAR sensors, Inertial sensors, network routers, radio modems, meteorological sensors, serial port hubs, etc
Review and evaluate technological developments in hardware, software, and telecommunications for applicability to current or future requirements
Analyze user requirements to derive software design and performance requirements
Design, develop, deploy, configure, document and debug software, while properly escalating issues to meet deadlines
Apply the appropriate standards, processes, procedures, and tools throughout the development lifecycle, and ensure reuse of code
Design and code new software or modify existing software to add new features
Troubleshoot and debug existing software and correct defects
Integrate existing software into new or modified systems or operating environments
Perform other related duties as assigned
Requirements:
Bachelor’s degree in computer engineering, computer science, electrical engineering, aerospace engineering or a related field
Must have at least 2-5 years’ experience working through the design, development, testing, release cycle and delivering software products
Knowledge in one or multiple programming languages, such as C, C++, Python, Lua, Java
Proficient in software development of microcontroller level embedded systems
Knowledge of communication protocols (e.g., SPI, I2C, UART, CAN)
Knowledge of Linux, Linux programming or Embedded Linux concepts
Experience using Git or other version control systems
Knowledge of software development using Microsoft Visual Studio or Visual Studio Code
Ability to obtain/maintain a Secret DoD clearance, U.S. Citizenship required
Nice to have:
Prior experience developing Autopilot systems, ground control stations, or flight simulation software is highly desirable
What we offer:
401(k)-retirement plan
comprehensive Medical, Dental, Vision, Disability and Life insurance group coverage with a portion of the premiums paid by the company
professional development funds
an Employee Assistance Plan (EAP) with counseling, legal help, child and elder care support