Editor's Forum


Do Your Homework

The prologue to Bobby Schmidt’s column this month reminds me of the seemingly countless times I’ve received email requests from all over the world like the following:

“I need your help in completing the following assignment: <there follows some fairly trivial programming task, like writing some records to file and reading them back again, or creating and traversing a linked list, etc.> I need it by Friday, if possible, and please don’t use any fancy programming techniques, since the teacher will know it wasn’t me. Waiting to hear from you...”

Such people do hear from me. I politely tell them that I don’t have time to do their homework for them, and that if they would talk to the teacher or perhaps someone else in the class, I’m sure they would get the help they need to get started. What they don’t hear is how foolish I think their request is (for reasons obvious to anyone reading this forum, I’m sure). And of course I don’t hear from them again.

Twice in the last five years things have turned out differently, however. I received the following from a college student (evidently not a C.S. major) last March:

“Hi there Chuck, my name is ******. I am in my first year of programming, and man is it ever hard. I don’t know if it isn’t sinking in or what. I am having problems understanding when you use ELSE, DO WHILE, IF, and including a file into the program. It is so hard and I really can’t afford to fail this course. The programs are getting longer and more complex. If there is any advice you can give to me, I would really appreciate it — even to explain it for programming for dummies would be helpful. Thanks.”

In this case, she was asking for advice, not for me to do her work. I gave my usual polite response along with some additional suggestions and received the following in return:

“I am just happy that you responded to the email, and yes I agree with you. The teacher is very programmer oriented. Explains everything in language that I don’t understand. But I will look that stuff up. Thanks again for the help, and good luck with your future.”

Would that more of these folks were of this ilk.

The other occurrence moved me to actually do some work. A woman with a home-based business needed some help converting time fields in a database into a readable format. The numbers in question were time_t values from a popular C/C++ compiler. It took all of 15 minutes to code and test a less than 10-line program to do the job. I mailed her an executable, and she countered with this mail:

“Words cannot say how happy and grateful I am! Even though for you, ‘the routine [was] so trivial to write,’ for me this kindness makes all the difference in the world. For the first time since I started using the CallAudit program in 1994, I will be able to import its records ... into other programs, which will allow me to use the information in a much more meaningful way (like preparing bills). Your program will spare me from continuing to divert hundreds of hours (conservatively) for the purpose of reentering the data.”

But let me repeat that these cases were the exception. Most of the time the writers are looking for someone to do what they can and should do for themselves.

I believe it was Benjamin Franklin who said, “Experience is a dear [i.e., expensive] school, and only fools learn therein.” I further believe that he was extolling the virtue of learning from the experience of others, since no one has time to experience everything, but certainly he wasn’t suggesting that we have no experience whatsoever. The simple, even trite, truth is that one learns to program by programming (substitute your favorite verb for “program” at will). The experts who grace the pages of CUJ are here ultimately both because of their experience, and because they are willing to learn from others. I find that the most adept among us freely honor their mentors, but above all, they do their own homework. Take a lesson.

Chuck Allison
Senior Editor