Kolumne: Olis bunte Welt der IT

Faulheit und andere Tugenden: Selbstverbesserung mit klarem Ziel
Keine Kommentare

Manchmal musste ich mich in der Vergangenheit rechtfertigen, wenn ich einmal etwas Programmierzeit mit spielerischen Projekten verbracht habe. Das verwundert Chefs und Lebenspartner, sorgt höchstens bei Kindern für Begeisterung: „Wow, Zahlenraten!“ Letzteres ist erdacht – selbst sehr junge Leute sind heute mit den einfachsten Programmen kaum noch zu begeistern.

Das war mal anders. Als ich ein Teenager war, gab es Computerzeitschriften, etwa für Commodore-Computer, in denen BASIC-Listings abgedruckt waren. Diese konnte man einfach eintippen und ausprobieren, oder natürlich auch im Detail lesen und verstehen lernen. Ich fand das ganz spannend und verbrachte oft Zeit damit, den Fehlern, die diese Listings fast immer enthielten, nachzugehen, oder das ganze Beispielprogramm einfach zu verbessern.

Für Leute mit mehr Langeweile gab es in den Zeitschriften auch manchmal Programme, die man in Form von Kolonnen hexadezimaler Zahlen eintippen musste. Damit man sich dabei nicht scheußlich oft vertippte, hatte jede Zeile am Ende eine Prüfsumme, und ein spezielles Eintipp-hilfsprogramm prüfte jede Zeile sofort. Alternativ gab’s auch sehr clevere Systeme, bei denen man mit einem Handscanner eine dicht gedruckte Spalte mit Pixeldaten einlesen musste. Diese wurde dann ebenfalls von einem Hilfsprogramm in Programmcode übersetzt. Vorteile beider Ansätze: Es passt mehr Code auf die Seite, die Programme konnten komplexer sein, und der Leser konnte den Code nicht lesen – ich vermute, dass der Autor des Codes das gut fand. Großer Nachteil aus meiner Sicht: Ich konnte den Code nicht lesen! Gar so spannend war die reine Funktion der Programme für gewöhnlich nicht. Wenn nun der Mehrwert wegfiel, daraus etwas zu lernen, war das nicht mehr so interessant.

Nun gibt es ja Leute, die interessieren sich gar nicht besonders dafür, warum Dinge eigentlich so funktionieren, wie sie funktionieren. Oder auch, warum sie manchmal nicht (mehr?) so funktionieren. Genau genommen betrifft das uns alle, denn jeder hat gewisse praktische Grenzen für das Interesse an dem, was um uns herum geschieht. Wir fahren alle Auto, wissen aber größtenteils nicht im Detail, wie der Motor genau arbeitet oder was man tun muss, wenn er stehen bleibt. Wir sehen alle fern, aber spätestens seit dem Flachbildschirm gibt es nicht mehr viele Menschen, die ihren Fernseher von innen kennen.

Neugier ist wichtig

Erstaunlich finde ich allerdings, dass es auch viele Menschen gibt, die in ihrem eigenen Wahlumfeld – also Computer und Programmierung und dergleichen, soweit es diesen Artikel betrifft – wenig Neugier für die Grundlagen haben. Ein Freund, der anonym bleiben möchte, arbeitet seit vielen Jahren als Webentwickler, hat beruflich viel geschafft, verdient gutes Geld und ist als Fachmann in seiner Welt angesehen. Auf private Nachfrage hin gibt er allerdings zu, dass er nicht weiß, woher diese komischen Zahlen kommen, mit denen man in HTML und CSS Farben definiert. #ff0000 ist rot und #0000ff ist blau, er weiß das auswendig, hat aber keine Ahnung, warum. Seltsam, finde ich. Fragt man denn da nicht mal nach?

Gestatten, mein Name ist Oliver Sturm und ich bin ein Nachfrager. In der Schule habe ich mal diesen Spruch gehört: „Wer nichts weiß und weiß, dass er nichts weiß, weiß mehr als jemand, der nichts weiß und nicht weiß, dass er nichts weiß.“ Das fand ich irgendwie cool, andere fanden das irgendwie doof, aber erst im Lauf der Zeit ist mir klar geworden, worin wirklich die Bedeutung der Aussage für mich steckt. Wissen, was man nicht weiß, ist im Leben sehr wichtig. Egal, um welches Thema es geht – man hat immer gewisse Kenntnisse und drumherum Lücken. Es ist beinahe genauso wichtig, die Lücken richtig einzuschätzen und zu verstehen wie die Kenntnisse anzuwenden.

Auf ZX Spectrum und Commodore 116 ging für mich die Reise los, mit Logo und BASIC und ein bisschen Assembler, später C und Pascal. BASIC ist natürlich ein Anfang, aber man kann auch hinterfragen, wie das eigentlich funktioniert. Assembler ist vielleicht eine Antwort auf manche solcher Fragen, aber was passiert denn im Prozessor? Ich bin noch heute auf dieser Reise, die gleichzeitig vorwärts und rückwärts führt. Vor einigen Jahre etwa habe ich für mich die Wissenslücke erkannt, dass ich mich kaum mit der grundlegenden Elektronik auskannte, auf der Computer basieren. Irgendwie haben wir da in der Schule nicht viel drüber gelernt, Schluss war nach ein paar Grundlagen zu Gleichstrom, Batterien und Glühbirnen.

Lücken füllen

Nun bin ich seit ein paar Monaten dabei, Lizenzen für den Amateurfunk zu erlangen. Amateurfunk ist ein sehr interessantes Hobby, und mit der höchsten Lizenzstufe darf der Funker z. B. auch eigene Geräte bauen und betreiben. Das habe ich persönlich bisher nicht vor, aber durch diese weitgehenden Rechte erklärt sich, dass in den Lizenzprüfungen sehr viele Details zu elektronischen Grundlagen abgefragt werden – die verantwortlichen Stellen wollen sicher sein, dass mein selbstgebautes Funkgerät nicht im ganzen Stadtteil die WLANs lahm legt! So ist dieses Thema für mich sehr spannend, weil es mir hilft, die Lücke zu füllen, die ich aus Sicht eines Computersoftwarearchitekten bisher hatte.

Ich finde, wer in einem technischen Beruf arbeitet, sollte Ansprüche an sich selbst stellen. Natürlich ist da der Anspruch, im Beruf ausreichende Qualität zu liefern. Oft ist die tägliche Arbeit aber nicht die größte Herausforderung, die man sich als Programmierer vorstellen kann. Da wird im Team gearbeitet, die eigene Verantwortlichkeit wird oft von außen definiert, Möglichkeiten zur Einflussnahme gibt es manchmal auch nicht viele. Wer an den meisten Tagen an einem Modul eines Moduls herumprogrammiert, das sich jemand anderes ausgedacht hat, ist leicht mit dem Notwendigsten zufrieden. Natürlich würde der Chef behaupten, man nehme Teil an einer Entwicklung, die eines Tages die Welt verändern könnte usw. usf. Aber langweilig ist das eben trotzdem manchmal. Umso wichtiger ist es also, sich selbst zu fordern!

Anforderungen von außen gibt es auch: an die Qualität und an das Verständnis von Grundlagen, komplexen und aktuellen Themen. Software-Craftsmanship ist ein Thema, das in den letzten Jahren populär war. Von Programmierern wird verlangt, dass sie die Werkzeuge des Berufs gut kennen. DevOps ist ein aktuelles Thema, in dem es oft und gern darum geht, den Devs – also uns – neue Verantwortung zuzuweisen. All diese Sichtweisen haben gemeinsam, dass es keine strikten Grenzen gibt. Wie weit geht die Erwartungshaltung? Ist es okay für Programmierer, manchmal zuzugeben, dass sie etwas Grundlegendes nicht wissen?

Grundlagen sind wichtig

Ich glaube persönlich fest an Ehrlichkeit, wenn es um vorhandene oder fehlende Kenntnisse geht. Allerdings ist ganz klar, dass man beim Chef besser dasteht, wenn man alles weiß und jede Frage aus einer plausiblen Perspektive beantworten kann. Dazu sind fast immer Grundlagen wichtiger als Infos zu aktuellen Trends. Leider gibt es jederzeit so viele unterschiedliche aktuelle Trends, dass die Entscheidung für die wichtigsten, richtigen und zukunftsweisenden oft schwer fällt. Mit einer gesunden Ausstattung an Grundlagen wiederum lässt sich der vielversprechende Trend einfacher erkennen, und ich kann neue Technologie oft verstehen, ohne viel dazu lesen, nachdenken oder ausprobieren zu müssen.

Nun klingt alles, was ich hier geschrieben habe, nach viel Arbeit. Ich denke zwar, dass diese Arbeit Spaß machen kann, kann aber nicht bestreiten, dass mit dem Interesse, der Neugier und dem Nachfragen auch Arbeit einhergeht. Deshalb soll dieses Thema nicht ohne eine weitere Betrachtung dastehen, nämlich der Betrachtung von Faulheit. Wenn Sie anderen Menschen unterstellen, dass sie faul seien, müssen Sie mit Gegenwehr rechnen. Das finde ich persönlich interessant, denn faul sein ist für mich eine Tugend. Meine Interpretation ist dabei analog zum Sprichwort „Ein gutes Pferd springt nicht höher, als es muss“.

Natürlich kann man faul sein auch anders einordnen. Es gibt sicher Menschen, die Faulheit so weit treiben, dass sie nie etwas tun – oder zumindest so weit, dass sie selbst das Notwendigste im Leben nicht tun, bis hin zur Existenzbedrohung. Davon rede ich natürlich nicht, und hoffentlich ist das auch recht selten. Leider gibt es für den genauen Grad der Faulheit, um den es hier geht, keinen besonderen Begriff. Den sollte es aber geben, zum Beispiel so in der Art „hochfunktional faul“. Das wäre also ein Mensch, dem es ein Bedürfnis ist, nicht mehr zu arbeiten als er muss, der aber gleichzeitig die Notwendigkeit der Arbeit als solche anerkennt und auch Spaß an ihr hat – sofern sie eben zweifellos erforderlich und sinnvoll ist.

Faulheit als Tugend

Hochfunktionale Faulheit in diesem Sinn halte ich für eine gesunde Grundeinstellung. Oft beobachte ich Menschen, denen es an dieser Sichtweise mangelt. Die sind bereit, die langweiligsten Aufgaben der Welt tausendfach auf die immer gleiche Art zu erledigen, und denken offenbar nie über mögliche Optimierungen nach. Sachbearbeiter in Büros gehören oft in diese Gruppe, wie ich in Kundengesprächen festgestellt habe. Solche Leute sehen sich außerstande, die eigene tägliche Arbeit zu beschreiben – und wenn man sie doch dazu bringt, bleibt der Zweck verschiedener Teiltätigkeiten oft höchst unklar.

Optimierung ist der Weg zur Faulheit. Wie es der Zufall will, ist Optimierung gleichzeitig der Weg zu konsistenten Resultaten. Da wird eine Kampagne für die Kundschaft gestartet, bestimmte Kunden werden nach Kriterien ausgewählt. Zu diesen Kunden müssen dann Details in der Datenbank nachgesehen werden, eine Vorlage für das Anschreiben je nach Kundengruppe ausgewählt, Details korrekt eingetragen, Formulierungen gegebenenfalls von Singular nach Plural korrigiert, Anschreiben versandt und als PDF mit korrekten Stichworten am rechten Ort abgelegt, der bearbeitete Datensatz in einer anderen Liste verzeichnet. Wer das ein paar hundertmal tun soll, der macht Fehler, verschreibt sich oder vergisst einen Schritt. Wenn der Vorgang hingegen automatisiert werden kann, geht’s plötzlich ganz schnell und einfach und vor allem fehlerfrei. Als hochfunktionaler Fauler tendiere ich dazu, etwas Zeit auf die Automatisierung zu verwenden und danach die eigentliche Aufgabe zügig und korrekt zu erledigen – zum großen Teil deshalb, weil ich mich so sehr gegen die Idee sträube, die nächsten Tage oder Wochen mit repetitiver Arbeit zu verbringen.

Für Programmierer gilt all das natürlich auch. Oft haben wir bei der Programmierung die Wahl, ein Problem nur oberflächlich oder auch tiefergehend zu lösen. Vielleicht gibt’s da einen Algorithmus, den wir auf Stack Overflow finden. Vielleicht gibt’s auch in der eigenen Codebasis schon eine ähnliche Implementation, die per Copy-and-paste übernommen und angepasst werden kann. Solche Ansätze sind natürlich mit Faulheit im Allgemeinen gut zu vereinbaren, aber der Erfolg ist kurzfristig. In nicht allzu ferner Zukunft werden wir zusätzlich Arbeit investieren müssen, um die entstehende technische Schuld wieder abzubauen. Der hochfunktional Faule hingegen denkt klüger über die Sache nach und entscheidet sich, anfangs ein wenig mehr Arbeit zu investieren. Natürlich können wir dennoch den Algorithmus von Stack Overflow benutzen, aber er kann so in die eigene Architektur integriert werden, dass kein enormer Refaktorisierungsbedarf entsteht. Copy-and-paste im eigenen Code vermeiden wir sicher besser gleich, soweit möglich.

Fazit

Allgemein geht diese Sichtweise gut mit den Ideen der agilen Programmierung einher. Jede Implementierung einer User Story erfordert, dass ein guter Weg zur Integration der neuen Anforderung gefunden wird. Je besser der Weg, desto weniger Arbeit steht jetzt und in der Zukunft an. Damit schlage ich den Bogen: Wer zusätzlich zur eigenen Anwendung auch ihr Umfeld und die Technologieplattform im Detail versteht, kann in der täglichen Arbeit die besten Entscheidungen treffen. Für dieses tiefe Verständnis ist es wichtig, ausreichend in die Grundlagen zu investieren, nachzufragen, mit einer gesunden Neugier an jede Aufgabe heranzutreten. Arbeit an der richtigen Stelle ist der Weg zur gesunden Faulheit.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Hinterlasse einen Kommentar

Hinterlasse den ersten Kommentar!

avatar
400
  Subscribe  
Benachrichtige mich zu:
X
- Gib Deinen Standort ein -
- or -