10 Minute Vim!

Testing Is To Programming What Math Is To Engineering

· Read in about 3 min · (506 Words)

In ancient times, plenty of builders did their work without math, and I would guess that a good portion of them likely did it faster then their math-doing counterparts.

I am certain that when builders first started using math to prove that buildings would stand up safely, they were mocked by their math-less counterparts. I can hear them now, "Oh, Stephos, it takes you 5 times longer to prove your building will stand up, real men can just see that it will work". Even in modern times, many people build houses and small buildings that probably don't even need the math to really "prove" they work, but they perform the due diligence anyway. On the other hand, some people today still build houses, sheds, tree-houses, lofts, and fire pits without any drawings or math at at all, and why should they? They are responsible for the risk.

This is all fine, but, builders who shy away from math also don't build airliners, space shuttles, and skyscrapers. An aircraft designer who doesn't feel like using math to prove their aircraft will fly is handed an "Experimental" sticker and gravely patted on the back.

Today, programming is at the same place as both ancient and modern engineering: many projects can be done "by eye", and some of the most experienced programmers are able to build immense projects alone without any sort of automated testing at all. When you go to a forum and ask for help, you are just as likely to hear from a "space shuttle" programmer as you are to hear from a "tin shack" programmer. The "space shuttle" programmer would be horrified to hear of working without automated testing and rigorous review practices, whereas the "tin shack" programmer would be horrified to think of the time wasted to even learn the procedures to automatically prove his code works as it should. The "space shuttle" programmer might work on the same internal financial project for months or years, finally releasing with zero defects; the "tin shack" programmer might churn out several quick web sites a day. Neither project is better then the other, they both might be perfect for what their business needs.

I have heard several times from very good lone wolf programmers that testing just slows them down, and in some ways, it does appear to be a slowdown for them. Unfortunately, the cost to build even medium-sized projects with several workers without automated testing is only felt when it is too late, when the deadlines (and costs) are spiraling out of control.

The disciplined application of mathematics transformed and solidified the field of engineering into a field far more vast and capable of some of the most incredible constructions imaginable. Would we have smart-phones, GPS, modern cars, and airliners if engineering had just avoided mathematics? Just imagine what the field of programming could grow into if we continue to learn and grow our testing, designing, and writing of software.

I propose that automated testing is to programming what math was to ancient engineering.

steve shogren

software developer, manager, author, speaker

books:

posts for: