- Do you use source control?
- Can you make a build in one step?
- Do you make daily builds?
- Do you have a bug database?
- Do you fix bugs before writing new code?
- Do you have an up-to-date schedule?
- Do you have a spec?
- Do programmers have quiet working conditions?
- Do you use the best tools money can buy?
- Do you have testers?
- Do new candidates write code during their interview?
- Do you do hallway usability testing?
A score of 12 is perfect, 11 is tolerable, but 10 or lower and you've got serious problems.It's not a perfect test of an engineering organization, but it's a great minimum. It's great for being over a decade old - but at a decade old, some of these seem painfully basic to me now (source control and bug database).
You may have read Steve Yegge's Google-sucks-at-platforms rant. I have no real opinion on it since platforms are not my forte. And I agree with him on a lot of positive things he says about Google in the run-up to the rant bit. It's easy to write about what Google does poorly because of the huge number of things they do well.
This isn't meant to pile on, but I do have criticisms about the way some things work at Google.
My friend Richard Feynman said, "I don't know." I heard him say it several times. He said it just like Harold, the mentally handicapped dishwasher I worked with when I was a young man making minimum wage at Famous Bill's Restaurant in Greenfield, Massachusetts."I don't know" is not an apology. There's no shame. It's a simple statement of fact. When Richard Feynman didn't know, he often worked harder than anyone else to find out, but while he didn't know, he said, "I don't know."I like to think I fit in somewhere between my friends Harold and Richard. I don't know. I try to remember to say "I don't know" just the way they both did, as a simple statement of fact. It doesn't always work, but I try.
If I had written this paragraph, it would have also included the words "panic" and "anxiety." But this is a good summary of my first 90 days.
During times of rapid growth, a team doesn't necessarily take the time to stop and get to know each other because they arrive and the first thing they notice is, "Whoa. Everyone is in a big fucking hurry, so I must hurry as well." Their normal instincts regarding getting to know those around them are buried in their goal of being recognized as a person who is also in a hurry.