10/20/2011 12:25

The Benefits of Laziness

I've often remarked that a good computer programmer must be lazy. The same thought has been applied to mathematicians and others. I don't recall that it was ever said of politicians.

To understand the thought, one must make a careful distinction between laziness and procrastination. The good programmer does not put work off to the last minute. Why? Because it will be harder to do then. At the last minute, you never have everything you really need and you have no time to get it. You don't have all the knowledge you should have to do the job and worst of all you don't have the time to think about what you know. If you start the project at the last minute, you can't differentiate between the fundamental and the incidental, and so you have to give just as much effort to every aspect of the work. If you start the project at the last minute, you haven't laid any groundwork for yourself and so you have to address every little detail at the same time.

Let us take an example. The coding system for medical diagnoses, affectionately known as ICD-9-CM (or even just ICD-9 for short) is going to be replaced by a new version, the ICD-10-CM. Among other changes, the length of the codes is increasing from 5 to 7 and the format of the codes is also changing. We've know about this since 2003. A procrastinator would wait until the new system is to be implemented, at which time every data field containing a diagnosis code would be altered, along with any program that checks for the correct format of the codes, and the new set of codes would have to be loaded into a reference file. That's a lot of work.

The good programmer, on the other hand, would have used the past decade to expand the size of all the fields as might be convenient. You don't have to work very hard to change the size of one field, especially if you are working with it anyway. Besides that, a good programmer might have made a copy of the new codes; after all some manager had probably asked about them at some time and when the programmer looked up the information on the internet, there were the codes themselves, ready to be stored. It was easier to keep the codes when stumbled upon than to try to find them again at the last minute. So when that last minute comes -- soon now! -- the good programmer has nothing to do. Why? Because the good programmer did a few easier tasks here and there as the opportunity arose. That is, the good programmer did it the easy way.

This entire train of thought arose when I was at West High School the other day. When I arrive, I need to sign in as a visitor. I am issued a visitor pass which (in theory) I wear visibly at all times. Students are required to wear their individual picture IDs for all to see and the faculty and staff have the same requirement. Attendance is taken in every classroom each of the 8 period of the day and reported to the attendance office, where the data is recorded. Students who go to the Student Services office must sign in when they arrive there; if they are seeing me or another tutor, we ask them to sign in again. And we tutors make notes about which students we work with each period. That's a lot of work.

In view of this, it is not surprising that if any particular student is wanted, no one in the entire school (who is not physically in front of the student) knows where that student is. If any student is wanted for any reason, a search is initiated. There is a record of where each student is assigned to be, and the search begins and often ends there, because most students are regularly where they have been told to be. But what if they aren't? Then the school staff follows various leads and hunches until the student is found or until the effort exceeds the perceived need to find the student. That's a lot of work, too. Over and over again.

In actual reality it would pay for the schools to become a lot lazier about tracking the students. If they would stop doing all these tasks which are not working and replace them with a few that do work, the total amount of effort would be far less.