Agile Ajax

800 on Your Math SAT, Software Development and Bugs

Why don't more people get a perfect score on the math portion of the SAT? I mean its dead simple -- just simple arithmetic. And there are plenty of bright young things that understand the problems cold.

I can understand stubbing your toe on the verbal; after all, there may be a word in the test that you just don't know or remember. But the math? There aren't more than a half dozen problems, and though the numbers may change, the concepts don't. So why don't more people get a perfect 800 on their math portion?

I ask this question every time someone asks me why there are bugs in software.

If you are a manager new to software development, bugs are both frightening and infuriating. They are infuriating because, dammit, you aren't paying for buggy software. They are frightening because, except in a really broad statistical sense, they are unpredictable in both when they appear and how much effort they take to resolve.

Why Bugs Happen

Back to the SAT...most novice managers may not understand software development, but they probably remember the SAT. So why don't more people get a perfect math score? Because people make mistakes, and they make more mistakes on complex tasks that require abstract thought. Maybe not a ton, but a few. Enough to turn an 800 into a 780. That's a bug. Most developers take the equivalent of several SAT math portions every day. If they're really good, they make only a few mistakes every day. (Actually, most development tasks are much much harder than the SAT.) Also, imagine that the mistake you make today will create errors in the tests you took in all the previous days, and the mistakes you made on previous days will cause mistakes on subsequent days!

Wow. Its a wonder anyone ever develops software. How do developers do it? We have a deep bag of tricks.

  • We divide big problems into smaller, simpler problems.
  • We use Object Oriented programming to keep code and data together. If you keep them apart, its easier to make errors.
  • We write unit tests -- tests for every little unit of code -- to make sure they work. We measure to make sure our tests excercise every line and branch of code.
  • We build our software every hour and run all those unit tests to see if we've broken anything -- called continuous integration.

There are dozens of other tests and tricks that we use. We test early and often. Bugs will happen, but as long as we minimize them and detect them early, we can make sure they are small and insignificant.

So the next time a manager gets worked up about bugs, ask them what they got on their SAT.

Comments: 1 so far

  1. Excellent point, most people don’t understand the amount of logic developers have to create, then wade back through each day, and how taxing it is mentally. I know some nights I feel like my brain is stuck in an ‘infinite loop’ while I’m trying to sleep. “Most developers take the equivalent of several SAT math portions every day.” Great quote, my friends don’t understand how I can be so drained after work when all I’ve done is soot in front of a computer for nine hours.

    Comment by T.J., Thursday, May 15, 2008 @ 12:18 pm

Leave a comment

Powered by WP Hashcash

About Pathfinder

  • We design and build extraordinary applications for companies looking to make the next great idea a reality.
  • learn more

Topics

WordPress

Comments about this site: info@pathf.com