«

»

Dec 10

The Fourteen Types of Programmers: Type 7: Random ones

There are really two subsets of programmers here.   First, this is the catchall for everyone who doesn’t fit into any of the other categories.  A bit of a cop-out, but then, it’s been six years since I started this list, so perhaps you want to just cut me some slack maybe 😉

 

The second subset is real – it is the programmers who change things at random when something isn’t working.

Good Things:

  • There are situations, like debugging or when you’re trying to learn something new, where changing things at random and finding out what happens next can be incredibly illuminating.
  • This technique helps you learn how the software works – it helps you build your mental model (assuming the software is consistent), or it angers and enrages you when it (the software) is inconsistent.

Bad Things

  • Unfortunately, in my experience most Random programmers are people who don’t understand what they are doing, and change things at random in production systems, to see what works.
  • And when they find anything that works, they stop.
  • Which leads to nasty, horrible, confusing, mismatched code – pretty much the worst of all possible “successful” worlds.
  • Big Ball of Mud (the famous anti-pattern) is almost certainly a by-product of Random programming
  • Which implies that there are a _lot_ of them out there.

How to identify them

  • The Good ones say things like:
    • “I picked up this new library/framework/app/etc – and I’m trying to build something with it to learn how to use it”
    • “I discovered, through trial and error, that if you do X, Y happens.  After figuring out why, I was able to solve the problem in a consistent way”
  • The Bad ones say things like:
    • “I found some code that seemed to solve a similar problem, so I copied it.”
    • “I discovered, through trial and error, that if you do X, Y happens.  So it’s fixed.”

 

 

Leave a Reply

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

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>