Sonntag, 6. Januar 2008

Wie man Arbeit im Schlaf erledigt

Mancher hat das Neue Jahr mit guten Vorsetzen begonnnen. Vielleicht war ja auch der Vorsatz dabei, künftig mehr Zeit für andere Dinge zu haben als die Arbeit. Für Entwickler gibt es einen kleinen Trick, wie man das leicht erreichen kann - sofern das Ziel ist, die Arbeit zu erledigen und nicht Anwesenheit zu zeigen.

1. Ein Schritt nach dem anderen

Rom ist nicht an einem Tag erbaut worden und auch ein Softwaresystem entsteht Stück für Stück. Um sich nicht zu verzetteln, sollte man sich immer auf genau eine Anforderung konzentrieren und alles übrige zunächst außer acht lassen. Eine Anforderung ist hierbei so elementar zu verstehen, daß daraus ein Entwicklungsaufwand von nicht mehr als einem Tag entsteht. Wenn die Anforderungen noch nicht so vorliegen, muß der Entwickler diese Aufgabe übernehmen.

2. Klare Ziele

Eine Anforderung muß so formuliert sein, daß klar ist, welche beobachtbare Eigenschaft an dem System sich ändern muß, um sie zu erfüllen. Ist keine meßbare Eigenschaft bekannt, an der festgestellt werden kann, ob die Anforderung erfüllt ist, so ist auch nichts zu tun. Vielmehr ist alles schädlich, was aufgrund einer solchen Pseudoanforderung implementiert wird, da dieser Code kein später nachvollziehbares Ziel verfolgt und bei der weiteren Wartung unnötige Aufwände erzeugt.

Wenn ein meßbares Ziel definiert ist, so kann auch ein kleiner Test geschrieben werden, mit dem ebendiese Messung automatisch durchgeführt wird.

3. ... und jetzt der Trick

Die Schlafforschung hat ergeben, daß das Gehirn während des Schlafes, insbesonders während der sogenannten REM-Phasen, die neuen Eindrücke aus dem Kurzzeitgedächtnis verarbeitet. Lernt man etwas und schläft danach, so werden die Lerninhalte wesentlich besser verarbeitet, als wenn man wach bleibt. Die Softwareentwicklung ist ein ständiger Lernprozeß. Erst muß ich die Anforderung lernen, damit ich sie dann umsetzen kann.

Der Trick besteht nun darin, die Arbeit so zu organisieren, daß das letzte, was man vor Feierabend macht, für eine Anforderung zu bestimmen, welche Verhaltensänderungen für die Software daraus folgen und möglichst auch einen Test dafür zu schreiben. Die Implementierung wird auf den nächsten Morgen verschoben. Meine Erfahrung mit dieser Vorgehensweise ist, daß ich bei Arbeiten an einem System mit dem ich mich gut auskenne, dadurch im Durchschnitt ca. eine halbe Stunde pro Tag einsparen kann.




2 Kommentare:

F Quednau hat gesagt…

Gefällt mir. Alternativ kann man ja einen Mittagsschlaf einbauen, dann kann man auch vor dem Mittagessen ein Test schreiben.
Man muss sich nur nicht in Erklärungsnot bringen lassen, wenn man in der failed Tests-Statistik, wie viele Unit Tests im Testing des nächtlichen builds schief gehen, immer an der Spitze steht. ;)

Christoph Adamek hat gesagt…

Nächtliche Builds - vorbildlich!
Man muß aber die Tests nicht unbedingt einchecken, bevor sie auf grün stehen. Dann kann man auch beruhigt Siesta halten. :)