The Life of a Software Craftsman
The life of a software apprentice is very different from that of a software craftsman, and I had an opportunity to experience that firsthand. Three weeks ago, I had been asked to put aside my assignment that I had been working on to pair with a craftsman on a client project. I had no idea what to expect as this would be my first time being exposed to client work, so it was both nerve-wracking and exciting at the same time. Although I wasn’t sure what I was getting myself into, I knew that I was expected to contribute to the project by writing a lot of code and wrapping my head around complex problems. Boy, was I in for a surprise.
Throughout my apprenticeship here at 8th Light, I’ve been given several programming assignments built from scratch that really pushed me to my boundaries. I had to learn unfamiliar tools and disciplines to complete these projects while thinking about the actual problem at hand. While I did work on stories that involved solving some problems, we only added code to the existing codebase once throughout the three weeks I was on the project. Most of the stories we worked on dealt with manipulating configuration files and testing/deploying builds.
That’s the reality of the life of a software developer, though. You won’t always get to start projects from scratch or be adding exciting new features to a program. You are typically thrown into a large existing codebase with limited documentation and tests that verify and explain the the intent of the code. Often times, the original creators of the code are long gone and no subsequent developer will really know the system end to end. There was a lot of frustration on our part when there were bugs and issues that we came across when we did add code because there was little to no test coverage. One of the most important lessons I took away from this experience is that tests are so incredibly important to documenting the intent of the code. In order to fully understand things, we saw ourselves printing variables and objects to console to understand parts of the code which could have been avoided if there was test coverage to document these parts.
Until now, I’ve only worked on projects that I build from scratch from course assignments and projects in school and assignments I’ve been given during my apprenticeship. This experience has shown me what I should expect once the apprenticeship is over. Though the reality of the life of a software craftsman differs from the exciting life that I had originally envisioned, I’m still excited and eager to become a craftsman and become one step further on my path of software craftsmanship.








