Industrielle Softwareproduktion


Flattr this

Um was geht es?

Heute gibt es mal nichts für den Praktiker. Um genau zu sein es gibt nicht einmal etwas für den Architekten oder Theoretiker. Dieser Artikel soll einfach nur zum Nachdenken und zur Ideenfindung anregen.

Was bisher geschah

Mein Informatikstudium liegt nun schon einige Jahre zurück, doch ich kann mich noch sehr gut an die Zeiten erinnern in denen mir grundlegende Methoden und Praktiken beigebracht wurden. Häufig waren diese zunächst unklar und lichteten sich dann für das Verstehen. Oft blieben jedoch trotzdem Teilbereiche unklar. In Datenbanken beispielsweise die Relation mit eigenen Attributen oder die Relation zwischen 3 Entitäten und ihre praktische Bedeutung. Doch da war der Gedanke, dass ein Lehrling erst einmal seine Werkzeuge zu benutzen lernen sollte, dann wird sich der Rest als Geselle schon erschliessen. Das hat in aller Regel auch so funktioniert. Doch einige Dinge blieben unklar, beispielsweise:

  • Datenbanken gibt es bereits sehr lange, warum bieten führende Hersteller immer noch kein Tool in dem ich die Verbindungsdaten zweier Datenbanken eingebe und das Tool bestimmt die Deltas (je nach Wunsch nur Struktur oder auch Struktur und Daten) und erzeugt ein Skript welches fehlerfrei durchläuft sofern keine Änderungen an den Datenbanken vorgenommen wurden. Also ohne Meldungen wie „XXX-01418: specified index does not exist“ und ähnliche Dinge.
    Es gab Zeiten in denen habe ich Logs von Deltaskripten nach aufgetretenen Fehlern durchsucht. Dabei musste ich aus hunderten Fehlermeldungen die finden die wirklich relevant waren. Nicht gerade optimal für einen Rollout auf Produktion. Alles nur weil die Skripte händisch erstellt wurden und dabei ein erprobtes aber fixes Schema verwendet wurde.
  • UML in Verbindung mit OOA/OOD sollte den Bruch wie er von SA/SD bekannt war verhindern und eine einheitliche Sprache für alle Stakeholder bieten. Doch warum wurde immer beim Klassendiagram und nicht beim Use-Case eingestiegen? Weil es nach dem Use-Case nicht weiter ging. Da war eine Lücke und nach dieser kamen die Klassendiagramme und die Interaktionen, Aktivitäten und der Rest.

Umso länger ich darüber nachdenke um so mehr Beispiele würden mir einfallen. So haben wir gearbeitet! Jeden Tag! In fast jeder Firma! Wir sind von der Uni gekommen oder aus der Lehre, mit vielen Ideen und haben dann die klägliche Praxis kennengelernt. Waren wir damit zu frieden? Natürlich nicht! Haben wir was geändert? Wohl kaum! Generelle Änderungen gingen immer nur in kleinen Schritten und dauerten viele Diskussionen, Argumentationen und vor allem Zeit. Warum willst Du denn von CVS auf SVN umstellen nur weil es das jetzt gibt? Wegen der Ordner? Mein Gott wen interessieren die Ordner – das ging doch bis jetzt auch und ob da die Historie erhalten bleibt ist noch die 2. Frage. In den Kommentaren sind auch Sonderzeichen – ich glaube nicht das das geht. Hat das schon mal jemand gemacht? Das kannst Du doch einfach in der Root editieren – wo ist Dein Problem? Das machen wir jetzt nicht! Viel zu großes Risiko. Kommt ihnen einer der Sätze bekannt vor?

 

Dazu kamen dann noch diese ständigen Hypes. Gestern war es eine Client-Server Anwendung, dann ein Web Client (ja ich weiss das sind wirklich verschiedene Architekturen). Dann war der Web Client nicht mehr gut genug. Zurück? Mit Nichten! Wir brauchen einen Rich Client. Und dann gings erst richtig los. Thin Client, Fat Client, Smart Client, Rich-Thin Client, …. Alles dasselbe doch nie ganz. Jetzt musstest Du vor dem Gespräch beim Café erstmal erklären was Du unter welchem Begriff verstehst damit Du mit den Anderen reden konntest. Dannach die Frameworks: Hibernate, Spring, Keel, … und die Methoden: Objektorientiert, Aspektorientiert, Datenzentriert, agile, XP, Scrum und letztlich die Sprachen: Scala, Ruby, Rails, Closure, …

Viele von uns waren doch nur am Ausprobieren was sich wie einsetzen lässt und was sich wie mit was verträgt. Nebenbei auch noch die Arbeit schaffen, da waren ja noch neue Features zu implementieren – Wahnsinn!

Bei dieser Fülle an Ablenkung blieb die eigentliche Herausforderung unbeachtet auf der Strecke liegen: Wie werden wir besser, schneller, effizienter und effektiver? Wie erhöhen wir die Qualität, wie können wir schneller ausliefern und die Kundenzufriedenheit verbessern?

Nicht das es nicht genug Controling gegeben hätte. Oh nein! Excel wurde schon massiv benötigt um schicke Statistiken für das Management zu erstellen. Doch was haben sie gebracht? Wir haben Continius Integration eingeführt und Prüfungen mittels Checkstyle und Cobertura eingebaut aber das Build bei Verletzungen nicht brechen lassen. Wir haben gezielte Aktionen durchgeführt, eine Woche lang die Verstösse durch Refactoring eliminiert. Die Anzahl der Verletzungen sank unter die festgelegte Grenze. Die fachlichen Fehler stiegen vereinzelt🙂 Dann wechselte der Focus des Managements und nach einem Jahr wurden die Statistiken erst wieder ausgewertet. Den alten Wert der Verstösse hatten wir wieder erreicht und um etliches überschritten. Wem ging das nicht so? Wer lies das Build brechen und riskierte eine verspätete Auslieferung auf die nächste Testumgebung? Ihr habt den Systemtest in Bedrängnis gebracht! Wegen Euch konnte er erst später anfangen mit testen!

Trotz allem immer der Glaube es wird besser werden, irgendwann werden wir es schaffen, wir verbessern unsere Prozesse bis es fluscht. Habt Ihr heute Prozesse? Seit Ihr Kundenorientiert, serviceorientiert arbeitet Ihr nach ITIL und bereitet Euch bereits auf SOA vor? Oder seit Ihr sogar agile? *psst*! Fluscht es jetzt?

Dennoch, ich habe in letzter Zeit tatsächlich wieder Hoffnung. Es gibt Leute, die fragen uns ob wir eigentlich professionell arbeiten. Ob das was wir da machen eigentlich Hand und Fuß hat. Die fragen das auch sich selber! Die vergleichen Softwarentwicklung mit einem Handwerk. Die hinterfragen unsere Ausbildung und unsere Arbeitsweisen. Und sie tun gut daran. Ich bin begeistert davon. Endlich fangen wir mal am Anfang an und stellen die hoffentlich richtigen Fragen in der richtigen Reihenfolge. Endlich ist es mal nicht unsere Sturrheit wegen der wir dem Chef vorschlagen das nicht mehr noch vor dem täglichen Wartungsfenster um 20:00 Uhr zu fixen sondern es ist unsere Verantwortung die uns dazu antreibt. Den Gedanken finde ich gut.

Aber das eigentliche Problem haben wir immer noch nicht entdeckt. Wir haben es über die vielen Jahre aus den Augen verloren. Die Frage die sich viele von uns schon vor Jahren stellten. Aber wir haben sie nicht vergessen! Gestern tauchte sie wieder auf. In google*plus. Da fragte einer: „Was ist so anders bei Softwareentwicklung?“. Ja genau: Was ist es? Warum bauen wir Software nicht genauso wie andere Autos oder Schrauben am Fließband? Ich habe viele Antworten bislang auf diese Fragen gehört. Keine hat mir diese Fragen zufriedenstellend beantwortet.

Wir sollten anfangen jetzt darüber nachzudenken, bevor wir das nächste Framework schreiben oder die nächste tolle Sprache erfinden.

Ich finde es ist ein wichtiges Thema und ich finde es hat einen solch langen Artikel auf meinem Blog verdient. Außerdem hoffe ich, dass die nahe Zukunft endlich Antworten auf diese Fragen liefert. Weltweit sind bestimmt genug Berater verfügbar um Antworten auf diese Fragen liefern zu können. In diesem Sinne – frohes, professionelles Schaffen.

Post a comment or leave a trackback: Trackback URL.

Kommentare

  • FunThomas424242  On 27. November 2011 at 20:42

    Kann mir mal jemand erklären wie das mit diesen automatischen Trackball Zeugs gedacht ist? Bin für jeden Tipp wie das Feature richtig zu nutzen ist dankbar.

  • best ferrari deals  On 1. Juli 2012 at 03:32

    What’s up i am kavin, its my first occasion to commenting anyplace, when i read this article i thought i could also create comment due to this sensible paragraph.

    (funthomas424242: Yes you can – please do it and wait for my commit)

Trackbacks

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: