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
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
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.