It used to be a joke that one day you would have a computer in your toaster. Microprocessors are fast becoming ubiquitous, and many of the commonplace gadgets in your house and car rely on them. Even groceries are becoming technology dependent, with the advent of RFID supply chain management. And that means developers are in demand to create the code hidden inside these everyday objects.
Glenn Needham, a systems and applications engineer with Innovision Research and Technology, a Gloucestershire-based company that designs and develops systems using RFID and near-field communications systems that can communicate over short distances, says that one of the most attractive aspects of working in embedded computing is the sheer diversity of opportunities. "The basic knowledge and skills are much the same, regardless of whether you are developing an engine-management unit for a car, a contactless smartcard reader for a turnstile, or a video quiz game," he says. "So you do not have to be committed to a particular kind of product or marketplace."
Martin Constantinides, a director at ECM, a Cambridge-based recruitment agency specialising in placing staff in embedded computing roles, whose own consultants all have a background in the industry, agrees that "experience with specific environments or languages is less important than experience of dealing with the constraints of developing for embedded systems". Those constraints include fitting code into extremely limited memory space, ensuring processes work well in a time-critical situation, and developing for safety-critical environments.
Constantinides says that this is one reason why many people in embedded computing roles have spent their whole career in this area, rather than coming in from a background in application development, where the constraints tend to be very different. Moreover, in contrast to many other IT roles where people have diverse educational backgrounds, most staff working in this area have a degree in a technical discipline such as electrical engineering or electronics, physics or mathematics, or software engineering. However, Phil Johnson, strategic account manager with CBSbutler, a recruitment agency that specialises in placing technical and engineering staff, sees an increasing number of staff making the transition from application development in C and C++ to embedded development roles simply because of the acute shortage of suitably qualified candidates.
Nevertheless, Needham's background is more typical. He started out as a hardware engineer for a company developing video gaming machines, writing software for embedded processors as a hobby, before taking a chance to move into a role as a junior software developer with the same company. After rising to become a senior software developer, he took on his current position as a systems architect, looking strategically at how Innovision can use available technologies to develop new products for customers.
The culmination of this career path would be as a technical director. Other possible moves for embedded software developers include becoming a technical consultant for one of the many chip-design houses, or providing presales or postsales consultancy for an embedded component developer, where a development background would provide the necessary credibility to talk with customers' own technical staff. Constantinides says that experienced developers can also find work writing development tools, which helps others create embedded code.
At present, Constantinides sees high demand for developers of consumer products in two areas: gadgets such as IPTVs, digital set-top boxes and digital radios, and wireless devices such as mobile phones and PDAs. Johnson says that there is also a call for developers who can create or port applications to the relatively limited hardware capabilities and cut-down operating systems such as Windows CE and Epoc and found on mobile devices.
Business to business work is typically focused in very specialised products for the defence, automotive and aerospace industries or for the emergency services.Another specialised role is developing the RFID devices used to track items through the retail supply chain. Employers range from the large telcos and defence contractors to chip intellectual property houses, which design chips for licence to several customers, or contract design companies working on specific projects for manufacturers.
In terms of skills, embedded C and, increasingly, embedded C++ are the main programming languages in demand, although Needham also sometimes works in Java, and began his career in embedded software using assembly language. The pay for these roles compares favourably with other sectors, with £40,000 to £70,000 typical for a hands-on development position. The majority of roles are based outside London, with strong concentrations around university towns such as Cambridge, Oxford, Southampton and Bristol.
A significant proportion of employers are spin-offs from university research efforts, and Constantinides says that one of the attractions of embedded computing work is the intellectual stimulation it provides. "Those working in these roles are bright people who have been through many years of education - many have higher degrees - and who are motivated by technical challenges." He says that it is a fast-moving sector, so you need to be comfortable picking up new technologies and tools on a regular basis, and formal training can be sketchy in the many smaller companies in the sector, so you have to be a self-starter and able to cope with being thrown in at the deep end.
Another reason why embedded developers love working in the sector, Needham says, is that although the code you develop might be less visible than an application running on a PC, there is a real buzz from developing code for a tangible product that does something obviously practical, and seeing it in action in everyday life.