As a project manager, I notice more and more that the effectiveness of the team’s work (and each programmer in particular) is a key factor determining the success of a project. With effective work, even the most difficult projects with tight deadlines can be completed successfully, and the inefficient ones can “fill up” the simplest projects with a minimum of risks. Therefore, I would like to share my thoughts on one of the key concepts - the concept of “work flow”.
The first time I saw this term was on the pages of the magnificent book by Tom DeMarco and Timothy Lister “The human factor. Successful Projects and Teams, also known as Peopleware.
So first the theory.
Probably, many people are familiar with the feeling that time has stopped around, and you are fully devoted to work and are ready to move mountains to achieve a result. At the same time, time flies completely unnoticed ("And what, it's time for lunch? I just came!"), And you feel a sense of utmost concentration and slight euphoria.
Psychologists call such a state of consciousness at work “work flow”, and the state itself - “flow”.
Obviously, any task is performed many times faster and more accurately if a person is in the “stream”. Moreover, there are several types of work that are simply impossible without entering the stream. For example, the description of the technical specification of the project or the writing of the article (yes, I am now also in the stream). Yes, and the usual creation of software code is impossible without complete immersion and "work flow."
So what's the problem? We come to work, enter the “stream”, take a lunch break, return to the “stream” again, happily go home with the awareness of the mountains folded and the day that has been lived for a reason. But there is a problem. And, in my opinion, it is the most serious performance problem for both the performers and their managers.
The fact is that entry into the stream requires considerable time. Each has its own and depends on many factors (fatigue, personal problems, interest in work, etc.) On average, a person needs about 15 minutes to enter the stream. But the most annoying thing is that the flow state is very easy to break.
Suppose Asya is a programmer. At the moment, it implements complex functionality for collecting statistics from the server or, say, implements a complex search interface for the iPhone. Now imagine that Vasya - her PM urgently needs clarification of the assessment of the task that the customer sent him. Obviously, Vasya goes to Asa and says: “Listen, I need to know here how much realization of the login form display you will have before buying goods”. Obviously, in order to answer this question, Ase has to stop and focus on how the login happens, realize the approximate architecture and understand what, in general, they want from it. The flow is interrupted, almost instantly. Vasya gets an answer, and leaves satisfied. Asya spends another 15 minutes to get back to full and productive work.
If distraction (I would characterize this phrase “to be pulled out of the stream”) occurs once or twice a day, this can be tolerated, although even this is half an hour of lost work. But imagine that Vasya needs some information every half hour. And he, without hesitating (after all, this information is extremely important for the project!), He constantly asks something from unfortunate Asya, who has just concentrated on her equally miserable collection of statistics. It turns out that exactly 4 hours a day, Asya spends on unproductive "concentration" and entry into the stream, and from the remaining four hours at least an hour answers silly questions that are not related to her current task.
As a result, everyone is unhappy. Vasya is indignant: the function of collecting statistics, which Asya himself was rated at three days of work, was done in a week and a half, and it also works like it: it loses data and, from time to time, crashes with errors. It is obvious that unhappy Asya will again be guilty in this situation: she did not fit into her own assessment, she made many mistakes, etc.
Yes, as an honest PM Vasya understands that he distracted Asya. But after all, in total, it took no more than half a day, and Asi’s lag was a whole week. The conclusion is obvious: Asya is not working well.
Now let's take a look at Asya: she wasn’t allowed to work quietly, was continuously distracted by questions that had nothing to do with the matter, and then she was also deprived of bonuses for delaying the release of an important product promised to George Washington himself.
Let's add to this: a telephone, overly talkative colleagues (especially in open space offices), general meetings, etc. It turns out that in order to be in a state of flux (read, work efficiently), a person needs to expend a large amount of effort and take, sometimes, very asocial actions (up to the polite request of “everyone to shut up”).
By the way, a characteristic sign that you have problems with the flow is an increased efficiency of work during non-working hours - before and after the working day. The phrases “after seven in the evening I do as much in an hour as I do in a day, apparently I am an owl” and “from eight to nine, while the brain is free, I have a lot of time” do not say what kind of bird you are and not that you get tired of the day (although this, of course, is also likely). Most likely, they say that you cannot enter the “flow state” because you are constantly distracted.
What to do? DeMarco and Lister, for example, offer to mark the signs "do not disturb". It can be signs, red shawls - everything that will make it clear to others that you are “in the flow” and really do not want to leave it. Headphones also help from "chatty" colleagues - this is already my personal observation. They, as practice shows, greatly increase the chances of avoiding participation in unnecessary conversations.
It is obvious that one of the most important tasks of a competent leader is not to take people out of the stream. The manager needs to soberly assess that each employee’s distraction will cost his project at least fifteen minutes and, accordingly, plan actions.
But the trouble is that a significant part of the manager’s work is precisely to clarify details, get estimates of labor costs, discuss nuances, etc. In general, do exactly what distracts employees. And the most frightening is that, often, Vasya is completely sure: Asya must definitely answer his question right now, otherwise the project will fail.
The following strategy seems to be the most effective for a manager: to accumulate employee’s tasks and keep track of when he leaves the flow state. This may be a switch to another task after the previous one, a lunch break or something else. It is at this time will be the most effective to resolve issues that require the participation of the employee. I use the formula - "come up, how a little free / add to the point." Being in a stream, a person rarely thinks about something other than his current task. Therefore, if an employee considers himself to be “a bit free”, then he has temporarily left the stream, and he can be easily tormented by evaluations and discussion of aspects of the implementation of future functionality.
There was a case when one of my employees, let's call him Simon, constantly did not have time with tasks that were quite urgent. I did not make for myself the conclusion about the lack of professionalism of a given programmer (I try to never make such conclusions, even if they are obvious, but having done so, say goodbye to a person right away). Under some pretext, I went to his office and was there for some time. I admit honestly, I distracted another employee and talked to him for a long time, but it was a conscious and forced sacrifice. It turned out that in those twenty minutes that I spent in their office, he was asked three times for help in setting up the server (Simon was an excellent Linux specialist) and asked twice about implementing something in PHP. It is obvious that every time Simon gave exhaustive answers to grateful colleagues and returned to his work as soon as they left. Yes, each answer took about two minutes. But Simon never entered the stream.
After that, I personally printed out a sign “Do not distract the seeds!” With a signature and a picture of the threatening fist, hanging it in front of the Seeds computer so that others could see it (and he did not, so as not to be distracted). Needless to say, the task over which he unsuccessfully fought for two days was completed in the next three hours.
By the way, all of the above is true for managers. I am continuously in a state where every 10 minutes someone asks me something. Therefore, in order to work effectively, sometimes you have to “switch off from the world” - headphones, “do not disturb” status, turned off email client and ICQ. At one time, I had a sign on my desk “I am not here. Not to talk with a clone - he still does not know how. ” Oddly enough - it helps to stay out of the stream for a very long time.
Of course, there are still “whip” methods - not to approve moving around the office during working hours, prohibiting workplace conversations on abstract topics, etc. But it seems funny to me. A programmer (namely, I work with them) is a creative profession and for effective work he needs freedom (of course, “effective freedom”, not anarchy and disorder). Therefore, I prefer to increase the efficiency of the work of programmers without limiting their freedom. Just make sure they are in the stream for most of the time. Yes, it is difficult, but it is worth it!
PS In this article I did not mention anything about statistics: the measurement of “flow-hours” and “factor C” is the ratio of the number of flow-hours to the time spent, which in fact, help to understand how much you actually work. However, this is very well described in Peopleware. If you, suddenly, did not read this book, you are simply obliged to read it.