Published Tick-the-Code Material
Happy Are The Software Engineers.. (article)
My first ever published article is called "Happy Are The Software Engineers.." and it appeared in Better Software magazine in December 2006. The article describes briefly how complete concentration can create the feeling of happiness especially if the task at hand is meaningful. I wanted to highlight that working for software quality is meaningful and with Tick-the-Code you can achieve complete concentration.
Simply put, happiness is Tick-the-Code.
Tick-the-Code Inspection: Theory and Practice (paper)
My first ever scientific paper is called "Tick-the-Code Inspection: Theory and Practice" and it appeared in the peer-reviewed publication of ASQ (American Society for Quality) called Software Quality Professional.
As the name says, the paper reveals all details of Tick-the-Code up to the 24 coding rules. At the moment this paper is the most comprehensive written source for information about Tick-the-Code.
Tick-the-Code Inspection: Empirical Evidence (on Effectiveness) (paper)
My second paper is called Tick-the-Code Inspection: Empirical Evidence (on Effectiveness). It was prepared for, and first presented at, Pacific Northwest Software Quality Conference 2007. The paper presents measurements taken in Tick-the-Code training courses so far (about 50 sessions with over 300 software professionals). The results are revealing. The main point of the paper is that software engineers could keep their software much simpler and avoid making many of the errors software projects are so notorious for.
In the Appendix of the paper, you'll find all the active rules of Tick-the-Code at the time of writing (summer 2007).
Tick-the-Code - traditionally novel technique in the fight against bugs (article)
Pirkanmaan Tietojenkäsittely-yhdistys (Pitky ry) published my article in their member magazine Pitkyn Piiri 1/2008. It is called "Tick-the-Code - uusvanha tekniikka taistelussa bugeja vastaan" and it is only available in Finnish.
An Example Rule Introduced
There are 24 active rules in Tick-the-Code. Each one of them helps to locate either omissions, redundancies, ambiguities, inconsistencies or assumptions in the source code. Individual rule violations might seem minor, but when you let them accumulate long enough, you'll be in trouble.
Marked rule violations are called ticks. Try the following rule on your production-level code and see how many ticks you can find. Then analyze each tick and see if you can't improve the maintainability of your code.
The rule sample changes weekly, so in a mere 24 weeks of diligent visits, you can have yourself the complete set of Tick-the-Code rules. However, there is an easier way and you'll be rewarded with laminated rule cards to top it all up. Get trained! Contact Qualiteers if you want to know more.
"Invalidate pointers and resources after use."
After you free memory, invalidate pointers to it by setting them to
NULL. That helps avoid the dangling pointer error, which is extremely difficult to locate otherwise. Writing to an invalidated pointer namely (with luck) causes a clearly visible error.
Besides dynamic memory (which in some systems is automatically managed with garbage collection) there are other resources, which need to be opened for use and closed afterwards. File and database accesses are some examples. After closing, invalidate the handles so they won't inadvertently be used as if the resource was still in use.
Tick-the-Code Inspection: The Book (book, working title)
Since 2006, there's a book on Tick-the-Code on the works. Currently the book project is on ice, as I study and gather more material and field experiences to include in the book. The book will be the most comprehensive written source on Tick-the-Code.
Excerpt from the book
The excerpt changes weekly. Each excerpt is still a draft version and might change before ending in the book.
Without time you cannot create anything, let alone anything with good quality. In order to create quality, you need enough time. Not only do you need to have enough time, but you have to use the time you have correctly. Often that means focusing entirely on the task at hand. You could in fact call such a focused period of time Quality Time.
Lack of time can be real, self-inflicted or even imagined. There's not much you can do when you really don't have enough time. You have to give up on at least part of the task. The sooner you realize that the better it is for your stress levels. Even if a pregnant woman can deliver a baby in nine months, nine pregnant women can't deliver even one baby in a month, let alone nine babies! But they can deliver nine babies in nine months. If you know the amount of real time you really have, you're much better off than those who think they do.
Self-inflicted lack of time means random deadlines set by project managers, shortchanging quality for time in the short-term and other behavior, which create a real lack of time out of thin air. With a too tight schedule you might be tempted to take shortcuts thus making the eventual trip longer than necessary with all the rework. The nasty thing is that once you step on the low road and paint yourself in a corner, you really do have too little time to finish properly. There's no magical cure for it.
As we've seen, some people equate busyness with importance and therefore might want to look busy. By involving themselves in all kinds of tasks they spread themselves too thin until they have too many tasks to complete in the time they have. This kind of self-inflicted busyness can turn into a real lack of time and lead to sloppy completion of tasks or total incapability to finish anything.
If everybody around you seems busy, for real or seeking importance, the busyness can infect you, too. This kind of lack of time is totally imagined but isn't in any way less damaging to the quality of your work. Having too little time, or thinking you have too little time, causes you to complete things "with your left hand" or "just throw something together". The results are far from good quality.
All this talk about time might lead you to the conclusion that quality always takes a lot of time. That's not at all the case. Sometimes even a little time is enough, as long as it is Quality Time. Time-wise, avoiding rework is a feasible thing. That means that if you can finish something properly, do it, instead of waiting for somebody to complain and then redoing it. You can't store time but you can spend it wisely. All that can be expressed in the Single Subject's Swifter Slogan:
Quality Time spent is real time saved.
Quality Time enables creating good quality, but doesn't guarantee it. You need something else, too.
The conclusion of Chapter 3. "Root Causes" is that there are exactly four ultimate reasons for failure in software. One of them is lack of time.