Mastering Software Architecture

Seit einiger Zeit setze ich mich recht intensiv mit dem Thema Software Architektur auseinander. So entstand mein Bedürfnis, mir diesen Themenbereich einmal von erfahrenen Architekten näher bringen zu lassen. Da ich Gernot Starke bereits durch seine Bücher (z.B. „Effektive Softwarearchitekturen“) kenne, war es für mich naheliegend das Seminar „Mastering Software Architecture“ zu besuchen, welches er gemeinsam mit Peter Hruschka („Business Analysis und Requirements Engineering: Produkte und Prozesse nachhaltig verbessern“) anbietet.

Ein schöner Nebeneffekt dabei war, dass das Seminar unter anderem auch die Lernziele des Lehrplans für die Prüfung zum „Certified Professional for Software Architecture – Foundation Level“ (CPSA-F) der iSAQB transportierte, so dass ich mich während des Seminars mehr oder weniger spontan dazu entschlossen habe auch diese Zertifizierung zu machen.

Weiterlesen „Mastering Software Architecture“

Produktivität durch Pair Programming

Noch immer hält sich selbst in Entwickler-Kreisen das Vorurteil, Pair Programming würde die Entwicklungsgeschwindigkeit reduzieren.

Klar, wenn zwei Entwickler an einem Rechner sitzen kann immer nur einer Tippen. Doch ist Programmieren wirklich nur das Abtippen von Code? Und wenn dem so ist, warum schafft es auch der beste Programmierer nicht am Tag mehr Zeilen zu schreiben, als eine durchschnittliche Rechtsanwaltsgehilfin in einer Stunde?

Ich habe selbst schon Pair-Programming-Sessions erlebt, bei denen zwei Entwickler vor dem Rechner reine Verschwendung waren. Dabei kann man mit einem motivierten und disziplinierten Paar sowie einer Hand voll best practices, die Velocity mit Hilfe von Pair Programming durchaus verdreifachen.
Weiterlesen „Produktivität durch Pair Programming“

Aufwandsabschätzung in der Softwareentwicklung

Aufwandsabschätzungen gehören zu den unangenehmsten Aufgaben eines Softwareentwicklers. So unangenehm dieser Task ist, so wichtig ist er jedoch auch. Sei es um im Vorfeld die Kosten für eine neue Software zu kennen, um eine zeitliche Release-Planung machen zu können oder um Behinderungen im Entwicklungsprozess zu erkennen.

Weiterlesen „Aufwandsabschätzung in der Softwareentwicklung“