Programmers from the Wild West

Analysis, Design, and related topics are for sissies, and for allowing professors of Computer Science who are bad at mathematics to make a living. SDLC is a pony. Cowboys ride horses.

We all know what happens when a project’s deadline is not met. Besides firing someone, hard, dry heroes appear. Lonesome, ruthless and distrustful heroes which brings the peace only revolvers can conquer. Sometimes, the guys with the money hire them as the ultimate saviors: they have bothered to come here, from the farthest west, to rescue the project. They are irresistible: they are the cowboy programmers. It’s men’s time.

Ben Cartwright & Sons
Ben Cartwright & Sons


But wait a minute. I remember that, according to Brooks’s law, “adding people to a late software project makes it later.”

Cowboy wisdom #1: Yeah. But “if you don’t add people to a late software project then it has been canceled.”

Do they indeed come from the farthest west? Not necessarily. Perhaps they have been members of the team since the start. Frequently, cowboy (cowgirl) programmers are not external newcomers. They are hidden (or not) in the core of the team. And they are important contributors to the flaws of the project. Blame managers, though, for accepting them in and for trusting their nonsense advices.

However, I’ve also seen a lot of fellow programmers to crumble under the project’s pressure. In such circumstances, they awaken their hidden alter ego, and happily wear their hats. I have met several of such outlaws, and in the following, I pay tribute to this lovely and legendary figure of programming.

>> The Truth about Software Development Life Cycle (SDLC)

Cowboy programmers are the absolute reference for everything. Masters of all trades (although they don’t have any clue about SDLC, but who cares?) Analysis, Design, and related topics are for sissies, and for allowing professors of Computer Science who are bad at mathematics to make a living. SDLC is a pony. Cowboys ride horses.

Requirements Elicitation anyone? What for? Cowboy programmers know what customers want. Besides, filling myriad pages with arrows and boxes is a complete waste of time: we should be coding instead! That’s why the project is late!

Cowboy wisdom #2: Reading too much Software Engineering books has rot your mind. Welcome to life, boy.

>> Learning to Code

Cowboy programmers have no time for thinking. Their code is rushed, but effective. Optimizations are for compilers. They just get the things done. How to reverse a string? Here’s your answer, enjoy it:

char* rev_str(char* str)
{
  int str_l = strlen(str);
  char* r = (char*)malloc(str_l);
  int i =  str_l-1;
  while (*str)
  {
    r[i] = *str;
    str++;
    i--;
  }
  r[str_l-1] = 0;
  return r;
}

Please, don’t rush into believing that Cowboy Programmers don’t comment their code. They do. And they do it excessively. The main difference, perhaps, is that their comments are what is known as auxiliary comments. Let me explain. Imagine that our cowboy programmer finally accepts that his code contains a bug, and decides to use a function of some library. These are the germane comments our cowboy introduces in his code:

char* rev_str(char* str)
{
  /*
  int str_l = strlen(str);
  char* r = (char*)malloc(str_l);
  int i =  str_l-1;
  while (*str)
  {
    r[i] = *str;
    str++;
    i--;
  }
  r[str_l-1] = 0;
  */
  return lib_str_reverse(str);
}

Note how the old code turns into auxiliary comments which nicely explains what lib_str_reverse(char*) does.

Cowboy wisdom #3: He that is without sin among you, let him first cast a stone…

>> The Dusty Road to Testing

For the cowboy programmer, the notion of “testing” implies the possibility of his code being buggy. Only people with poor self-confidence do tests. People who think of performing tests should be politely removed from the project. If we were to run tests in our project, our cowboy could not make the smallest change in the project without rerunning all sorts of tests. The project is late, remember?

Cowboy programmers always believe that their ideas and code are perfect. Any fiasco in the deliverables is a consequence of bugs in the code of someone else. Fear not, our cowboy even has solutions for such problems.

Cowboy wisdom #4: Did you learn in school what a watchdog is? It’s a program that restarts the hardware if it seems to be wedged. Do you know what was the first piece of code I wrote just arriving here? Do you know?

>> Spawns Everywhere

Finally, other important trait of cowboy programmers is their disrespect for the code of other programmers. They will introduce changes everywhere, at will, always bitching about others’ incompetency. Their code will dangerously spread.

Cowboy wisdom #5: I’m a mac daddy.

Nowadays, they are very, very healthy. Long life the cowboys.

8 thoughts on “Programmers from the Wild West”

  1. Cowboy coders automatically assume that any bugs are in someone else’s code… And they never say “I don’t know”

    In 2007 I requested to be changed to other project, because I was SICK of such annoying dudes!!

  2. excellent, I’m used to these ‘cowboy’ programmers in my work, They think they are the best of the world,, but they really suck!!

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.