Are You A Cowboy Coder Or Agile Software Developer?

Software Developers facing a new programming project sometimes start coding before thinking through or planning an approach.

Coding without first planning or thinking through is a programming method known as cowboy coding.

Cowboy coders approach work with the mindset of coding without estimating or planning.

And they are at a complete lost when the results achieved by their cowboy coding tactics does not meet expectations.

Cowboy Coding Is Dead, Long Live Cowboy Coding

While many programmers publicly ridicule cowboy coding, they privately practice cowboy coding because it is the easier thing to do.

Look around you for cowboy coders. They exhibit some of the following tell-tale signs:

They do not estimate the work required for a software development project before coding because that is too difficult or unnecessary for them

They hack away at code instead of taking time to find the best algorithmic or coding approach for solving a programming challenge

They frequently under-estimate the complexity of software development projects and so they work late nights, weekends or even holidays in a bid to catch up with late deliverables

They dislike working with system architects, business analysts and project managers because the only work that matters to them … is that of writing code

They can’t find time to sharpen or improve their programming skills because all their time must be spent on coding

They get stuck in their code or hit dead walls because they under-estimate the complexity or difficulty of working with technology

Cowboy Coders get frustrated because their programming projects always seem to take a longer time to market than they estimated.

Unable to see the complexity of their code ahead of time, they are stumped when their efforts fail to produce working software on time or under budget.

Cowboy Coders bite off more than they can chew by embarking on projects that are too large for such tactics.

Since they do not take time to understand the complexity of their code, they are also likely to under-estimate the time or effort required.

Cowboy Coders develop poorly designed, buggy, unreliable software because of a lack of proper architecture and a lack of a software development methodology

Cowboy Coders produce poor quality software because of a lack of unit testing skills or good co-ordination with other software testers or quality assurance professionals

We Are Cowboys

Despite the superiority of iterative, agile or even Waterfall software development, Cowboy Coding is very much alive and well … and here are the reasons why:

Software Developers resort to cowboy coding because structured software development including Agile or Waterfall methods requires more thinking and planning skills from the developers.

Formal software development practice is more of an art than a science.

And it requires additional formal training, education or discipline beyond that of just learning a programming language.

Agile or waterfall software development methods places an initial burden or responsibility on the programmer to think or plan their work first before coding.

This goes against the natural habit of undisciplined cowboy coders.

Asking cowboy coders to go Agile hurts their feelings because it suggests that they cannot instantly, easily or intuitively come up with the best code for a programming challenge

Agile and Waterfall software development methods require more planning, design and architecture skills which are harder to come by or less intuitive than simply coding before thinking or cowboy coding.

Developers Go Agile!

Why the Waterfall model may seem like the next step up from Cowboy Coding, I recommend that developers bite the bullet and go agile for the following reasons

Faster Time To Market:

Agile developers work for their clients or customers.

Agile Software Development helps you get the most important features to market first knowing that about 60% of software features are never used.

Customer As King:

Agile software developers work for the customer and not for the development process.

They are empowered to focus, respond and adapt to the customer’s needs with the end goal of giving the customers what they want!

Agile Project Management:

Agile project managers focus on the current iteration or use it to make better estimates for the next one.

Agile software developers have better, more realistic or more accurate project plans to work with because they are only tasked with producing working software for the current iteration and not for the entire project at once!

Agile Software Testing:

Agile software testers work with software developers to produce high-quality software a the end of each iteration instead of waiting for the entire project to complete before testing!

Testing for bugs at the end of each iteration, reduces the chances of producing unreliable, buggy software at the end of the entire project unlike the waterfall model.

Case Study: An Agile Developer Breaks The Cycle Of Unemployment

Here is a real-life case study of how I helped a C/C++ programmer break the cycle of un-employment using Agile Programming techniques.

Un-employed C/C++ Programmer

Sometime ago, I was approached by a C/C++ programmer with a college degree who had been unemployed for a couple of years.

Transition From C/C++ Programming

Instead of just re-writing the programmer’s resume, I counseled the C/C++ programmer to learn a new programming language and database platform from scratch.

Agile Hands-ON ExperienceFor acquiring hands-on experience in the new programming language, I gave the C/C++ programmer an iterative software development project to build from scratch.

I also tasked the programmer with building a working release of the project very early in the lifecycle and then presenting that to hiring managers immediately.

Guess what happened, including the agile development experience in a resume, got the developer hired in the very first job interview and with only 1 month of software development experience in a new programming language!

7 Responses to "Cowboy Coder Or Agile Programmer?"

It is amazing how many programmers are unable to recognise that they are in essence are cowboy coders.

I definitely vouch for the fact that the Agile methodology helps break the cycle, yet many programmers are sceptic of it.

The fact is Agile techniques not only make you focus on the clients needs, but more importantly it teaches you to focus on your code that addresses your clients need. Realising that your clients needs and focus may change, help you to write code that is scalable and extensible.

how to break out of cowboy coding? Start by working in a team where there are more experienced developers who can mentor you or pay attention to your work.

Not many teams or senior software developers are good at mentoring. In some teams, the developers only care about themselves and would not spare the time to help anyone else who is struggling. On the other hand, some teams are quite understanding because the senior developers make it a point to help others.

So, look for where you will grow and not just where you will get paid 🙂