年轻只是爱构建

Kaffa 发布于

分类: 数智 标签: software-building

锤子找钉子

本文探讨的结构很简单,即大家常说过的:手里握着锤子,看什么都是钉子。

很多人好奇新技术,学习新技术,验证学习的新技术时,便会使用新技术构建很多已构建的成熟软件。然而,如果新构建并未获得相比旧构建有比较优势的制品时,就命中了上述结构:手里握着锤子,眼里都是钉子。

值得注意的是,现实中的“钉子”们存在很多细微的差异,比如有很多类似钉子的东西,其实是螺丝和针。锤子对付螺丝和针,也不是不行,但算不上好用。

软件开发

上述是偏软件工程的叙述,换算为软件开发领域的表述就是:

  1. 掌握了一种编程语言则认为该编程语言适合开发任何软件。
  2. 掌握了一种数据软件则认为该数据软件适合开发任何软件。
  3. 掌握了一种操作系统则认为该操作系统适合开发任何软件。
  4. 掌握了一种编程框架则认为该编程框架适合开发任何软件。

任何代码都是成本

一些代码是业务规则,但任何代码的一面至少都是成本,它需要有人开发、有人测试、有人维护(重构、升级)。

并不是任何软件都值得构建,但我非常理解那些掌握了新技术的年轻工程师,毕竟年轻只是爱构建,很少问为什么。

但只要稍稍有十年经历,一旦有机会维护十年前的代码时,就能理解这里在说什么。

如果可以不修改别人代码,较为便利地实现业务目的时,就不要修改别人代码。

如果需要修改别人代码的逻辑,最好完整地、采用非耦合地方式利用软件,然后才是依赖开发框架,最后是第三发库。

你几乎很难找到长达十年维护的非知名软件,所以,当需要在长期使用的软件中引入一个依赖时,要万分小心,此时有两种考虑:一,慢慢地自己研发;二、如果能看懂源码且源码对个人来说有可维护性时,再审慎依赖。

绝大多数的构建都是无意义的

从五年的长度去看,绝大多数的构建都是无意义。公司活不过五年,五年后技术更新了,你的主要依赖升级了,你的第三方依赖更新了或下线了。公共领域已经有非常多且功能不错的软件,继续构建的大多软件都没有明显存在的理由。

然而,年轻总是爱构建,当审视自身,年轻时也总是会做很多别人眼里无意义的事,这些别人眼里的无意义对当事人来说其实挺重要。

这也许是张颂文老师《灿烂的花园》中说的,去 “创造阅历” 。在第二集中,颂文听见了烟花,这种生活的好奇心来了,让他骑上三轮车在乌漆嘛黑的夜里出发,朝着“烟花”的方向出发,最后除了一路颠簸,只有伸手不见五指的乡路,众人折返,一无所获。然后就是这种看似无意义的行为,构成了一行人人生难忘的花园经历。

所以

在这个内卷时代,现实让人不停提升经济环境效率,将社会推向充分竞争,竞争并非是缺点,但过度后就属于恶性竞争,产生内耗。在这个最好的年代,尤其更要注重和鼓励探索,竞争可以获得生存的机会,但在良性竞争下鼓励探索才能孕育变革,如 OpenAI 技术栈的诞生,靠的是八年的投入、几十亿美金的投资、软件研发的探索。在技术发展到数量级瓶颈时,这些关键的变革一旦成立,几乎决定的就是跨领域的恒久成立的国家竞争优势。