Mach deine Arbeit!

Alle sind geschäftig, aber arbeiten tun sie deshalb nicht unbedingt. Das ist mein Eindruck, wenn ich Unternehmen auf dem Weg zu einer zukunftsfähigen Softwareproduktion mit Training oder Beratung begleite. Der Schweiß steht allen Mitarbeitern auf der Stirn, doch voran geht es nur langsam. In der Situation fragt man mich dann z.B., was man tun soll, um endlich sauberen Code zu schreiben.

Inzwischen glaube ich immer weniger daran, dass Prinzipien und Praktiken des Clean Code Development dann schon etwas bringen. Die sind gut und wichtig - brauchen aber einen gewissen Rahmen, um wirken zu können. Mit Clean Code kann es erst losgehen, wenn alle auch wirklich arbeiten.

Der Unterschied zwischen „Geschäftigkeit“ und „Arbeit“ liegt für mich darin, ob die Tätigkeiten erstens auf das konzentriert sind, wofür jemand eingestellt wurde, und zweitens, ob es Zeithoheit gibt, d.h. man unter Kontrolle hat, was man und wie lange und wie konzentriert tut.

Mir scheint, da liegt einiges im Argen. Denn wenn ich danach frage, wie Teams bzw. Teammitglieder ihre Arbeit einteilen, bekomme ich Gruseliges zu hören. Da ist kein Plan. Da ist keine Vorstellung von einem Soll.

Natürlich ist immer viel auf dem Zettel: hier ein Meeting, dort ein Feuerwehreinsatz, da eine Report. Aber warum? Wofür? Ist das Arbeit - oder kann das weg?

Denn damit es Arbeit ist, muss es vor allem zu dem gehören, was den Zweck einer Rolle ausmacht. Was ist der jedoch für die Rollen in einem Entwicklerteam, z.B. Entwickler, Product Owner und Tester?

Was ist dein Job?

Frage dich einmal: Was ist eigentlich dein Job? Wofür wirst du bezahlt? Jedenfalls eigentlich, ursprünglich, wenn nicht gerade etwas dazwischenkommt?

Ich versuche es mal für einige pauschale Rollen zu definieren:

  • Entwickler werden dafür bezahlt, dass sie Verbesserungen in Software einbauen.
  • Product Owner werden dafür bezahlt, dass sie Verbesserungen verlässlich zum Release führen.
  • Tester werden dafür bezahlt, dass sie Regressionsfreiheit von Release Candidates sicherstellen.

That’s it. Das ist der Zweck dieser Rollen. Je mehr sie davon leisten, desto besser. Alles andere ist… Verschwendung.

Um diese Zwecke zu erfüllen, sind die Rollen in vielfältiger Weise tätig. Jede ist allerdings durch eine Tätigkeit charakterisiert:

  • Entwickler erfüllen ihren Job vor allem, wenn sie Logik codieren.
  • Product Owner erfüllen ihren Job vor allem, wenn sie Feedback geben.
  • Tester erfüllen ihren Job vor allem, wenn sie Tests codieren.

Alle anderen Tätigkeiten sind zu minimieren. Sie mögen allerdings dennoch nötig sein, um die eigentliche Tätigkeit zu befördern.

  • Entwickler analysieren und entwerfen und testen, weil das hilft, während der Codierung von Logik höhere Qualität zu produzieren.
  • Product Owner definieren Anforderungen und priorisieren, weil das hilft, das Feedback auf besonders wertvolle und hochqualitative Anforderungen zu konzentrieren. Immerhin sind ihre Anforderungen der Input für die Entwickler.
  • Tester analysieren und automatisieren, weil das hilft, hohe Qualität zu produzieren und konzentriert zu bleiben auf neue Anforderungen.

Vergiss deine Nebenjobs nicht!

Es scheint wünschenswert, dass die gesamte Arbeitszeit auf den eigentlichen Job einer Rolle konzentriert wird. Leider ist das jedoch unrealistisch und am Ende auch nicht wünschenswert.

Unrealistisch ist es, weil schlechte Qualität „passiert“. Bei allem Bemühen zu guter Arbeit kommt es zu Fehlern und Nachlässigkeit und Versäumnissen und auch Unwissenheit ist nicht zu vermeiden. Was den Kunden als Release erreicht, ist immer in irgendeiner Form suboptimal und verlangt Nachbesserung.

Nachbesserungen sind doppelte Arbeit, also Verschwendung. Etwas, das als gut beurteilt wurde, ist nicht gut und muss nochmal angefasst werden, um es auf das eigentlich wünschenswerte Qualitätsniveau zu bringen.

Wenn der Kunde nach Ansicht eines Releases sagt, „Da haben Sie meinen Wunsch aber nicht richtig verstanden! Das muss nochmal überarbeitet werden.“ oder „Das funktioniert noch nicht. Die Berechnung ist falsch.“ oder „Seit dem letzten Release funktioniert der Report nicht mehr, den ich schon monatelang benutzt habe.“, dann ist nachzubessern. Dann durchläuft eine frühere Verbesserung nochmals eine oder mehrere Rollen als Nachbesserung.

Das passiert, das braucht Zeit. Diese Zeit steht der Herstellung von Verbesserungen nicht zur Verfügung. In manchen Teams ist die Liste der Bugs so lang, dass auf Wochen und Monate hin jede Verbesserung ruhe könnte, um nur Nachbesserungen vorzunehmen.

Wünschenswert ist die Konzentration auf nur den eigentlichen Zweck allerdings auch nicht, weil dann die Rollen nämlich stehenbleiben. Sie entwickeln sich nicht weiter. Sie können nicht einmal beurteilen, wie gut sie derzeit sind.

Es ist vielmehr nötig, neben den Tätigkeiten des eigentlichen Jobs auch noch die Zukunftsfähigkeit in den Blick zu nehmen. Der Job soll ja nicht nur heute in hoher Qualität verrichtet werden, sondern auch noch morgen und übermorgen.

Das wird erreicht durch explizites Lernen und explizite Reflexion. Beides braucht signifikante Zeit, die dem eigentlichen Zweck im Hier und Jetzt nicht zur Verfügung steht.

Wer nicht reflektiert, der weiß nicht, wie gut er heute ist und was es noch zu verbessern gäbe. Wer nicht lernt, der bringt seine Fähigkeiten nicht voran und fällt damit zurück in einer Welt der sich ständig weiterentwickelnden Technologien und Methoden.

Zum Hauptjob jeder Rolle gehören also noch die universellen Nebenjobs Nachbesserung und Zukunftsfähigkeit.

Nimm dir die Zeit!

Wenn du nicht Spielball des Tagesgeschäftes sein willst, dann musst du dir deine Zeit sehr bewusst einteilen. Aus der kräftezehrenden Geschäftigkeit kommst du nur heraus, wenn du kontrollierst, was du tust. Und das, was du tust, muss deinem Plan für gute, zweckerfüllende, jobgerechte Arbeit entsprechen.

Wie viel Zeit solltest du in solch einem Plan für welchen Job bzw. welche Tätigkeit einplanen?

Hier ist mein Vorschlag:

  • Dein Hauptjob sollte mindestes 51% deiner Zeit einnehmen. Wenn du nicht mehrheitlich das für deine Rolle Wünschenswerte tust, dann ist etwas sehr im Argen. Besser noch 60% um zu unterstreichen, worum es bei deiner Rolle wirklich geht.
  • Die Zukunftsfähigkeit ist nicht zu vernachlässigen. Sie ist nie dringend, aber immer wichtig. Ihr solltest du 20% widmen. Versuche es mit 10% Lernen und 10% Reflexion. Auf die eine oder andere Weise. Das Lernen kann wöchentlich stattfinden und/oder ab und an in Tagesseminaren oder auf Konferenzen. Die Reflexion kann sich auf dich, dein Team oder noch größere Organisationseinheiten beziehen.
  • Nachbesserungen schließlich müssen sich mit 20% bescheiden. Das ist manchmal schmerzhaft, weil doch der Kunde so sehr drängelt und noch so viel nachzubessern ist. Doch es hilft nichts: ohne enge Begrenzung der Nachbesserungen sind die dazu geneigt, dich aufzufressen. Sie sind gierig. Sie verschlingen gern deine gesamte Zeit.

Zusammenfassung

Es ist nicht so wichtig, dass du irgendetwas tust während deiner Arbeitszeit. Es ist vor allem wichtig, dass du das Richtige, das Wichtige tust, dass du tust, was wirklich, wirklich zu deinem Job im Kern gehört.

Nur wenn du das hinkriegst, kann das Projekt oder Produkt verlässlich vorankommen. Auch nur dann haben irgendwelche Verbesserungsmaßnahmen eine Aussicht auf Erfolg.

Erstens gibt es nur dann Raum, um Neues zu lernen und darüber zu reflektieren, wie du arbeitest. Zweitens ist dir und deinem Umfeld nur dann klar, was durch Verbesserungen eigentlich verbessert werden soll.

Also: keine Arbeit ohne klare Vorstellung von deinem Job und den unvermeidbaren „Nebenjobs“.

„Working hard“, Geschäftigkeit ist nichts. „Working smart and focused“ ist alles!