You will find on this website publications about informations technologies. The content is available in french and english.

lundi, 2 octobre 2006

Project management at Google

Summary of Steve Yegge‘s post

Steve Yegge, a Google‘s employee, has posted a description of the “Agile“ work conditions at Google.
I summarize, in this article, his description, but knowingly omitting the genesis of the “agile“ buzzword, its spread and misunderstanding.
Steve Yegge firstly give some facts :

  • “there are managers, sort of, but most of them code at least half-time, making them more like tech leads.“
  • “developers can switch teams and/or projects any time they want, no questions asked; just say the word and the movers will show up the next day to put you in your new office with your new team.“
  • “Google has a philosophy of not ever telling developers what to work on, and they take it pretty seriously.“
  • “developers are strongly encouraged to spend 20% of their time (and I mean their M-F, 8–5 time, not weekends or personal time) working on whatever they want, as long as it‘s not their main project.“
  • “there aren‘t very many meetings. I‘d say an average developer attends perhaps 3 meetings a week, including their 1:1 with their lead.“
  • “it‘s quiet. Engineers are quietly focused on their work, as individuals or sometimes in little groups or 2 to 5.“
  • “there aren‘t Gantt charts or date-task-owner spreadsheets or any other visible project management artifacts in evidence, not that I‘ve ever seen.“
  • “even during the relatively rare crunch periods, people still go get lunch and dinner, which are (famously) always free and tasty, and they don‘t work insane hours unless they want to.“

Then he gives the majors principles of their Google management :
The incentive is very important and it can takes several forms. Firstly a material one, with gifts, services or simply coin of the realm. Secondly a social one, with peer reviews and the quarterly high-mass where projects are officialy launched and where values are giving to teams (I can already see the “french” mind laughing and jeering of these very american kind of incentives).

Their employees knows naturally how to do their jobs well and work together, no needs of a attending and directive management for things to go forward. The google strentgh is that they know how to extend these management principles as one goes along their expansion.
Nevertheless, riguor in the design and realization process is really there (uses of unit tests, design documents, design and code review).

Google starts from the principle that load estimation, and consequently date, are very difficult. As a consequence Google banned dates-driven management and never gives any release dates for a new service. On the other hand, they set the dates for their high-mass meetings that concretise the social incentive. So, employees are tacitly driven by those dates.

One of the principle is to garantee the maximal productivity of their employees with an idyllic working environment and continuous training (1/5 of the work duration).

As a summary, Google gives a lot of liberty to his employees and implement no constraints. There is also a generalized attitude of gratitude towards them.

My opinion

The two basic characteristics of an employee are his competences and his motivation. At Google, skills are first ascertain precisely (cf. recruiting process) then enhanced (cf. the continuous training during 1/5 of their working time). The motivation, a more difficult field, and where Google excel, is assured with excellent working environment, a very strong incentive system, uses of social interaction between geeks. The geek prestige among his community as a motivation engine is here fully used.

Another characteristic, and not the least : productivity. It depends of the two previous characteristics, competences and motivation, but also from an appropriate working environment (cf. the lowering of constraints and lapse in concentration). Theses three factors, so specific to the world of sftware engineering, seems to be perfectly controlled by Google and were giving consistency with the company interaction with the outside (for example : no dates of release for a new service).

Google‘s employee must also know how to work within a team et must be particularly autonomous from the management in place. All of these quality must be owned by the employees and it starts to be a lot so the very elaborated recruiting process. Thereby, this processus has to permit the recruiting of peoples passionated by their job (geeks of course !), self-working and able to work within a team. I'm already stumbled upon some descriptions of their recruiting methods on the web (aptitude test and google recruiting method analysis) and they seems to be really effective by looking at the generated fancy.

This kind of management fits well the business of software publishing and needs a lot of cash flow for funding a engineer pool that work on project that will be profitable in a uncertain term.

Google has well understood that a developer team‘s productivity is achieved through the elimination of every constraints in their everyday work. They have a maximal productivity without sacrifying quality by keeping a rigorous software engineering process on the really important items (tests, design and reviews). It agrees with the Joel Spolsky's recents posts about developers‘s productivity. I would be very pleased to implement this king of management and working environment in my everyday work but I thing the culture shock will be too much…

Likewise, Google has a realistic project management method by accepting that estimating a project schedule is difficult. I have the impression that they are using auto-adjustment in their projects pool. If a project is interesting it will be join up with a maximum of motivated peoples. They are motivated because they joins the project by themselves (cf. the commitment theory). The project will launch when it will be ready and it adds nothing to try to hurry the workers with management that strangle theirs work. However, a good management of the work queue is necessary for this technique to work, and this is a must have for any enginners. This meet the "Getting things done" techniques (description and links about GTD, a getting started page, a second one and the definition on wikipedia
Finally, an extract that I appreciate is the description of Google as the merge of a start-up mind (quick and simple) and a research mind (new problems to solve in a quiet manner).

Are these management techniques transposable completely or partly to our traditional project management in the french companies that develop business software ?

It involves an absolute reliance between the two protagonist. Imagine that you commit me a project and that I come back to you saying that I don‘t know when it will be over but that my peoples are working 100% on it, are you at rest ? we can also imagine something intermediate like ”your project must be about 75 man/months, I suggest you to assign 10 skilled peoples with a perfect productivity on it and we can sign 3 month contract renewable.

As a conclusion

This kind of management is for me very fascinating as it put back the human at the hearth of the production process. Google has well understood the necessity of a different management to be able to produce quality software in quantity. This is going against the industrialization wishes where human resources are interchangeable, remote and then cheap, with rigid process (long live the waterfall process !), etc.
It‘s interesting because as I just finish this post I stumble upon one from Jean-Michel Billaut relating the release of a book about Google management.

Technorati Tags:

Posted at 10:50 PM in en/Management/
portage salarial freelance