Description
Embedded systems software developers program, implement, document and maintain software to be run on an embedded system.
Excludes people performing managerial activities.
Other titles
The following job titles also refer to embedded systems software developer:
embedded system software programmer
embedded software developerl embedded systems engineer
embedded software programmer
embedded system software developer
embedded systems designer
embedded systems software developers
Minimum qualifications
Bachelor’s degree is generally required to work as embedded systems software developer. However, this requirement may differ in some countries.
ISCO skill level
ISCO skill level is defined as a function of the complexity and range of tasks and duties to be performed in an occupation. It is measured on a scale from 1 to 4, with 1 the lowest level and 4 the highest, by considering:
- the nature of the work performed in an occupation in relation to the characteristic tasks and duties
- the level of formal education required for competent performance of the tasks and duties involved and
- the amount of informal on-the-job training and/or previous experience in a related occupation required for competent performance of these tasks and duties.
Embedded systems software developer is a Skill level 4 occupation.
Embedded systems software developer career path
Similar occupations
These occupations, although different, require a lot of knowledge and skills similar to embedded systems software developer.
ICT system developer
digital games developer
ICT application developer
mobile application developer
ICT application configurator
Long term prospects
These occupations require some skills and knowledge of embedded systems software developer. They also require other skills and knowledge, but at a higher ISCO skill level, meaning these occupations are accessible from a position of embedded systems software developer with a significant experience and/or extensive training.
Essential knowledge and skills
Essential knowledge
This knowledge should be acquired through learning to fulfill the role of embedded systems software developer.
Embedded systems: The computer systems and components with a specialised and autonomous function within a larger system or machine such as embedded systems software architectures, embedded peripherals, design principles and development tools.
Computer programming: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms (e.g. object oriented programming, functional programming) and of programming languages.
Ict debugging tools: The ICT tools used to test and debug programs and software code, such as GNU Debugger (GDB), Intel Debugger (IDB), Microsoft Visual Studio Debugger, Valgrind and WinDbg.
Integrated development environment software: The suite of software development tools for writing programs, such as compiler, debugger, code editor, code highlights, packaged in a unified user interface, such as Visual Studio or Eclipse.
Tools for software configuration management: The software programs to perform configuration identification, control, status accounting and audit, such as CVS, ClearCase, Subversion, GIT and TortoiseSVN perform this management.
Internet of things: The general principles, categories, requirements, limitations and vulnerabilities of smart connected devices (most of them with intended internet connectivity).
Essential skills and competences
These skills are necessary for the role of embedded systems software developer.
Provide technical documentation: Prepare documentation for existing and upcoming products or services, describing their functionality and composition in such a way that it is understandable for a wide audience without technical background and compliant with defined requirements and standards. Keep documentation up to date.
Utilise computer-aided software engineering tools: Use software tools (CASE) to support the development lifecycle, design and implementation of software and applications of high-quality that can be easily maintained.
Debug software: Repair computer code by analysing testing results, locating the defects causing the software to output an incorrect or unexpected result and removing these faults.
Use software design patterns: Utilise reusable solutions, formalised best practices, to solve common ICT development tasks in software development and design.
Develop software prototype: Create a first incomplete or preliminary version of a piece of software application to simulate some specific aspects of the final product.
Develop ict device driver: Create a software program that controls the working of an ICT device and its interaction with other applications.
Interpret technical texts: Read and understand technical texts that provide information on how to perform a task, usually explained in steps.
Use software libraries: Utilise collections of codes and software packages which capture frequently used routines to help programmers simplify their work.
Create flowchart diagram: Compose a diagram that illustrates systematic progress through a procedure or system using connecting lines and a set of symbols.
Analyse software specifications: Assess the specifications of a software product or system to be developed by identifying functional and non-functional requirements, constraints and possible sets of use cases which illustrate interactions between the software and its users.
Optional knowledge and skills
Optional knowledge
This knowledge is sometimes, but not always, required for the role of embedded systems software developer. However, mastering this knowledge allows you to have more opportunities for career development.
Haskell: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Haskell.
Kdevelop: The computer program KDevelop is a suite of software development tools for writing programs, such as compiler, debugger, code editor, code highlights, packaged in a unified user interface. It is developed by the software community KDE.
Sas language: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in SAS language.
Ruby (computer programming): The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Ruby.
Common lisp: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Common Lisp.
Apache maven: The tool Apache Maven is a software program to perform configuration identification, control, status accounting and audit of software during its development and maintenance.
Lisp: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Lisp.
Visual studio .net: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Visual Basic.
Java (computer programming): The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Java.
Prolog (computer programming): The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Prolog.
Openedge advanced business language: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in OpenEdge Advanced Business Language.
Javascript: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in JavaScript.
Perl: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Perl.
Php: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in PHP.
Software anomalies: The deviations of what is standard and exceptional events during software system performance, identification of incidents that can alter the flow and the process of system execution.
Xcode: The computer program Xcode is a suite of software development tools for writing programs, such as compiler, debugger, code editor, code highlights, packaged in a unified user interface. It is developed by the software company Apple.
Assembly (computer programming): The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Assembly.
C#: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in C#.
R: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in R.
Groovy: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Groovy.
Asp.net: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in ASP.NET.
Apl: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in APL.
Object-oriented modelling: The object-oriented paradigm, which is based on classes, objects, methods and interfaces and their application in software design and analysis, programming organisation and techniques.
Puppet (tools for software configuration management): The tool Puppet is a software program to perform configuration identification, control, status accounting and audit.
Staf: The tool STAF is a software program to perform configuration identification, control, status accounting and audit.
Eclipse (integrated development environment software): The computer program Eclipse is a suite of software development tools for writing programs, such as compiler, debugger, code editor, code highlights, packaged in a unified user interface. It is developed by the Eclipse Foundation.
Ansible: The tool Ansible is a software program to perform configuration identification, control, status accounting and audit.
Ict security legislation: The set of legislative rules that safeguards information technology, ICT networks and computer systems and legal consequences which result from their misuse. Regulated measures include firewalls, intrusion detection, anti-virus software and encryption.
Microsoft visual c++: The computer program Visual C++ is a suite of software development tools for writing programs, such as compiler, debugger, code editor, code highlights, packaged in a unified user interface. It is developed by the software company Microsoft.
Typescript: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in TypeScript.
World wide web consortium standards: The standards, technical specifications and guidelines developed by the international organisation World Wide Web Consortium (W3C) which allow the design and development of web applications.
Objective-c: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Objective-C.
Ml (computer programming): The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in ML.
Ajax: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in AJAX.
C++: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in C++.
Sap r3: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in SAP R3.
Swift (computer programming): The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Swift.
Matlab: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in MATLAB.
Salt (tools for software configuration management): The tool Salt is a software program to perform configuration identification, control, status accounting and audit.
Python (computer programming): The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Python.
Scratch (computer programming): The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Scratch.
Vbscript: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in VBScript.
Cobol: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in COBOL.
Pascal (computer programming): The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Pascal.
Abap: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in ABAP.
Jenkins (tools for software configuration management): The tool Jenkins is a software program to perform configuration identification, control, status accounting and audit of software during its development and maintenance.
Scala: The techniques and principles of software development, such as analysis, algorithms, coding, testing and compiling of programming paradigms in Scala.
Optional skills and competences
These skills and competences are sometimes, but not always, required for the role of embedded systems software developer. However, mastering these skills and competences allows you to have more opportunities for career development.
Develop automated migration methods: Create automated transfer of ICT information between storage types, formats and systems to save human resources from performing the task manually.
Use concurrent programming: Utilise specialised ICT tools to create programs that can execute concurrent operations by splitting programs into parallel processes and, once computed, combining the outcomes together.
Use logic programming: Utilise specialised ICT tools to create computer code composed of series of sentences in logical form, expressing rules and facts about some problem domain. Use programming languages which support this method such as Prolog, Answer Set Programming and Datalog.
Use object-oriented programming: Utilise specialised ICT tools to create computer code based on the concept of an “object” which is an abstract data type encapsulated with a set of “methods”, which operate on the data. Use programming languages which support this method such as JAVA and C++.
Collect customer feedback on applications: Gather a response and analyse data from customers to identify requests or problems in order to improve applications and overall customer satisfaction.
Use automatic programming: Utilise specialised software tools to generate computer code from specifications, such as diagrams, structured informations or other means of describing functionality.
Develop creative ideas: Developing new artistic concepts and creative ideas.
Use functional programming: Utilise specialised ICT tools to create computer code which treats computation as the evaluation of mathematical functions and seeks to avoid state and mutable data. Use programming languages which support this method such as LISP, PROLOG and Haskell.
Integrate system components: Select and use integration techniques and tools to plan and implement integration of hardware and software modules and components in a system. Apply specific testing techniques to ensure integrity during system integration.
Adapt to changes in technological development plans: Modify the current design and development activities of technological projects to meet changes in requests or strategies. Ensure that the organisation’s or client’s needs are met and that any sudden requests which were not previously planned are implemented.
Design user interface: Create software or device components which enable interaction between humans and systems or machines, using appropriate techniques, languages and tools so as to streamline interaction while using the system or machine.
ISCO group and title
2514 – Applications programmers
References