From John D. Cook’s post entitled “Software architecture as a function of trust”:
Discussions of software architecture give the impression that the only concern is the problem domain: how to structure a content management system, how to structure a word processor, etc. This leaves out the people who will be developing the software.
How much do you trust your software developers? How much do you trust their skill and their integrity? Do you want to get out of your developers’ way or do you want to protect yourself against incompetent developers?
This reminded me of Dan Pink’s point about giving your developers autonomy. John makes the further point that the design of your software will be affected by the people who will be implementing that design.
He gives the example of Java being written for average programmers, which is why so many outstanding programmers complain about it. And he touts the architecture of Emacs as “remarkably simple and highly dependent on convention” due to the fact that its developers are highly motivated and competent.
I’ve never thought about this explicitly, which is why I found his post interesting. The quality of your software will be affected by the quality of your developers, at every level.