Code metrics, requiring a culture of quality
Last time I went over how adhering to things like code quality metrics that are objective and ‘scientific’ is the key to creating and sustaining a strong codebase. The difficulty comes with actually implementing that process and behavior wherever you work. There is no shortage of obstacles:
1. Convoluted process. The unfortunate truth is that many of us work at a place with a convoluted submit/build/deploy process. This is either so brittle that it is difficult to augment, or so complex it has a large dedicated build team. Either is a problem because the hurdles to making process changes like setting up code analysis as a part of the submit/review/build process are very high.
2. Shame. If more senior or lead developers are not willing to do this, it is unlikely it will be done. This is compounded by the fact that the implicit blame of what the analysis reveals is on the shoulders of the more senior devs, so they may be less willing to do it.
3. Disagreement. Fundamentally, there is a breed of developer that is opposed to Augmented Coding. They tend to endorse (and exhibit) high proficiency with simple tools (text editors, commandline), and actively oppose more sophisticated GUI programs or tools. It will be very difficult to get this type of programmer to change his or her view.
4. Scheduling. No discussion of any change would be complete without talking about scheduling issues. Someone has to do this work, train people, etc. So like all things, this needs to be scheduled, or ninja’d in if possible (impossible if you have a bad process).
These problems combine in pretty frustrating ways. And unfortunately I really don’t have a solution. There’s no glorious ending to this blog post that will tell you how to overcome these problems. Even if I’ve overcome all of these problems personally, these are cultural problems, and cultural problems are notoriously specific. Ultimately I think it comes down to hoping that you can get key people- leads, build engineers- on board with the necessity of having code quality metrics as part of your pipeline. That’s the most important thing you can do to make sure that this time, I’m going to do it right.