How can a client be sure that the payment for the development guarantees the same amount of working efforts, and all declared time is used for solving the task?
Such a question wording is typical for us and not typical for the West. Such a question has a presumption of distrust. If a client does not trust, then he usually solves it as follows: put all the programmers in the office while naively thinking that if a developer spent 8 hours in the office, then it means he worked. Using such an approach for programmers is wrong. It is very difficult to evaluate time they spend because developers are similar to creative people; they are like artists or writers. Senior Developers quickly understand methods, algorithms inside a program and development tools, therefore do everything faster.
What does a programmer working time consist of?
The problem of a developer’s working speed should be solved. A developer’s work is evaluated not in hours, but by its efficiency.
There are main components of a developer’s working time:
- Writing the code (takes up to 30% of the whole working time of a developer)
- Idea creation process
- Intellectual process inside the brain
- Architecture modelling and construction of each element
- Designing of the implementation using the code of the given task
A difference between working in the office or at home, from the efficiency point of view, is that a developer is not distracted. Because if a developer gets distracted from the intellectual working process, then he would need even more time to return to the same process and completely immerse himself in the context. For example, Yandex company provided for developers small fenced rooms for 6-8 working places, where it is prohibited to talk to each other. Therefore if we look deeply inside of the working process of a developer then we will understand that it is of utmost importance to provide for a developer an opportunity for work and not to distract him. If this is office work, then it is better to schedule some meetings and stand-ups at the beginning or at the end of the working day, or schedule some negotiations in advance in order for a programmer to save a result of his current work and resume working after coming back.
An evaluation of labor efforts and making a client sure that work is being done are typical questions as:
- How can a client be sure that there is work progress?
- How can a client get the result he needs considering constant changes and improvements?
To answer all these questions, a story of short runs was invented. A client checks a developer’s work in short intervals, usually once in two weeks, without distracting him from the working process. In such a case, there is a chance to correct a programmer’s work if this is necessary. It is easier to correct mistakes if they happened within the last two weeks instead of the last half a year.
How to be sure that a developer works with maximum efficiency?
If there is only one developer solving the task, then it’s very difficult to do it. One needs an evaluation by an expert who would confirm or not confirm that the amount of time allocated for the task is correct. When a team starts working, especially a team with quite strong specialists, then the evaluation is being done by the whole team. The team can see how the team and the Team Lead are strong, how efficiently they can find a weak member whose work does not match the pace of the whole team. Underperformance of one person immediately sticks out from general context and it is possible to work on it. It means that the team has a quite experienced person who can quickly understand whether a developer works according to his own level or he is doing not enough. Usually this is a role of a Team Lead.
For example, a developer takes a task and evaluates it. Then, through daily stand-ups and Team Lead control, it becomes clear whether working pace is expected or not.
How to be sure that task estimation is objective?
A subjective evaluation of one person has a different error margin. Usually, the more a person is mature, the less an error margin is, but it still is dozens of percent. The higher qualification and richer experience a specialist has, the more accurately he can evaluate given tasks, particularly regarding meeting the deadlines. In order to increase a quality and trustworthiness of evaluation, it is necessary that:
- Evaluation of task planning should take place at the beginning of a sprint and at the stage of allocation of the tasks among developers
- Evaluation should be mutually approved by several people on each stage
- Carry out efficient collaboration between evaluators and testers on each stage of the project
Accordingly, only team evaluation and group joint control minimizes error and increases trustworthiness of the evaluation.
How to increase developer efficiency?
Developer efficiency, in contrast to mechanical operations, can vary 5-10 times depending on how his work is organized. If a developer is provided with a calm environment to solve the tasks, if he is not distracted spontaneously, if he is allowed to work peacefully and continuously, then his efficiency is extremely high. One should accept without prejudice the evaluation given by a developer, trusting his expertise.