说个真正的 IC,大神中的大神
我工作了近 20 年,真正的 IC 只见过一个。大多数所谓的 IC,要么技术太差升不上去,要么一直蠢蠢欲动想转管理。既有技术水平,又热爱这份工作的,我只见过一个。所以我深知这条路的艰难。
那么他是一个什么样的人呢?他学历不高,但是第一份工作就是给 Win95 写 kernel 。接着写各种各样的操作系统写了 20 多年。他的简历上尽是 Designed and implemented xxx operating system, xxx file system 这样的字样。这世界上被广泛使用的操作系统屈指可数,他站在这样的位置上,你说他牛不牛?
他精通 C/C++和汇编。他不光会写 MSAM,他还会在任何常见的 CPU 上写汇编,GCC/Clang/VC 都没问题。如果你跟他讨论 CPU 架构,PPC/ARM/x86 他都是信手拈来,从古老的 8 bit cpu 到最新的 8bit 算术指令他无所不知。什么多线程、内存管理、bytecode 这些更是不在话下。
如果你看他一年有多少 checkin,确实很少。他自己做自己的模块,不太需要跟其他人有频繁协作。什么时候他觉得自己的代码 ready 了,就 push 一把。平均每年大概写 1-2 万行代码吧。
他不带人,没有任何人 report 给他。他也不爱开会,懒得说话。像这样性格的 IC 有很多,但是能一直往上升、一直有机会去做更有影响力的项目,没有遇到职业瓶颈的人屈指可数。大多数人干个 10 来年就想办法转管理。我也是 IC,但是我自知我跟他远远不在一个世界里。
还有很多 IC 是架构师。会议和各种评审占了大部分时间,他们也写代码,但是主要的精力早已不在这里。所以后来我发现作为 IC 很重要的一个 soft skill 就是控制好自己的嘴巴, 能不发表意见的时候就不要发表意见,说多了一是会显得自己很无知,另一方面会将自己卷入很多不该参与进去的争吵、骂战中,浪费时间。技术讨论并不总是完全技术的,很多时候是有客户需求、manager 之间的角力在背后搅动。IC 就不要管这些事情。更不要跟 PM 说话。拿上面这位老兄做例子,如果他整天跟 PM 讨论 win95 的内核该怎么设计,你说这产品最后得多糟糕? IC 就得去挑纯技术的活去做,比如 distributed filesystem,机器学习模型优化等等。