Cowboy Programming is a description that is often applied to game programmers. It implies an individualistic style of programming, where the programmer creates ad-hoc solutions to problems based on their personal experience and knowledge base, rather than implementing a standard solution, or one arrived at by teamwork.
A good cowboy programmer is able to quickly investigate a problem and create an appropriate solution without going through the steps of a formal methodology. A bad cowboy programmer locks himself away for days and produces a mess of buggy and unreadable code.
I am a Cowboy Programmer, hopefully a good one. I like to solve useful problems. I like to understand why things work and why they fail. I like code that is clear and solid. I enjoy working as part of a team, but I also like grappling alone with a problem for as long as it takes.
Is Cowboy Programming a bad thing?
That’s a bad question. It’s like asking “Are laptops bad?”. Sure, laptops are slow, they have small screens, small hard drives and tinny speakers, they are easily stolen and hard to upgrade. But are they “bad”? No, laptops are great at what they do.
Or rather: good laptops are good at things that laptops do. A crappy laptop is crappy.
A good cowboy programmer is good at the things that cowboy programmers do. They quickly find appropriate solutions to problems based on their individual knowledge and experience.
The games industry is not a place where you specify a piece of software and then you write it. This is not a failing of the industry, it is a necessity of the environment the industry operates in. The potential problem space is too complex to submit to a formal methodology. To work in that environment you need to be adaptable, and to be able to work independently. You need the skills to solve new problems quickly. You need to be a good cowboy programmer.