The Friendship That Made Google Huge
newyorker.com
newyorker.com
I don't know what it is; maybe Sanjay is a weird (read: non-English) name, maybe it's that computing culture's obsession with lone hackers leaves no room for a partnership like Jeff and Sanjay's. Anyway, kudos to the New Yorker for not falling into that trap.
Funny thing, that was started by kentonv [0], who worked on open-sourcing protobufs [1], then CapnProto [2], then (with Jade Wang) Sandstorm [3]. He lurks around here :)
[0] https://plus.google.com/+KentonVarda/posts/TSDhe5CvaFe
Indeed, I wrote the internal web site (built on a pre-release prototype of AppEngine!) that aggregated these jokes, and released it on April 1, 2007. I was not funny enough to come up with the jokes myself; I enlisted some friends to seed the site before "launch".
In retrospect, I regret that Jeff Dean Facts gave people the impression that Jeff is more notable than Sanjay. The only reason it was "Jeff Dean Facts" and not "Sanjay Ghemawat Facts" is because Jeff seemed "funnier". But I dunno, that might just be some form of subtle racism that I failed to recognize at the time. :(
PS. Your list doesn't include my current project, Cloudflare Workers... :) https://blog.cloudflare.com/cloud-computing-without-containe...
As a college student, it was so weird learning about Jeff Dean's meme status, and it wasn't until after joining Google and coming across things like the original protobuf design doc that I realized how significant Sanjay's contributions are.
You might know his writing from “You’re Probably Using the Wrong Dictionary” or his amazing article about New York’s subway system told through the lens of the countdown clock: http://www.theatlantic.com/technology/archive/2015/11/why-do...
Highly recommend all his work: http://jsomers.net/
The article gives several examples of this dynamic, but one that came to mind for me was how Monty Python members created sketches for Flying Circus:
> Writing started at 9 am and finished at 5 pm. Typically, Cleese and Chapman worked as one pair isolated from the others, as did Jones and Palin, while Idle wrote alone. After a few days, they would join together with Gilliam, critique their scripts, and exchange ideas. Their approach to writing was democratic. If the majority found an idea humorous, it was included in the show.
To solve problems at scale, paradoxically, you have to know the smallest details -Alan Eustace
Today, Google’s engineers exist in a Great Chain of Being that begins at Level 1. At the bottom are the I.T. support staff. Level 2s are fresh out of college; Level 3s often have master’s degrees. Getting to Level 4 takes several years, or a Ph.D. Most progression stops at Level 5. Level 6 engineers—the top ten per cent—are so capable that they could be said to be the reason a project succeeds; Level 7s are Level 6s with a long track record. Principal Engineers, the Level 8s, are associated with a major product or piece of infrastructure. Distinguished Engineers, the Level 9s, are spoken of with reverence. To become a Google Fellow, a Level 10, is to win an honor that will follow you for life. Google Fellows are usually the world’s leading experts in their fields. Jeff and Sanjay are Google Senior Fellows—the company’s first and only Level 11s.
I..don't think this is still accurate. New grad SWEs are L3's.
Though what really makes this my favorite long read of the year is how it follows their story over the course of Google's rise and the subtle juxtapositions between early Google of "doors across sawhorses" and today with "Level 0-11". Given all the recent news with engineer walkouts and protests it makes you realize that Google have probably done the best job of handling the scaling challenges of being a unicorn and making the necessary cultural adjustments as they grew in size.
Extreme Pair Programming - Guy Steele and Richard Stallman
Are books extra-long?
Edit: added a missing "the".
It doesn't seem to be enough to encourage widespread pair programming, though.
I'm seeing the year 1968 at http://thecomputerboys.com/?tag=black-art#fn-156-1
Is there a 1966 reference out there somewhere? Or perhaps the actual study was done in '66 and didn't make it into press until '68? I didn't pull the original paper.
(The fact checkers at the New Yorker are typically very sharp.)
edit: I pulled the original paper (10.1145/362851.362858). The studies were done in 1966!
Interesting to see the genesis of the myth of the 10x programmer.
For anyone else, that DOI points to: https://dl.acm.org/citation.cfm?doid=362851.362858 "Exploratory experimental studies comparing online and offline programming performance" from CACM 1968.
How could it be a myth? Ever see a professional sports player compete against a non professional player? Why wouldnt this dynamic exist in programming?
Amateur marathons are about 4 hours, professional are about 2 hours. Amateur deadlifts are about 500lb, professional are about 1000lb. Amateur long jump might be 6m, professional almost 9m.
Occasionally a 1st league team plays a 3rd league. I saw a video of Napoli vs Nowhere go 26-0. They scored about as fast as the game could be reset to kick-off. That's more than 10x.
I haven't read through it yet, but it appears to be a more extensive whitepaper version than the CACM version.
Here was a case where it actually was cosmic rays (at least, not a logic problem), and these guys found it. I also agree with the title and intro of the article - I think it's very possible that if these 2 exact people hadn't been at Google at the time than Google's path could have been very different. Makes me also appreciate how much luck is involved in any successful indeavor. Not luck that they found the bug (that was hard work), but luck that these 2 guys found themselves working at Google right when Google needed them.
That bit surprised me. For me it doesn't get much sexier than compilers.
But to call them sexy is another thing ...
=======
Maybe because most employers won't pay for that. Two people? For one level of output? You'd have to prove yourself a level 11 googler before most places would give you the luxury of working as a long-term pair.
However, pair programming does require a lot of commitment to make it work. I've only seen it work on a team where it was an XP project to start with, so everyone hired was already willing to give it a solid try. Your average team isn't self-selected in this way and won't have the same level of enthusiasm for a new management initiative.
I don't know why companies don't do it, but it's not cost alone. Here are some of my hypotheses:
1. It seems like it would be more expensive - which might deter companies from thinking about it
2. If you're not already doing it, it's hard to convince all or even a large fraction of your engineers to do it. It's a completely alien way of working to most people
3. It's not obvious to employees who haven't done it that it's clearly better. And it might not be - I honestly don't know
4. For 100% pairing, you need 2 programmers' schedules to line up exactly, 5 days/week - so goodbye flextime, work from home, remote working and all the other arrangements that people structure their lives around
5. It must be exhausting to sit with, and talk to, another person constantly your entire working day
Simultaneously, you get a bunch of benefits. (Most importantly, there's no bus factor of 1 for anything)
> Together, Jeff and Sanjay wrote code to compensate for the offending machines.
I'm guessing the article is referring to Google buying servers with non-ECC RAM.
How do you write code to compensate for non-ECC RAM?
So Google was a company that was too cheap to buy ECC RAM, but willing to let half of their hard disks go to waste. I'm struggling to understand the logic behind this; can anyone explain?
They will even mail you a copy in exchange for a subscription. It's magical.
I was curious how he can see "a digit that should have been a 0 was a 1" in a "thick column of 1s and 0s"? Can you give a specific example. I'm not questioning that he did but I'd like to know a specific example.
As a general comment, to compare, a director is L8 equivalent, and VP L9, (but on the management ladder) although at VP+ it gets tricky because there are subdivisions.
Also worth noting that the management ladder goes up more. But the total number of people who are >L11 is probably <11, so it's not like there's any data on how exactly that's broken up.
And how they solved the problem before with this team?
I think that's much more sustainable for most. Pairing with the same person every day is sort of like sharing a snowbound cabin with them. There are very few people I get along with so well that they wouldn't grate after a few weeks.