Methoden
Wir möchten Sie nicht mit technischen Abhandlungen langweilen, aber etwas erzählen von dem, was uns wichtig ist, möchten wir schon.Hype und hopp
In der IT-Welt, besonders in der Softwareentwicklung, tauchen beinahe täglich neue Werkzeuge, Verfahren, Programmiersprachen und Paradigmen auf. Viele dieser Entwicklungen versinken nach kurzer Zeit wieder in der Bedeutungslosigkeit. Andere lösen eine regelrechte Hype aus, die mal länger, mal auch nur kurz andauern kann. Nur ganz wenige Innovationen haben jedoch das Zeug, langfristig wirklich bedeutend zu sein und Standards zu setzen, die die IT-Welt tiefgreifend verändern.Die Kunst einer nachhaltigen Softwareentwicklung besteht unseres Erachtens darin, die wichtigen Trends frühzeitig zu erkennen, dort zielstrebig zu investieren und sich nicht mit unbedeutenden Zeiterscheinungen zu verzetteln. Dazu braucht man vor allem eines: Erfahrung!
Die Komplexitätsfalle
Wenn in einem Projekt etwas schief geht, wird gerne dessen Komplexität als Entschuldigung bemüht. Im Klartext heißt das aber nichts anderes, als daß man wichtige Zusammenhänge nicht vollständig durchdrungen hat.Das passiert schneller als man denkt. Hier noch eine Abstraktionsschicht, dort noch ein gerade angesagtes Framework, dieses oder jenes zugekaufte Supertool, viel Mausi Klicki Bunti, wenig Grundlagenwissen und schon ist man hineingeraten in die Komplexitätsfalle.
Dabei ist Abstraktion an sich nichts Schlechtes. Im Gegenteil! Durch sinnvolle Abstraktion kann man das Wesentliche besser herausarbeiten und in der Folge auch besser nachvollziehbar gestalten, was sich unmittelbar in der Qualität niederschlägt. Voraussetzung dafür ist allerdings, dass man die Abstraktion verstanden hat, und zwar vollständig!
Deshalb ist es uns wichtig, dass wir uns auf wenige leistungsfähige Technologien verlassen, diese wo nötig erweitern und nicht aus jedem Dorf einen Hund durchfüttern, nur weil die Fellfarbe zufällig zum Projekt passt.
Objektive Glaubenssache
Man könnte meinen, Softwaretechnik sei eine objektive Angelegenheit. Schließlich bieten Null und Eins keinen Interpretationsspielraum. Doch weit gefehlt. Beim Ringen um den Königsweg, der ein Projekt sicher zum erfolgreichen Abschluss führt, sind zwei Glaubensrichtungen entstanden, wie sie unterschiedlicher nicht sein können.Die einen sagen, dass man Software konstruieren kann wie eine Brücke oder ein Auto, indem man alles ganz genau im voraus plant und durch geeignete bürokratische Maßnahmen den Projektverlauf steuert und kontrolliert. Die anderen sagen, dass Software im Grunde nichts anderes ist als ausführbares Wissen und Wissen kann man bekanntlich nicht konstruieren. Man muss es sich in einem kreativen Prozess erschließen.
Wir bekennen ganz offen, daß wir der letztgenannten Glaubensrichtung angehören. Doch da man den Glauben nicht beweisen kann, lassen wir lieber Taten sprechen.
Agil zum Ziel
Unsere Entwicklungsmethode orientiert sich stark an der sogenannten Agilen Softwareentwicklung. Agil deshalb, weil sie beweglich, flink und anpassungsfähig ist. Wir haben nämlich die Erfahrung gemacht, dass sich im Laufe eines Projekts viele neue Erkenntnisse einstellen. Ideen, wie man dieses oder jenes noch besser machen kann, effizientere Betriebsabläufe oder neu entdeckte Möglichkeiten lassen urplötzlich neue Anforderungen entstehen. Alles Dinge, an die man zu Projektbeginn noch gar nicht gedacht hat.Natürlich definieren auch wir unsere gemeinsamen Ziele, aber wir haben nicht nur das Ergebnis, sondern immer auch den Prozess im Auge, um flexibel reagieren zu können.
Das setzt allerdings voraus, dass man möglichst schnell etwas hat, das allen Beteiligten einen Eindruck davon vermittelt, wie es am Ende aussehen könnte. Je früher wir darüber reden, desto eher können wir reagieren und laufen somit nicht Gefahr, etwas zu entwickeln, das zwar dem Papier nach den Vorgaben entspricht, sich der Auftraggeber aber ganz anders vorgestellt hat.
Um diesen iterativen Prozess zu beschleunigen, haben wir das Framework Tentackle und den Code Generator Wurbelizer entwickelt. Agiler geht kaum.