There is a good, albeit rather general, rule that applies to the management of a successful business: focus on what you do well, then do it better than everybody else. There are numerous examples of how companies have been very successful by following this approach.
Surprisingly, the world of embedded software is commonly an exception. To start with, I can cite some examples of good practice:
Have you heard of Nokia? Of course, you have. It was a dominant force in the mobile handset market for years, but you may be surprised to hear that it has been in business since the mid-19th century. It made a diverse range of products from rubber boots to gas masks (my Finnish friends will probably correct me on the details). It was a very well-known name in Finland, but hardly heard of elsewhere. Then, it started to really focus on an emerging market and became a household name everywhere.
What about Ford? In its early days, Ford almost defined volume car production. Their approach was very different from how successful companies operate today. Their customer focus was encapsulated in the famous quote: “Any customer can have a car painted any color that he wants so long as it is black.” Henry Ford wanted to own the whole process so that the company could make cars from scratch. They made all the components for cars; they made paint; they made glass. He nearly destroyed the company with his efforts to own rubber production in South America so that they could make their own tires.
In recent years, they have been successful by focusing on what they do outstandingly well: building cars. They do not make their own paint – they source it from a paint manufacturer, which supplies against a clear specification. The same goes for the glass for the windows, the windows themselves, the tires, much of the electronics, and even major components like gearboxes.
Developers of embedded systems are not all bad. Hardware designers are very adept at design reuse – employing off the shelf devices or licensing IP. So why are software developers less keen? Surely, they can take a “black box” approach to the use of standard “components” and simply rely on their specifications. As systems become ever more complex, it makes sense to leave development of specialist technologies – like operating systems, protocol stacks, graphics – in the hands of experts.
Bottom line: concentrate on your core competencies and let others focus on theirs.