Wikipedia has a confusing article on cowboy coding. It starts by explaining that cowboy coding is where "programmers have autonomy over the development process," which seems like a positive. However, the term is actually derogatory and strongly associated with inexperience and the lack of structure.

I couldn't shake off the feeling that programmer autonomy is a good thing. Eventually, I found this StackExchange response that listed the four stages of increasing developer experience:

Some of the terms originate from Joel Spolsky, so I've linked those stages to the relevant blog posts that he wrote more than ten years ago.

The StackExchange response made me laugh out loud – duct tape programmers AKA gurus or highly-paid consultants, anyone? – but more importantly, it helped me better understand why cowboy coding is a negative. Framing cowboy coding as a skill level rather than as a style of coding made more sense to me, and it now seems almost silly to compare cowboy coding to Agile or Waterfall or other styles of software development life cycles. Cowboy coders aren't lauded because they're autonomous; they're criticized because they're ignorant.

That's too bad. I've always wanted to be a cowboy.