am 16. September 2011
Wir Softwareentwickler haben doch im Grunde zwei große Probleme, die immer und überall auftreten. Das erste Problem ist Softwarequalität. Es muss schnell gehen und die oberen zehntausend sind sich sicher, dass Qualität teuer und somit das erste ist, was gestrichen werden kann. Unit Tests sind bei vielen Projekten also einfach nur Ballast. Ein weiteres großes Problem ist, dass wir häufig Dinge bauen, die kein Erfolg werden. Wie oft ich schon von Leuten gehört habe, dass ihre Idee mindestens den Weltfrieden bringen wird. Aber so etwas kennt ihr bestimmt alle. Ich würde mal sagen, dass 50% der Features, die ich in meinem Leben umgesetzt habe, besser abgeschaltet werden sollten.
Jetzt kombinieren wir diese beiden Punkte einfach einmal. Wir bauen Zeugs, welches wir eh wegwerfen und ärgern uns über die Qualität der Dinge, die wir bauen. Irgendwie ein Widerspruch. Warum hohe Qualität bei Software die wir eh nicht wirklich benötigen.
Inspiriert hat mich Kris Köhntopp, als er ein wenig über den Alltag bei booking.com erzählt hat. Wie könnte man also vorgehen? Wir müssen unsere Software in zwei Teile gliedern. Der erste Teil beinhaltet alles, was sauber ist, zum Beispiel Core-Komponenten und auch erfolgreiche Features. Diese Gruppe muss sauber vom Aufbau und Testabdeckung sein. Mehr ist hier wirklich auch mehr.
Neue Features kommen erst mal in die Quarantänezone. Das geht bei kleineren und autarken Dingen wunderbar. Nehmen wir zum Beispiel die Top 5 Artikel auf phphatesme, wenn ich mir die Statistiken ansehe, wird mir klar, dass es ein unnötiges Feature ist. Also rausgeworfenes Geld, dass ich es damals sauber implementiert habe. Eigentlich hätte ich es “hinrotzen” sollen und im quick and dirty Verfahren eine Lösung bauen. Wenn das Feature dann ein Erfolg wird, wunderbar, dann machen wir es einfach neu oder setzen unser Optimierungsteam dran. Wenn es kein Erfolg wird: Abschalten.
Ja ich weiß, wenn es mal da ist, dann wird es auch genutzt und eure Produkt-Menschen werden sicher nicht wegwerfen, was schon da ist. Ich glaube, dass dies aber erstens eine Frage der Kommunikation ist und zweitens werden sie ganz schnell sehen, dass ihr Featuredurchsatz nach oben geht und die Dinge, die sich wirklich als erfolgreich herauskrsitalisiert haben eine bessere Qualität besitzen. Schön war auch das Zitat von Kris “Wir haben jede Menge beschissenen Code da draußen, der uns reich macht”.
Nächstes Problem sind die Performance-Junkies. Das Tool muss irgendwann mal tausende von Usern abkönnen und deswegen brauchen wir Techologie X und es muss bis aufs kleinste optimiert sein. Am besten soll es auf einem Server laufen und und und. Bei mir ist es so, dass wir so viele Server im Betrieb haben, dass es kein Problem ist, wenn man noch mal welche hinzustellt. Was ich also sagen will. Wenn euer Tool/Feature im ersten Anlauf nicht viele User abkann, dann schlagt es mit Hardware tot. So teuer sind zwei Server in der Amazon-Cloud nicht, dass man sich das nicht leisten könnte.
Ich glaube, dass die Qualitätswelt mit einer solchen Vorgehensweise glücklich ist und auch die Entwickler, aber es bedeutet ein Umdenken im Prozess.
PS: Das ganze klappt nur bei Projekten und nicht bei Produkten. Sollte ich vielleicht noch zu dem Ansatz hinzufügen. Bei unseren redaktionellen Portalen wäre es ein Fortschritt.