TripleByte 对 Gmail 创始人 Paul Buchheit 的进行了一个访谈，访谈内容很不错，我看完原文后获益匪浅，故在此做摘录以作备忘。
1. 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.
1. 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.
2. 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.
那个微软的大神的话也值得一提：（当你在大公司工作的时候）Make sure they don’t stick you off in a corner working on something unimportant.
1. 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.
确实，要解决一个复杂问题，可能要面对多个抽象层，我们光会点 JS/CSS 实在是太局限了。要对一些计算机的底层原理有更细致的了解才行，于前端工程师而言，则 HTTP 是必须要精通的。这个话题从更大的角度来说，就是不要将自己局限于前端工程师这个 title，而要将自己想象成解决问题的工程师。这也是我前段时间才领悟到的一句话，改日再写一篇文章仔细论述。
2. 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.
兴趣啊兴趣啊，其实每个工程师都会有一点自己的小 ideas 想要做的吧。有没有执行力去完成它则是另一回事。
3. 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.
Bret Taylor 一个人重写了一整个工程师队伍写了数月的 Google Maps, 并提升了接近十倍的速度，减少了三分之二的文件大小。一个字，强。Google 了一下他，发现他后来成了 Facebook 的 CTO. 牛逼。
1. 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.
这里说的是在小公司工作的好处，大公司有大量的牛人，所以你去到那只会做你这个 level 做的事情，比如做个小前端。但是创业公司不同，你可能会接触到各个层次 level 的东西。Paul 说他当年做 Gmail 的时候只有 24 岁而已，现在哪个大公司会让一个 24 的小毛孩写这么大一个项目？ 我自己也有亲身的体会，在创业公司很重要的一点是不要把自己看成一个细分领域的工程师，比如 ios 工程师、Java 工程师或者前端工程师。你可能要解决各种不同层次的问题。虽然作为一个前端入职，我也曾经帮公司配置过 Amazon 云服务，包括 Amazon S3 的云存储、 Amazon Lambda Function 做的一些图片压缩以及一些权限设置。在一开始确实会觉得，WTF，我是来做前端的，这应该是一个后端的工作。但其实你老大不 care，他是要你来解决问题的. You are not a front-end engineer to me. More importantly you are an engineer that solved the problems.
2. 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.
Paul 说在创业公司能学到更多东西，成长的更快。我并不赞同。一般而言创业公司没有大牛，无法给予你指导作用。他还建议，把加入一个创业公司看成是一个 grad school 来学习。我认为这恰好相反，大公司才能被当成是 grad school.
3. 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.