Warum kann man nicht gleich sicher programmieren ??
Oder vergisst man was, Hacker nutzen dann eine Lücke, und man muss sie wieder stopfen ?
Also die Sicherheitsupdates.
Der perfekte Programmierer aber hat gar keine Lücken ! Also nur Funktionsupdates !
Auch Programmierer (und auch alle anderen Entwickler oder sonstwie Beteiligte) sind nur Menschen, haben mal einen schlechten Tag, tippen mal die falsche Taste, sitzen einem Mißverständnis auf, halten eine eigentlich völlig dumme Idee anfangs für richtig gut, leiden unter Betriebsblindheit, sind unkonzentriert, haben Streß bei der Arbeit, können nicht in die Zukunft blicken und haben noch allerlei andere Fehler.
Wer arbeitet schon perfekt? Ich selber bin nur Hobbyprogrammierer, habe ein kleines Open-Source-Projekt. Ich habe keine wirtschaftlichen Zwänge oder Termine, zu denen ich abliefern muß, und muß dennoch entscheiden ob ich eine bestimmte Funktion implementiere oder es bleiben lasse. Einerseits wäre es ja nützlich, aber wenn ich alles nützliche gleich einbaue wird das Programm nie fertig - und ich warte ja selber sehnsüchtig auf diese Software, weil ich sie bei meiner Arbeit brauche. Also Kompromiss: die perfekte Software irgendwann, oder aber eine rudimentäre Version mit der ich aber erstmal arbeiten kann?
Und manchmal muß man auch schlechte Entscheidungen treffen, obwohl man weiß daß diese schlecht sind und schlimme Folgen haben. Weil alle anderen Möglichkeiten noch schlechter sind. Beispiel: der Firma geht es gerade wirtschaftlich schlecht. Als werden Leute entlassen. Mit jedem Mitarbeiter, der entlassen wird, geht aber auch Wissen und Erfahrung der Firma verloren. Vor allem, wenn ein entlassener Mitarbeiter sich in einer bestimmten Sache gut auskannte und daher für seine Kollegen immer die Anlaufstelle bei bestimmten Problemen war.
Und dieses Wissen später wieder aufzubauen ist teuer, und es ist ungewiss ob es überhaupt klappt.
Was aber wäre die Alternative? Die Firma geht im Ganzen pleite. Also trifft man Entscheidungen, wohlwissend daß diese für die Zukunft unangenehme und nachteilige Folgen haben. Aber immerhin gibt es eine Zukunft.
Und manchmal sind Probleme, die während der Entwicklung auftauchen, auch einfach nicht gut zu lösen: Man hat sich für irgendein Framework oder eine Bibliothek entschieden die sich am Anfang vielversprechend anhörte, aber erst sehr spät große Unzulängllichkeiten offenbart hat. Also muß man um diese Unzulänglichkeiten irgendwie herumnavigieren.
Und manchmal fallen einem heute Dinge ein die man in ein bestehendes Programm gerne einbauen würde, an die vor 30 Jahren, als die Software ursprünglich mal geschrieben wurde, niemand gedacht hat und die sich im Nachhinein nur sehr schlecht integrieren lassen.
Und letztendlich gehen viele Murksentscheidungen auch gar nicht auf die eigentlichen Programmierer zurück, sondern entstehen schon lange vorher. Z.B. im Produktmanagement, wo Leute sitzen die von der Benutzung der Software keinerlei Ahnung haben und die wiederum Leute vom Kauf der Software überzeugen müssen, die genauso wenig Ahnung haben. So ein schönes Beispiel sind CAD-Programme: mit denen müssen Ingenieure arbeiten aber dort, wo entschieden wird welche Software genutzt wird, arbeiten diese Ingenieure nicht. Stattdessen hast du da irgendeinen oder mehrere Dullis zu sitzen die auf LinkedIn gerade zusehen, wie eine KI-Sau nach der anderen durch die Foren getrieben wird. Und dann hast du sieben verschiedene Softwareanbieter, von denen zwei ganz groß schreiben was für tollen KI-Kram sie da eingebaut haben. Ob die wohl beurteilen können daß deren KI-Funktionen entweder überflüssig sind oder schlecht funktionieren? Und ob die Software abseits von KI völliger Schrott ist? Oder ob die das überhaupt groß interessiert, immerhin müssen die nicht den ganzen Tag damit arbeiten, müssen die Entscheidung welche Software verwendet wird, in zwei Wochen treffen?
Jetzt mal die andere Seite: Da sitzt du als Produktmanager an der Roadmap, welche Funktionen das CAD-Software haben muß um konkurrenzfähig zu bleiben. Die KI-Säue auf LinkedIn siehst du auch. Eventuell weißt hast du sogar etwas Programmierhintergrund, kennst dich mit den Produkten auch aus, und weißt selber daß da oft nur viel warme Luft bewegt wird. Und du kennst das Supportforum zu deinem Produkt, wo alle naselang jemand schreibt daß sich deine Firma lieber auf Bugfixes beschränken möge, Funktionen und Werkzeuge hat es bereits mehr als genug, und KI will eigentlich auch niemand so recht. (Das ist so ungefähr die Position der meisten Altiumbenutzer, meinem Lieblings-CAD, wird im Hardwarebau eingesetzt.)
Jetzt weißt du aber auch: Du mußt die paar ahnungslosen Dullis, die bei deinen Kunden die Entscheidungen treffen, überzeugen. Sonst wird dein Produkt nicht gekauft. Es ist zwar so, daß in vielen kleinere Firmen (die von der Masse her mehr Umsatz bringen) die Ingenieure mehr Mitspracherecht haben oder wenigstens mal nach deren Preferenzen gefragt werden, je größer aber die Firma ist desto weniger kommt das vor. Aber: es vergeben normalerweise eher größere Firmen Aufträge an kleinere Firmen, und die bestehen in der Regel auf Benutzung von deren CAD-Programmen. Was der eine große Fisch im Teich benutzt, benutzen dann tendenziell auch alle anderen.
Und jetzt triff mal eine Entscheidung...