Most developers I’ve worked with would have come to me at some point and asked questions like:
- What is the best way to implement this new feature?
- What do you think of this design, is it good enough?
This to me indicates that software developers in general do take pride in their work and try to achieve the first part of the Manifesto for Software Craftsmanship:
Not only working software, but also well-crafted software
Given that most developers are competent enough to come up with good designs and implement them well with nice clean code and generally have the desire to do so, why is this rarely reflected in the resulting code?
The reason, I believe, is related to the second line from the same manifesto:
Not only responding to change, but also steadily adding value
The key word here being change. In contrast to my first observation, many developers when working with existing code will try and squeeze in their fix/feature and get out as quickly as possible. If they do come to me to talk about that change it’s just to grumble and complain about how hard it is to work with that code or how buggy it is.
The next time someone grumbles about some code they are working on I will remind them (or myself) that because they are now working on that code it is now their responsibility, it is up to them to make it better. If you’re not happy with the code you are working with, think about how the existing code could be changed to make your fix/feature easier to add.
If you’re not making the code base better, you are making it worse!