Embedded Software Engineer is responsible for the development, testing, and maintenance of the software for embedded devices. An embedded system is a device that combines hardware and software, but unlike general-purpose machines such as personal computers and smartphones, it performs a specific task or set of tasks. Embedded systems can be found almost anywhere, including washers, flashlights, GPS devices, televisions, and electronic control units in cars and airplanes. Almost every electrical device that is more complex than a simple light switch contains a digital processor that reads data from its surroundings via sensors, runs a computational algorithm, and produces some form of output that interacts with the environment. To put this in context, more than ten billion embedded devices were manufactured in 2018.
The process of developing embedded software is very different than developing conventional applications for general-purpose machines. Because unexpected failures in embedded systems can cause the entire device to crash, they must be extremely reliable. Unlike traditional applications, embedded devices and software must work correctly for years without maintenance, and embedded developers do not enjoy the luxury of fixing bugs after production. The small size of embedded systems and limited resources make designing and developing software for them difficult. Resources such as processor time, main memory, and storage must be distributed to different routines as efficiently as possible. 
 Embedded
  Software
 Engineer is responsible for the development, testing, and maintenance of the  
software
 for  
embedded
  devices
. An  
embedded
  system
 is a  
device
 that combines hardware and  
software
,  
but
 unlike general-purpose machines such as personal computers and smartphones, it performs a specific task or set of tasks.  
Embedded
  systems
 can  
be found
 almost anywhere, including washers, flashlights, GPS  
devices
, televisions, and electronic control units in cars and airplanes. Almost every electrical  
device
  that is
 more complex than a simple light switch contains a digital processor that reads data from its surroundings via sensors, runs a computational algorithm, and produces  
some
 form of output that interacts with the environment. To put this in context, more than ten billion  
embedded
  devices
  were manufactured
 in 2018.
The process of developing  
embedded
  software
 is  
very
  different
  than
 developing conventional applications for general-purpose machines.  
Because
 unexpected failures in  
embedded
  systems
 can cause the entire  
device
 to crash, they  
must
 be  
extremely
 reliable. Unlike traditional applications,  
embedded
  devices
 and  
software
  must
 work  
correctly
 for years without maintenance, and  
embedded
 developers do not enjoy the luxury of fixing bugs after production. The  
small
 size of  
embedded
  systems
 and limited resources  
make
 designing and developing  
software
 for them difficult. Resources such as processor time, main memory, and storage  
must
  be distributed
 to  
different
 routines as  
efficiently
 as possible.