Thursday January 27, 2005
Speed Isn't Everything and It's Crap Without Automated Testing
The software project management triangle has these three things at the corner:
The third item refers to allocating more resources (typically, people) to projects. The idea is that if you're resource starved (short handed) you need to reduce scope and/or the schedule (sacrifice speed) to compensate. If you increase scope, either the schedule slips or costs increase (or both). Of course, throwing more resources at the problem is often counter-productive.
There's another triangle associated with software development:
- automated testing
Most software projects involving technology innovation can ill-afford to lean to close to the rigor
corner; problems that haven't been identifiably solved before are intrinsically riskier. Rigorous development practices such as old-school waterfall processes are usually a bad fit where the emphasis has to be on speed of execution and technical creativity. Culturally, automated testing
can't just be a function for quality assurance staff; unit testing, integration testing and functional testing have to built into the DNA of a software project's build system or else the engineering costs for writing and running tests grows too high to sustain. So the third option is winging it in an ad-hoc fashion and live with the associated reduction in quality
. Obviously for things like flight control and medical monitoring where lives are at stake, you want rigor and automated testing
otherwise bad things happen. Space crafts blowing up and/or becoming astro-debris, missile guidance systems failing or heart transplant patients dying due to software defects are tragic. But most software projects don't have those kinds of consequences attached. Thus the incentive is high for making test driven development
part of the software engineering culture wherever speed of execution and breadth of innovation are among the primary motivations.
So if low quality is crap, perhaps there's a mathematic expression here
SPEED - AUTOMATED TESTING = CRAP
...and perhaps it's even transitive: high quality + automated testing = speed.
Speaking of which, it must be time for more coffee.
( Jan 27 2005, 10:11:18 AM PST )