The Cathedral and The Bazaar

Akapo Damilola
3 min readMay 6, 2017

--

Credit: https://upload.wikimedia.org/wikipedia/en/c/c4/Cathedral-and-the-Bazaar-book-cover.jpg

One of the few essays/books that influenced my life as a person and as a software engineer is “The Cathedral and The Bazaar” by Eric S. Raymond.

I learn interesting concepts mostly by observing, 7+ years down the line and the lessons in this gem of a book still resonates. I’ll share them here in the condensed format picked from this wikipedia article about the book.

On the surface the book is an essay which compares two open software development models, the Cathedral and the Bazaar models.

  • The Cathedral model which basically is a model where the source code for open source projects is made available on each version release but the code written or managed between successive releases are kept under wraps and available to just a the developers of the product, an elite group. An example of this is the GCC project.
  • The Bazaar model which the product and everything is developed over the Internet and in full view of the public. Linus Torvalds more or less pioneered this method with the Linux kernel project.

Now, these are two interesting models but the lessons I learned from the book was more than just the models or seemingly fanciful words. Like I opined earlier on, this book formed a heavy basis of my predisposition towards computing generally and software engineering specifically.

So, here are the 10 most interesting thoughts “to me”, Wikipedia [basically the contributors] was gracious enough to provide 19 of them out of which I will not be using 9 because I am going to hunt earthworms for my fish after this article.

  1. Every good work of software starts by scratching a developer’s personal itch. [What’s your personal itch?]
  2. Good programmers know what to write. Great ones know what to rewrite (and reuse). [Olatokunbo Fagbamigbe 😃 comman see]
  3. Plan to throw one [version] away; you will, anyhow. [Zainab Aiyeleso , we never really throw them away, do we? nah, we just leave them in bitbucket repos and laugh at the code later 😏]
  4. When you lose interest in a program, your last duty to it is to hand it off to a competent successor. [So guys, Jubril Edu has dibs on most of my side projects]
  5. Release early. Release often. And listen to your customers.
  6. The next best thing to having good ideas is recognizing good ideas from your users. Sometimes the latter is better. [Here’s where your MCM startups are missing it. You need to ask your users what they want then build the shit out of it.]
  7. Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away. (Attributed to Antoine de Saint-Exupéry)
  8. A security system is only as secure as its secret. Beware of pseudo-secrets. [*side eyes Jibs*]
  9. To solve an interesting problem, start by finding a problem that is interesting to you. [Jubril Edu]
  10. Often, the most striking and innovative solutions come from realizing that your concept of the problem was wrong. [Always take a couple of steps back and ask yourself questions even if you don’t like the answers]

I consumed the cathedral and the bazaar as a fresh undergraduate, how I came across it? I don’t remember but I guess scouring every part of the web I could lay internet data on was quite helpful, I don’t browse much these days, I am usually buried nose deep in code.

I didn’t understand everything I read then but it was totally worth it in the end. I think I might write a book one day about my musings about software engineering, it will either bang or not.

The book has a rating of 4.6/5 because nothing is perfect, not even perfection itself is perfect and nothing doesn’t exist even in a vacuum.

You can read the essay here & here & here.

You can order the book here.

--

--