Proposal to maximize the efficiency of software development process (by Tudor Constantin)
- Proposing a new and better work system for software development industry
- Increasing the overall satisfaction of all the actors in the software development industry:
- The customers gain:
- Faster delivered software products
- Better products
- Lower costs for the same product
- The software company will have:
- An objective way to evaluate and reward workers
- A more competitive and meritocratic work environment
- More enthusiast, motivated workers
- Higher work efficiency
- More satisfied customers
- The employees:
- The possibility to advance on the fast track
- The possibility to earn more money
- A higher sense of involvement and importance
- The possibility to do what they like and know best
- Motivational patterns
There are two ways people get motivated: 'away from' and 'toward to.' Both have advantages, and each person tends to use one style preferentially.
Away from people look at their problems, try to find solutions, and thus move “away from” the problem. Toward people dream up their ideal goals and then find ways to move towards them.
Away from people:
- Tend to concentrate on problems and do anything to avoid them
- The bigger the problem, the more motivated is the person
- Their motivation decreases when the problem disappears, gets solved
Toward to people:
- They set goals and based on the reward of the goal they do whatever is necessary to achieve it
- They tend to consider each goal a challenge
- The bigger the rewards (based on their own system of values) , the more challenging the goal gets, so the bigger the driving force toward achieving it becomes
Common people are affected by both ways of motivation.
All of the above patterns comes into action for satisfying individual needs.
Abraham Maslow synthesized and categorized the human needs in a pyramid called Maslow's hierarchy of needs (see the image below).
On short, the first 4 levels of the pyramid are called deficiency needs or basic needs and the needs from the last level are called growth needs. When a basic need (like security of employment, of health, of body, friendships, etc) is satisfied, it is no longer a motivational factor in one’s life. Instead, growth needs like self-actualization, although they become active when the rest of the basic levels are satisfied, they are enduring motivations or drivers of behavior.
The companies which we talk about now thrives to offer to their employees a work environment in which the employee feels protected. They offer employment stability, there are people working in the company since 10-20 or more years ago, they rarely if ever decrease salaries, instead, they periodically increase salaries and there are extremely rare examples of people being fired. All these factors are aimed to make the employee feel safe and protected. On one hand this is a good thing, because the employee will rarely take the risk and go out to seek a new, better workplace. On the other side, the employee will be always satisfied with his workplace, he will rarely tend to improve himself, his quality of work and productivity will remain the same over the entire course of his employance. Even if an employee starts with high levels of motivation, in a longer or shorter period of time he tends to invest less and less effort in his work. If the company is satisfied with his peers low level of work, the company will be satisfied with his low level of work also. There are extreme rare examples of companies whom are able to virtually unlimitedly increase their employees wages in order to keep them ever motivated. This is the case in most of the state workers and state working environment.
The new performance measurement system
- The new performance measurement system is based on a credit evaluation of work
- Each complete task brings to its crafter a number of credits.
- At the end of the month, each programmer will have gained a specific amount of credits
- We define 100 credits as the amount of work to be done in one working week (40 hours of normal work) by one medium software developer. So, an average programmer is able to gain 100 credits per week.
- A developer is able to gain credits by finishing on time his assigned tasks, or by offering consultancy to other colleagues and agreeing with them to the amount of credits he will receive from their task credits.
- A developer will lose credits based on the following system:
- If he/she does not finish the task, or terminates it in more than 4 times the original amount of time originally settled
- If he/she finishes the task on time will earn the whole amount of credits, if the programmer exceeds the original time, the amount of credits earned decreases proportionally to the increasing of the overtime. So for example if a programmer has to do something in one week for 100 credits, he will get only 50 credits after 2½ weeks of work. After 4 weeks of work, he gets nothing.
- If he/she requests consultancy, the consultant will be able to requests a number of credits for his precious advice.
The new performance based rewarding system
- Instead of raising the wages based on a timely fashion (there is a raise at every 3, 6 or 12 months), we create a premium fund -- this will grow at the same rate as the previous, periodically, permanent raises.
- So for example, if we have a team of 10 people, instead of increasing the budget for that team by let’s say 600 EUR by giving them permanent increased wages, we create a monthly premium fund of 600 EUR. Each member of the team will be able to earn a part of that premium fund, based on the number of credits they earned in the current month.
- Each month, there will be a top of the workers for each team, based on the credits they earned during this period of time. Based on this:
- the top 20% performers will get 50% of the premium fund (in our beautiful real world 20% of the people of the planet owns 80% of all the money in the world, so a 20-50 rule is rather socialist than capitalist)
- next 40% performers get 40%,
- the next 20% get 10% of the premium
- the last 20% gets nothing – they will have to try harder next month.
Tasks assignment process
- Due to the fact that each developer normally wants to make the easy, pleasant, and highest rewarded work, we must set an objective way of assigning tasks
- The task assignment process is based on a bidding system:
- There are a number of tasks that has to be done in a period of time.
- Let’s say for example that 5 tasks of different importance levels and different difficulty have to be done in 1 week and we have a team of 3 different people. These 3 people also have different levels of professional skills.
- The amount of time that the tasks has to be done, sets the amount of credits a developer is able to bid for that bucket of tasks (in our case, each programmer can bid totally 100 credits for all 5 tasks)
- The team leader/project manager will assign each task based on several factors:
- The number of credits a developer bided for that task
- The importance of the task (how important it is to be done strictly on time, bug free, etc ), correlated with the experience and professional reliability of the lowest bidders
The expected logical workflow
- The programmers will bid high on tasks they don’t want to do and low on tasks they want to do. A developer wants to do a task if he can do the task by himself, if the task is rewarding enough and if he enjoys the process of doing it.
- Gifted developers will tend to bid low on challenging tasks and of high complexity and will bid high on monotone, boring tasks
- Less gifted developers will tend to bid low on monotone tasks and high on hard to do tasks.
- Although, the team leader decides who what does.
- The company will have a very dynamic and objective way of evaluating and reward their personnel
- The programmers will have the possibility to choose what they like and can do, so they will be more enthusiast
- The employees will be able to determine how much they earn each month – this means more enthusiasm
Now, a programmer can come with a high amount of excuses regarding why he did not finish his tasks on time. From having a bad day/week/month, personal problems, the need to be creative and the fact that you cannot impose targets on creativity , to the lack of experience, or of proper training, these are all common excuses met, not only in the software developing industry but in all kind of production environments. Of course, some excuses are well founded, but most of the obstacles can be easily overcome if the person really wants to. This paper wants to be an blueprint of how to make the people want to overcome the obstacles, and if they successfully do it, they get rewarded for it. It’s a win-win system.
This is not by far a complete document. Here I proposed a system for evaluating only the software developers. There are still team leaders, testers, system designers, architects, managers who’s activities might be well improved and has to be integrated with this working system. Anyway, the hard part is covered, the software developing process can be quantified, the developer can be stimulated to work, to be creative, to learn and improve as fast as he can.
Comments, thoughts, critics and feedback are all appreciated and really welcomed.
Thank you for reading this and keep close, because there is more to come.