I recently had some plumbing work done in my house that made me think of a similarity between software development and plumbing. I realise they are fundamentally different beasts, but bear with me. Whilst talking to my plumber, he was showing me the differences between the work he had done, and the work done on one of the other houses in the street where I live. Even as a complete novice I could see the differences he was describing. He wasn’t trying to be disrespectful or mean to the other plumber (he didn’t know him as he had never met him), but merely demonstrating how high his quality of work was using a direct example.
- The holes made in the brickwork in my house were neat and the pipes fitted tightly through with no gaps. In the other house they were rough and there were gaps where the pipes came through.
- Where my brickwork needed replacing outside my house, these has been replaced with identically coloured bricks and you couldn’t see any differences when looking at the wall. On the other house, the bricks had been replaced with differently coloured bricks and the bricks had been replaced so the interlacing (bricks are laid in an overlapping manner vertically for strength) had been broken.
- There were no pipes running outside my house. The pipes running outside the other house were left totally exposed to the elements as they were not protected with lagging.
I’m sure there were similar differences inside the houses too.
The point I am making is that my plumber showed care. His work was of a very high standard and demonstrated diligence and work ethic. The other plumber was satisfied with far lower standards. For him, close was good enough.
This same comparison can also be made with software development. When I write code, I take care to ensure that my code is well organised, structured and readable. I ensure that there are unit tests that exercise an adequate level of code coverage. I implement best practices and aim to be consistent.
When I look at a piece of code, I can very quickly determine if there was care put into it. Sloppy, ill thought out code that is inconsistent and unstructured are amongst some of the signals that reveal such a lack of care. Even as a novice, you can still demonstrate a level of care within your work. This is not about how knowledgeable or experienced you are, but how dilligent you are. It is still entirely possible to write code with care and attention to detail despite being inexperienced.
As a professional software engineer, I want others to look at my code and think “Hey this guy has put a lot of effort and care into writing this”. It will have my name against it. I have high standards, and I expect the same from every other developer on the team. I have taken it upon myself to write the coding standards document that we all follow as a team. Not by dictatorship, but by democracy.
When you have checked in your code, take a moment to reflect what another developer would think of it. What would they think when looking at your code? What does your code say about you and your work ethic? Our bread and butter is our code. The care, love and dilligence that we use to craft it speaks volumes about us as professional software developers. Make sure that when another developer looks at your code, that at the very least they will say that this guy cared about what they were doing.