码农与画家

又想起了那本《黑客与画家》

最近总是想起这个书名,多年前在图灵社区购买的电子本,对于当时的自己来说感觉有些不适用,以至于内容忘记的差不多了,仅仅是书名让人感觉非常酷。写该文的时候又去翻阅了下,感觉有些东西还是很有趣的,有时间应该重读下。

过往的自己,手上大多是工具书,应用相关的,希望通过书中的介绍知道一个个技术的细节,感觉每看一页都是收获满满,对于《黑客与画家》这样非直观的技术呈现显得不感兴趣。

现在的自己,愿意通过源码去寻找技术细节(也是拜这些年 github 等社区带来的便利),更多是希望知道那些技术大师如何思考、如何设计程序、如何架构系统,需要更多其它的信息来构建自己的认知体系。为什么这样做这是怎么做显得更加重要,为什么是因,怎么是果。

最近在给团队里年轻同事做培训或 Code Review 的时候也是感触良多,总是想起过去的自己,脑子中又闪现出了,码农与程序猿

业务总是无穷尽

这是一件好事情,正因为如此我们才得以有工作,有收入养活自己和家人。

过去的自己经常觉得上面分配下来的任务能合理规划时间,在预定的时间内完成是件非常了不起的事情,显示出自己的诚实有信,当然这条是永远不会过时的职场优点,也会让别人愿意和你合作。不过,当我们放下脚步,去细细询问一些细节,比如究竟是什么让你如此高效的话,一些坏味道会浮现上来,比如:

  • 新的业务需求,新的 if-else 判断
  • 相似的功能点,重复的 Ctrl + CCtrl + V
  • 不断横向扩展的方法入参
    ……

野蛮生长的代码往后或许会给别人,让 TA 们继续野蛮,而自己可能也习惯了简单粗暴的方式,在业务中“乐此不疲”,一年到头除了业务知识的长进和一些细枝末节的技术知识(比如,“远古时期”如何兼容各 IE 版本的样式,现在好了微软要结束对 IE 的支持了),对那些涌现的新技术,再也学不动了。似乎转产品、转管理是唯一的出路,因为之前创过业,做产品考虑的问题不比技术少,头发也是一把把掉;现在做点管理,同样要考虑很多,对上要规划和争取、对下要安抚和培养,反而做技术乐得自在,无非就是多学习,最后都是自己的财富。

大多是平庸的

除了少数悟性高、脚踏实地、心智成熟的人之外,大部分都是平庸的。专业能力的提升需要悟性,把知识转化为产品需要脚踏实地的去做,团队协作、把东西做大做强需要心智成熟。我没有把天才列在上述 3 大特点之内,历史的长河中,自命不凡的天才都死的太早,而且大多自己作死。我自己也有时懊恼为什么之前要去和朋友创业,如果安心工作,也许又是一番风景了。应该和自己的平庸做妥协,这样也会顺理成章的接受他人的平庸,相互善待,摆正好心态,不管结果如何至少过程会让自己愉悦点,不能总说阿 Q 精神总是一无是处的。

油画总是涂了一层又一层

一个公司真正赚钱的业务线就那么几条,能做架构的也就那么些人,大部分是平庸无聊又被无尽业务业务淹没的码农,似乎能一眼望到老。

陈旧的老系统、他人的神奇代码,你不得不必须花大量的精力去和它们搏斗,日复一日的耗尽你一切,一不小心就被吞噬,这些远没有新需求、新系统来的香,你可以安心的饲养自己的怪兽。过去的自己也极其喜欢这为所欲为的状态,但是我并没有好的悟性,无法凭空在纯净的土壤中生出“花”来,不断做新的,学习新的东西只是徒增了一些快乐,成长总是伴随着痛苦的迭代,和过去的自己持续搏斗,你会

  • 明白为什么会要做这样或那样的修改,去满足时而复杂时而简单的需求
  • 为了能早点下班,只能思考如何偷懒,有点被多方胁迫的感觉,尝试一些设计,去满足不同业务变化,各类设计模式和编程模型会出现在项目的各个角落
  • 好的继续保持,坏的用别的替换或组合着用
  • 代码也时而膨胀,时而精简
  • 系统也经常神经质般的出现一些纰漏
  • 又是为了早点下班,把单元测试、集成测试等等引入进来,尽可能束缚中手上的怪兽

时间长了,你会发现

  • 系统在设计模式和编程模型的加持下,变得有条不紊
  • 需求的变换,无非就是对一些模块更迭,不同的模块组合又能实现新的需求
  • 想想各类 UI 组件库、插件机制、中间件机制等,无非就是处理了一些场景(其实也是业务)的抽象需求
  • 而我们自己将业务中的点点滴滴汇集起来,不也就是属于自己的一套编程经验了吗,并没有那么多的不同
  • 当你在感叹第三方类库彬彬有礼的时候,是否也察觉自己也把手上的系统变得礼貌了许多呢

“简历上如何才能体现亮点”

| 这是在做培训的时候,一个实习生问的。

作为一个快要毕业的研究生来说,比起我这个低学历的“老年人”来说已经是极大的亮点了。平时也给她做了不少培训,影印了不少资料,但是真的能运用到工作中的还是有限的,倒不是她不努力,只是经验尚浅,不知道该如何运用,还需要更多重复在一张纸上画画,这不是教出来而是练出来,并自己总结悟出来的。那些流行度极广的框架或类库都是把“垃圾”工作有效的整理和隐藏起来,你只需要“精致”的去运用上层就好。把垃圾转为精致不就是亮点吗?

想要建造罗马城,应该学会砌砖,整个过程需要数年时间。

迭代需要时间,而技术工作的寿命又显得那么短暂,外面的培训机构各类的花式广告标语又在制造一场场焦虑,身边的朋友同学工资早已翻倍,而自己依旧平庸。我也想不出什么好的办法,唯一能做的是持续的画画,不断的画画,一层又一层,把会的分享出去,把困惑和别人探讨,既然平庸更该为下一次机会做好准备。

码农与画家

我想所有的工作都是需要日夜重复,在平庸中找寻突破的,无论是码农还是画家,很多时候是孤独的在和手上的作品搏斗。

上面的东西,最近总是在脑子里出现,最后还是决定写下来。本想写的细点,突出一些重点,但自己并没有什么真本事是列举,大道理都明白,就像很多成功学的书一样,废话多于实操。

对于刚毕业或工作没几年的朋友来说或许是不适用的。而对于像我这样的“老年人”来说反而有闲暇时间去画画了。

Node.js 除了 Cluster 还有 Worker Threads Lighthouse 流程和架构分析

Comments

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×