Learning How to Report Bugs Effectively and My Insights on The Cathedral and The Bazaar
Aug. 11, 2023 · 5 min readOn day one of taking this internship, after being gratefully accepted into the company, I was tasked with reading two articles and providing my thoughts on it. On my first day, already, I was facing unfamiliar technologies in an unfamiliar environment, with me having to use a Macbook as well as to make my reflection in markdown, which I hadn’t done in a while. But I am enthusiastic to take this as a challenge and quickly pick it up.
How to Report Bugs Effectively
A bug report aims to enable the programmer to see the program failing in front of them. Either show them in person or give them careful and detailed instructions on how to make it fail. If they can make it fail, they will try to gather extra information until they know the cause. If they can’t make it fail, they will have to ask you to gather that information for them.
Guidelines on how to make an effective report:
- Be specific. You have to be specific on what happened and how it happened. There are many ways to do the same thing, e.g, closing the application, you might have clicked on the ‘x’ of the top bar, or exit through “file > exit”, or even an “alt + f4” You have to say what you did exactly
- Be verbose. It is better to give more information than less. If you say too much, the programmer can ignore some of it. If you say too little, they have to come back and ask more questions.
- Be careful of using pronouns, e.g., avoid using words like “it”, or references like “the window”, when it’s unclear what they mean.
- Read what you wrote. Read the report back to yourself, and see if you think it’s clear.
I can relate and resonate with the article I read because I too have been in a situation similar, both as the one who has the error and the one fixing the error. I had experiences where the program was working on my computer while it was not working on my groupmate, and it turned out it was because they weren’t updated of the latest version of the software. I also had moments where copied code but it was not working with the help of my friend, we found out it was because I did not copy it properly.
To summarize my understanding of how to report bugs effectively
- The programmer aims to first see the failure with their own eyes.
- If the programmer can’t replicate it, describe everything in detail
- Write clearly, and make sure it can’t be misinterpreted.
The Cathedral & The Bazaar
The book talks about a wide range of topics from the rise of the early/first hackers with the creation of the Advanced Research Projects Agency Network (ARPANET), to the rise of Unix. This then leads to discussing Open Source
It also talks about two different free software models the cathedral model and the bazaar model
The Cathedral Model
Is a model of software development, in which, is closed. It releases seldom and creates with active management by individuals inside the system. As if they are looking to build a grand “cathedral” with a pre-ordained plan.
The Bazaar Model
Is a model of software development where the code is over the internet and given to the public. It is released often and is created with collaboration by dozens or hundreds of individuals and distributed widely, regardless of location. As if they are looking to grow a bustling “bazaar”, without any kind of preconceived notion of how it should turn out.
The author also indicates 19 lessons from various software development efforts, these lessons describe attributes associated with good practice and here is my list of favorites out of all of them
- Every good work of software starts by scratching a developer’s personal itch
- Good programmers know what to write. Great ones know what to rewrite (and reuse).
- If you have the right attitude, interesting problems will find you.
- To solve an interesting problem, start by finding a problem that is interesting to you.
- Perfection (in design) is achieved not when there is nothing more to add, but rather when there is nothing more to take away.
Reading this has helped me widen my perspective when it comes to open source code as I have seen the term come up a lot online, but I never took the time to understand what it is and the process behind it, its scale, and its benefits. I hope that one day, when I become the competent developer that I aspired to be, I can find an open-source project that caters to a topic that I am passionate about on contribute to and be part of the skilled & talented individuals working together to achieve a goal.