When I took my current job I said it would probably the last one I ever had where I worked for someone else. My idea was to learn to work for myself. But if I could find a company in Houston that worked like this, I’d go work for them.
From a high level, Google’s process probably does look like chaos to someone from a more traditional software development company. As a newcomer, some of the things that leap out at you include:
– 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.
Now the article this quote comes from is really a rant against Extreme Programming, mis-labeled as Agile programming. But this description just blew me away. How can Google live doing this? Especially the second one.