In the simplest terms, cowboy coding is coding where the developer has free rein over the process. The cowboy coder has complete control over the project schedule; the languages, algorithms, tools, and frameworks to use; and the coding style to follow.
A cowboy coder can work alone or be part of a group, but they work without following a specified process. If a company employs the coders, they work with little to no management supervision. Business managers only control non-development aspects. They set broad targets, timelines, and scope.
Read More about “Cowboy Coding”
Like any software development process, cowboy coding has upsides and downsides.
Advantages of Cowboy Coding
Cowboy coding has often been dubbed coding before thinking. Meanwhile, software development (i.e., the kind that usually happens in companies) is described as thinking before coding. As such, the developers enjoy a free-form working environment that encourages experimentation, learning, and free result sharing. They don’t follow a strict hierarchy that lets them address design limitations and defects freely. They’re not bound by reviews and quality checks that take time. Most of all, they code on their own time so they can complete projects faster.
Disadvantages of Cowboy Coding
Since this type of coding doesn’t follow a strict timeline nor plan, it can cause project delays. And when push comes to shove in terms of pressure to deliver, developers may hurry and resort to sloppy coding, causing problems later on. Clients may not be satisfied with the software and may deem it doesn’t meet requirements. Finally, lack of testing and quality checking can result in an incomplete application or, worse, software that doesn’t work as it should.
The Code-and-Fix Model
Cowboy coders are famous for using the code-and-fix model. The code-and-fix model refers to jumping right in and designing the software, and fixing problems as they come. The developers don’t create and follow a plan. They don’t organize before working.
While the model is quite popular, it has its share of problems. Since developers rush in and start designing and developing, they may encounter huge issues later on, which could cause them to go back and forth, redoing steps or, worse, the entire process, which costs time and money.
Typical Users of Cowboy Coding
Cowboy coding is applied by students, hobbyists, and developers who work solo. Students who are still learning to code typically follow the code-and-fix model and could be considered cowboy coders. They lack experience and have to experiment to see what works and what doesn’t.
Hobbyists, meanwhile, only code in their free time. More often than not, they don’t have deadlines nor clients to satisfy. Their only goal could be to stay busy, learn more about coding through practice, or produce an application prototype that they may later on profit from.
While not all solo developers are cowboy coders (i.e., some follow standardized and tried-and-tested software development methods), some could be going it alone the cowboy way. That would work, too, so long as they meet the delivery deadline and required specifications if they are working on a project for a client.
Cowboy Coding and Agile Development
Cowboy coding is often confused with agile development. Because like cowboy coding, agile software development frees developers from traditional development methodology constraints. But unlike cowboy coding, agile development still follows formal methodologies in terms of designing and implementing software. Agile development only differs from traditional development in that it improves and optimizes how developers use existing methodologies.
Unlike cowboy coding, developers don’t skip full-scale testing in agile development. In agile development, only functional tests that add value to the development process are applied. Tests are meant to achieve specific purposes and aren’t simply done because they’re part of a methodology the developers are asked to follow.
Cowboy coding is controversial, and rightly so. Since it doesn’t follow the rules, not many companies, if any, allow their developers to employ the method.