Archive for the ‘Prevention’ Category
Error-Proofing Made Simple
Error-proofing is preventing errors rather than just warning about them.
With compiler warnings, that means setting warnings-as-errors in your compiler so you cannot complete your build. Yes, you also need tests that can fail and a source control system that refuses promotion of versions that fail test. And code review to ensure that code changes to address compiler warnings only improve the code. But the key is warnings-as-errors.
While error-proofing is simpler with fast-food trays, the idea is the same. Read “Simple, Brilliant, Error Proofing at the Amazing In-N-Out Burger” (Mark Graban | 04/11/2011 Quality Digest) and look for where else you can error-proof your process.
Looking Back, Looking Forward
Some return for your U.S. taxpayer dollars:
CrossTalk, The Journal of Defense Software Engineering is an approved Department of Defense journal. CrossTalk’s mission is to encourage the engineering development of software in order to improve the reliability, sustainability, and responsiveness of our warfighting capability and to inform and educate readers on up-to-date policy decisions and new software engineering technologies.
Whatever you may think about “warfighting”, CrossTalk sometimes has some really good articles, and even some great ones. Here are two, from the December 2007 issue:
Very good, about software maintenance:
Geriatric Issues of Aging Software
Great, about moving beyond “escaped defects” to defect prevention:
Advancing Defect Containment to Quantitative Defect Management
Both are thorough and comprehensive—worth reading!
Don’t Watch Your Fingers
When I talk about tools for coding, some people ask,
“How can we be free when the environment is computer-controlled?”
It’s all about the right metaphor. One of mine is woodworking.
“By definition, a jig guides your tool and a fixture guides your work.”
Thus begins Jim Stack in The Best Jigs and Fixtures for Your Workshop. And he claims the 30 best in his book. But here’s a similar example from another source, to give you the idea.
There’s no improving on the authors’ explanation:
“If you’ve ever built a picture frame you’ve experienced the frustration of trying to get all of the parts to fit perfectly. While trying to “dry-fit” and clamp the frame’s pieces together the parts often fit perfectly. But add glue, and a little clamp pressure, and the parts begin to slide apart. It can be a frustrating race against the clock to even things out before the glue begins to set.
(By the way, by Stack’s definition, this example is really a fixture, not a jig.)
If you’ve ever tried framing a picture, you may know what they’re talking about.
Equally well if you’ve ever raced to get your program to compile and run before you go home.
Yes, that picture frame looks pretty tightly constrained. But it’s not limiting my creativity as a carpenter. It’s just holding the pieces in alignment so they don’t all fall apart. I don’t find myself thinking creatively when I have glue all over my fingers and wood stuck to the carpet.
Your tools include the IDE and the compiler. Your work is, clearly, the code.
What kinds of add-ons (“jigs”) guide your tools? What kind of fixtures can help guide your work?
Here’s the rest of that site: http://www.woodzone.com/tips.htm. Look through it and then make your own list for coding.
You don’t even have to watch your fingers.