Software entwicklen ist eine schwierige Aufgabe. Für mich ist ein
ständiges anpassen an die aktuellen Gegebenheiten der Umgebung ein
wichtiges Vorgehen bei meiner täglichen Arbeit an Softwarelösungen. Ich
versuche, angemessene Lösungen die auf Erfahrungen beruhen anzubieten.
Für mich ist ein flexibles anpassen meines Vorgehens an die zu
erarbeitende Lösungen ein kontinuierlicher projektbegleitender Prozess.
Ein tiefes Verständnis der Softwareentwicklung im Ganzen ist mir dabei
besonders wichtig. Es unterstützt mich bei meinem Ziel, verständliche,
produktive, korrekte und möglichst wartungsfreie Software zu schreiben.
Bei
der Programmierung innovativer Softwarelösung versuche ich durch mein
Gespür für neue Technologien und Techniken diese früh aufzugreifen und
kreativ anzuwenden. Ich probiere gern Neues aus und baue dieses in mein
bisheriges Wissen ein. Durch meine Neugierde und meine Begeisterung für
Softwaresysteme versuche ich gepaart mit meinem kritischen Denken und
einer gehörigen Portion Realismus auf die täglichen Fragen passende
Antworten zu finden. Das Gefühl wie kompliziert dabei ein Problem ist
und wieviel Zeit für die Lösung benötigt wird gibt mir das nötige
Durchhaltevermögen für meine Arbeit. Das breite Spektrum an Wissen
ermöglicht es mir, mich neuen Aufgaben und Herausforderungen zu stellen
und ich versuche diese aktiv zu Gestalten.
Domänen-getriebene Entwicklung
Domain-Driven-Development (DDD) ist nichts Neues. Es
sind bewährte Praktiken, Sammlungen und Strategien, um bestehende
Probleme in der Softwareentwicklung zu lösen. DDD vereint eine Vielzahl
von Techniken, wie Anforderungsanalyse und Anforderungsspezifikation,
modellieren von Modellen, minimieren und teilen von komplexen
Abhängigkeiten, Festlegen und Verwenden einer gemeinsamen
Fachterminologie, die konsequente Nutzung allgemeinverständlicher
Design Pattern, das definieren von Verträgen (Schnittstellen) vor der
Implementierung, das Implementieren von Tests als Teil der
Anforderungsspezifikation, das konsequente Nutzen von Konventionen als
Teil der Entwicklung, formale Semantik zur Reduzierung der Komplexität
und zur Steigerung des Verständnisses.
Test- und Verhaltens-getriebene Entwicklung
Der Einsatz von Test-getriebener Entwicklung (TDD,
Test-Driven-Development) beschreibt einen Programmiertechnik der das
Nachdenken und Spezifizieren vor der Implementierung beschreibt. Hierbei
wird der Test vor der Implementierung geschrieben und schrittweise
umgesetzt. Die konsequente Umsetzung dieser Programmiertechnik fördert
bei mir zum einen die angesproche inhaltliche Bewertung und Korrektheit
meiner derzeitigen kleinen Aufgabe innerhalb des Gesamtsystems und zum
anderen dessen technische Umsetzung. Zudem ist meine Arbeit an der
Programmieraufgabe (der Test-Case) immer ziel- und ergebnisorientiert
und somit innerhalb eines nachhaltigen Entwicklungsprozesses
produktiver.
Der Einsatz von Spezifikations-getriebenen Entwicklungen
(BDD, Behavior Driven Development) bezieht im Gegensatz zu TDD den
expliziten Gedanken ein, dass alle im Entwicklungsteam die gleiche
Fachsprache zur Lösungen einer Aufgabe in der Domäne verwenden sollen.
Anhand softwaretechnischer Sprach-Konstrukte und API's werden hier
Anforderungen mit der Fachterminologie der Domäne durch Unit-und
Integrations-Tests automatisch Testbar. Ich finde diese
Entwicklungstechnik vor allem beim programmieren von Softwarelösungen
interessant, die zum großen Teil gemeinsam mit nicht-technischen
Personen, Geschäftsleuten oder Geschäftsanalytikern erarbeitet werden.
In der agilen Softwareentwicklung ist der Gebrauch von eindeutiger, von
allen verstandener Sprache existentiell. Das gilt noch expliziter beim
Einsatz von BDD als Konzept zur Optimierung von Code- und
Spezifikationsqualität.