我们聊过一期, 年轻人把成都卷成了另一个后厂村。
有读者问我,是不是只有卷王,才有一线生机,或者说,才是职场里唯一正确的道路?
有人这么想问题,可能是受到我的影响,我本人是卷王类型的。
我曾经讲过一段职场案例,在第二家公司的时候,我是负责内核的软件工程师。那么我入职几个月之后就和一位新来的同事合伙,架空了原部门经理,成立了软件架构部,接管了全公司的软件,成了架构师。
我们这个所谓新的软件架构最重要的工作是什么?就是横插在应用与驱动之间。
当然,这不是传统意义上的中间件。
我们深度嵌入驱动当中,也深度嵌入应用当中。我们试图把所有复杂的逻辑调用全部由架构师写好。这样使得写驱动的人,不需要有全局观,他实际上就是配寄存器和调试的。同样使得写应用的人就是负责一些简单的接口调用组合。
这么做的目的很简单,从上到下整个软件全通,上能对接产品经理,下能对接芯片,只需要几个架构师掌握全局就可以了。
其余的人,无论是写应用调用的,是白盒测试的,还是配寄存器的,都可以招一些便宜的,经验不丰富的人来,降低成本的同时降低对核心员工的依赖度。
你看到了,我还是个工程师的时候就表现出非常强的资本家的嘴脸,不过你要注意,当年我参与推动这种技术演变,对我个人来说,所得甚少。并不是说我做了工贼,背叛了自己的阶级,就能得到股票,不可能的。
我说过很多次,老板不会给你任何奖励,他只会在被迫的情况下给你。所谓你的价值取决于你还能做什么,而不是你做过什么。
相反,长期来看,我这么干等于自己给自己掘墓,将来如果某一天我被裁,恐怕就是自己埋下的伏笔。
只不过我不在乎,因为我从来也没有想过要打工一辈子。既然打工只是做实验,那么我当然不在乎自己的长期饭碗了。
我那么做的核心出发点,出自我的自我定位。每个人的自我定位是不同的,每个人的人生规划也是不同的。
来问这个问题的读者,他们实际上是站在我就是要一辈子给人打工的前提下,来判断卷是不是能够让自己利益最大化的出路。
答案显然是否定的。
卷,到底是不是最优策略,和什么有关?和你身处的这个行业的这个分支领域的生态结构有关。
我又一次提到了这个词儿,生态结构。
职场是个非常复杂的生态结构,你必须解剖他,否则得出的结论都是似是而非的。
就比如我曾经做过的这份差事,操作系统开发,驱动开发,这个属于什么大类呢?属于嵌入式开发。
你把软件开发可以分成两大类,应用开发,嵌入式开发。
这种分类很粗,我只是为了通过一个案例让读者理解生态位,实际上应用开发本身还可以分,多了去。
我们今天对比的就是应用开发和嵌入式开发。
一般来讲,应用开发面对的是什么?是客户。就像你用一个软件,直接接触的都是UI界面,你不可能接触到底层的驱动。
那么做底层驱动的人,他的客户是什么?是应用开发者,也就是调用他接口的人。
客户不同,生态就不同。
我们想一想,老板对应用开发工程师的要求是什么?
是做出来的界面好用,开发周期短,BUG少,是这些对吧?
界面好用意味着客户粘滞度高,会被留下;开发周期短意味着自己的产品先上市,可以与竞争对手打个时间差;BUG少意味着投诉少,新客户转化为老客户的转化率高。
在这样一个要求下,你想从一众应用软件工程师里面脱颖而出,能怎么办?
第一个办法是加班延长时间,你工作时间长就有可能比你的同事更早提交版本。
第二个办法是提高效率,你只有把自己的程序高度模块化,才能降低BUG,同时提高速度。
一个人努力提高了分数,大家努力提高了什么?提高了分数线。
当所有应用工程师都这么努力的时候,程序模块化程度越来越高,通用性越来越强,自动化测试越来越便捷,原来需要10个人的事情现在只需要1个人。因为十个人为了竞争胜出,都在努力优化改造编程环境,都在努力标准化。
通过大家的努力,原本不可测的中餐变成了麦当劳,老板需要的人实际上变少了。
如果行业本身在迅速发展,没关系,可以扩展业务,可以开发更多的需求,覆盖更多的市场。
一旦遇到大环境压力,比如连大厂都减薪裁员的时候,战线收缩的时候,你会发现可能真的只留下一个人就够了。
我们反观嵌入式开发。
嵌入式开发最重要的点也是前面说的那些吗?不是。
因为生态位不同,所以要求就不同。
站在一个嵌入式工程师的立场上,他并不是直接面对客户的。他也不可能把应用开发者当作真实的,买单的那个消费者来对待。
他实际上承担的是三个责任。
1、要掩盖芯片的BUG。
芯片的开发周期太长了,动辄几年,改个版本流片回来都要半年,所以有很多问题明知道是硬件的,也得软件去掩盖。
谁去掩盖?只能是做驱动的人去掩盖。
2、戴着镣铐支持应用的调用。
嵌入式软件一方面默默的咽下了芯片的BUG,另一方面要对调用它的应用表现出没有BUG的样子。
这就使得它的复杂性提高了。
3、负责定位系统级的问题。
所谓系统级的问题就是说当应用和芯片没有能力定位的时候,只有居中的嵌入式软件开发者,才能站在全局的视角下,或者找到问题 ,或者掩盖问题。
这三点才是对嵌入式软件开发者最关键的考核。
你有没发现,效率并不是第一位的?没有BUG并不是第一位的?理清开发环境并不是第一位的?
效率为什么不是第一位的?因为没用。
你再快也没有用,你不是直接面对消费者的。你只要保证自己不会拖应用开发的后腿就足够了。快能怎么样?不创造额外价值呀。
你没有BUG是不可能的,因为所谓BUG的定义不一样了。作为嵌入式开发者,你保证自己没BUG有啥用?你自己没有BUG,可是你掩盖不了芯片的BUG,东西一样卖不掉,应用一样没法调用。
至于理清开发环境就更别想了。
你站在嵌入式软件开发者的视角下想一想,他怎么样才能证明自己是最牛的?
难道像应用软件工程师一样比速度吗?不,不对。
他证明自己的唯一机会在于当别人都搞不定的时候,他能够来救场。
我在第一家公司的时候,之所以能够从实习生转正,不是因为那些特别勤奋的励志故事,而是我救了一次场。
我们老板带着全公司除了我师父之外的剩下的所有技术大咖在美国做演示,在争取第二轮融资。
现场发现张三拿起电话打给李四,李四能听到张三的声音,张三就是听不到李四的声音。
大家不计时差的配合,不睡眠连续调试了好几十个小时,眼见资方要到了,问题解决不了。两边都急疯了。
后来是我定位出BUG,并想出办法掩盖,让演示能够顺利进行。因此功,得以毕业后留用。
这个问题的根源,是应用部门的经理导致的,她一个博士,一个在贝尔实验室工作多年的高工,楞是把IMS体系都给搞错了。
我难道能查出她的BUG吗?不能。我没有研究过IMS体系,怎么可能看懂她的代码。
我也不可能去调试,操作系统是很庞大的,你一行行调试那要多少年。
我师父当年喜欢我,虽然我基础很差他都很喜欢我,愿意手把手教我,是因为我的直觉很强。
用他开玩笑的话说,我有一种能够在公共厕所里一瞬间就找到唯一的那枚未消化的稻谷的能力。
换别人上,可能要把整个厕所翻遍,用无数的水去冲洗,我好像天生就知道。
嵌入式工程师想要混得好,千万不要把房间整理干净。房间越干净,你就越没有价值。
越混乱,越离不开你。
就像我提过的那个昔日甲方里管机房的哥们,他即便不利用工作之便借大网的力量去挖矿,即便没有遇到行情。他那种专门喜欢把机房搞得一团糟,只有他才能救场的职场生存模式,也足以让他吃这碗饭吃到老。
正因为考核标准和应用软件工程师不一样,所以嵌入式工程师们集体更加倾向于摆烂,或者说,喜欢把开发环境弄得乱糟糟,给定位问题添加难度。
有时候说穿了,为什么他能从厕所里找到唯一的稻壳?也许就是他藏的呀。或者他闲的没事干,当初就偷偷观察每一个上厕所的人,人家的BUG他看在眼里记在心里,平日里不说,关键时刻他冲上去就翻出来,显得自己不可或缺。
这种集体摆烂,使得嵌入式软件的开发环境的进展,远不如应用程序那样一日千里。
那么遇到市场危机的时候,他们反而不容易被干掉。
很有意思对吧?有的人卷着卷着,把自己的岗位卷没了。有的人尽干那种没名堂的事情,反而保住了自己的位置。
我只是随便举个例子,请勿对号入座。
这种因为生态结构导致的集体性的选择差异反过来影响了生态位的现象,其实在各行各业,各个分支领域里都比比皆是。
所以你到底要不要卷,和你所处的位置有关。说到底,蜜蜂那么勤奋是为了活着,树懒那么懒,也是为了活着。

评论(0)