程序员

从 0 到 1 还是 从 1 到 n , IT 技术狗应该反思的

【写在前面】:

笔者是一个 80 后 IT 技术狗,做过很多技术岗位, C 语言开发、 php 网站后端开发、软件测试工程师、外企的 helpdesk ,最近 6 、 7 年一直专注在运维领域。

可以说笔者一直在摸着石头过河,没有明确的职业生涯规划害苦了我自己,最近几年、长吁短叹、后悔错过的那些时光,着实让我痛苦……

这种纠结的煎熬也是我写这篇文章的初衷,希望每一个即将步入、或者已经入坑的 IT 技术人员,能早些思考、做好规划,不要再重复类似我这样的经历。

思考

【上限思考】:

决定你事业方面能达到什么高度的关键、是你所掌握的技术最终所能达到的上限!

你是否具备将现在使用的技术完全掌控、甚至推陈出新的潜力呢?

比如,你现在利用 JavaScript 进行开发,那么,你是否有信心由现在的使用某种框架、发展到以后去制定某种框架呢?

当然,这个只针对 IT 技术狗这一特殊群体,技术管理方向不在讨论范围内。

【从 0 到 1】:

这个概念出自“彼得-蒂尔”的一本著名商业管理类书籍,虽然书中原本是讲创业、企业经营和发展的,不过笔者看过后却对困扰我多年的职业生涯规划问题恍然大悟。

简单说,从 0 到 1 意味着创造、创新、极致的改进,带入到职业规划这一个话题,我的理解是:“是否能够真正掌控一门技术,具备改进、重新创造一个全新技术的能力”

以 nginx 这样一个 IT 相关技术领域人员都应该听说过的技术为例,聊聊笔者眼中的、技术学习的“从 0 到 1”

对 nginx 的掌握分成几个阶段呢?笔者按照自己的理解,简单分享下:

(1)初级阶段:初窥门径,就是按照网上的文档、照猫画虎的把服务开通、让你的业务跑起来

初级阶段

(2)中级阶段:小有所成,具备了一定的使用经验,能够在更复杂的场景下提供服务

中级阶段

(3)高级阶段:高深莫测,已经开始探索技术本身的实现原理,能够在原有技术的基础上进行随心所欲的改进、扩展

高级阶段

(4)从 0 到 1 的阶段:高山仰止,完全领悟了某一技术领域,并能够按照自己的需求设计出全新的技术细节

从 0 到 1

【从 1 到 n】:

原著中对这个概念的解释是:“通过复制现有的模式、杀入市场做竞争型企业,相当于重复造轮子,属于水平进步”。

带入到职业规划中,笔者认为所谓的 从 1 到 n ,就是上面 nginx 例子中的初级、中级阶段,也就是说,你只具备使用技术的能力,不理解技术的原理、无法对这门技术进行特殊场景下的优化、调整或扩展(二次开发)。

如果只保持在这个技术水平阶段,你也许只能做企业中的一个螺丝钉,永远无法真正创造出属于自己的辉煌,再多的经验,也都只是“水平进步”。

以运维行业为例,笔者见到的情况是,中级阶段的运维人员最多,高级阶段的工作很多是由研发人员负责的,至于从 0 到 1这个阶段,只是传说了……

【注】:高级阶段大多由研发团队负责,主要是因为目前国内的运维人员普遍缺乏编程基础,进行这个阶段的学习成本太高,很多人都放弃了。但掌握技术的原理更有利于运维进行技术排障、提高工作效率。而二次开发的工作,更适合了解业务逻辑的运维人员进行。

【不要急于求成】:

笔者总结自己的职业生涯,认为自己犯过两个痛心疾首的错误,分享给大家,希望朋友们能引以为戒!

(1)不要盲目选择一个看起来入门更容易的领域

在选择前,一定要问问自己,你真的了解这个领域么?

别让入门容易成为你选择的理由,因为入门更容易,往往意味着“学精”更困难,要提前做好这个准备,不要掉以轻心。

况且,不管什么工作,最终想要做好,都会经历很多困难,如果这么看,入门是否容易、其实并不是最重要的。

(2)你内心里,真正喜欢的是哪个领域

你的喜好不会决定你未来达到的高度,但它可以让你未来的成长更加轻松。

如果可以选择,希望你能选择一门你真心喜欢的技术领域,因为在未来很长的时间里,你可能都需要每天去面对它。

如果你别无选择,那么就尝试让自己爱上你不得不选择的领域。

【分享下笔者的经历】:

笔者职业生涯早期一直是在开发领域挣扎求生,但是因为基础知识并不扎实,工作做的磕磕绊绊,一直不是很顺利,最后感觉运维的门槛比较低,下狠心转到了这个领域。

当时抱着的信念就是“宁为鸡头不为凤尾”,在开发领域总觉得自己基础不好,进步不大,到了这个技术门槛比较低的领域,总能混的不错吧?

起初确实如笔者想象的,那时候的国内运维领域还不太成规模,对于这个职位的规划大家都没什么经验,笔者这样有一定开发基础的人很受欢迎,终于体验了一把“抢手”的感觉。并且在工作本身方面,也没有做开发时那么多技术壁垒,感觉学习新的技术没太大难度,无非就是配置不同的应用软件、检查下日志错误、调整下Linux 系统几个优化参数。

在那段自我感觉良好的日子里,笔者跳槽了不少次,每次都能获得不菲的工资提升,在不同的环境下学到了很多不同的技术,甚至有点飘飘然的膨胀。

直到大概 13 年左右的一次面试,终于笔者受到当头暴击,意识到自己的浅薄……

当时是去一家国内顶级的大公司面试,那几年顺风顺水的职业生涯让笔者萌生了进入巨头企业的想法。在自我介绍的时候笔者滔滔不绝的介绍这些年服务过的不同领域、使用过的诸多技术,试图证明自己的价值,但面试官听完后问了几个问题,让笔者冷汗直流。

“你了解 keepalived 使用的 vrrp 协议么?”

“能讲解下 nginx reload 的处理流程么?”

“熟悉 squid 的内存管理机制么?”

“讲讲 ext3 文件系统的数据块寻址”

不会、不会、全都不会……当时大概问了 4、5 个问题,其中有一两个笔者只是模糊的听过,剩下的完全没有了解过……

浑浑噩噩的低落了一个多月,起初笔者也私下疯狂吐槽,只是做个运维好不好,用的到那些知识嘛?完全不接地气、显呗自己水平高啊……

但后来待自己心平气和下来后,终于明白了一点,以前的自己太过于肤浅,一直只是“水平进步”,完全没有正视自己所从事的“运维”这个职业,有些弱智的认为会用主流应用软件、具备处理故障的经验,就是一个好的运维……

就像上文总结的,笔者过于轻率就进入了一个自己不熟悉的领域、并且简单的认为这个领域门槛很低,能够轻易获得成功。从来没有真正思考过,自己的职业生涯要怎么规划、知识体系要怎么建立,笔者的失败,是自然规律。

【结束语】:

笔者当前也只是处在“从 1 到 n”的水平进步阶段,因为前些年的肤浅发展,错过了知识储备的黄金时段,浪费了好多时间,现在也只能尽力弥补,希望能够亡羊补牢。

每每想起这些,真的是痛彻心扉,因此愈发的希望有缘看到这篇文章的朋友们,一定要慎重的规划自己的职业生涯,坚持、正确的建立自己的知识体系,不要满足于“水平提高”,一定要尝试“从 0 到 1”的“垂直提高”!

下次有机会笔者会将自己曾经在建立知识体系时候犯过的错误也分享出来,希望能给朋友们做个反面典型。