Philosophie
In den Jahren der Erfahrung als Entwickler und Projektmanager stellen sich bestimmte Methoden und Strategien als vorteilhaft heraus - eine Philosophie beginnt sich zu entwickeln. Für mich sind die folgenden Themen essentiell für eine erfolgreiche Umsetzung von Softwaresystemen.
Einfachheit schlägt Komplexität
Ingenieure bevorzugen oft die ausgefeilte, komplexe Lösung. Das Gegenteil ist oft nützlicher - einfache Systeme sind schneller zu implementieren, funktionieren zuverlässiger und enthalten weniger Fehlerquellen. Zusätzlicher Aufwand, um Software zukunftssicher zu machen, muss gründlich abgewägt werden und darf nie Selbstzweck sein.
Gleichfalls anwendbar ist diese Philosophie auf die Benutzbarkeit von Tools und Produkten. Ein Wettlauf nach mehr Features hat dazu geführt, dass Software oft unnötig komplex geworden ist. Benutzer müssen viel Zeit aufwenden, um zu verstehen wie eine Software funktioniert, oder warum sie nicht wie erwartet funktioniert. Um eine hohe Kundenzufriedenheit zu erreichen, ist es meiner Meinung nach notwendig den Schwerpunkt auf leicht bedienbare Systeme mit einer sinnvollen Zahl von Features zu legen.
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. Beispielsweise konnte in einem meiner vorangegangenen Projekte der manuelle Prozess zur Fehlerticketanalyse (Download der Logdateien, Entpacken der Dateien, Konvertierung mit Tool 1, Konvertierung mit Tool 2, manuelle Suche nach interessanten Stellen) von ca. 30min zu einen vollautomatischen Prozess verbessert werden, der fast keine Zeit des Entwicklers mehr erforderte.
Kommunikation ist essentiell
Das Bild des "Hackers", der einfach in seiner Ecke sitzt und den Code herunterprogammiert, ist nicht mehr zeitgemäß. Projekte sind heutzutage umfangreich und können daher nur noch in gut funktionierenden Teams bewältigt werden, und Kommunikation ist hierzu essentiell. Ein großer Teil der Genugtuung bei der Arbeit im täglichen Softwarebusiness kommt von der Arbeit in angenehmen Teams.