Hier habe ichklug,,faulundProgrammierer,diese Wörter verwendet. Was ich mit diesen Wörtern meine, ist:

  • Programmierer: energiegeladen, darauf fokussiert, Code zu verwenden, um reale Probleme zu lösen; nicht gemeint sind jene Träumer, die nur denken, aber nie handeln.
  • Klug: in der Lage, Probleme gründlich zu durchdenken (nicht diejenigen, die kleinliche Tricks anwenden).
  • Faul: Genau wie Lazy-Loading in der Programmierung bedeutet es, das Schreiben von Code zu verzögern (nicht jemand, der untätig ist).

Korrekte Softwareentwicklung sollte faule Entwicklung sein, auch geduldige Entwicklung genannt; dieser Entwicklungsstil zeigt sich darin, dass man, bevor man tatsächlich Code schreibt, viel Zeit damit verbringt, alle möglichen Lösungen und Ansätze umfassend zu bedenken. Das kann man verstehen alsdas Hinauszögerndes Schreibens von Code, niemals mit dem Schreiben von Code zu beginnen, bevor man das Problem vollständig verstanden hat. Verstehe zuerst das Problem klar und stelle sicher, dass der zu schreibende Code das Problem wirklich lösen kann; so vermeidet man später das Schreiben einer großen Menge nutzlosen Codes.

Was hier mitdem ersten Verstehen des Problemsgemeint ist, zeigt sich in:

  • Die Anforderungen wirklich verstehen, die Produktabteilung (Business-Analyse-Abteilung) klären lassen, was sie wirklich brauchen.
    • Diese Abteilungen nehmen sich normalerweise nicht genug Zeit, um Anforderungen zu strukturieren.
    • Sie konsultieren oft keine Domänenexperten, sondern richten sich stattdessen nach den Meinungen der Führungskräfte.
    • Sie sind normalerweise nicht in der Lage, konsistente oder vollständige Meinungen zu Anforderungen zu liefern.
  • Machen Sie sich klar, welche Interaktionen mit anderen Programmierern in Ihrem Team oder mit Programmierern in anderen Teams nötig sind und wie diese ablaufen sollen. Dazu gehört:
    • Kommunikation mithilfe eines Whiteboards
    • Flussdiagramme zeichnen (UML oder Visio)

Sie müssen viel Zeit mit Recherche verbringen, um sicherzustellen, dass die Anforderungen mit der Realität übereinstimmen, und um Arbeit zu leisten, die Ihnen und Ihren Kollegen eine gemeinsame Sprache und Semantik für die Kommunikation gibt. Allerdings wollen Programmierer alle sofort mit dem Programmieren loslegen und ständig vor dem Computer Code tippen.

In der realen Softwareentwicklung sind nur 5% der Entwicklungszeit effizient (Sie können auf „Das Paradoxon der Entwicklungseffizienz des Programmierers“ verweisen). Wenn Sie einen Programmierer finden, der 100% der Zeit auf den Bildschirm starrt, dann ist dieser Programmierer der schlechteste Programmierer.

Wenn ein Programmierer ständig am Computer programmiert, ist das definitiv ein schlechtes Zeichen.

Effiziente Programmierer überprüfen ständig ihr Verständnis der Anforderungen, um sicherzustellen, dass ihr Code und die Anforderungenim Einklangsind. Effiziente Programmierer kommunizieren häufig mit Produktmanagern/Geschäftsleuten; man sieht sie oft mit Whiteboards diskutieren und Ideen mit Kollegen und Architekten austauschen. Die Erfahrung und Weisheit von Programmierern wird genutzt, um die Entwicklungseffizienz zu verbessern. Die besten Programmierer:

  • Sie verbringen mehr Zeit mit dem Nachdenken über Code und weniger Zeit mit dem Schreiben von Code.
  • Ein gründliches Verständnis des Problems macht das Debuggen schneller.
  • Code, der nach sorgfältigem Nachdenken geschrieben wurde, läuft schneller.
  • Der Code ist kürzer.

Psychologisch lieben Programmierer ihren eigenen Code.

Schlechte Programmierer mögen es nicht, den schlechten Code zu ändern, der bereits geschrieben wurde. Statt ihren eigenen Code zu optimieren, ziehen sie es vor, einfach mehr Codehinzuzufügen, um frühere Defekte auszugleichen. Schlimmer noch, sie beschuldigen gern andere. Am Ende wird ein weiterer Haufen schlechten Codes auf einen Haufen schlechten Codes gelegt, und das gesamte System wird voller Bugs und extrem instabil.

Hervorragende Programmierer schreiben ebenfalls oft schlechten Code, aber sie erkennen, welcher Code optimiert und welcher neu geschrieben werden muss. Der Unterschied zwischen hervorragenden und nicht hervorragenden Programmierern liegt in ihrer Haltung gegenüber problematischem Code. Die Vorgehensweise des hervorragenden Programmierers ist:

  • Wenn der Code insgesamt gut ist, refaktorisiere ihn.
  • Wenn der Code insgesamt Probleme aufweist, schreibe den Code neu.

Wenn es Stellen im Code gibt, die optimiert oder umgeschrieben werden müssen, gilt: Je länger man wartet, desto schwieriger ist es, zurückzugehen und diese Probleme zu lösen. Denn die Programme, die von diesem Code abhängen, werden immer zahlreicher und hängen immer tiefer davon ab. Wenn man diesen Code optimiert, müssen auch die zugehörigen Abhängigkeiten entsprechend geändert werden. Wenn die angesammelten Probleme wachsen, ist es unmöglich geworden, diesen Code einfach zu optimieren/umzuschreiben. Und der Ansatz, ständig Code hinzuzufügen, um frühere Codeprobleme auszugleichen, macht das System immer instabiler.

Wenn du es noch nicht zu Ende gedacht hast, dann sei fauler und verschiebe das Schreiben von Code auf später.

Verwandte Artikel