如何成为在硅谷受欢迎的程序员?

jopen 9年前


如何成为在硅谷受欢迎的程序员?

在工作中,我常常和硅谷地区的工程师交流,时常讨论这样一个话题:什么样的工程师,在硅谷是最受欢迎的?

90 后硅谷工程师 Feross Aboukhadijeh 是一个极好的学习榜样。他并非扎克伯克那样的硅谷明星,但作为普通硅谷工程师的一员,对于大多数程序员来说,他是一个通过努力可以到达的学习榜样。他的经 历不仅仅对向往硅谷的工程师有帮助,对所有在北上广深杭工作的程序员,都有极好的启发。

下面分成四个部分来阐述,第四部分是 Feross 分享的他如何学习编程的经历。

一、建立自己的个人品牌

在水平相同的情况下,拥有更高社交影响力的程序员,在职场中占有更大的优势和更多的机会:在换工作时拥有更多的选择,更多的与同行中的佼佼者学习交流的机会,还总有人邀请你加入他的创业团队当 CTO —— 不一定要做出改变的决定,但有更多的机会和见识总是好的。

和 Fenng 编程能力相当的工程师,很难有和他一样的影响力,这是建立个人品牌的魅力。你不必担心说:我没有 Fenng 那么好的文笔,也错过微信公众平台的发展红利期。条条大路通罗马,只要愿意在网络上分享,你就离成为下一个 Fenng 近了一步。

一些方法可以帮你事半功倍,比如建立你在网上的个人主页。它可以是独立博客的 about 页面,也可以是你的 about.me  账户。然后在你的微博、知乎、微信、Github、V2EX、技术社区的主页上放上它的链接。就像涓涓细流汇成大河一样。

让我们看看 90 后硅谷工程师 Feross 的做法。他在 Github 上拥有 2300 名关注者,8390 名推特粉丝,在问答社区 Quora 有 12500 名关注者。他在这些网站主页上都附上了个人主页:feross.org

如何成为在硅谷受欢迎的程序员?

从 Github、推ter、Quora 吸引来的网络访客,在这里开始了解他:毕业于斯坦福,在 非死book、Intel、Quora 工作过,还有他的项目经历、他的爱好等信息。

二、什么样的简历是“完美硅谷求职简历”

个人品牌影响力 = 能力水平 × 传播度

经验丰富、能力突出的工程师,如果不善于在网络上分享,“酒香也怕巷子深”。前一部分便叙述了对此的解决方法。但自身能力才是根本,如果技能不够,再传播无济于事。

简历是求职的第一步。作为一个程序员拍卖平台的运营,我阅读过数以万计的简历,但 Feross 的简历是我见过的最完美的简历之一。在这里贴上一部分:

如何成为在硅谷受欢迎的程序员?

这份简历至少在这两点非常出色:

1、完美的版式

HR 每天要看不计其数的简历,眼花缭乱的状态下能看到这样美观清晰的简历,简直是一种视觉享受。

一份能被 HR 和技术负责人看懂的简历,才是真的好简历。这种看懂包含两方面:一是简历结构清晰、信息充足但不冗杂;二是要让不懂技术的 HR 也能从简历中清楚地读懂你的经历和项目经验。在这两方面,Feross 的简历都堪称完美。

特别要强调后一点。在互联网公司里,HR 要对技术有一点了解是必须的。但无奈有的程序员简历写得深涩难懂,甚至不是同方向的其他技术人员都看不懂,更遑论 HR 了。“HR 水平不够看不懂简历,不是我的责任”,永远不要有这样的想法。

2、从这份简历透露出的经历

斯坦福毕业的教育背景、知名硅谷公司的工作/实习经历、创办过公司并被雅虎收购、丰富的项目经验、有影响力的事迹,还有 Organizations、Hackathon Wins、Awards 等加分大杀器。这样的简历就是“完美硅谷求职简历”。

比如 Projects 中的 油Tube Instant,我们从链接中得知 Feross 的光辉事迹:

Feross 在斯坦福上大三的时候,Google 推出了一项新功能 Google Instant,可以实时显示搜索结果。Feross 觉得也可以为 油Tube 开发一个服务,让 油Tube 实时显示视频。于是他用 3 个小时完成了 油Tube Instant 网站。

有一百万人在 10 天内访问了这个网站。Feross 因此收到了来自 油Tube CEO 的 offer,还有 Engadget、TechCrunch、NY Times 等一票知名媒体报道了这事。

三、善用 Github

Github 对于程序员来说,是一种生活方式。越来越多的公司在招聘时,技术负责人会关注求职者的 Github。我所在的公司 100offer,也鼓励用户在填写简历时附上自己的 Github 主页。

这是 Feross 的 Github:

如何成为在硅谷受欢迎的程序员?

当然,为了表面好看去刷提交次数或者 star,是没有意义的。善用 Github,对求职、精进自己的代码水平、扩大在同行中的影响力,都有非常好的正面作用。

四、Feross Aboukhadijeh 是如何学习编程的

Feross Aboukhadijeh 在自己的博客上记录了自己学习编程的经历, 同时发表在 Quora 上获得了四位数的赞同。

现在全文翻译如下:

我是怎么学习编程的——别人常常问我这个问题,特别是在我建立了 油Tube Instant 网站并被很多媒体报道之后。在这里我决定分享我的经历。

一句话以概之:我学习编程的方法,就是大量创建网站。

我在很小的年纪就开始学习编程,学习的方法就是创建大量的网站。下面我将介绍几个自己创建的网站,其中最早的一个,是我在 11 岁的时候开发的。我希望读者能从我的叙述中了解到:如果你想学好编程,做大量的练习性项目是非常重要的。

学习一种技术最好的方法就是练习、练习、练习。我知道的所有优秀的程序员都非常享受编程——编程是一件让他们乐在其中的事情,所以他们大量编 程,甚至常常到达废寝忘食的程度。学会如何编程——还有如何做好这件事——并不需要有超出常人的能力。只要你愿意动手开始做就行。

下面就是我如何学习编程的故事:

一、我的第一个网站

如何成为在硅谷受欢迎的程序员?

在我十一二岁的时候,我决定给自己做一个网站。我记不清那时为什么想到要做一个网站,只记得这样我便开始做了。于是,我开始在网络上搜索关于网 页、浏览器、HTML 工作原理的知识。虽然在这过程中,我发现网上很多信息已经过时了,甚至是明显的错误(例如为 IE 和 Netscape 浏览器分别建立网站),但这个过程让我觉得非常有趣,学到了很多新知识。

尽管在网络上得到的信息质量层差不齐,我最终还是完成了一个简单的网站,我称之为“Feross 的网站”。我用 Frontpage 开发了它,那是一个很棒的所见即所得的 HTML 编辑器。我用很常见的语法,比如粗体和斜体对网站做修改,在编辑器里即时查看这些 HTML 标记的效果。这是个非常有效的学习方法。

这是我的第一个网站的截屏,现在它已经不存在了。

如何成为在硅谷受欢迎的程序员?

这个截图不能完全反映网站的状况:事实上,网站上的每个元素都在动,有闪烁的动画,还有声音。我在网站的每个网页上都放了不同的 MIDI 格式的歌曲,并且全是自动播放,无法把它们停下来,除非把电脑设成静音。哈,在当时这是很流行的网页设计风格。

过了几年后,我重新设计了这个网站,使它变得更美观。我在网上找了一些免费的网站模板并使用它们,还用微软的画图工具修改图片。

如何成为在硅谷受欢迎的程序员?

虽然我在建立网站的过程中大量依赖现成的模板,但这仍然不失为一个学习 HTML 和 Web 浏览器的好方法。“Feross 的网站”除了用来收集我小时候的一些视频外,没有其它用处,所以不久后我便对它失去了兴趣。

我第一个真正的项目

在我 9 年级,也就是我 14 岁的时候,我和朋友们都沉迷于在 Newgrounds 和 eBaumsWorld 等网站上观看 flash 视频和动画(这是 2005 年之前,那时 油Tube 还没有出现)。我每天花大量的时间泡在这些网站上,所以我熟知所有最棒的视频和游戏。

我产生了一个想法:如果我做一个网站,收集所有我喜欢的 flash 动画、视频、游戏,那真是一件非常酷的事情。于是我便做了 FreeTheFlash 网站,它是这样的:

如何成为在硅谷受欢迎的程序员?

感谢我在开发“Feross 的网站”过程中学到的 HTML 知识,同时我还使用了 Macromedia 公司——也就是现在的 Adobe——制作的 Dreamweaver 编辑器,通过这个软件,我可以在网站重复的页面上使用同一套模板。

如何成为在硅谷受欢迎的程序员?

过了一段时间,我想到可以让网站动起来。我听说可以用一种叫做 PHP 的编程语言来做(动态的)网站,于是我花了 20 美元在 Amazon 上买了一本书,叫做《PHP and MySQL for Dynamic Web Site》。我通过学习,使用 PHP 和 MySQL 重新设计了网站,同时还对它进行了新的美化:

如何成为在硅谷受欢迎的程序员?

在我读高中的时候,我对 FreeTheFlash 网站的开发持续了 2 年。这是我第一次尝试做一个“真正的”网站。对于一个初手来时,这个网站是成功的——在 2006 年,它获得了 60 万人次的访问,以及 300 万的页面浏览量。FreeTheFlash 让我感受到,做出一个成功的产品并看大量的人使用它,是一件多么自豪的事情。从此,我决定做出更大更好的网站。

我的第二个网站

在中学时期,我在计算机课上做了很多笔记。在我 11 年级的时候,我决定把这些笔记放到网上,让那些不喜欢看课本的学生使用。我做了一个叫做 StudyNotes 的网站。在开发过程中,我使用了 PHP 和一种叫做 Joomla 的内容管理系统。我也尝试使用 Drupal,但最后发现它太复杂了。

如何成为在硅谷受欢迎的程序员?

还是这一年,我为学校的 Key 俱乐部建立了一个网站。

在这段时间里,我花了很多时间泡在 WebmasterWorld 论坛里,这里有很多网站站长和 SEO 专家,他们推测 Google 的算法,讨论 AdSense 技巧,调试网站问题等。

大量的学习和阅读

在我进入斯坦福大学后,我学习了大量的计算机课程,诸如 CS106XCS107,我还提前学习了一些 CS106课程。

我把所有的课余时间都花在阅读设计、编程、浏览器和 JavaScript 等领域的资料,平均每天 4-5 个小时。我在读些什么?五花八门,什么都有。其中有大部分,是我敬仰的设计师和程序员写的博客。

一件意义重大的事

那是 2010 年的夏天,我在 非死book 实习的时候,因为和一个朋友打赌,我开发了 油Tube Instant 网站,它可以让人们实时搜索 油Tube 上的视频。这个网站在建成后的 10 天里获得了一百万用户的访问量,甚至连 油Tube 的 CEO 都表示愿意给我一个 offer。你可以点击这个链接阅读媒体们对这件事的报道。

我很清楚地明白,油Tube Instant 的成功归功于好时机和幸运。

如何成为在硅谷受欢迎的程序员?

继续前进

我发现有很多人使用 油Tube Instant 来听音乐视频,这让我想到了另一种使用 油Tube API 的好方法。于是我和朋友 Jake Becker 在 2011 年的前 3 个月里开发了 Instant.fm,它能让人们轻松地向朋友分享音乐播放列表。通过这个项目,我们学到了很多新东西。

如何成为在硅谷受欢迎的程序员?

在这个项目里,我学到的技术:

  • jQuery
  • CSS (以及 Modernizr 和 YepNope,帮助人们解决跨浏览器问题)
  • Python
  • Tornado
  • Git&GitHub
  • Last.fm API
  • 油Tube API

团队合作

还有其它一些我们学到的东西:

  • Nginx
  • Supervisor
  • SQLAlchemy
  • Apache Ant

动手去做

我详细叙述了我从 11 岁开始做的东西,就是希望能告诉你:如果你想学习编程,你需要动手开始做!现在就去做,不要找任何借口。动手做是最好的学习方法。

把编程语言书从头读到尾是一件很枯燥的事,常常读到一半你就坚持不下去了。但如果你打算做一个项目,你会在做的过程中明白自己应该学习哪些知识,这是学习知识更有效的途径。

计算机课程

大学里的计算机课程,是另一种十分有效的学习编程的方法。那些好的计算机课程,都十分强调学习计算机科学领域里的重要概念,而不是局限于教会某个特定的语言。这可以帮助那些没有接受过正规教育的人在自学时开阔眼界。

我还清晰地记得,在斯坦福大学里我上的第一堂计算机课(那是一堂关于 C++ 的课程)。当时我还在想“变量前怎么可能不带 $ 符号呢?”——因为那时我只使用过 PHP,我用了很长一段时间,才改掉在变量前加 $ 的习惯。

在 IT 公司工作

另外一个提高编程水平的方法,就是去 IT 公司实习,比如 非死book 或者 Quora。最近的两个夏天里,我就是在这两个公司里工作。你可以从优秀的同事那里学会如何更好得编程,如何阅读和理解他人的代码,如何在大项目中进行团队合作。

还是那句话——比什么方法都管用——学习编程最好的方法就是做项目练习。我是不是已经重复这句话无数次了 :-)

如何学会编程:

  • 做 side projects
  • 看编程书
  • 做 side projects
  • 上计算机课
  • 做 side projects
  • 读编程类博客
  • 做 side projects

这就是我能给出的最棒的建议。Happy hacking!

如果想去硅谷工作,可以在知乎阅读我的其他回答,应该有帮助:中国程序员怎么去 非死book 工作? - 知乎@luckystar 的回答。

本文为 100offer 程序员拍卖原创,始发于微信号@(微信 ID:at),原文始发于如何成为在硅谷受欢迎的程序员?