I was recently informed that within my development team I’m often thought of as the ‘rebel’ or cowboy coder. Being, as I am, very attached to programming in rigid methodologies with well-defined practices in place – this revelation surprised me. When I pushed my informant for further information, it seems that I’m viewed this way because I’m the guy writing Agile code and refactoring other classes in order to get them into tests!
This led me to wonder: is a coder truly a rebel if what they are doing is trying to improve the testing systems and reducing software entropy? At what point should respecting the team take precedence over making and keeping the code-base maintainable? Is there such as thing as a ‘good’ cowboy coder?
It’s a hard line for me to draw: on the one hand I’ve a driving need to ensure that the code I create is the best it can be. On the other I feel it’s important for me to try and explain to my fellow teamsters exactly *why* I’m changing their classes, but this would require me to pull back on my own tests and wait for them to begin to understand and write their own tests.
It’s a difficult decision, especially when every agile developer I’ve talked to has had little or no success convincing others to get ‘test infected’ without higher-level support.