Even Google Makes Mistakes

Google is, I believe, one of the finest software engineering organizations on the planet. They invest heavily in code review and automated testing. Their infrastructure is top-notch, allowing developers to trivially build, refactor, and test code across their entire monorepo. They regularly release new tooling, libraries, and languages that to advance the state of software development inside and outside of Google. They have a massive internal library of easily searchable code. They’ve pioneered the SRE approach to DevOps. Their hiring practices (contentious though they may be) at least ensure that the bar for employment is kept high.

I was surprised, therefore, to hit several bugs and problems in their open source code in the space of a couple of days:

On the one hand, all of this can act as a reality check. I certainly don’t bring all of this up to criticize or fault Google. They have an excellent engineering culture and talented and motivated developers, but even the best organizations can make mistakes, and even companies with massive resources may end up leaving worthwhile tasks undone as part of focusing on higher priorities. Realizing this can help me calibrate my own expectations for my considerably less massive software development efforts. Perfection is a worthwhile goal, but that doesn’t mean it’s attainable.

On the other hand, this acts as a reminder to test my assumptions. When I first encountered these bugs, I assumed that the problem must lie elsewhere, because protobuf and Google Test are mature and well-supported projects. Five minutes with a debugger would have shown be otherwise. Although it’s true that “select isn’t broken,”, projects from multi-billion-companies might be. The size and complexity of modern software systems mean that bugs are virtually guaranteed. Assuming that the bug is your own fault is a good place to start, but test those assumptions.

Finally, this is a reminder to document your work. One of the most useful results of the popularity of Stack Overflow and GitHub is that, when a developer encounters a problem, there’s an excellent chance that the problem has already been described, analyzed, solved, and documented. Without GitHub, solving these protobuf and Google Mock problems would have taken me far longer. So pay it forward: if you solve an interesting problem, tell us!