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.
Sollen zu einem späteren Zeitpunkt Optimierungen oder Erweiterungen erfolgen, ist die Einarbeitung in komplexe Lösungen oft zeitintensiv, ins Besondere wenn der Entwickler der usrpürnglichen Lösung die Optimierungen bzw. Erweiterungen nicht selber vornehmen kann.

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 der fehlenden Schnittstellen verschiedener inkompatibler Tools. Mit fortgeschrittenen Skriptsprachen wie Python können kleine Helferprogramme zur Automatisierung dieser Aufgaben sehr schnell entwickelt werden.

Entwicklung ist ein komplexer Vorgang

Das Bild des "Hackers", der einfach in seiner Ecke sitzt und den Code herunterprogammiert, ist nicht mehr zeitgemäß. 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.

Trennung von Entwicklung und Test

Bei einigen Projekten bin ich gebeten worden, ein Testsystem/Testkonzept für die von mir entwickelte Hardware oder Software zu erstellen, z. T. auch die Umsetzung und die Durchführung der Abnahmetests zu übernehmen.
Für viele Entwicklungsprozesse ist dieses Vorgehen zwar formal ausreichend. Doch testet der Entwickler seine eigene Entwicklung, unterlaufen ihm die Architektur- und Konzeptfehler, die ihm bei der Entwicklung unterlaufen sind, häufig auch beim Test. Das Verbesserungspotential für das Projekt ist gering. Übernimmt ein Teamkollege den Test, so erfährt das Projekt mit nahezu gleichem Arbeitsaufwand meist einen erheblichen Mehrwert.