7.5.2008

Netzwerkprodukte (9)

(Themenanfang)

Technisches Verständnis ist nur ein Teilbereich der Fähigkeiten, die es braucht, gute Software zu schreiben. Der andere Bereich dreht sich um "social skills". Moderne Software ist so umfangreich und komplex, daß sie nur im Team gebaut werden kann, und man braucht mehr als ein Minimum an Kommunikation, um die einzelnen Arbeitsergebnisse irgendwann wieder miteinander verknüpft zu können.

Auch innerhalb der technischen Arbeit ist die eigentliche Entwicklung nur eine Untermenge: ein großer Teil der Energie geht drauf für die Fehlersuche, für das Debugging. Wenn das Programm hinlänglich groß (und womöglich noch dazu alt genug) ist, kann es passieren, daß man im Projektverlauf zu 90% im Debugger verbringt.

Ich fixe eigentlich recht gerne Bugs (= suche und beseitige Fehler) - zumindest wenn die klar reproduzierbar sind. Man kennt ein Fehlverhalten, und es ist eine Frage der Zeit, bis man es verstanden und beseitigt hat - zumindest wenn man es mit einem Zusammenhang von begrenzter Komplexität zu tun hat. Zweimal "zumindest" - und diese beiden Einschränkungen verursachen unabsehbare Kosten.

Nicht reproduzierbare Bugs sind deutlich in der Unterzahl, kosten aber auch bei weitem den größten Aufwand. Es gibt Fälle, wo über Monate immer wieder neue Anläufe genommen werden, nur um ein Problem so einzukreisen, daß es zuverlässig auf einer Entwicklermaschine wiederholbar ist - und es gibt Fälle, wo man eine Software mit einem bekannten und schwerwiegenden, aber nicht reproduzierbaren Fehler zähneknirschend zum Release freigibt.

Wenn ein Bug in einem Programmbereich auftaucht, der von vielen anderen Bereichen benutzt wird, kann es leicht passieren, daß man ein Problem beseitigt, und durch den Fix ein völlig neues erst erschafft (mir fallen zu dem Thema eine ganze Serie von Beispielen ein, aber keines, das man in wenigen Worten einem Nicht-Programmierer erklären könnte; ich trage das ggf. noch nach).

Beide Problembereiche (Nicht-Reproduzierbarkeit von Bugs, und Seitenwirkungen von Fixes) haben nichts damit zu tun, wo, für wen, und wie man arbeitet - sie betreffen die Industrie ebenso wie freie Software, Amateure wie Profis. Spannend wird es, sich anzuschauen, wie die unterschiedlichen Gruppen damit klar kommen, daß sie wieder und wieder vor denselben Problemen stehen, gegen die kein Kraut gewachsen ist und die die Frustration des Sisyphos nachvollziehbar machen.

(Kommentarfunktion z.Zt. deaktiviert.)