Friday, September 03, 2004

How To Use Grades To Motivate Work

by Asim Jalis

1. This week I experimented with using a course style grading scheme to organize my time. I set deadlines on tasks and then completed them. I will touch on different seemingly unrelated topics and then connect them together. 2. The problem with most time management schemes is that there is neither any reward for finishing on time nor is there a penalty for being late. Certainly there are rewards and penalties imposed by the outside world but the time management system does not impose its own rewards and punishments. 3. There is no concept of failure in time management. In order to learn there must be failure. A system which does not define failure modes is not going to produce learning. 4. Here is a subtle but brilliant insight of the academic grading system. Question: How do you combine metrics about completely different things? Answer: Just add them together. This is the answer of the academic system. If you get a C in Chinese and an A in Algebra, your final grade is B. The fact that grades can be added together like this, that they are so fungible, is both dumb and brilliant. It allows you to have a single score, a single point of feedback, which you can use to determine if you have succeeded or failed. 5. The same process of addition is used to determine the grade of a student in a course. The 20 quizzes are worth 20% of the grade. The exams are worth 25% each, and attendance is worth 5%. This grade arithmetic is both bizarre and brilliant at the same time. It solves a tough problem that remains unsolved in the work place. How do you measure people when you have a set of incommensurable metrics? The answer is: just add everything up into a soup and that's your metric. 6. Think of grades as a feedback system. The nice thing about addition is that it allows you to immediately see if there is a problem. You keep your eye on a single number and as soon as that number drops you raise the red alert. 7. Imagine driving a car with a single red light. When the light goes on, it means there is a problem. Otherwise things are fine. 8. JUnit (a software testing framework) works in the same way as college grades. It combines the detailed test outputs into a simple binary red/green light. 9. There is an idea that you must prioritize your time. Spend time on the most important things, and ignore the least important ones. The problem is that one does not know what the most important thing is a priori. This is the problem of incomplete information. It's dangerous to drop the ball on anything. In many situations (like in school) everything is equally important. Everything is priority one. Even though developers laugh when the project manager says that everything is priority one, in reality, this is frequently the case, especially when you have incomplete information. 10. Even though there are lots of stories of software project failures, there is one place where the projects are always on time and on budget: in programming classes. Some of these projects are non-trivial. I have written programs such as a C compiler, an SMTP mail client and other non-trivial applications for classes. And I always finished on time because otherwise I would have been penalized on the course grade. 11. It is possible to argue that this happens because these are well-understood problems. I would like to claim that most real-world software problems are just as well understood. The main difference in the two cases is that the metrics of performance are different. And this is significant enough that it changes the outcome. 12. Metrics determine behavior. This is an important point. 13. When employees are measured on time spent at work, they maximize the time they spend at work. This creates a disincentive for working harder. If you work hard you will get exhausted which will make it difficult for you to pull the long hours. So it's much more logical to work slowly and slack off. 14. While it's nearly impossible to change the way the work place works, I can change my behavior by creating my own metric system. If I ignore the metrics that the naive corporation imposes upon me, and instead create my own, I can alter my behavior. 15. With all this in mind I started today to use task scores. I give myself a point for each task that I finish. I also have some points to encourage specific behavior. I get 1 point if I pair, 1 point if I fix a bug, 1 point if I help someone on another team. 16. Currently the system is pretty simple. I am concerned that if I make it too complicated the tracking overhead will overwhelm me. 17. The daily score is a raw number. It is not a percentage. My score today was 40. 18. I will think some more about this system and tweak it if I have other ideas. I am especially interested in using this as a way to organize payoffs for larger projects. 19. On large projects there is a big payoff at the end, but no payoff in the interim. Using a points system it might be possible to create a feeling of payoff during this interim dry period. 20. For a larger project I want to break it up into milestones and then assign a score and a deadline for each milestone. My monthly score can be a function of my average daily scores plus my project milestone scores.