In short a cowboy coder is someone who is not a team player and doesn’t even care about the team. Just his job and the paycheck it entails.
Your analogy is more like saying in a society without any heavy handed morality rapists aren’t that bad as they increase the population size.
]]>We’re both in agreement that process heavy-handedness reflects a deeper trust issue. And that’s a fundamental problem.
But there has to be a basis for that trust, and it’s not just that we think the developers and testers are swell people. There has to be something in place to make it hard for things to go wrong.
Heavy test automation is a solid basis for that trust. If your build breaks when somebody creates a bug, then you have a great basis for trust.
In that context, the negative connotations around being a cowboy disappear, because you’re working within a framework where the process is more in the background. You’re not trying to figure out how to get a build out there without running tests against it, for example. The tests just happen automatically and you’re OK with it because it makes sense.
If anything of the “cowboy” remains, it’s the idea that somebody can decide to work on something and get it out there without needing major planning, coordination and verification efforts to achieve the required level of quality. In that latter sense we should all aspire to be cowboys.
]]>The truth I think is that organizations don’t trust engineers (QA and Dev). All of the processes put in place are there only to make sure everyone is under some kind of control.
I think in cases where you have a “cowboy” you more than likely process heavy. Which might have been a process light system and as mistakes were made more process were added in order to prevent mistakes. But processes never get cleaned out. Are all those process really -truly- needed anymore?
Why couldn’t process be removed and by definition also remove the “cowboy”?
]]>