Womit wir den ersten Fehler und Kostentreiber identifiziert haben: Der Ingenieur der sich mit der Technik auskennt soll - zusätzlich! - auch noch Software entwickeln können, statt eine vernünftige Vorgabe dafür zu erstellen, die dann ein Informatiker umsetzt.
Nein, das hast du falsch verstanden.
Hardware- und Softwareentwicklung sind in den meisten Unternehmen durchaus getrennt. Es ist jedoch so, dass ein Entwickler, der hardwarenahe Software, also die Firmware, entwickeln soll, sich mit der Hardware bis ins Detail auskennen muss.
Wenn jemand beispielsweise Business-Software für Windows-PC entwickelt, dann kennt er die Schnittstellen des Betriebssystems, seiner (SQL-)Datenbank usw. er kann auf dieses Wissen zurückgreifen und Anwendungen entwickeln, die auf praktisch jedem PC lauffähig sind, der die Voraussetzungen erfüllt.
Wenn jemand aber beim Hersteller des Mainboards das BIOS (oder heute EFI) entwickeln soll, dann muss er die gesamte Architektur des PC bis auf Bitebene inklusive aller Timings usw. beherrschen. Dieses Wissen gilt dann aber nur für diese eine Hardware. Ein Mainboard von Dell ist völlig anders als eines von Apple.
Letztlich bedeutet dies, dass derjenige, der die Firmware entwickelt, selbst auch theoretisch dazu in der Lage wäre, Hardware zu entwickeln bzw. eine große Menge des Wissens, welches hierzu erforderlich wäre, ebenfalls mitbringt.
Es ist fällt mir nicht leicht, dies so zu schildern, dass es der Komplexität der Aufgabe gerecht wird. Angenommen wir haben ein kleines Gerät, welches einen Mikrocontroller besitzt, einen nichtflüchtigen Speicher und einen Transceiver für die Kommunikation mit einem Datenbus. Bereits für diese überschaubare Problemstellung braucht man einerseits das Wissen um die Schaltung (vereinfacht gesagt: an welchem Anschluss des Rechners hängt welche Komponente), die Datenblätter aller beteiligten Bauteile und andererseits natürlich das grundlegende Wissen an sich.
So ein Datenblatt füllt schnell hunderte Seiten. Hier ein kleines Beispiel: Der LPC1751 von NXP ist ein halbwegs aktueller Microcontroller (ARM Cortex-M3, 32 Kilobytes Programmspeicher, 8 Kilobytes Arbeitsspeicher, 52 "Anschlüsse"). Sein Datenblatt hat bereits 80 Seiten - dort werden aber nur grundlegende Aspekte beschrieben. Um das Teil wirklich benutzen zu können, ist das "User Manual " erforderlich - 849 Seiten.
Angenommen wir wollen 4 Megabytes nichtflüchtigen Speicher für Daten haben. So ein kleines Memory hat natürlich auch wieder ein Datenblatt - 52 Seiten.
Wollen wir jetzt noch auf den Bus zugreifen, angenommen es ist CAN, braucht es einen entsprechenden Transceiver - 84 Seiten.
Hardware mit drei Bauteilen kenne ich aber kaum. Je mehr Bauteile Verwendung finden umso komplexer wird die Aufgabe. Ein "normaler Informatiker" kann diese Aufgabe nicht (souverän) lösen. Hierzu braucht es Softwareentwickler, die jahrelange Erfahrung mit der Entwicklung auf Hardwareebene haben.