If you let the monkeys do the design, you get shit on the walls.
Why? Because software systems really do only want one guiding vision for how they are implemented and work--and that's really hard to accomplish when you design by committee.
The monkeys, while they do probably have an eye for things that make little patch jobs easier, are not probably doing global optimization. That's why you end up with elaborate mechanisms for the moral equivalent of pushing a button, when that button should never exist in the first place.
The vast majority of developers are not good at creating coherent, simple systems--a good architect is.
There are a lot of bad people out there failing at this job, but the cost of letting the system develop piecemeal is a great way to put a hard cap on company growth.
Yeah, I really don't like the monkey analogy, but setting that aside for a second, this is exactly why "software architects" exist--good design requires cohesive vision, and that's almost impossible to accomplish when designing by committee. (I have seen it work well, but only with people that had been working together happily for a long time, often with a few design failures before hitting their stride.)
Incidentally, this is more-or-less the same reason we have architects for real-life buildings.
"If you let the monkeys do the design, you get shit on the walls."
Marvellous, this would make a great poster :-)
I also agree: bad architects, per se, isn't a flaw with the architect role itself. Central design, guidance and oversight seems to me pretty much a vital thing in any large-ish system.
That the individual needs to be suitably skilled technically and personality-wise for this to all work well goes without saying.
If you let the monkeys do the design, you get shit on the walls.
Why? Because software systems really do only want one guiding vision for how they are implemented and work--and that's really hard to accomplish when you design by committee.
The monkeys, while they do probably have an eye for things that make little patch jobs easier, are not probably doing global optimization. That's why you end up with elaborate mechanisms for the moral equivalent of pushing a button, when that button should never exist in the first place.
The vast majority of developers are not good at creating coherent, simple systems--a good architect is.
There are a lot of bad people out there failing at this job, but the cost of letting the system develop piecemeal is a great way to put a hard cap on company growth.