Education
Fact-checked

At WiseGEEK, we're committed to delivering accurate, trustworthy information. Our expert-authored content is rigorously fact-checked and sourced from credible authorities. Discover how we uphold the highest standards in providing you with reliable knowledge.

Learn more...

What Does an Embedded Software Engineer Do?

Micah MacBride
Micah MacBride

Computer users are likely most familiar with the software that runs on their operating systems. They many not, however, be so experienced with the software that regulates the operation of certain sophisticated hardware components. These components are programmed by professionals called embedded software engineers.

Hardware components that perform specific and specialized functions are called embedded systems. These act as computers within computers, with their own processors and memory. Embedded systems take in data from specific hardware components, execute their programming, and then pass data on to other pieces of hardware in the machine. The role an embedded system could be as complex as converting data from an internal antennae to a data format the rest of the device can use, or as simple as transmitting specific signals when activated by a button. An embedded software engineer creates the programs that run these devices.

The job of an embedded software engineer is similar to software engineers that create programs for desktop computers.
The job of an embedded software engineer is similar to software engineers that create programs for desktop computers.

The job of an embedded software engineer is similar to software engineers that create programs for desktop computers. The source code for converting data in one format into another is the same on a personal computer as it is in an embedded system. Where the embedded software engineer's job differs is in adding additional code for the program to run on the specialized piece of hardware acting as the embedded system.

An embedded software engineer is typically responsible for determining the smallest numbers of drivers that a program requires to operate.
An embedded software engineer is typically responsible for determining the smallest numbers of drivers that a program requires to operate.

The operating systems on which desktop applications execute include a variety of driver software. This is appropriate for these systems due to the range of hardware that could be in the computer, and the software that a user might run. Embedded systems are self-contained and only run a single program. For this reason, the programmer only needs to load a limited number of drivers, and the program itself, into the device's limited memory. The embedded software engineer's job usually includes determining the smallest number of drivers the program will need to operate the embedded device.

After an embedded software engineer finishes programming a device, his or her work has to be documented. Embedded systems are never used on their own, but as part of some larger project. In order to make use of the device, other engineers need to know information such as:

  • what data the embedded system is expecting
  • what data format its programming is expecting
  • how the device will react to different inputs
  • the format of the data the device will output

This information is then included in the technical documentation that the embedded software engineers produce themselves, often in the form of a manual. Sometimes, technical writers, rather than the actual engineers, create such manuals, from the notes the software engineers provide. Having documentation to refer to is invaluable for users.

Discuss this Article

Post your comments
Login:
Forgot password?
Register:
    • The job of an embedded software engineer is similar to software engineers that create programs for desktop computers.
      By: Gandolfo Cannatella
      The job of an embedded software engineer is similar to software engineers that create programs for desktop computers.
    • An embedded software engineer is typically responsible for determining the smallest numbers of drivers that a program requires to operate.
      By: auremar
      An embedded software engineer is typically responsible for determining the smallest numbers of drivers that a program requires to operate.