Monday, November 25, 2019

Don't s— where you eat

It's a vulgar saying, but true. It is one of the primary reasons I don't blog much about work. But I don't work for Google anymore, and my consulting gig at Blue Origin is finished. So I think I'll be blogging a bit about working at Google and a bit about consulting. Of course I'm obligated to not deliver the “real dirt”, so I won't say anything you couldn't find out through public sources, and everything I say will reflect the past, not the present. Things may have changed.

I stayed at Google several years longer than I should have. It left me a bit ill-prepared for the real world. At Google, we used mostly custom, in-house software development tools. Google's build tool, Blaze, was released to the outside world as Bazel, and it does a lot of what Maven and Artifactory do for building and tracking build dependencies. There was a way to use git with the source control, but it was optional and I preferred to use the Perforce-like interface directly. We didn't use a tool like gitlab for code reviews, we had our own in-house tool. We used protocol-buffers for inter-process communication, not JSON generated by Swagger. Google's internal cloud was built long before Kubernetes. The tools provided were all decent tools, but they aren't the “industry standard”, and when I started consulting I was a bit at sea with a tool set that was similar, but not exactly the same thing. The fact is you have to be familiar with a lot more tools than you used to be: autoconf, make, and GCC don't cut it anymore.

The consulting gig was a trial by fire. I prefer programming the back-end and systems level to programming the front-end and user-interface, but out of necessity I got to write Angular, and typescript, use node.js, and write GraphQL queries to support the UI. I got to store things in MongoDB rather than in Bigtable. I even used IntelliJ instead of Emacs (somewhat. I still used Emacs for serious editing.) And although both jobs made use of Java, even it has changed a fair bit.

So I'm looking forward to the my newest job and I expect the learning curve to be not quite as steep. No doubt there will be some new tools but probably not all new tools.

1 comment:

John Cowan said...

Phabricator is rather similar in spirit to Mondrian, and much superior to using Git{Hub,lab}'s review facilities. I used it at my last job, where both my boss and I were Xooglers, and I have proposed introducing it at my new job. It integrates fine with Git{Hub,lab} but basically uses them as dumb git stores.