Rash thoughts about .NET, C#, F# and Dynamics NAV.


"Every solution will only lead to new problems."

10 Tipps für erfolgreiche Software-Entwicklung


In der Softwarentwicklung steht man oft vor den selben Problemen, sodass es wichtig ist sich an bestimmte Punkte zu erinnern und diese dann zu beherzigen. Die folgende Liste, deren Reihenfolge nicht unbedingt eine Dringlichkeit wiedergibt, könnte für Sie ein Ansatz dazu sein: 

  1. Versuchen Sie mindestens eine 11 im Joel-Test zu erreichen.
  2. Arbeiten Sie nach Entwurfsmustern und dokumentieren Sie Ihre Arbeit mit der Angabe des Musters.
  3. Dokumentieren Sie Ihre Arbeit vor der Implementation.
  4. Arbeiten Sie bei schwierigen Aufgaben die buganfällig sind immer zu zweit.
  5. Haben Sie Spaß an Ihrer Arbeit.
  6. Nutzen Sie die Community.
  7. Arbeiten Sie klare Workflows für Ihre Entwicklung heraus.
  8. Nutzen Sie intern immer die neuesten Versionen Ihrer Produkte.
  9. Arbeiten Sie nach einem klaren Zeitplan – aber planen Sie Zeit für Katastrophen ein.
  10. Nutzen Sie ein internes Wiki um einmal erforschte Sachverhalte abzuspeichern.
1. Versuchen Sie mindestens eine 11 im Joel-Test zu erreichen.

Der Joel-Test ist ein weit verbreitetes und einfaches Instrument seine eigene Produktivität zu messen ohne irgendwelche verrückten Statistiken (wie eingecheckte Zeilen pro Stunde) zu analysieren. Der Vorteil ist, dass man ganz klar mit Ja (1 Punkt) oder Nein (kein Punkt) antworten kann und so sofort einen Eindruck erhält, wie weit man noch von Firmen wie Microsoft entfernt ist. Microsoft arbeitet übrigens laut Joel Spolsky immer auf einer 12.

Der Joel Test

  1. Benutzen Sie eine Versionskontrolle? 
  2. Können Sie ein Build in einem Schritt erzeugen?
  3. Machen Sie tägliche Builds?
  4. Benutzen Sie eine Bug-Datenbank?
  5. Beheben Sie Bugs bevor Sie neue Features entwickeln?
  6. Haben Sie einen aktuellen Zeitplan?
  7. Haben Sie eine Spezifikation?
  8. Haben Ihre Programmierer leise Arbeitsbedingungen?
  9. Benutzen Sie die besten Tools die man für Geld kaufen kann?
  10. Haben Sie Tester? 
  11. Schreiben neue Mitarbeiter Quellcode während Ihres Bewerbungsgesprächs?
  12. Benutzen Sie “hallway usability testing” (jemanden die Software testen lassen den Sie zufällig auf dem Gang treffen)?
2. Arbeiten Sie nach Entwurfsmustern und dokumentieren Sie Ihre Arbeit mit der Angabe des Musters.

Es ist für Entwickler enorm wichtig in bekannten und erfolgreichen Entwicklungsmustern (design patterns) zu denken und diese klar bezeichnen zu können. So kann man sich auf die Umsetzung bereits erprobter Lösungen konzentrieren und ganze Konzepte bei Bedarf mit einem einzigen Wort einem anderen Entwickler erklären. Als guter Einstiegspunkt ist da natürlich das “Design Patterns”-Buch der Gang of Four (GoF) zu nennen.

Design Patterns. Elements of Reusable Object-Oriented Software
von Erich Gamma, Richard Helm, Ralph Johnson und John Vlissides

Design Patterns Das Buch bietet nach einer kurzen Einleitung und einem Fallbeispiel einen umfassenden Katalog präziser Lösungen für wiederkehrende Entwurfsprobleme der objektorientierten Softwareentwicklung. Mit den berühmt gewordenen 23 Entwurfsmustern der GoF können Sie erfolgreiche objektorientierte Entwürfe wiederverwenden, ohne jedes Mal neu entwickeln zu müssen.

Wichtig ist es auch nach Anwendung eines Musters in der Dokumentation darauf zu verweisen. Im Quellcode könnte man also Kommentare wie „GOF:Decorator (175)“ verwenden, wobei die Zahl in Klammern für Seitenzahl im Buch steht.

Selbstverständlich kann man auch eigene Entwurfsmuster anwenden, diese sollten dann aber gut im internen Wiki (siehe Punkt 10) dokumentiert werden.

3. Dokumentieren Sie Ihre Arbeit vor der Implementation.

Jeder Entwickler weiß, dass eine gute Dokumentation sehr wichtig für die spätere Wartung ist. Dennoch ist es für viele eine lästige Arbeit die man gerne unter den Tisch fallen lassen würde. Versuchen Sie jedoch einen kleinen Trick: Verschieben Sie die Dokumentation (zum Beispiel als Hilfebeschreibung) an den Anfang des Entwicklungsprozesses. Schreiben Sie also in der Funktionsanforderung bereits in Dokumentationsstil und implementieren Sie genau danach (bzw. passen Sie bei eventuellen Änderungen die Dokumentation an). So haben Sie einen Großteil der Dokumentation als kreativen Prozess erlebt und nicht als langweiliges Beschreiben von Funktionalität die “sowieso schon funktioniert”.

4. Arbeiten Sie bei schwierigen Aufgaben die buganfällig sind immer zu zweit.

Es gibt in der Softwareentwicklung viele radikale Ansätze die alle das Ziel haben die Qualität von fehleranfälligem Code zu erhöhen. Als Beispiel sei genannt, dass manche Firmen Entwickler verbieten eigenen Code auszuführen – in diesem Fall dürfen das dann nur die Kollegen. Wenn man nicht ganz so radikal sein möchte, sollte man dennoch bei besonders schwierigem Code in eingespielten Teams zu Zweit entwickeln und debuggen. Am Anfang ist dies sicherlich gewöhnungsbedürftig, da Entwickler es gewohnt sind immer eine Tastatur unter den Fingern zu haben, aber Sie werden sehen, nach ein paar solcher Sessions werden Sie des öfteren darauf zurück greifen.

5. Haben Sie Spaß an Ihrer Arbeit.

Einer der wichtigsten Aspekte beim Entwickeln von Software ist der Spaß. Wenn der verloren geht, leidet meistens auch die Produktivität. Versuchen Sie also Ihre Prozesse so zu optimieren, dass Sie immer Spaß an der Arbeit haben. Kleinere Wettbewerbe im Team und Denksportaufgaben können übrigens einen positiven Beitrag leisten.

Google hat übrigens eine “twenty percent”-Zeit für die Entwickler eingeführt. 20% der Arbeitszeit dürfen die Angestellten für Projekte verwenden, die sie besonders interessieren. Weiteres dazu in meinem Blog-Eintrag zur “twenty percent time”.

6. Nutzen Sie die Community.

Steffen am Arbeitsplatz

So ziemlich jedes Thema, das mit Softwareentwicklung zu tun hat, besitzt eine Community im Internet. Nutzen Sie diese. Bevor Sie stundenlang an bestimmten Aufgaben verzweifeln suchen Sie in (guten) Foren, ob nicht jemand anderes schon ein ähnliches Problem hatte. Wenn dem nicht so ist, dann stellen Sie selbst die Frage oder regen eine Diskussion über das Problem an – oftmals werden Sie so Ihre Lösung viel schneller erhalten. Da aber irgendjemand ja antworten muss: Helfen Sie der Community wenn Sie können!

7. Arbeiten Sie klare Workflows für Ihre Entwicklung heraus.

Nichts ist schlimmer in der Softwareentwicklung als ungeregelte Arbeitsabläufe. Deshalb ist es wichtig alle Arbeitsabläufe gut zu dokumentieren und im Team zu kommunizieren. Es muss zum Beispiel klar sein, was ein Entwickler zu tun hat wenn er eine Aufgabe bearbeitet.

Beispiel: Aufgabenlösungsworkflow bei Entwicklern

  1. Zugeordnete Aufgabe aus der Bug-Datenbank entnehmen.
  2. Aufgabe analysieren (in welcher Version wird gearbeitet?).
  3. Erwartete Aufgabenlösung dokumentieren. 
  4. Beteiligte Objekte aus der Versionsverwaltung auschecken.
  5. Lösung in Code umsetzen – Änderungen in Dokumentation nachpflegen.
  6. Objekte mit Verweis auf Aufgabennummer einchecken.
  7. Aufgabe dem Test übergeben.
8. Nutzen Sie intern immer die neuesten Versionen Ihrer Produkte.

Wenn Sie leistungsfähige Software entwickeln wollen, müssen Sie dafür sorgen, dass intern auch mit den neuesten Versionen Ihrer Software gearbeitet wird – denn dann fällt sofort auf, wenn Funktionsänderungen nicht das erwünschte Ergebnis bringen und Ihre Kollegen werden sich vertrauensvoll an Sie wenden.

9. Arbeiten Sie nach einem klaren Zeitplan – aber planen Sie Zeit für Katastrophen ein.

Ein typisches Problem bei vielen Projekten ist das Kalkulieren des Zeitplans. Wieviel Zeit brauche ich um eine bestimmte Aufgabe zu erfüllen? Einerseits möchte man nicht zu knapp kalkulieren und andererseits ist man im Projektgeschäft natürlich dem Markt ausgesetzt. Dennoch gilt besonders bei Zeitplänen Murphys Gesetz. Planen Sie also genug Zeit für Katastrophen ein – sie werden kommen.

10. Nutzen Sie ein internes Wiki um einmal erforschte Sachverhalte abzuspeichern.

Beim Entwickeln von Software hat man des öfteren mit “Forschungsarbeit” zu tun. Man testet Beispiele aus und baut kleinere Prototypen. Es ist immer praktisch solche Ergebnisse im Team gemeinsam zu sammeln und Begriffe exakt zu klären. Dazu bietet sich ein Wiki an. Das muss nicht immer mit einem echten Wiki-System wie MediaWiki passieren – diese bieten jedoch die Vorteile von einfacher Installation, Volltextsuche, Benutzer- und Versionsverwaltung und vielem mehr.

Verwandte Artikel

2 Comments »

  1. feine Zusammenfassung, speziell den letzten Hinweis zur internen Wiki-Nutzung finde ich interessant. Habt Ihr schon Erfahrung zur Annahme bei den Mitarbeitern/Entwicklern bzw. Vertrieb sammeln können? Im besonderen bin ich da an der Implementierungsmethodik bei der Einführung eines internen Wikis interessiert…vielleicht ergibts sich zukünftig dazu einmal ein Austausch…lg

    Comment by farLEEx — Sunday, 17. June 2007 um 10:20 Uhr

  2. Eine sehr schöne Zusammenfassung, auch wenn meiner Meinung nach die Dokumentation sowieso in den vorherigen Schritt der Planung gehört. _Während_ der Umsetzung eines Projekts wird hingegen Punkt 11 beim Joel Test nicht mehr viel helfen ;)

    Comment by H-S-E — Saturday, 9. August 2008 um 19:55 Uhr

RSS feed for comments on this post. | TrackBack URI

Leave a comment

XHTML ( You can use these tags): <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> .