Paul Buchheit is an engineer and partner at Y Combinator. He was the 23rd employee at Google, where he built Gmail and the first prototype for Adsense. After leaving Google he co-founded Friendfeed, which was acquired by Facebook.
Triplebyte co-founder and CEO, Harj Taggar, sat down with Paul to talk about how he got started with programming, joining Google, and becoming a great engineer.
This interview has been edited for length and clarity.
On Becoming a Programmer
How did you start programming?
One moment I remember really getting into programming came while playing a fantasy RPG video game. I got stuck and couldn't find the magic handcuffs—or whatever it was—that I needed. Then I thought, “maybe instead of searching in the game, I can just hack the data file where it saves the inventory!” I started writing programs to figure out how the game was storing things. Then I figured out how to insert anything into my inventory, including things that didn't even exist in the game.
That's when I realized wow, this is way more fun than the actual game. With games you're just trapped inside someone else's world. But with programming, you can do anything you want to the world, right? It's an open environment, and there's no limit to what you can do. From then on, video games just seemed like a pointless waste of time compared to programming.
I had actually first started programming maybe a year earlier. I'd bought a 386 with one megabyte of memory and started playing with it. I found a text file on how to program on a BBS, along with a C compiler which halfway worked. I learned a little bit by playing with those. Later at a hamfest I found a used Turbo C 2.0 compiler for $11 which came with a manual. So now I had a working compiler and a manual, and I started bashing my head against a wall for a couple of years figuring out how it all worked. At first I didn't actually enjoy it very much, but I was stubborn and determined to figure it out.
Did you feel like you were a good programmer when you got to college?
I felt like I was relatively good. I knew I wasn't good at building large scale things—but my code did the job. When I got to college, there was an ACM programming competition which I thought would be fun to take part in. I ended up coming in second place, so then I thought, “yeah I'm probably OK.”
Why did you join Intel after you graduated?
I was always interested in startups and businesses. When I was maybe 10 years old, I actually did door-to-door sales in my neighborhood. I'd take this catalog and go bug people to buy things. I made $1 every time I sold a package of greeting cards!
After college I wanted to work at a startup, but didn't really know how to find one -- there wasn't much information about startups on the Internet back then. However I know that they would probably be in Silicon Valley. That's where Netscape, SGI and a bunch of these cool sounding companies all were. I took a job at Intel because they were located in Silicon Valley, and I thought it would be the best way to meet people and find a cool startup. My naive assumption was that I would bump into them on the street or something. I thought the streets of Silicon Valley would be paved in startups, or that I would meet startup people everywhere. But that never really happened.
On Joining Google and Creating Gmail
Why did you decide to leave Intel?
Overall, the job wasn't exciting to me. I didn't have to work that hard, and one day I had this realization while sitting in my gray cubicle (I was in a sea of gray cubicles surrounded by gray walls, listening to white noise and all alone): I'm like, “Man I am so tired. I need to go home and take a nap.” I went home, but as soon as I got there I realized, “I'm not tired anymore.” Working at Intel was a draining environment, and I knew I wanted to leave.
How did you find Google? What was the hiring process like back then?
So, I was really into Linux. I actually got into Linux even before college, in '93 or around then. I'd installed the Yggdrasil Linux distribution on a partially broken hard drive I found, on which I could partition off 60MB that worked. That was enough to fit a small Linux install, but it wasn't enough room for Emacs which is why I'm a vi person.
I would spend a lot of time reading Slashdot for all the latest Linux news. That was where I read about Google, which was this little startup building clusters of Linux machines! To me, what could possibly be more exciting than clusters of Linux machines? And they had a special Linux search so they would show up on Slashdot relatively often. And they had more than just the color gray—they had four colors, so I applied for a job!
Amusingly, my resume email actually bounced because their mail server was misconfigured! But I sent it again the next day, and by then they had fixed the MX record or whatever was wrong, and someone got back to me to setup a phone call. I did a phone screen, and then they invited me in for a day of interviews.
Why did you decide to take the Google offer?
Well it was the only one I got, so that made it easy!
Also, it was exciting, and I thought they were doing cool stuff. I didn't believe in the business or think the company would be a huge success, though. I thought they were going to be roadkill and would get squashed by one of the big internet companies. By then, Yahoo was already a behemoth, and Alta Vista had so much money. I didn't understand how this little startup would be able to compete. But I decided I didn't care. I wanted to go work on Linux stuff and figured I'd at least meet some smart people there, and maybe they'd later start a company that would actually be successful.
In hindsight, I realize the early team at Google was actually quite remarkable. I think they made a real point of hiring smart people. In part, that was because they were working on really interesting problems and smart people want to work on interesting problems. I remember Jeff Dean had gone to work at another startup before Google and immediately fixed all of their problems. When he asked, “Now what do I do?,” it turned out that they had nothing else interesting to work on, so he left. He was drawn into Google because of the interesting systems problems there.
It became a cycle. These smart people would bring more smart people with them and so on. I think we got the whole systems department at UCSB because Urs was a professor there. It was like pulling on a string of talent and getting all the talent attached to it.
So, you thought Google would fail and be “roadkill.” When did you change your mind?
After I had been there for about a week, I was like, “Oh this company is going to be big.” I actually went back and asked for more stock options, but they said you could only negotiate for that before accepting the offer!
I didn't realize that Google was really taking off, though, until we did the Yahoo deal, which was after I'd been there a year or so. We took the Yahoo deal away from Inktomi, which at the time was a huge high flying company. I think they were worth many billions of dollars at the time, and it was exciting to beat them. I remember they tried to downplay the loss and announced something publicly like, “This 'search thing' isn't really great. The real money is in internet caching.”
After that I thought, “wow, these people are idiots, and we're going to roll over them.” From then on, we just kept winning deals and squashing other companies. That was exciting.
How did they decide what you got to work on at Google?
Marissa and I were actually given two projects to work on when we started. One was to build product search, and the other one was to build an ad system. I ended up focusing more on product search because that seemed more interesting than building an ad system. I was later part of a group called Onebox, which was basically the idea that you should be able to type in anything and get an answer, even if it isn't a regular web search.
I generally had product tendencies and was always hacking things on the side and adding features to things. I actually built the first version of the “did you mean?” feature after looking through our search query logs and discovering that I'm not the only person who can't spell. The quality team was working on these obscure things to improve search quality by .1% and I'm thinking, “at least 20% of our queries are misspelled. If we fix the spelling, I can improve 20% of the queries!” So I hacked that together. I would hack a lot of things together like that.
As Google grew, did you keep the freedom to hack on things you found interesting? Was creating Gmail part of that?
Around 2001, Larry got frustrated that each group was setting their own priorities and not working on what he thought were the most strategically important things for the company. His fix was to eliminate management and organize engineering around specific projects. He and Wayne Rosing, who was the VP of Engineering at the time, would sit down with engineers and give them projects. When they sat down with me they said, “we want you to build an email something.” That was all the specification I got! So I went off to build something with email, which became Gmail.
How did you manage your personal career progression at Google?
I've never really been into the whole “career” thing. It just feels horribly big-company. I was always very allergic to things that I perceived as big company. I just didn't want to be tucked away in a corner working on something irrelevant. I interned at Microsoft after my freshman year of college. On my last day, one of the smartest engineers in my group gave me this piece of advice, “Make sure they don't stick you off in a corner working on something unimportant.” I've always remembered it as good advice. My ambition at Google was just to launch a cool product or create something important.
On Leaving Google
Why did you decide to leave Google?
My daughter, our first child, was born unexpectedly—100 days early. There was a lot of medical trauma surrounding her birth, and we were in the hospital for months. When it was all over, I was really excited to get back to work because I loved working at Google. I liked it so much that I couldn't sleep the night before—I was just thinking over and over, “Oh man, I can't wait to get back—I'm going to do all this stuff!”
But when I went in the next day, the energy drained out of me. I suddenly felt like I used to feel working at Intel. Partially I think Google had grown so much in my absence, but it was also partly a “boiling the frog” effect: before I spent time away, I hadn't noticed things slowly changing, but when I got back I realized, “Oh wow, here I am in a meeting with a bunch of people I don't know who are telling me to do stuff that I don't care about.” I knew immediately that if I stayed at Google, and wanted to be successful and influential, I would have to become more of a big company person. I knew that I had the capacity to do that, but I didn't want to. I wanted to do something else, so I left.
On What it Takes to Become a Great Engineer
What skills and knowledge does it take to be a good engineer?
Computer science is almost unlike any other engineering discipline because we routinely work at many different layers of abstraction. Someone who is only able to operate at one level is not going to be effective because often any given problem will be at a different level of abstraction from the last. Great engineers understand computers all the way from the silicon up through the different layers and protocols and systems.
How do you become a better engineer?
Doing it. Showing up seems to be the secret to getting good at most things. I programmed when I was in high school, and it was all I did because I didn't have anything else going on—fortunately. Programming was my hobby, and I always had some project I was trying to implement. I think there's no substitute for doing a lot of programming because you just can't get really good in a short amount of time. It certainly took me years before I would say I was any good.
Who are some of the best engineers you've worked with? What made them great?
One of the most impressive engineers I ever worked with is Bret Taylor who was also my co-founder at FriendFeed. I've never encountered anyone else who combines being an incredible engineer, and being an incredible product person, and an incredible manager, and an incredible designer. He is good at everything—it's unfair!
Craig Silverstein was another, he was the very first Google employee. He is someone who types and programs faster than I can perceive what he's doing. Sometimes I like to watch other engineers work so I can learn how they do things. But with Craig he moved too fast for that. The screen would flicker and code would just appear. He'd constantly be flipping buffers in Emacs or whatever. He types so fast. I've never seen anyone else that fast.
On When to Quit Your Job and Join a Startup
Do you think every good engineer currently working at Google, Facebook, or Apple should quit to join a startup?
Alright. Who should and who shouldn't?
If you're happy working where you are, and you don't have any ambition to do anything else, you're probably going to get paid less and work more if you leave. If getting paid less and working more is unappealing to you, then I would recommend staying where you are!
I feel the need to preface that any generalization about joining startups is basically wrong because startups have tremendously high variance. Most startups are s**t. There's a few of them that are really exceptional, and if you land at an exceptional one, you can do really well. If you randomly pick something, you'll probably have a bad time.
If the hours and the pay are worse, what are the benefits of working at a startup?
A big company, like Google is today, has all these really smart people who are already experienced and know what they're doing. So, if you join Google, you're going to be working at your “correct” level. At a startup, though, they probably don't have the resources they need, so you can be operating way beyond your level. That's what I think is really great about startups.
Gmail is an example of this. I was 24 years old at the time, and I'd never completed a project of that scale or built anything like that before. Google today would never give that project to a relatively inexperienced 24 year old. But at a startup you can end up getting a project that a more mature company would give to a more experienced engineer.
Today, the big technology companies are paying engineers a lot more money than Intel was when you left for Google. How should that fact affect an engineer's decision to join a startup?
Yeah, that's hard. I think you have to view it as an investment. You're essentially investing in yourself. You have to believe that at the startup, you're going to learn and develop faster. If you don't think it will provide that, maybe you shouldn't take the job. If you go someplace with a lot of really smart people who are moving really fast, you can grow and develop as an engineer, or whatever you want to be, much faster than you would at a big company.
I would suggest thinking about joining a startup as more like going to grad school to learn. Optimize around learning when choosing a job. That's the best thing. Then if a startup fails, you can always go back to Google and probably get paid a lot more, because now you're actually a much better engineer than you would have been if you had stayed there like everyone else.
If you're thinking about joining a startup, how do you tell if the founders are like Larry and Sergey or if they're an Elizabeth Holmes?
Right, that's the worst combination: smart and full of s**t. I think you have to interview them a little bit. Ask hard questions and see if they give direct, insightful answers, or if they're evasive and dismissive. It also helps if there is a product you can try. I would avoid startups that have a ton of hype and no product.
Generally, when you are interviewing with a startup, how should you decide if it is the right company for you?
Looking back, one of the things that really impressed me about Google, which is probably good advice for anyone choosing a startup to work at, was that the interviewers all asked really smart questions. They asked things that only people who really knew their stuff could have answered well. Urs asked me, “Let's say you have a server, and it's running really slowly for some reason, how do you diagnose the cause?” To answer that question, you actually have to understand systems really well.
Their questions required being able to think at all these different levels: “Is there something going on in the kernel? Do you understand that hard drives are not these magical things which spit out information? Do you know why random access takes time?”
I only interviewed at one other company and they asked stupid questions like, “name the seven layers of the OSI Networking Stack,” or something that you'd pull out of a textbook, not things that were actually interesting.
Also, when I first went to work at Google, I had the opposite feeling I described having at Intel. I was excited. I woke up in the morning and was excited to go to work. There was this buzz of productivity in the office all the time. I think that's one way to know if a startup is doing well: When you go into their office, you can just tell. Are people busy working, or are they sitting around on Twitter wasting time? Are people showing up because they have to, or are they eagerly working because they're excited? Google was a really energizing place to be back then.
On Investing, Crypto, College, and Happiness
Do you think being an engineer made you a better investor?
Probably. I mean I think working as an engineer makes you believe you're better at everything!
I do think that the ability to break problems down into smaller pieces helps in a lot of areas. Certainly, as an investor, you need to be able to evaluate people and call them on their shit. Especially with technical things, someone who doesn't have a technical background can't really evaluate well. If someone says that something is easy to do or hard to do, a person without tech skills will just have to take their word for it.
You joined Google because you were deeply interested in Linux. Is there a technology you're equally excited about today?
This is a question which I would be curious for someone else to tell me the answer to! The closest thing I can think of is Bitcoin and crypto. I'm pretty sure they would have captured the attention of 21 year old me. What's different about crypto, though, is that it's full of all these get rich quick scammers, which Linux didn't have.
Is college useful?
I think so. If nothing else, it's a period of growing up and becoming independent. I wouldn't have wanted to go directly from high-school to working at Intel. That would have been nightmarish. There's a lot of human development that goes on in college.
By the time I got to college, I'd already had my first job programming. I was working with a friend of my father who did machine repair, programming an industrial robot that would pick metal rods out of a hopper and put them into a grinder. I learned a lot doing that, but I didn't really know anyone who could program. It was exciting to meet people who could program well in college because I could learn from them.
Why isn't everyone happy all the time?
Oh God. I'm not sure. I think maybe we've strayed too far from our evolutionary roots. We've created a world where it's hard for people to be happy. Plus, there's a whole industry evolved to make us unhappy—it's profitable for us to be unhappy because then we'll go buy “solutions” for our unhappiness.
Ok that's everything, thanks Paul!