Can One Person do Everything, Really Everything?
"...develops C++ software and VHDL programmable logic. Creates schematics and layouts and then commissions the hardware itself. Additionally performs EMC and CE certification and handles functional safety and IoT security certification..." This is the not atypical job description for a developer or the self-description of one-man development vendors.
Is that even possible? Sure, there was a time when it was possible. But: that was in the last millenium: 8-bit processors, no EMC regulations worthy of the name, 1K EPROM, 256 byte RAM, the language was called assembler, the development environment was called "monitor"... This time is definitely over!
If one or two persons alone take over all these tasks today, then often disaster is pre-programmed. The result is a control system that actually works. But then shortly before the start of production, it fails the EMC tests because the layout- and EMC-basics were not observed. During the production ramp-up, it becomes apparent that the soldering yield is subterranean because the footprints are poor. The first prototype at the customer's site crashes, and nobody knows why (the first parameter the customer changed had no error handling, like all the others...). The safety check requires a complete redesign. And so on...
Why is it like this today? Why was it possible in the past? There are three reasons:
- Increased complexity: In electronics and software, systems are in use today that would have passed for servers a few years ago. Their inherent complexity ensures that only specialists who work well together can efficiently carry out such developments.
- Time-to-market: How fast did new products have to be on the market? There were projects that took ten years. Would that be accepted today? The components would already be obsolete when production starts....
- Non-functional requirements: Most product specifications think in terms of functional requirements, in the straightforward case. That was enough with the 8-bit microcontroller, everyone was happy if you were able to squeeze the function into the available memory. Thirty years later, the functional requirements of a system are fulfilled within 20% of the development time. Then come the non-functional requirements: certification for CE, EMC, operational safety, functional safety. Most devices have graphical interfaces with touch operation, resulting in demands for usability and multilingualism. And Industry 4.0 also demands IoT functions, which immediately entail cyber security...
Giving all the work to only one generalist is probably one of the most widespread and for the project success most momentous decisions. And unfortunately the one that puts all embedded developers in a bad light: "It always takes much longer and doesn't work anyway".
What does that Mean?
We think that embedded development is team work. No one can do everything, put together a team for the project in which all embedded disciplines are represented by a real specialist.