A couple days ago Olaf Lewitz compared the work of a real Architect (the guy responsible for actual buildings) with the work of an so called Architect in a software development project. He concludes with
this role description, as sketchy as it is, fits even less into my view of software development than I had thought.
I strongly disagree. The tasks Olaf describes are exactly the tasks the architects do in a healthy software development project (at least in my opinion):
- They analyse what the needs of the clients are by entering an into an intense dialogue
- They make very detailed prescriptions about how the software is to be build
- They design carefully how the user will interact with the resulting program, paying huge attention to details (at least the good ones)
- They plan when what piece of the software gets build and carefully control that it actually happens as planned
I currently work on a team of 8. 8 architects. We make important decisions on a daily basis. We talk to the client (the product owner) to understand the requirements. We write programs and build scripts which are the equivalent of highly detailed plans of architects. We carefully tune all things which the customer will see. Most notably the GUI, but also performance, stability, maintainability. We plan when the software gets build (right after every change to the plans and again at 1o'clock in the morning) and control that it is build as intended. It's build by jenkins and his team: maven, javac, buckminster, junit and cmd.
There is no human construction worker involved. That is the part of the metaphor that falls apart. All the building happens by software and each developer is an architect. Some of them might make the big decisions, while other have a smaller area for which they are responsible.
By the way Olaf is write when he qutes architects
â€œwhen the workers begin to think, things start going wrongâ€
Maven does that from time to time. Each and every time it causes problems.