I don't believe in software architects!
Posted by Raphael Molesim | Posted on 22/02/2011
Tags: Agilidade , Software Archtecture
1
Let me guess... You would like to became a Software Architect, wouldn't you? I have seen a big push in the last inside software community by people who would like to became software architects.
A lot of them see this role as a step towards a career as a software developer. I would like to show that it is actually an illness in the software development environment.
Generally software architects aren't really software architects
There is big confusion in the market and in the software community about what the software architecture role is. I will not discuss all the ins and outs of the role but you can find a good explanation about it here, in a blog post of Elemar Júnior.
Nevertheless I can summarize by saying that the skills of a software architect are different from the skills of a developer, and it isn't a next step. Generally enterprises get the best developer and "promote" him to the position of software architect, this developer might never have seen an architectural pattern in his whole life. It clearly shows the existing confusion.
Much arrogance associated with the role exists
Many roles that have major importance and responsibility suffer from the evil of arrogance, so it is with presidents, professors and managers.
Because of the characteristic rigidity or impossible mutability of the architecture, architectural decisions are important decisions with a significant responsibilities attached.
Anyone in a powerful role is vulnerable to the evil of arrogance. In Architecture Software particularly it looks like a inherent aspect of the job. Of course there is no rule and I am sure that there exists non-arrogant software architects, but all decentralization of power possible should be carried out.
Generalists worth more than Specialists
Also it is obvious that it is so much better to have a team of developers that can also do integration testing, than to have one or two testers in the team that will do all the integration testing of the team.
It is also clear that it is better to have a team of developers that is able to discuss possible architectures and find out an emergent solution than to have a specialist Software Architect that will make all the decisions.
Martin Fowler have already said the architects in ThoughtWorks works to increase the team's architecture skills than take their own decisions. It increase the team skills and solve the bottleneck problem. Have look:
The real value of software architect skills
I have strong doubts about how useful some deliverables of the software architecture discipline are, some of them are documents and diagrams with a high level vision of the system. I believe more in principles and values that I believe can replace these deliverables like:
- Effective communication between the teams is more important than documents and diagrams.
- Architectural decisions should be done by teams, for me it is obvious that an emergent decision is more valuable than a decision made by only one holy holder of knowledge.(By the way I don't believe in holders of knowledge, Jedis, and their kind )
All the successful software projects that I know was made by passionate developers
Yes generally the good software releases with scalable and effective architecture that I know, are made by teams with passionate developers without a software architect, not because there aren't architectural decisions but because the architectural decisions are shared with the whole team and they can arrive at architectural solutions faster and better than a software architect.
I'm sure there are some really good architects and good initiatives within the agile software communities such as the emergent architecture and the evolution architecture, but in my experience they are people who I don't believe, and I think this centralized model is more likely to fail than the decentralized model.
Software architects are really needed in enterprises where 80% of the programmers are cowboy programmers using the true XGH. These enterprises will have quality problems anyway, but it is better that the architectural decisions are made by someone who really knows what he/she is doing. In this case and in an immature market they are "a necessary evil", if you don't have a team of passionate programmers at least have a software architect who will be able to define a reasonable solution.










