Vor einigen Jahren arbeitete ich für ein kleines Unternehmen, das so weit ging, interne Frameworks zu entwickeln, dass sie ihren erfahrensten Entwickler und ihren Architekten der Entwicklung eines benutzerdefinierten MVC-Frameworks und ORM von Grund auf widmeten. Diese beiden Dinge waren orthogonal zu ihrem Kernprodukt. Leider kam die Unterstützung für diesen Framework-gesteuerten Ansatz von oben und verzögerte die Lieferung von umsatzgenerierender Software - und die produzierten Frameworks waren den Standardalternativen deutlich unterlegen, was die Verzögerungen noch verstärkte. Die Firma verbrannte schnell Bargeld und schließlich wurden alle entlassen.
Ein späterer Arbeitgeber machte einen ähnlichen Fehler - er bekam einen hochtechnisch erfahrenen Entwickler - einen Perfektionisten mit einer starken Grundlage in Unternehmensdesignmustern, um eine Beratungslösung für einen seiner Kunden grob zu überentwickeln und wissentlich einen Verlust zu erleiden, in der Hoffnung, dass Die Lösung könnte für andere Kunden angepasst und erweitert werden. Das Projekt lief deutlich über. Aber keine anderen potenziellen Kunden haben gebissen. Ein vergoldeter strategischer Fehler, der ein kleines Vermögen kostete.
In beiden Fällen gab es einen signifikanten Grad an Überentwicklung. In beiden Fällen waren das Unternehmen und das Projektmanagement Personen mit Domänen- oder Analysehintergrund und nicht mit Programmierhintergrund. In beiden Fällen entwickelten die Softwarearchitekten zu komplexe Lösungen, um den Juckreiz zu lindern und ihre Lebensläufe zu verbessern, wobei das nichttechnische Management mitschuldig war. In beiden Fällen hatten die Architekten kein Interesse daran, die Kosten niedrig zu halten (abgesehen von dem Risiko, ihren Arbeitsplatz zu verlieren, wenn die Unternehmen bankrott gehen - was angesichts ihrer hohen Beschäftigungsfähigkeit kein großes Risiko darstellt).
Meine Erfahrung zeigt, dass es keine ungewöhnliche Falle ist, in die Entwickler-Shops geraten.
Gibt es in Softwareprojekten Platz für eine formale interne oder externe technische kontroverse Rolle - einen "Mengengutachter" -, um eine Gebäudeanalogie zu verwenden, die verschwenderisches Über-Engineering hervorrufen oder verhindern kann? Wer ist am besten geeignet, um diese Rolle zu besetzen?