Philosophie

Mit zunehmender Erfahrung stellten sich über die Jahre bestimmte Methoden und Strategien als vorteilhaft heraus - eine Philosophie entwickelt sich.

 

Einfachheit schlägt Komplexität

In fast allen Fällen ist es vorteilhaft, einfache "straight forward" Lösungen zu wählen. Einfache Lösungen sind schneller zu implementieren, funktionieren zuverlässiger und enthalten weniger Fehlerquellen.
Heutige Softwareprojekte bringen aufgrund ihrer Größe zumeist von selbst eine hohe Komplexität mit. Dieser Komplexität sollte bei der Implementierung mit klaren Strukturen und gut verständlichen Konstruktionen entgegengewirkt werden.
Komplexe Konstruktionen können durch eine Verkürzung des Codes die Verständlichkeit erhöhen, sind aber in aller Regel schwerer zu verstehen - ins Besondere bei künftigen Änderungen und Optimierungen.

Trennung von Entwicklung und Test

Bei einigen Projekten ist es üblich, dass ein Entwickler auch das Testsystem/Testkonzept zu seiner Entwicklung entwickeln soll, z. T. sogar auch die Umsetzung und die Durchführung übernehmen soll. Dies führt in aller Regel zu schlechteren Ergebnissen, als es bei Projekten mit getrennter Entwicklung und Test der Fall ist, wenngleich für viele Entwicklungsprozesse dieses Vorgehen heute noch immer formal ausreichend ist.
Testet der Entwickler seine eigene Entwicklung, unterlaufen ihm in der Regel die gleichen Architektur- und Konzeptfehler, die ihm bei der Entwicklung unterlaufen sind auch beim Test. Das Verbesserungspotential für das Projekt ist gering.
Es ist daher eigentlich immer von Vorteil, wenn Implementierung und Test nicht von einer Person betreut werden. Ist ein Kollege auf Implementierung und ein anderer auf Test spezialisiert, schauen sie aus verschiedenen Richtungen auf die selbe Software. Dadurch erfährt das Projekt mit nahezu gleichem Arbeitsaufwand meist einen erheblichen Mehrwert.

Schnelles Entwickeln durch Automatisierung

Unabhängig welches Projekt oder Technologie man betrachtet, es gibt sie überall: langwierige, sich ständig wiederholende Aufgaben, z.B. bei der Verwendung von schlecht umgesetzten Tools oder aufgrund fehlender oder inkompatibler Schnittstellen von Tools. Mit fortgeschrittenen Skriptsprachen wie Python können kleine Helferprogramme zur Automatisierung dieser Aufgaben sehr schnell entwickelt werden.

Entwicklung ist ein komplexer Vorgang - Kommunikation ist essentiell

Durch das hohe Abstraktionsniveau heutiger Betriebssystemen und Frameworks ist die Entwicklungstätigkeit keine stupide Programmieraufgabe mit nur einem einzigen Weg, der zum Ziel führt. Vielmehr handelt es sich um ein Erfassen komplexer Zusammenhänge und das Finden der zu den Randbedingungen optimal passenden und ausbalancierten Lösung.
In Folge können viele Projekte nur noch in gut funktionierenden Teams bewältigt werden. Klare Kommunikation von der Projektspitze in das Team wie auch im Team untereinander ist hierzu essentiell.