Thursday, September 21, 2006

A renumeration model for distributed development

We tend to think of the stone-age ways of tracking effort when we consider renumeration:
- work 8 hours, punch card @ 09:00, punch card @ 18:00, hour lunch... done!
- promotion: how many lines of code produced?
- promotion: how many bugs fixed?

All of these methods that deal with straight numbers used immediately for some kind of reward are subject to cheating (check out online games for example and the hacks available). Even if the technology were invented to try to prevent this kind of cheating, there is (and always will be?) a way to bypass that technology.

I therefore turned towards different renumeration methods and got the idea of looking at the renumeration model as a kind of market or "bazaar", a mini-economy inside the enterprise that is governed and managed by the employees. The idea is that the project manager or architect or whoever posts tasks on some board or custom piece of software. Then members log in later and from the description given, rate the work by allocating their estimation against it in the form of some pseudo-currency.

Then through consensus, people will have to agree the reward amount to complete a work. After a certain percentage of agreement (across all members), the task is marked as available to start work. The best choice from the available employees will then have to be allocated to the task. Tasks that do not get picked up in time will automatically increase the renumeration.

The fairness in the model is that if someone does not pick up and complete tasks, that person does not get paid, but will not reduce the value of the cooperative that much as he could have done would there be some hours/effort measuring mechanism.

The good thing about this model is that someone can do this from home. Log in to the company portal in the morning, find a job to do, finish it, post it, have it reviewed and marked as completed, commit work and start another. The professional working in this way is fully responsable for his own time management, meets maybe once a week together during lunch and at a rented meeting room facility, but for the rest decides *how* and *when* he works on the task that was allocated.

If the task is not finished, this will reduce slightly the value for the others, but at the same time that person does not get paid at the end of the month. The trick probably will be to pick up longer and shorter tasks as required, so that there is always some kind of in-flux, but that is experience.

Being 100% responsible for one's own time management is a level of freedom that maximizes quality of life, but also puts that 100% responsibility on the professional.

This model does have some flaws, for example inflation and/or deflation. In such a mini-economy, comparisons with other work items may cause the price to fall or rise, sometimes significantly. This could be a natural phenomena in smaller economies, because after all, it is the consumers that produce this kind of inflation or deflation, based on their perception of 'value' in the market.

The pseudo-currency is necessary in order to ensure that the money that was allocated is actually available. At the end of the month the cooperative members agree the actual total amount of money that is allocated to wages. Then that amount is distributed according to the factors of the pseudo-currency. This ensures that the cooperative manages their finances better.
Becoming more productive therefore gets people a larger part of the overall money. Not doing that much reduces this.

Task completion is another issue to deal with. That means, identifying that a certain task is actually finished with satisfaction. This may cause some diplomatic/political issues, because there may be an incentive for other members to discredit work of others for their own gains.

An extra incentive in teaching and learning can be created by setting up a forum that uses the pseudo-currency exchange as well. This is... someone picks up a task and starts work, hits a problem. In order to solve a difficult problem by somebody else, the question is put on the forum board with a certain pseudo-currency amount against it. The person that resolves the question will then receive part of the currency amount that was put against the work item by answering the question. This stimulates cooperation on the forum and people helping others out and stimulates also that people look/attempt first, then ask.

Basically, what is suggested here, is a method for renumeration in a distributed development company that is based on a free-market mini-economy, which is based on concensus and fairness and aimed at the reduction of cheating (fair compensation across the cooperative)

Update: We discussed this model at C.E.S.A.R shortly and came to the conclusion that there are some rules that need to be in place for this model to work effectively. This could be compared to market regulation by the government.

Two rules need to be in place:
  • Ensure that there is always more work available then people to do that work
  • To penalize the group as a whole for not meeting a certain monthly target. This is to prevent people from becoming 100% individualist (not caring about helping out others in the cooperative, but taking on many tasks throughout the month)
The main rules should focus on creating the right eco-system (incentives and rewards) for a group to function properly, taking into account the proper balance between individual and group interest.

No comments: