△新朋友吗?记得先点笔记侠关注我哦~
《更新书堂》·第105篇
内容来源 |  本文摘编自新星出版社出版书籍
《这就是软件工程师》,丁丛丛,靳冉 编著
轮值主编&责编 | 君莫笑  值班编辑 | 玉茹
第  5804  篇深度好文:5335 字 | 12 分钟阅读
、关于工程师,你需要知道的几件事
1.特质:简单务实,极致创新
提起软件工程师,大家马上想到这样的形象:格子衬衫、牛仔裤、双肩包,经常熬夜,甚至秃了头。
其实大家看到的只是一部分人的外在表现,而不是软件工程师内在的特质。
什么是软件工程师的内在特质呢?
首先,软件工程师是一群非常简单的人。大多数软件工程师通常专注于自己喜欢的事情,很少关注外在的东西。
他们之所以每天用最简单的搭配一衬衫、牛仔裤、背包,其实是希 望在这上面花尽量少的时间和精力,恨不得用固定的一种搭配就好。
乔布斯(Steve Jobs)有几十件黑T恤,扎克伯格(Mark Zuckerberg)出现时几乎永远穿着灰T恤,这些都是这一特质的体现。
其次,软件工程师是一群喜欢“偷懒”的人。
他们热衷于自动化,喜欢用技术手段解决问题一我就想写个程序让它干活,这样我自己就不用干了,效率超高。
与此同时,软件工程师非常务实,喜欢行动起来解决问题。如果一个问题没被解 决,他们会非常难受,甚至每天晚上做梦都在解决那个问题。
谷歌北京办公室曾经发生过这么一个故事。有一年双十一,公司的收发室堆满了快递,大家找起来很不方便。
这时,一个软件工程师站出来说,我要解决这个问题。于是他用业余 时间开发了一个程序,每天谁的快递到了,到了几个,及时通知,提前分类。
快递主人到收发室只要按一下,就能拿到自己的所有快递。这个问题就这样被解决了。
再次,软件工程师是一群严谨的人,倾向于持续改善、追求极致。
他们善于找到事物的漏洞或者不完美的地方,找到漏洞后反复迭代,一遍遍修改、完善,不断优化现有的程序。
还有更极致一些的软件工程师,恨不得觉得100分都是用来突破的,在他们眼里,满分的位置是不断上调的。
最后,软件工程师是热衷于创新的人。这一点可能跟这一行的工作性质有关一很多程序一旦做好,你是没机会再做一次的。
软件工程不像土木工程,土木工程是你在A城市造一座桥,下次换到B城市还要再造一座。软件工程不一样,很多程序你一旦设计好,在这里可以用,在那里也可以用。
如果需求是一样的,你用已有的程序是最好的方法,没有必要再重新做一遍。
所以,软件工程师很多时候得做之前没做过的东西一发现新问题,提出新方案,创造和设计新程序。
因此创新是必须的,是写在软件工程师这个职业的基因里的。
当然,以上只是最主要的几个方面,除此之外,软件工程师还非常好奇,讲究逻辑,热爱分享……如果用一句话总结这群人的特质,大概是“普世低调的创新精神,理想主义的工匠精神”。
2.工程师的薪资
早在十几年前,软件工程师已经是广为人知的高薪职业了。
站在当下的节点上,很多年轻人或许会有疑虑:软件工程师火了那么久,现在还吃香吗?
其实不用担心这个问题。因为到现在为止,这个职业颇有“高薪常青树”的样子。
先看一组国内的数据。
根据我国国家统计局发布的信息,2010-2015年,在所有城镇单位就业人员中,“信息传输、计算机服务和软件业就业人员”的平均工资连续6年排第二位,到2016年一举超越金融业跃升至第一位,2017 -2019年蝉联第一。
可以说,软件工程师是我国城镇就业人口中平均薪资最高的群体,并且稳定地保持在所有行业的前列。
在阿里、腾讯、字节跳动、美团、百度等国内互联网“大厂”中,软件工程师年薪30万是“中庸水平”,年薪百万的人比比皆是。
其实不止是中国,在全世界范围内,软件工程师都是高薪职业。
美国招聘网站Hired发布的《2019年度薪酬状况报告》显示,2019年全球技术工作者平均薪资为12.9万美元,其中美国旧金山湾区薪资水平最高,为14.5万美元。
Glassdoor发布的一份报告显示,2019年美国薪资最高的25种工作中有10种在科技行业,包括企业架构师、软件工程经理、软件开发经理、应用开发经理、解决方案架构师、数据架构师、IT项目经理、程序架构师、用户体验经理、网站运维工程师一几乎都属于软件工程师的范畴。
另外值得一提的是,软件工程师是一个全球化程度很高的职业,很多国际性大公司都在世界各地设有分部,内部流动性大。
相当于公司是一个很大的水管,所有工程师在同一个管道系统里自由流动,这就意味着大家的收入水平其实是很接近的。
如果你在中国做得出色,只要英语还不错,去美国或欧洲工作并不难,待遇也不会低,反之亦然。
3.一个成就感驱动的职业
很多人可能觉得,软件工程师收入高,厉害的还能创业开公司。
现在全球市值最高的公司苹果以及谷歌、Facebook (脸书)、微软都是软件工程师创办的,世界首富也从当年的比尔•盖茨(Bill Gates )到现在的贝索斯(Jeff Bezos),从事这一行的人一定是利益驱动型的。
其实,软件工程师最底层、最原生的驱动力是成就感,高收入只是副产品而已。
为什么这么说呢?
首先,相信每个选择进入这一行的人,都经历过这样一难忘的时刻:当你用代码做出一个小玩意儿的时候,当你跑通第一个程序的时候,当有用户使用你做的软件的时候,当你学会了一种更高级的技术的时候……
那些发自内心的喜悦和令人兴奋的成就感,多年以后回想起来依然倍感触动。
这种成就感才是一个软件工程师在这一行走下去的底层驱动力。
其次,对大部分软件工程师来说,自己做的事情特别牛,能够受到编程界以及计算机行业的认可,是很重要的。
比如,很多人把自己写的代码做成开源的,放在网上免费让其他人使用。这样做带不来任何利益,但如果行业里大家用的是我写的代码,这种感觉很不一样,会让软件工程师产生极大的满足感和荣耀感。
最后,软件工程师关心的是,自己做的事是不是能对社会产生真正的影响,是不是真的改变了这个世界,改变了人们的生活。
很多软件工程师心中向往的,是林纳斯•托瓦兹 (Linus Torvalds )这样的人(林纳斯是Linux操作系统的创造者,我们每天使用的手机、家里的电视机顶盒,甚至全球排名前500的超级计算机,大部分都是以Linux为基础开发扩展的。没有Linux,这些工具都不会是现在的样子)
至于收入比较高,回报多,其实只是近年来的事情,刚好赶上了这一轮的互联网大潮。
二、为什么会有996?
江湖传言软件工程师工作起来几乎都是996 (公司规定每天早上9点上班,晚上9点下班,一周工作6天),这在国内确实是一个不可忽视的现实。
我们在这里不讨论如何看待 996,而是想分析一下为什么会有996,帮助新人更好地理解这一行。
为什么突然之间这个世界就开始996了?
有两方面的原因,一个是这个行业正处于特定的发展阶段,另一个是公司的组织管理问题。
首先来看发展阶段。在国内,互联网行业正处于原始积累阶段,或者叫圈地运动阶段。
和大部分国外公司不一样,国内绝大多数公司是流量驱动型的,大家都在玩营销、抢流量,很怕自己的流量跑到竞争对手那里去,觉得一旦丢了流量无论自己做得再好都没人用了。
但其实不是这样,如果真的做好了,用户不会不来的一只是大家已经忘记了这一点。
就像人类历史上的蛮荒时代一样,各大公司都在不停地圈地、占领领土,它们占领领土的方式是你有什么,我也要有什么。
比如你做短视频,我也要做短视频,你做生鲜卖菜,我也开始卖菜……我见过很多这样的竞争,有时候竞争都到了可笑的地步。
比如A公司的竞争对手B上了一个功能,其实B并没完全想好,但A看到B有这个功能,立马把它抄了过来。抄过来后发现好像不是那么回事,于是A开始优化它。
后来B觉得自己做错了这个功能,把它下线了。而A这边把这个功能做好了,然后B觉得不错,又把它抄了回来……
就这样互相抄来抄去。说白了这是一种低维度的竞争,导致大家拼命扩军,拼命提速,讲究“唯快不破”但实际上真是这样吗?
长期来看不是,我们看人类历史就能知道,蛮荒时代确实是唯快不破的,甚至是野蛮人市场,但是一旦别人发明出更高级的武器来,你再快都没有用,再快的长矛也比不上枪。
相比之下,国外很多公司没有996,它们不以圈地运动的方式生存、竞争,因为它们的危机感并不来源于流量的缺失,而是来源于技术不领先。
这样的公司会回归底层,更精耕细作一些。它们比的不是谁更快,而是谁能拿下技术制高点。比如谷歌开发了安卓系统,全世界的手机都得用。
我隐约觉得国内的原始积累差不多了,接下来也该走向精耕细作的阶段了,该从劳动密集型走向知识密集型了。
国内996严重的另一个原因是很多公司的组织管理能力不足。我们来对比一下国内外软件工程师典型的一天,就很容易发现这一点。
国外的软件工程师每天早上上班,第一件事是收邮件,集中处理邮件,大概花两个小时。然后有个站立会议,说一下昨天做了什么,今天要做什么,基本上上午就结束了。
下午软件工程师就专心完成站立会议上确定的工作,按照标准流程去做就可以。比如如果这个程序还没有设计文档,你就写个设计文档,然后找别人讨论一下;如果已经设计好了,就开始写代码……
下班后虽然也会有半夜被叫起来解决问题的时候一因为国外很多公司是全球化公司,永远有其他时区的同事在工作,但总的来说国外公司的软件工程师工作相对从容一些。
国内的软件工程师早上到了公司一般不处理邮件,很多事情在微信或钉钉上沟通,上午一般也会有个站立会议,确定今天要做什么,然后开始做。
但接下来在做的过程中,一定会有各种各样的事情来骚扰你,老板来找你、产品经理找你、旁边的同事来找你……
甚至中间还会穿插各种大大小小的会议。干着干着你会发现,哎?怎么就到下班时间了?
今天啥事也没干,那就只能加班了。对比下来你会发现,国内很多公司会议特别多,有的会议一开就是两三个小时,甚至四五个小时,而且通常是公说公有理,婆说婆有理,最后也讨论不出个结果。
很早以前国外也是这样,后来他们解决了这个问题,现在开会都要求不在会议上解决问题,而要在会议上发现问题,跟进问题;要求开会前一定要有议题和议案,因为一旦把议题和议案搞清楚,会议开起来非常快,15~30分钟绝对结束,然后大家各自去做自己的事情。
说到底,国内很多公司的组织效率有问题,导致软件工程师白天不停地被打断,杂事一大堆,只能晚上加班。
所以软件工程师圈子里流传一句话:我们熬夜工作,不是因为晚上有灵感,而是因为白天的碌碌无为,引发了愧疚感。
《代码大全》这本书里有句话说得特别好:“几乎所有人都会混淆行动与进展,混淆忙碌与多产。”实际上并不是我们行动了就会有进展,我们忙起来就会有产出,要想改善996问题,国内公司应该在组织管理上多下点功夫。
三、软件工程师的四大台阶
软件工程师这一行有很多“英雄出少年”的例子,比如比尔•盖茨、扎克伯格,年纪轻轻就做出了开创性的研发与设计。
看起来,这一行颇有些“出名要趁早”的特性。
但其实,一出手就站在金字塔塔尖的年轻人只是极少数, 可以说是凤毛麟角。大多数的软件工程师,都是需要在金字塔里,一个台阶一个台阶往上走的。
如果我们把软件工程师的金字塔分为四大台阶,那它们分别是:新手阶段、进阶阶段、高手阶段和行业大神阶段。
这四个阶段分别对应这样几种能力:执行力、设计能力、融会贯通的能力、沉淀方法论和开创新领域的能力。
新手阶段强调执行力。
你刚刚进公司是新人的时候,会被分配一些任务,上级会非常明确地告诉你任务是什么,用什么样的方法达成什么样的目标。你按照方法一步步去做,保质保量完成,就可以了。
进阶阶段强调设计能力。
这个时候,上级布置给你任务,但不会告诉你怎么做。相当于他给你的只是一个问题,你需要自己把具体的问题抽象、拆解,并独立设计解决方案。
高手阶段则需要融会贯通的能力。
这个能力对应的其实是我们通常讲的架构师,也就是软件项目的总设计师。
假设你是架构师,你不仅要看到系统从过去到今天是怎么变化的,还要看到是外界哪些需求、内部哪些技术导致了这些变化,并且预判系统未来要朝什么方向发展。你需要把技术的演进、需求的变化、系统的发展等多个维度综合起来考虑。
大神阶段需要沉淀方法论。
在这个阶段,大家都公认你是这方面的权威,你对这个方向的判断是非常准确的。
同时你还能够沉淀出一个方法,这个方法不只适用于当前的领域,别人把你这套东西拿过来,还可以解决另外的问题。
大神中最顶尖的,还能开创新领域。
这些新领域的开创都是革命性的。可以说,几乎计算机、互联网领域出现的每个重大里程碑,都是软件工程师开创新领域的结果。
比如业界公认的行业大神,美国科学家肯•汤普森(Ken Thompson)在20世纪70年代作为主创者之一开发出了全新的操作系统UNIX(这一系统不仅可以用于网络操作,还可以作为单机操作系统使用,后来被广泛使用于工程应用和科学计算等领域),就是开创新领域的代表。
从这几个台阶来讲,越往上走,要求越高,能达到的人越少。
从执行到设计,可能60%以上的软件工程师都可以跨越;
但从设计跨越到融会贯通,就大概只有30% ;
再从融会贯通到形成方法论、到开创新领域,1%都不到。
当然,这不是统计的数据,是大概的印象,方便你了解各个阶段的比率。
软件工程师之外的其他领域也都是类似的,越到金字塔的顶层,人越少。
*文章为作者独立观点,不代表笔记侠立场。
企业内训 | 线上、线下企业大学 | 课程团购 
请在公众号后台回复企业深度学习
分享、点赞、在看,3连3连!
继续阅读
阅读原文