硅谷工程师的4个等级

2014年12月24日 10:23 来源:CocoaChina 作者:佚名 我要评论(0)

标签:工程师(67194)程序员(29472)

  SnapChat CEO斯皮格尔(EvanSpiegel)前阵子说的那句话到现在还到处被全球乡民疯转,如果你还没有看过,可以参考一下:“我是一个年轻、受过教育的白人。我非常非常的幸运。而人生是不公平的。因此,如果人生是不公平的——努力工作根本不是重点,重点是知道这个世界运作的法则。”(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的

  会修别人写出来的尸体的

  会搞些软体架构,又会带人的,以及最后的

  投入大型ApacheProject开发的。

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

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

  会写些code的

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

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

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

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

  还有一个很直接的方法确认你是不是真正的软件工程师,你去找一个当地的猎头,问他是不是愿意帮你推荐你的履历,如果他肯的话,你就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千万x1万=200,000,000,000次,这还不包括接下来排序所需要的运算,你要怎麽设计这个系统?

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

12下一页全文

本文导航