Cathedrals, Bazaars, and in Between
third-bit.com
third-bit.com
I like the way he pointso out problems with both the cathedral and bazaar models but identifies that "actually matters is the people who build them.".
My favouite line: "One king, one law" can sometimes be a great force for good, but what you usually get is collectivized agriculture and UML.
The cathedral is a centralised bureaucratic black hole.
This is another example where O'Reilly's attempts at social engineering have gone horribly wrong. Neither model is ideal, and both are somewhat wrong.
I'm surprised how little computer science is about project psychology, and how little effort has gone into defining the dynamics of successful and innovative developer teams.
There are a few heuristics that seem to work reliably - use a small number of the smartest people you can find, get them to peer review the design before anyone starts coding, and continue peer review as they work - but almost nothing (at least not much I've been able to find) about how to make innovative magic happen reliably.
Point is books like the C & B are story-telling designed to pander to a certain audience, not empirically tested science.
More of the latter and less of the former might do some useful things.
ADHD at the strategic level, but hyper-focus at the tactical level. Because when you're a professional developer (as I'd imagine the majority of people writing non-core open source packages are) why doesn't "reimplementing {wheel} in {new language/framework/architecture}" sound more interesting than "bug fixes".
Nobody likes fixing someone else's bugs.
I was at a conference where a panel of scientists were discussing how they manage research in their labs, and how to promote better productivity from their students with a focus on high-throughput methods. At this point, a single scientist on the panel interrupted with "we shouldn't focus on training for these intellectually bankrupt approaches, I'm interested in training scientists who can think."
When I was first learning to code I was completely overzealous with performance optimization and I implemented every single data structure and algorithm myself, from scratch. This included a lot of computer vision, and optimization and fitting code, and studying books like Numerical Algorithms, etc. While not efficient, I sure did learn a lot.
The response from the other panelist wasn't going to be the correct one, which is "Duh! Not helpful!"
Is that scientist making the claim based on evidence, or based on personal belief? If so, what is the evidence?
Do we train everyone to think the same way? Do we train them to think about problems in specific areas? Do we train them to think about historical problems? Would improved knowledge of the literature help identify unexplored paths, and keep students from revisiting old, well-trodden paths, or should some old things be left mostly unvisited?
In software design, the commodity at question is not money but both forms of cost still exist and trade off with each other. For example compare iOS and Android. The centralized control from Apple did allow them to build something new and complex, and to get a better user experience. But once the interfaces are understood and standardized, Android is able to generate something reasonably good, albeit with a lot less consistency and more duplication of effort.
So at the end of the day I personally feel that bazaar is the best set of training wheels invented but quality ultimately gravitates towards cathedrals. Both parties do benefit a lot from each other, so mutually benefiting, implicit agreement is at play here, which is something "A Generation Lost in the Bazaar" piece fails to acknowledge.