未完待续

已经好久没有更新博客了。因为的确有将近一年时间停止学习了。之前断断续续会有人通过邮箱找到我,都是看了我博客而来的,令我很意外。一直以来我的想法都是这是个自说自话的地方,没假设过任何读者,所以都是一些学习笔记,也没有搞任何评论区或互动。知道我的博客原来是有人看的,让我感觉还是有必要坚持更新下去的。另一个原因是感觉程序员持续学习确实很有必要,接下来还是会有一些产出,但更希望不是笔记,而是记录自己的想法吧。

再说点废话,今年是进入工作第四个年头了,维护这个博客也有3个年头,再看会之前的自己的笔记,再回想这几年的工作经历,从原来的web程序员,后来转行java,到现在怎么说也在国内一流互联网公司工作,还是有进步,有成长的。但冷静客观的想,有多少成长来自工作经验的自然累积,有多少成长来自“自我奋斗”。我的判断是,我还没有本质的提升的。这是最近困扰我的问题。

之前的文章都是在广州、上海写成的,写这篇文章时,我在一个新的城市,杭州。

这段时间

去年四月份,饿了么被阿里巴巴收购。我原来正准备面试阿里的一些部门,突然被告知两年内不允许人员流动,我瞬间感觉没有了方向。当时我的目标一直是进阿里。进BAT,这也是我入行初期给自己的一个目标(事实证明这很幼稚)。过了两个月,突然被告知有内部转岗至淘宝的机会,又重燃希望。在很短的时间内准备面试,面试,通过。于是又等了两个月,离开老东家,离开饿了么,在八月底,来到杭州。

我来到淘宝交易,一个纯的业务开发团队:做交易的需求,但交易系统却是别人的 – 意思是要在别人的系统写业务逻辑,但系统的维护,重构,领域建模都与你无关。这是更加纯粹的搬砖工角色。在淘宝的竞争环境也激烈的多,这是在一个高度竞争的行业(电商),一家已经高度发展的公司,我在的是一个最传统古老的部门。这意味着机会不多,有也是内部各个部门瓜分、内耗,真正能做出成绩是难上加难。我在这里工作,一直至今。

可以看到,一直以来都将进某某公司当做我的短期目标,这个想法现在被证明是非常错误。个人成长是事业发展的主线任务,也是没有终点的一个目标。但这个目标不应该用薪水、级别、公司等身外之物来衡量,追求这类目标会让人越来越浮躁。真正的成长应该是可以自省,可以自觉的,它来自个人能力的提高,思考层次的提升,心性境界的提升。

好累好焦虑

最近都在聊996。我在最近半年另一个比较强烈的一个感悟是:在此时此地,没有work life balance一说。如果想要追求工作与生活平衡,反而会让自己痛苦。因为身边的人都在拼命,想置身事外,反而会成为别人完成KPI的工具。最后,时间上没有减少多少,反而会因为忙的都是别人的KPI,让自己更加累。所以说被人驱动不如自我驱动。

work life balance,这说法在中国是完全的奢侈品。能不能用money & living trade off思考?是要钱还是要生活,对于普通人而言,两者恐怕必须舍其一。我不是天才,和我竞争的人也不是天才,我有时候觉得人与人之间的竞争格局其实落后得很:这是在比谁的私人时间更不值钱吗?没错,精力,意志力,时间投入,这是竞争的门槛。门槛保证了,才能谈个人能力,思考格局。

当然,这事情总有优化空间,例如,高效的学习和干活,把琐碎的小事更高效的处理,腾出更多时间留给思考,同样重要。

瓶颈与突破

其实编程不是一个知识密集型的行业,很多工作三四年的人干的事,一个刚毕业的人也可以干。有很多的5年经验,其实是1年经验 x 5,这是很多人焦虑的来源。

程序员是个早熟的行业,在前几年薪水会迅速提升,到20 - 30k左右到达瓶颈,这是很多大厂程序员都会自然而然的达到的。然后会进入这样的处境:觉得手头上的工作没有突破,没意思,不再能从完成工作本身获得提升,然后找不到提升自己的方法。这也是我目前的处境。

为什么会落入这样的处境?因为不加思考的干活,能获得的只有熟练度,而熟练度只能让人变成一个熟练工,一个熟练工的价值很低。

向上思考,认知升级,预判形势,打提前量,很多营销文针对这种焦虑情绪给出很多说法,但实际上有指导意义的没几个。想要提升和突破,唯一的方法是思考。思考是件痛苦的事。有句鸡汤句子:多数人为了逃避真正的思考,愿意做任何事情。其实我们是被教育成这样的,9年义务教育+3年高中教育,掌握最多的是知识的背诵和积累,唯一做过的思考也就是归纳答题技巧,“用背诵获得勤劳感与学习感,代替真正的思考”。直到工作后,这样的习惯依然存在,尤其是在程序员同行,大部分程序员面试题是靠死记硬背应付的,这样面试能挑选出什么样的人?

对于思考的方法论,我说不出个一二三,也判断不了这是件靠天赋居多还是可以联系获得的技能。有一些critical thinking的书说的很不错,可以参考。如果要让我笼统的说一点,我认为:对一个领域,提出一系列关键的问题,最重要,然后尝试回答它。在回答这些问题的过程中,形成自己的判断,这是思考的目的。任何人的判断都不能保证正确,它可以被修正,可以被推翻,足够审慎的判断足够多时,会演化出自己的思考素材,知识架构,三观,哲学。

一点学习计划

先看看job model?业务开发的路线应该是业务架构师,可以将能力拆分为这几块:项目管理 + 架构能力 + 业务理解能力。项目管理能力只能在工作中学习和锻炼,后两者可简称为技术+业务。

业务上的能力可以分成两个阶段,1. 熟悉和理解;2. 思考和判断,对于前者,需要工作上的踩坑 + 硬啃,这部分应该没有捷径可言。前者的阶段,我理解只是高级熟练工水平(P7),虽然当一个业务领域足够复杂时,这种深度理解仍然有不可替代性。对于后者,最困难的地方是将自己的思考和判断输出,是技术方向?从下而上发起的项目?还是输出为架构演进的依据?这些问题仍然在摸索,所以也难以列出一二三点来。

技术上的学习倒是简单一点:架构能力 + 抽象能力 + 跟上技术潮流,具体的目标应该是:

  • 架构能力:之前有了解和简单应用过DDD,可以再精进。目前所在的领域是比之前复杂得多的领域,这里面的解法也可以学习下。包括TOGAF,一些公司内部治理业务复杂度的框架。最后当然是希望能参与较高复杂度的平台 / 业务系统的架构设计。
  • 抽象能力:1. 在日常需求中,掌握业务需求 -> 产品需求 -> 系统需求的转换抽象方法。码农不想当搬砖工,那么就应该将需求看成业务系统演进的输入。2. 多做向上思考。
  • 跟上技术潮流 & 技术广度。包括:1. 分布式系统再学习下,形成知识结构;2. AI & 机器学习的入门;3. 运维知识:容器化 & kubernate。

最重要的一点放在最后:保持思考。工作中的思考,在上面已经说了。至于平时,非要说一个具体的action的话,应该是多看点非技术类的书吧。

其实平时的学习更像是累积,所有的成果都应该变成提升工作产出,放在工作中检验,驱动工作中一些个人发展的正循环。

最后

工作生活和打怪升级差不多,越升级,升级越难。前几年很多决定,我的想法都是:和更优秀的人合作和竞争,看看自己能干成什么样。慢慢的也看到自己的短板和局限,但既然是自己吹下的牛逼,还是拼一下命尝试实现它们吧。

Updated: