Job role
A Defense Software Engineer designs and builds the software systems that run defense platforms, from mission software and command applications to data processing services. They write reliable, well-tested code in C++, Java, or Python and integrate it with sensors, communications, and other subsystems.
Responsibilities
- Design and implement mission and command-and-control software components
- Build services that process and integrate data from sensors and subsystems
- Write automated tests and participate in code reviews for high-reliability software
- Integrate software with communications, hardware, and external systems through defined interfaces
- Profile and optimize software for performance and reliability requirements
- Document software and support verification, validation, and field testing
Required knowledge
- Data structures, algorithms, and computational complexity analysis
- Software design principles such as SOLID, design patterns, and architecture
- Concurrency, parallelism, and asynchronous execution models
- Networking, communication protocols, and the client-server model
- Real-time and high-reliability software concepts
- Software development lifecycle, testing, and verification methodology
Skills
- Writing clean, well-tested, high-reliability code
- Designing software architecture for complex systems
- Integrating software with hardware and external subsystems
- Debugging across software, network, and system layers
- Profiling and optimizing performance-critical software
- Collaborating across multidisciplinary engineering teams
Example employers
Rafael Advanced Defense SystemsElbit SystemsIsrael Aerospace Industries (IAI)Lockheed MartinNorthrop GrummanPalantir TechnologiesAnduril IndustriesIsrael Ministry of Defense
Job role
An Embedded Software Engineer writes the real-time firmware and software that runs on defense and avionics hardware, from flight controllers to mission computers. They program deterministic C and C++ code that operates under tight timing, memory, and reliability constraints.
Responsibilities
- Develop real-time embedded firmware and application software for defense hardware
- Implement device drivers and software interfaces for sensors, actuators, and buses
- Write deterministic code that meets hard real-time deadlines
- Build and run software tests including hardware-in-the-loop verification
- Debug low-level software issues using debuggers and trace tools
- Document software and support certification to applicable safety standards
Required knowledge
- Real-time operating systems and scheduling theory
- Computer architecture, memory maps, and interrupt handling
- C and C++ language internals and low-level programming
- Communication buses such as MIL-STD-1553, ARINC 429, and CAN
- Concurrency, timing, and determinism in embedded systems
- Safety-critical software standards such as DO-178C
Skills
- Writing deterministic, resource-constrained embedded code
- Implementing and testing device drivers and protocols
- Debugging at the software and register level
- Reasoning about timing, concurrency, and interrupts
- Performing hardware-in-the-loop software verification
- Producing certifiable, well-documented safety-critical software
Example employers
Israel Aerospace Industries (IAI)Elbit SystemsRafael Advanced Defense SystemsLockheed MartinHoneywell AerospaceCollins AerospaceAstronauticsAnduril Industries
Job role
An Autonomous Systems Software Engineer writes the perception, planning, and control software that lets robots, drones, and unmanned vehicles operate on their own. They implement algorithms in C++ and Python on frameworks such as ROS to achieve safe, reliable autonomy.
Responsibilities
- Implement perception, localization, and mapping software from sensor data
- Write motion planning, navigation, and obstacle avoidance code
- Develop and tune control loop software for stable autonomous behavior
- Build sensor-fusion software that combines camera, LiDAR, radar, and GPS data
- Test autonomy software in simulation and on real platforms
- Analyze logged data and write tools to diagnose failures and improve robustness
Required knowledge
- Robotics kinematics, dynamics, and control theory
- State estimation, Kalman filtering, and sensor fusion
- Path and motion planning algorithms
- Data structures, algorithms, and computational complexity analysis
- Probability, optimization, and machine learning fundamentals
- Coordinate frames, transforms, and SLAM
Skills
- Implementing robust perception and state estimation software
- Writing and tuning planning and control algorithms in code
- Building sensor-fusion pipelines that combine heterogeneous data
- Validating autonomy software in simulation and on hardware
- Debugging real-world failures from logged telemetry
- Writing clean, testable robotics software
Example employers
Israel Aerospace Industries (IAI)Elbit SystemsRafael Advanced Defense SystemsMobileyeLockheed MartinAnduril IndustriesCognataNorthrop Grumman
Job role
A Signal-Processing Software Engineer writes the software that extracts meaningful information from raw sensor data such as radar, sonar, electro-optical, and RF signals. They implement detection, estimation, and classification algorithms in C++ and Python that run reliably in noisy, real-world conditions.
Responsibilities
- Implement detection, estimation, and tracking algorithms in software
- Develop digital signal-processing software chains for radar, EO/IR, sonar, or RF data
- Write code to characterize and mitigate noise, clutter, and interference
- Optimize signal-processing software for real-time and embedded targets
- Validate algorithm software against recorded and synthetic data
- Collaborate with hardware and systems engineers on integration through software interfaces
Required knowledge
- Digital signal processing, Fourier analysis, and filtering
- Detection and estimation theory and statistical inference
- Data structures, algorithms, and computational complexity analysis
- Probability, stochastic processes, and noise modeling
- Spectral analysis and adaptive filtering
- Machine learning for classification and pattern recognition
Skills
- Implementing and validating detection and tracking algorithms in code
- Building efficient real-time signal-processing software pipelines
- Writing code to characterize and mitigate noise and clutter
- Optimizing algorithms for embedded and real-time targets
- Analyzing performance against recorded field data
- Applying machine learning to sensor classification in software
Example employers
Rafael Advanced Defense SystemsElbit SystemsIsrael Aerospace Industries (IAI)RaytheonLockheed MartinNorthrop GrummanCamero-TechMobileye
Job role
A Secure Communications Software Engineer builds the software for secure, resilient communication systems and tactical networks used across defense platforms. They implement networking, encryption, and messaging code in C++ and Go that keeps data confidential and available in contested environments.
Responsibilities
- Design and implement software for secure messaging and tactical communication systems
- Build networking and protocol software that is resilient in degraded conditions
- Integrate cryptography and key management into communication software
- Develop data-fusion and situational-awareness software services
- Harden communication software against cyber threats and write security tests
- Ensure interoperability across platforms using defined data standards and interfaces
Required knowledge
- Networking, communication protocols, and tactical data links
- Cryptography fundamentals including encryption, hashing, and key management
- Distributed systems and message-oriented architecture principles
- Data structures, algorithms, and computational complexity analysis
- Cybersecurity and secure software design concepts
- Concurrency, parallelism, and real-time data processing
Skills
- Writing secure, reliable networking and protocol software
- Integrating cryptography and key management into applications
- Designing resilient message-oriented software architectures
- Hardening software against cyber threats
- Debugging across software, network, and protocol layers
- Ensuring interoperability across platforms and standards
Example employers
Elbit SystemsIsrael Aerospace Industries (IAI)Rafael Advanced Defense SystemsLockheed MartinNorthrop GrummanGeneral DynamicsPalantir TechnologiesAnduril Industries
Job role
A Simulation and Modeling Engineer writes the software for high-fidelity simulations and virtual environments used to design, test, and train defense systems before costly live trials. They implement physics-based and behavioral models in C++ and Python and integrate distributed simulation software.
Responsibilities
- Implement physics-based and behavioral model software for platforms, sensors, and environments
- Build constructive, virtual, and hardware-in-the-loop simulation software
- Write tools to run scenario-based experiments and analyze simulation outputs
- Develop verification and validation software comparing models to reference data
- Integrate distributed simulations in code using interoperability standards
- Support training and trade studies with reliable simulation software
Required knowledge
- Numerical methods, modeling theory, and discrete-event simulation
- Data structures, algorithms, and computational complexity analysis
- Physics of motion, sensing, and signal propagation
- Probability, statistics, and Monte Carlo methods
- Verification, validation, and accreditation of models
- Distributed simulation standards such as HLA and DIS
Skills
- Implementing validated, high-fidelity simulation software
- Writing tools to design and run scenario-based experiments
- Analyzing and interpreting large simulation datasets in code
- Integrating distributed and hardware-in-the-loop simulations
- Building verification and validation software
- Translating system requirements into simulation software
Example employers
Israel Aerospace Industries (IAI)Elbit SystemsRafael Advanced Defense SystemsLockheed MartinNorthrop GrummanImprobableCognataPresagis