Heute habe ich das Unterkapitel "Agile in the Large" zusammengefasst. Dabei ist bei mir der Verdacht auf weitere Widersprüche entstanden. Ich zitiere hier ein paar Stellen (S. 144-147, meine Hervorhebungen sind fett):
Wir wissen schon, wie wir grosse Teams managen, schliesslich konnten wir ja die Pyramiden bauen. Nun bauen wir aber keine Pyramiden, sondern Software:Agile is for small- to medium-sized teams, period. It works well for such teams. Agile was never intended for large teams.
Why weren't we trying to solve the problem of large teams? Simply because the problem of large teams is a problem that many experts have worked on for well over five millenia. The problem of large teams is the problem of societies and civilizations. And, if our current civilization is any measure, it appears to be a problem that we have solved rather well.
How do you build the pyramids? You need to have solved the problems of large teams. [...]
Large teams are a solved problem.
(p. 145)
Das Problem ist somit nicht die Organisation von kleinen Teams, sondern die Organisation kleiner Teams, die Software entwickeln. Software ist etwas radikal anderes.The problem that was not solved back in the late '80s when the Agile movement began was the problem of small software teams. We did not know how to effectively organize a relatively small group of programmers to be effective. And it was this problem that Agile solved.
It's important to understand that this was a software problem, not a small team problem. The problem of small teams had been solved millenia before by military and industrial organizations around the world. The Romans could not have conquered Europe if they had not solved the problem of organizing small squads.
Agile is the set of disciplines by which we organize small software teams. Why do we need a special technique for this? Because software is unique. There are very few tasks like it. [...]
(p. 146)
Dijkstra hat das an anderer Stelle gut dargelegt: So gibt es bei einer Stadt auf jeder Ebene andere Spezialisten (vom Bürgermeister für die Verwaltung des grossen Ganzen, über die Architekten, welche einzelne Häuser bauen, bis hinunter zu den Chemikern, die an Werkstoffen für diese Gebäude tüfteln). Beim Computer ist aber der Programmierer verantwortlich für ganze Terabytes bis hinunter zum letzten Bit. Eine solche Spanne gibt es sonst nur in der Biologie (Ökosysteme bis Molekularbiologie), hier ist aber das wenigste menschgemacht. Bei der Software ist alles menschgemacht!
Ironischerweise behauptet Robert C. Martin noch folgendes:
Dem würde Dijkstra wohl kaum zustimmen, aber darum geht es hier jetzt nicht. Sondern:Software is like mathematics, except that nothing can be proven. (p. 146)
Soweit so gut. Jetzt kommt aber der Teil, der mich stört:The bottom line here is that Agile is about software. In particular, it is about small software teams. [...] (p. 146)
Vor 5000 Jahren konnten "wir" bereits Pyramiden bauen, und natürlich benötigte es dort "diverse" Teams, d.h. Architekten, Bauleiter, Lastenträger usw. Aber eben keine Softwareentwickler!What about Agile in the large? I don't think there is such a thing. Organizing large teams is a matter of organizing them into small teams. Agile solves the problem for small software teams; the problem of organizing small teams into larger teams is a solved problem. [...]
Now the question that could be asked is that, since software for small teams was so unique that it required us to invent Agile, why doesn't that uniqueness hold for organizing small software teams into larger software teams? Isn't there some unique aspect to software that carries beyond the small team and affects the way larger teams ought to be organized?
I doubt it, because the problem of large teams, which we solved more than 5000 years ago, is the problem of getting many diverse kinds of teams to cooperate. Agile teams are just one of myriad kinds of teams that need to be coordinated in a large project. (p.147)
Wie will ich nun ein grosses Projekt abteilungsübergreifend, d.h. top-down organisieren, wenn da ein Team in der Organisation ist, das agil arbeitet? Bauprojekte funktionieren top-down, auch ein Krieg wird top-down geführt. Aber wie soll denn bitte top-down und bottom-up gleichzeitig funktionieren? Hat nicht Gerald Weinberg ganze Bände darüber gefüllt, wie sich die Organisation um die Entwickler herum auf die Software auswirkt? Na gut, der war halt noch nicht "agil", bzw. "Agile". Somit ist er sicherlich obsolet, und ausserdem auch schon tot
Mein Eindruck: der Autor drückt sich um die Frage herum, wie agile Teams in einer übergeordneten Organisation funktionieren sollen.
Was mich auch stört, ich aber vorübergehend als Prämisse akzeptieren musste: Die Behauptung, dass die Organisation grosser Teams ein gelöstes Problem sei. Ich habe bisher immer nur das Gegenteil erfahren: Die Organisation grosser (aber auch kleiner) Teams ist das grösste Problem an der Softwareentwicklung überhaupt!
Das ganze erinnert mich an eine andere Aussage aus dem Buch Clean Architecture: "The database is just a detail." Na dann haben wir das ja auch schon längst gelöst...
Was denkt ihr darüber? Spricht da meine Allergie gegen Robert C. Martin aus mir, oder sind die Aussagen wirklich widersprüchlich, oder zumindest bloss ausweichend?