程序员的持续学习
写了好几年的技术博客也没什么意思,一个程序员处在激烈变化的经济社会中“两耳不闻窗外事,一心只读圣贤书”是短视行为。万般皆下品唯有 CS 高也是错误的观念。工作三两年来发觉努力读书(程序书)提高算法能力、底层能力好似无边无际,甚至有时候又绝望至极。
算法能力
在脉脉经常看到各种类型的开发调侃自己是 curd boy、sql boy/girl 等等,那么终端开发又是什么呢?我在美团业务部门写了两年业务,对终端业务开发来说就是搭界面和维护祖传代码不要出问题。工作了之后才知道原来有段时间的产品背后的代码一定是很混乱的,程度不一而已。脉脉上看到有人说手q 的 iOS 代码是“屎山”,到底有没有那么不堪呢?我想大概是没有,但也肯定好不到哪里去。现在还在维护手q 代码的工程师可能是九代目或者十代目了甚至还不止,哈哈哈。或许可以说我是不懂算法,没用过算法的 low b。但事实就是这样,没那么多算法工作给普通开发做,无论前端、后端。非要说咱们不懂算法是不客观的,无论是 FPGA 上的 VHDL 还是数字图像处理里的 MATLAB 咱们都是做过的。
https://github.com/SeanChense/DigitalClock FPGA,三八译码 级联计数等
https://github.com/SeanChense/ImageProcessing_16C 图像处理,普通的空域、频域处理还是不在话下
这些东西丝毫不比什么 LRU、排序弱,图像处理里面的数学证明复杂度恐怕要略胜一筹。
底层能力
挖掘底层这块儿,更令人绝望。llvm、编译器、汇编、内存布局这些确实很复杂,况且长期在业务线上做开发的同学对这些更没机会实践和学习,两者工作时间长了之后越拉越远。当你吭哧吭哧啃了一点下来发现有无数大神走在你的前面,自己学的那点儿根本不够看。手淘的 wuziqi 就是个典型,大神。当然在他世界里,他也觉得比他强的大神大有人在。人外有人,天外有天。一个程序员要学习到什么地步才可以停下脚步或者放慢脚步呢?这种想法或许政治不正确,因为不是持续学习,呵呵。换种问法,一个程序员需要深入底层到什么地步才会面对更强的人不会觉得那么苍白无力呢?能否在年纪大之前学到独孤求败的地步?
看到一个更为”无敌“的逻辑,哈哈哈哈《既然做开发 35 岁劝退,为什么还要拼命学习编程知识》 https://v2ex.com/t/593552#reply34
事情是这样的,我今天下午在某电商挑几本技术书,准备下单,然后被我一个同事看到了 他跟我说,平时上班已经够累了,为什么下班了还要继续看书。而且,作为一个 35 岁大概率被劝退的职业,为什么还要继续看这个行业的书。 不如趁早开始布局以后你想转的行业,去学习,等到 35 岁以后就可以从容的转行了
持续学习和 35 岁
毕业 24 岁到 27、28 岁或许是一个程序员的黄金年龄,越过这条线就要面临结婚生子尤其是带孩子的问题。如果让妻子脱产、全职带孩子是很危险的,35 岁就压力大到自杀就是这么来的。个人杠杆加到最高,另一半还不工作,修福报修到 35 就面临最大的危机。个人认为,除非真的很富否则不要让另一半脱产,风险太大。持续学习还面临一个学习回报率的问题,如同上面两小节阐述的那样,持续攻坚一来不好学二来实际投产的比例又太低,学来干什么呢?
看到很多牛人在阿里这样的大厂也努力工作努力学习,天天修福报到十点、十一点。看起来很美好?但这不是我想要的生活。不想明明都那么强了,还要加班到十点,要不然变强的意义是什么?意义是我可以从加班到十点的彩笔变成加班到十点的牛人?No, I don’t want this.
最近还看到逆向圈里狗哥分析的一段:http://iosre.com/t/ios/15369/7
说说我的想法哈。国内纯移动互联网开发红利已经耗尽,单纯的App开发行业增长乏力,无论是正向还是逆向,如果无法成为那10%,个人成长的瓶颈就是肉眼可见的,很可能沦为螺丝钉,单纯卖力气;在这个背景下,无论是选择1还是2,预期都不要太高,尤其是不要跟移动互联网泡沫最旺盛时的14、15年作比较,否则心态很容易失衡。当下的工资够生活,够还房贷,就好了;要想赚钱,还得等下一波大势。
回到你当前的处境,对于选择1来说,好处是大厂App开发岗位相对稳定,办事流程相对正规,薪资也相对符合预期,缺点是现在的大厂App开发普遍已经开始把精力放到长尾功能/优化上,往往需要投入95%的精力来完成5%的优化,这些优化在商业场景上不一定适用于其他App;更重要的是,在一个已经结束的浪潮中投入95%的精力,有可能因为精力不够集中而错过下一波浪潮。这是我为什么没有选择这条路的核心原因。
没错,95% 的精力带来 5% 的优化。落到个人也是 95% 的学习,5% 的提升。投资回报比太低,还有不小的选择成本。何为选择成本?就如同狗哥说的“有可能因为精力不够集中而错过下一波浪潮”。在这里,我还要提一个观点就是知识的有效期
知识的有效期
辛辛苦苦学来的知识可能是有有效期的,不保持持续的学习,之前投入的时间等于白费。这个问题虽然没太严重,但也是不可忽视的。曾经接触过两个九十年代就在北邮学习计算机的老板,其中有个在九十年代就在写汇编,后来历任电信、腾讯、移动中管;另一个,写程序写到现在,在他手下他教会了我挺多东西。写汇编的老板,现在再看 x86 arm64 汇编也是看不懂了。同时,这两人的财富谁多谁少不言而明。做毕设的时候我的老师让我用 powerbuild 写,我到现在也不知道这是个啥,当然我也没用他说的这个。
当年做塞班的都作鸟兽散,多半都做 iOS 或者安卓了。这可以看做是知识灵活挪用,event-driven 的交互引擎本质还是没变,换个平台、语言而已。但是,要说塞班的开发者没花丝毫力气就会 iOS 或者安卓了那是不切实际的。知识通用也仅限于让你知道 iOS 大概是怎么回事,还需要花费大概百倍于此的时间来达到 iOS 中级、高级开发。
大厂的晋升和转管理
先说晋升,在低p 范围内晋升没啥好说的,有能力、有业绩者进。到了高p 呢?在阿里每人都能 p7、p8、p9 挨个儿往上升?就算是客观条件允许,马云都不答应,金字塔模型怎么到程序行业就打破了?不可能的。在低p 晋升时难免也有瓶颈,这个瓶颈会是 ppt、汇报能力、人脉、运气、团队因素中任何一个,且都不是只读圣贤之书就能解决的。很多人会陷入一种朴素但不符合实际的陷阱中,即认为:越深入底层就越能晋升到高级别就越不容易替代。这个道理太朴素以至于不能贴合拥有无穷变量、无穷规则的现实世界。
再说管理。我认为管理的坑位比较少。按一个小领导带十个人来看,那么每 11 个人里就有 10 个人当不上领导。而且,当上领导也不是高枕无忧。要给团队抢资源,小领导还有上面的大领导,继续回到斗争主循环,也摆脱不了失业的危险。
不管是晋升到高p,还是领导我们可以称之为比较高阶的岗位,由于金字塔模型的存在,越高端岗位数量越少。一个萝卜一个坑,别人不退,你如何补缺?
而且,不少高p,中小领导也没有摆脱加班的魔咒,这是变强的意义吗?更极端一点,有的高p,领导可能就是来得早机遇好跟着团队一起成长了。而你可能并没有这个机会了。
变局
那么做什么可以改变这个困局呢?
打工是打不了一辈子的
我目前觉得炒股就是一个法子,让肉体脱离体力劳动,让资金去挣钱。
别的不多说了,免得以为是荐股的,呵呵。