看职业》伟大航道的游戏规则 - 软件工程师篇

Winston Chen

SnapChat CEO 斯皮格尔(Evan Spiegel)前阵子说的那句话到现在还到处被全球乡民疯转,如果你还没有看过,可以参考一下:

我是一个年轻、受过教育的白人。我非常非常的幸运。而人生是不公平的。因此,如果人生是不公平的——努力工作根本不是重点,重点是知道这个世界运作的法则。

(And life isn’t fair. So if life isn’t fair –it’s not about working harder, it’s about working the system.)

这个23 岁以前就(算是)白手起家的大富豪说的没有错,就像这篇原出于中国网民的长文(文长,但是真的很好看,大力推荐)寒门再难出贵子所说的

『努力是需要有方向的,需要有指导的,如果在一个错误的思维指导下,也许累死你的努力换来的就是一个只能餬口微薄收入。』

是的!努力是需要有方向的(本篇重点真的不是叫你去找个富二代或是有钱人嫁了/娶了XD),摸清楚游戏规则与方向后的努力才能开外挂,才能事半功倍,让我们先从软件工程师开始讨论吧!

谈到工程师,你可能以为只要是阿宅又会写程序,就是程序设计师了,其实,笔者在这里工作了几年后,发现在硅谷,软件工程师以等级来说,可以分为以下几种:

  • 会写些code 的
  • 会修别人写出来的尸体的
  • 会搞些软件架构,又会带人的,以及最后的
  • 投入大型Apache Project 开发的。

在硅谷,这几个等级的工程师能力跟待遇相差很大,但是差距最大的部分,其实是机会。很多搞不清楚这几个等级的程序员们,会花上一辈子的时间在第一种与第二种工程师间徘徊,尽管工作非常努力,也很努力学习新的技术,很多时候却感到时不我予,等到年纪大一点了,拼不过年轻小伙子,自然慢慢就被淘汰掉了,给外人造成工程师做不老的错误印象。

所以一旦你踏进软件工程师的领域,你只能咬着牙,一关关打上去,这就是你必须面对的伟大航道。

会写些code 的

尽管很多人会说念资工系没有用,或是非资工系也会写程序等等… ,在硅谷这里,念资工系还是比较吃香,不然你自己去Facebook 找人的网页,Software Engineering 部分,看看有几个职缺不需要BS or MS degree in Computer Science?

(好玩的是,这里99% 的一流公司不会只想要征硕士,跟台湾那种很假掰的大公司感觉很不一样)

或者说你之前也有听过可以半路出家写程序,比如说去参加General Assembly 课程出来直接拿高薪等等的这种说法。我自己没有遇过半路出家拿高薪的那些人,但是就我所知,如果你不是资工背景出来的,之前也没有写程序的相关经历,通常需要帮公司作『无偿实习』来累积你在市场的经验与人家对你的信任,然后才能正式当上全职的软件工程师。

硅谷公司虽然相对比较不重视学历,但是你还没有经验或是作品集证明自己之前,他们也是很在意出身的。相反地,在你工作三、五年后,你没有累积经验而只提出身,就慢慢会让大家看不起了。

还有一个很直接的方法确认你是不是真正的软件工程师,你去找一个当地的猎人头,问他是不是愿意帮你推荐你的履历,如果他肯的话,你就100% 是了。

不管你是怎么做成软件工程师的,总之,你工作是在写些Code 的,就算是了。

会修别人写出来的尸体的(Debug 别人的Code)

一般而言,能够做到修改别人的尸体(写坏的程序,但是不包含回家作业XD),大概就有资格叫做资深(Senoir)工程师了。

写code 简单,改自己的code 简单,但是修改/修正别人的code 其实就不容易了,尤其是那种一点都不写批注的XD 。你不仅要熟稔他使用的语言与技术,还要参透他思考逻辑与盲点,比自己自干要困难很多。

以现在软件项目的规模,你一定要跟人合作,你当然可以请写那段code 的人自己去维护自己写出来的那段程序代码,但是万一这个人生病/请假/摆烂/离职了怎么办呢?产品与项目还是要继续走,于是『会修别人写出来的尸体的』能力就显得非常重要了。

基本上,到了这个等级,你Linkedin 的信箱渐渐的就会有很多猎人头的留言,留职缺,希望找你去面试,只要你学校学的那些数据结构与算法还算熟稔,面试的氛围也掌握得很好,年薪谈到大于十万美金应该不是问题。

会搞些软件架构,又会带人的

稍微有点sense 的软件工程师就知道『作Amazon』与『做出Amazon 网站』的差别,而这差别,正是定义这等级软件工程师的最大因素。

(这里说的Amazon,指的是Amazon 购物网站,不是AWS)

『作Amazon』与『做出Amazon 网站』最大的差别在于服务的规模(scale),200 个用户跟2,000 万个用户所需要的科技与算法完全不一样。

拿商品推荐系统这个简单的功能来说吧,我们假设你有专属的推荐算法,当顾客登入网站的时候,你必须要用推荐算法算过你所有的库存商品,来推荐顾客可能会喜欢的产品,推高购物网站的营收。

假设你目前有1 万个商品,在你有200 个用户时,你只要算200 万次,一台好一点的机器可能就可以处理了,但在你有2 千万客户时,你至少需要算2 千万x 1 万= 200,000,000,000 次,这还不包括接下来排序所需要的运算,你要怎么设计这个系统?

假设你使用100 台机器来处理,其中有几台运算时错赛了,你要怎么办?你的结果会不会受到影响?还有,你当然不能在顾客登入时才当场算,因为这样绝对来不及,那么你要怎么储存这些每晚重新运算过的结果?如果Amazon 想要把网页的产生时间压在几毫秒下,你只能把这些结果存在内存,而不是硬盘中,那你要怎么设计与设定这个大型的内存系统(假设我们用memcached)?

到目前为至,都还只是『商品推荐系统』而已,更别说其它功能,数据库的设计,分布式运算的规划 … 等,更何况Amazon 的数据量与客户量都远大于此呢!

除了设计与实做这些软件架构以外,这类的软件工程师还要能够舌战群雄,通过众多工程师的质疑与考验与建议后,带领团队做出最终版本的产品,并进行维护与改良。

这类工程师常见的抬头有软件架构师(Software Architect),工程总监(Director of Engineering),技术副总(V.P. of Engineering),与CTO 这几个。

其实成为这种工程师最大的难处不在于技术而已,而是在第一手设计与执行这些大型系统的实战经验,有了一次架构这种等级服务的经验以后,未来的业主或是团队才会相信你有这样的能力,把更多、更大型的项目交在你手上,你也才能以战养战,在业界建立起自己的品牌。

就我目前接触到这样的工程师中,有两种升级过来的方式:

在大型服务的公司,待过类似部门。比如说你就在Amazon 作过类似的东西,拿这种业界龙头的相关履历,当然很容易在竞争者或是startup 种找到掌舵的角色。

在快速成长的startup 中待过,期间协助建立或是维护过这种等级的服务与产品。

投入大型Apache Project 开发的

我知道你很向往设计出python 的Guido van Rossum ,或是哪天闲闲没事也能像Linus Torvalds 一样在家里孵出Linux,但是我并不想讨论他们这种神级的语言创造者,因为他们的经历与能力有点难复制。我想讨论的反而是他们的追随者,那群数目庞大,但是却默默把像是Linux 与python 推向未来的Open Source 社群工程师。

不知道你有没有听过硅谷的秘密工会?作者写的没错,我这个类别就是在聊他们。

(没看过文章先去看看)

很多对技术热爱的工程师,会把这些技术的原始码下载下来研究,也会跟贡献该科技的Open Source 工程师互动,切磋技术,久了,不管是手痒了,还是想要哪些功能迟迟等不到,就会把袖子卷起来,自己跳下去写了起来。

尽管理论上Open Source 的项目大家都可以做,但是要让大家都同意把你的程序代码正式地放进项目中,却需要好大的一番功夫。

首先,我们假设你帮该项目加了某些功能,你会上Github 去建立一个Pull Request ,接下来,这些元老级的工程师们就会开始对你的程序代码品头论足的。

『这里为什么要这样写?你这样跟我们原来程序代码的架构不搭』
(老大,我新来的耶XD 我哪知道你原来的架构啊?)

『为什么不用这个组件,要自干?』
(因为之前没有人跟我说啊XD)

『你的测试单元这样写跑太慢了,你换个方式做吧!』
(那等于是要我拆开来重新做是吗?XD)

… 虽然你会觉得很机车,但是转念想想,你到哪里去找这么多软件工程的长老花时间帮你review 你的code 啊?这种千金难买的灌顶机会,现在让你完全免费得到,你老早就该请吃饭了XD

经过上面的寒彻骨,你的程序代码终于被接受,成为Open Source 项目的一部分,你也升级成为Open Source 的贡献者(Contributor/Developer)。

如果要作Open Source ,建议一开始从Apache 热门项目下手,比如说Spark 或Hadoop 那种,有两个主要原因:

因为项目热门,原来贡献的长老工程师就众多,帮你Review 作品的质跟量会比其它Open Source 项目好很多,灌顶机会大增,练功比较快。

一旦你成为这些热门项目的固定贡献者,甚至被项目中长老们遴选为Commiter (有关分级请看这里),你在业界的名声自然水涨船高。根据强者我朋友的不责任报导,很多超级公司找人的时候,都是把相关Apache 项目Developer/Commiter 的名单调出来,从第一个打到最后一个。而一般而言,一个热门Apache 项目的Commiter 年薪至少20 万美金。

当然,如果这整个Apache 项目根本就是由你发起的,你的价值会跟这篇同工不同酬的文章所说的一样,没有办法以常理来衡量。

最可怕的是如果这群绝地武士同时又兼有创业家精神,他们创造出来的公司会让你有种天空才是你的极限(Sky is the limit.)的那种fu,如果你觉得Cloudera(Hadoop) 太老了,虽然市值规模真的很惊人,你可以看看Databricks(spark) ,这个才成立1 年(2013) 的8 人公司,让硅谷最有名的创投争先恐后,马上注资4千7百万美金(来算算每个员工可以分到多少XD),这两间公司都是由这类工程师所创立的。

对了,这类工程师很多都喜欢馒头(mentor)后进,只要你不浪费他们的时间,他们都很愿意拉你一把,如果你遇到了,好好把握机会吧。

目前为止所讨论到的这条航道,是我这几年在硅谷当工程师所见所闻的体验,欢迎大家跟我讨论。如果你认识其它产业或是职业的佼佼者,可以提供更多的伟大航道,也请来信跟我说,我非常愿意跟他聊聊,看能不能把他的经验与洞见(insight)写出来跟大家分享。

ps. 笔者现在身于『会修别人写出来的尸体』的阶段,努力向上攀升中

(本文仅代表作者之意见与立场,经作者授权)

出处:台湾工程师的硅谷故事

你可能會有興趣的文章

家族健康史 預測疾病新法寶
有些疾病具家族遺傳性,例如糖尿病、癌症。如果沒有特別注意,很可能出現遺傳病而難以治癒。坊間目前流行以「基因檢測法」預測潛在遺傳危險,…
茶王、茶仙 高手種出一片天
有著得天獨厚地理優勢的福鹿茶,名氣比不上阿里山、南投的高山茶,它的好,只有茶農、製茶達人、盤商知道,賣到西部後,總是掛上別的名號賣,…
賣麵茶的畫扇藝術家林西雄
保留了清代閩式建築的鹿港老街,當地居民為了營造「古市街」的印象,將門面妝點得十分「古早味」,販售各式懷舊商品及小鎮特有的美味糕點,…
如何像設計師一樣擁有無邊創意?
放眼望去,我們生活中使用的東西都經過設計。就像桌面上的訂書機、筆、迴紋針,這些物品的發明,是因為有人遇到問題之後,找到了解決的辦法。…
追逐煙火20載 呂展源花火攝影馳名中外
「好美喔!」看過放煙火的人,莫不為夜空中變幻燦爛的火光嘖嘖讚嘆!近年來,賞花燈、看煙火成了元宵節的重頭戲。為了捕捉那璀璨動人的景象,…
尋找六四「坦克英雄」下落
王維林,這位名字其實不確定、身分不詳的男子,卻留下了一個舉世聞名的畫面,也因此有人稱他為「坦克英雄」(The Tank Man)。…
中國A股年中財報不妙 直接波及樓市
2017年中國A股上市公司半年度財報披露都已完成,作為中國經濟「晴雨表」的股市,數據並不樂觀。值得警惕的是,超過1,…
紐西蘭賺快錢 中國留學生躋身色情業
紐西蘭目前約有7萬名海外留學生,當中不少人兼職打工,更有部分人為掙快錢不惜賣淫。值得注意的是,由於中國「留學生」妓女湧現,…