Die Basisapplikation
Bei mir ist aus einer zufälligen Gipfelerfahrung im Programmieren inzwischen eine Methode geworden, die ich in allen Projekten anwende:
Die erste Version einer Software muss in wenigen Stunden entstehen. Ich nenne sie die Basisapplikation. Sie stellt ein System dar, das praktisch voll einsatzfähig und anwendbar ist.
Und das ist ein wichtiger Punkt, damit das Konzept der Basisapplikation funktioniert:
Dieses erste Minimalsystem muss den eigentlichen Zweck des Softwareprogramms erfüllen im Sinne einer emotionalen Erfüllung. Zur Erinnerung: Das ist, was eine Entwicklung antreibt. Es ist wie ein innerer Sog, der nach Erfüllung strebt. Die Erfüllung innerer Bedürfnisse hat eine ganz bestimmte Empfindungsqualität. Und die muss durch die Basisapplikation erreicht werden.
Bevor die Basisapplikation in ein paar Stunden entwickelt werden kann, gilt es eine geistige Vorarbeit zu leisten, die durchaus auch Tage oder Wochen in Anspruch nehmen kann:
- Den eigentlichen Zweck oder die Hauptfunktion der Software verstehen und ggf. auch aus einer ganzen Liste herausfinden: Was treibt denjenigen tatsächlich an, der die Entwicklung einer Software initiiert hat?
- Eine Möglichkeit finden, diese Hauptfunktion in kürzester Zeit als voll einsetzbare Applikation in die Welt zu setzen.
"Ja, aber warum dieser Stress?" werden manche fragen. "Warum muss es in ein paar Stunden oder höchstens ein paar Tagen gehen?"
Dafür gibt es folgende Gründe:
- Systeme, die auf diese Weise entwickelt werden, haben nicht selten eine erstaunliche auf ihrer Einfachheit beruhende Eleganz und Qualität.
- Das Herausfiltern der Hauptfunktion lässt zahlreiche Leistungsmerkmale hintenrunterfallen, die zwar sinnvoll klingen, aber in der Praxis einfach nur überflüssig im System rumfliegen würden. (Wenn sie sich hartnäckig als nötig erweisen, kann man sie ja immer noch dazuentwickeln.)
- Die Fixierung auf eine ganz kurze Entwicklungszeit schließt Verfahren und Methoden von vornherein aus, die dem im Wege stehen.
- Zahlreiche Tätigkeiten und Verrichtungen, die für Softwareentwicklung als nötig angenommen werden, die aber nicht wirklich nötig sind, bleiben einfach auf der Strecke.
- Die Basisapplikation ist strukturell und architektonisch gesehen oftmals ein "Schuss ins Blaue". Genau das aber lässt die wirklich passenden Strukturen aufscheinen – die genialen Lösungen des schöpferischen Unterbewusstseins, die normalerweise fast immer blockiert und überlagert werden und die den künstlichen Architekturen konzeptioneller Theoretiker haushoch überlegen sind.
- Der Versuch, die Basisapplikation erstmal geistig zu finden und dann zu entwickeln, stellt den Zweck einer Entwicklung schonungslos auf die Probe. Was diese Probe übersteht, ist es sehr wahrscheinlich wert, wirklich entwickelt zu werden.
- Insbesondere die Vollständigkeitsfalle fliegt sofort auf: Wenn man eigentlich keine richtige Applikationsidee hat und diesen Mangel durch Vollständigkeit oder besonders ausgefallen Lösungen zu übertünchen versucht: "Ich würde gern etwas entwickeln lassen wie YouTube, aber es soll auch noch Auktionen können." Hat man gelernt, sich auch unangenehmen Wahrheiten nüchtern zu stellen, kann das Konzept der Basisapplikation viel Zeit und Geld sparen helfen und man kann stattdessen die Energie in die Verbesserung seiner Applikationsidee stecken.
- Auch das Entwicklungsmodell "Wir machen jetzt das ganz tolle zukunftstaugliche System. Leider blockiert das die gesamte Entwicklung für die nächsten 5 Jahre und zwischendurch müssen wir die Kunden irgendwie vertrösten." hält dem Basisapplikationsfilter nicht stand.
Gott schuf die Welt in 6 Tagen. Warum sollten wir für ein Softwareprogramm Jahre brauchen? Nun sind wir nicht Gott, aber wir erschaffen ja auch nicht die Welt, sondern lediglich ein Softwareprogramm. (Als solches durchaus ein respektabler Beitrag zur Erschaffung der Welt)
Es gilt hier auch mit einer Vorstellung aufzuräumen, welche die Entwicklung von Software als einen monate- oder jahrelangen kontinuierlichen Prozess ansieht. Das entspricht nicht der eigentlichen Natur schöpferischer Prozesse. Zur eigentlichen Natur schöpferischer Prozesse zählen zum Beispiel Geburten: Erst sieht man nicht viel, nur einen dicken Bauch (geistige Vorarbeit), dann rappelts ordentlich im Karton und plötzlich ist etwas da – etwas kleines. So isses auch mit der Basisapplikation.
Die Basisapplikation ist eine Sache des Glaubens und zwar des Glaubens als schöpferischer geistiger Operation: Die Annahme, dass es möglich ist, eine erste Version in kürzester Zeit zu erstellen, erschafft die Lösung.
Dieses Konzept dauerhaft angewendet setzt einen Lernprozess in Gang, genau das zu tun, was man eigentlich tun will und sonst gar nichts. Gegenwärtiges Softwareengineering ist so vollgestopft mit Ansichten, was man so alles tun müsste, das bei genauer Betrachtung gar nicht wirklich nötig ist. Softwaresysteme können gleichzeitig so einfach und so nützlich sein ...