How bug-fixing made me a better developer
- 2 minsOriginally published on Medium.
“Someone spills milk on the floor, you need to clean it. Someone else breaks a bottle, you also need to fix it.” I felt this way while working as a bug-fixer, fixing what was broken by others. While fixing software bugs is a fantastic process of getting a developer comfortable with the code base, it can easily become a frustrating experience over a lengthy period of time.
Source: http://cliparts.co/
I worked for a little under a year as an entry-level software engineer at a US-based EdTech startup and a good part of my time on the job was spent fixing bugs on the platform. Frustrating and mundane as it sometimes was, it provided invaluable experience for me as a junior developer seeking to improve my skills in software development. I have met many junior developers in the same boat as I was so I decided to write this post with the hope of inspiring them that there are core skills to be learnt while fixing bugs. Here goes a summary of the lessons I learned, sometimes unwittingly, during my experience as a bug-fixer:
-
Ability to ask questions: By replicating the bug locally and asking questions to clarify, I was able to logically understand the problem and figure out how it would be resolved. Asking questions helped in improving my debugging skills.
-
Big picture/holistic thinking: Sometimes I was not able to fix some of the bugs I encountered largely because of poor code architecture. Such a scenario meant refactoring the affected code base rather than trying a quick fix. This process taught me the importance of having a big picture of the project and planning properly before writing code.
-
Attention to detail: Another skill that I honed was being attentive to detail. Here I learnt the importance of code review and how it helps to eliminate mistakes that could be introduced irrespective of your years of coding experience. Having someone else review your code a lot of times prevents bugs being introduced in the first place.
-
Test-driven development (TDD): TDD was not a priority for me in my early days as a software developer but that has changed. I came to realise the importance of TDD as some of the issues I resolved on the platform would not have existed if there were tests in place for them. The approach to TDD should not be just for testing sake, but for extensive coverage of the entire code base.
Bug-fixing can be a frustrating but invaluable experience. Rather than pulling at your hair, focus on the learning experience that comes with each bug. I am glad for the time spent working as a bug-fixer. The lessons I learnt from the experience has helped me improve immensely as a software developer.
Thanks to the Engineers at the EdTech startup for patiently mentoring me all through the time I spent working with them. Thanks to Chibuzor, Uzo Awili, Ebun Omoni and Blessing Orazulume for their help with this article.