26 Aug 2007 

Holding a Program in One's Head

Ich bin auf einen neuen Artikel von Paul Graham gestoßen worden: Holding a Program in One's Head. Leider hat er selber keinen RSS-Feed, über den Umweg Aaron Swartz gibt es einen verkürzten Feed.

In englisch und gut zu lesen!

Seinen Artikel kann ich gut nachvollziehen. Ähnliche Überlegungen sind mir in der Projektarbeit aufgestoßen. Im Folgenden Exzerpte in Übersetzung:

Ein guter Programmierer, der intensiv an seinem eigenen Code arbeitet, kann ihn komplett im Kopf haben, wie ein Mathematiker, der an einem Problem arbeitet. Kinder werden gelehrt, ein Problem auf Papier auszuarbeiten. So arbeitet ein Mathematiker nicht. Das läuft viel mehr im Kopf ab: sie versuchen ein Problem so gut zu verstehen, daß sie sich darin bewegen können, wie man selber nur in Gedanken sich in dem Haus bewegen kann, in dem man aufwuchs. Programmieren kann im besten Fall genauso funktionieren. Das ganze Programm ist im Kopf und läßt sich nach Belieben manipulieren.

Mein Code ist mein Verständnis des Problems, das ich löse. Erst wenn der Code in meinem Kopf ist, habe ich das Problem verstanden.

Dann schreibt er in Programmiererdenke:

Selbst die besten Programmierer haben nicht immer den kompletten Programmcode im Kopf geladen. Es gibt einige Strategien mit den man sich helfen kann:

  1. Ablenkung vermeiden
  2. In längeren Stücken arbeiten
  3. Eine kompakte Sprache verwenden
  4. Das Programm immer wieder neu schreiben
  5. Auch später noch lesbaren Code schreiben
  6. In kleinen Gruppen arbeiten
  7. Viele Köche verderben den Brei
  8. Klein anfangen

Er wundert sich, wieviele Programmierer per Zufall alle 8 Punkte einhalten und ist noch mehr verwundert, wie die in der Firma offiziell sanktionierten Projekte alle 8 Punkte falsch machen.

Sehr empfehlenswerte Lektüre. Wir Einzelkämpfer, 3-4 Hansels, sind deshalb so effizient, weil Firmen, Companies so organisiert sind, daß sie verhindern, für was Progammierer sich abstrappeln.

Auf gleicher Code-Basis habe ich mehrere 4D-Lösungen in paralleler Bearbeitung! Zwischen den Kunden zu wechseln bedeutet technisch, die Data-Dictionaries auszutauschen und mit den richtigen Kundendaten zu starten. Trotzdem ist es immer dann eine aufwendige Angelegenheit, wenn für die verschiedenen Anwender nicht im gleichen Bereich der Datenbank, sondern in verschiedenen Ecken zu arbeiten ist. Die Formulierung „Programmcode in den Kopf nachladen“ beschreibt das Dilemma exakt. Die Switch-Technik steht weitgehend. 4D liefert, was dazu notwendig ist und das Switchen dauert nur wenige Sekunden. Mich selber umzustellen dauert viel länger. Nach der Lektüre von „Holding a Program in One's Head“ weiß ich, es geht nicht nur mir so. Viel Vergnügen beim Lesen.

4D Themen: Berichte in Arbeit