Agile Software Development and Cowboy Coding – The difference

Posted: January 8, 2009 by Shishir Gupta in Computer Articles
Tags: , , , , ,

Cowboy coding is a pejorative term used to describe software development where the developers have autonomy over the development process. This includes control of the project’s schedule, algorithms, tools, and coding style.

A cowboy coder can be a lone developer or part of a group of developers with either no external management or management that controls only non-development aspects of the project, such as its nature, scope, and feature set (the “what”, but not the “how”).

Cowboy coding can have positive or negative connotations, depending on one’s opinions on the role of management and formal process in software development; “cowboy coding” is often used as a derogatory term by supporters of software development methodologies, such as Agile. However, the term has been reclaimed to some extent by those practicing within the community.

I have found a very good article so just pasting it over here. I guess this will explain the topic much more in detail.

“This is a frequently asked question. Let me first explain what is Cowboy Coding. Cowboy coding is the absence of a defined method ,i.e. team members do whatever they feel is correct. Cowboy Coding is a term used to describe a software development where the developers have autonomy over the development process. This includes control of the project’s schedule, algorithms, tools, and coding style. So i guess the explanation itself says that these two terms are not equal.

  1. Agile software development re-evaluates plans frequently, emphasizes face-to-face communication, and values the working software over use of documents. However, most Agile teams do follow defined (and often very disciplined and rigorous) processes.
  2. The Project schedule is not a prerogative of the team in Agile. It is the marketing team which takes the call on this important aspect of the project in Agile Software Development.

There are still a few people who say that the Agile Software Development is similar to or equal to the  Cowboy Style Programming because:

  • There is no documentation.
  • There is change anywhere what so ever.
  • There is no method to define the maintenance phase.

Again, I would say that all this is an individual’s perception and an emphasis on definitive processes for everything. Nothing in Agile stops you from saying no documentation or little documentation – they only ask you to value the cost of the documentation – which is a good thing to do. If there is a value and cost-value graph is good, then documentation should be made. Agile is based on building frameworks and teams which accept changes. This is based on a lot of engineering practices like refactoring, unit testing and automated tests [which leads to cohesion and coherence – both desired qualities of a good code] as well as having a good framework for product managers and coders to interact through out the product lifecycle. Rather than working on the principle that changes are caught early in the development lifecycle which are easier to fix, Agile focuses on creating processes and environment where changes at any stage can be responded to readily, i.e. it makes it easy for development team to suggest alternative ways to get quicker to market as well as get feedback quickly. It also enables them to align their code and design from a business standpoint. This along with engineering practices, helps the team to respond quickly to the changes. 

Actually if seen carefully it is not a question of change or no change but the market environment:

  • Can any good product manager give you solid no-change requirements for anything longer than 02 months in current business environment anyways?
  • What is best – to have a slow response to these requirements or rapid responses?
  • If your product is now in the market, probably maintenance will be one area you want maximum attention. Nothing in Agile makes you focus less on maintenance and more on new product development.

Agile is a value stream – whatever brings you value, inspect for that and adapt it. It emphasis the system as a whole with clearly defined roles – something which Cowboy Coding does not unless the only way you can derive success is by having everything entrusted to group of developers – which can very well be the case only during the initial stage of your project.”


The Original post is at :

  1. johnadulleck says:

    It seems your experiences have been similar to mine regarding agile software development.

    I appreciate what you say about agile not meaning processless development. In the projects I have been involved in we were very rigorous about customer spec/requirement/design documents.

    We generated the design document iteratively, interspersing design and coding cycles. By the time the design document was complete and signed off, we had the barebones object system for our project as well as the framework for testing already in place.

    Once we bagan implementation we ran through several code/test iterations before completing the project.

    I wrote a short commentary on this process which you can read here.

  2. Shishir Gupta says:

    Well yes I have had some of the similar experiences and that is what i have tried to explain it here. I will definitely look at your article and I also hope to keep in touch with you in future to share more experiences.


  3. […] his article, “Is Agile Software Development = Cowboy Coding?”, Shishir Gupta states: Again, I would say that all this is an individual’s perception and an […]

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s