软件随笔 - 2022年的我们

By @Bing 写于2023-01-22

理杏仁今年七岁了,他承载了我当程序员时候的梦——好代码、好产品,让我至今感到快乐,并引以为豪。

2006年我初生牛犊,通过反编译软件跟踪调试了当时.NET下的几乎所有Web组件,研究了一款称之为MagicAjax的开源框架,觉得自己内力大涨,看清了.NET的技术框架本质,还写了自己的一套基于.NET的ajax框架——WediaAjax,基础思路沿用的MagicAjax,但做了大量改良,性能和使用方便程度上达到了我当时认为的最优解。那个时候20岁不到的我,免不了年轻气盛,当时就在博客园上和一大V吵了起来,指责他“误导他人”。这哥们叫什么想不起来了,但人家很快成为了微软的VP,我去了北京谋得了自己的第一份正式工作,我很快发现自己当时对于道德的认知水平之低而感到可笑。

后来去了一家公司,记得程序员里的老大jack当时骂另外一个资深程序员,印象深刻,大意是,“你特么写的什么烂代码?编译器原理看过吗?就敢这样写?”我当时一脸懵逼,只觉得他很牛逼。时至今日我也没有系统看过编译器原理,说实话,蛮期待有机会被jack这样骂。2012年去纽约出差的时候,当时后端用的一个调试软件出了错误,我这个问题报给jack,jack说,“自己看看,不就是一点js问题吗?这都不会吗?”我当时有点委屈,来公司三年多了,我做的东西都是flash集成,从来不涉及到你们后端的这套东西,我本地环境估计启动都是个大问题,更别说调试了。然后我就去看怎么解决问题,自然,想修复没那么容易。过了一会儿,jack给我发了条消息,“我处理掉了,已经上线了,你刷新下。”估计是他嫌我处理的速度太慢了。中午吃饭的时候,jack叫了一下我,心里有些感动。

回北京之前,jack例行公事地请我吃饭,在一家餐厅里,看到菜单时满头雾水,根本不知道是啥,我说,“这样吧,每个系列餐里我选名字最短的那个。”几个同事马上笑了起来,jack看上去很高兴,他说:“好主意。做任何一件事,不管是好是坏,可执行才是基础。”这句话,我后来越想越觉得有道理,终生受益。

回来后过了两年,便开始写理杏仁的雏形,一写便七年。我想理杏仁大概率会做一辈子,而我这人比较胆小,总是担心会出什么事情,于是2020年来武汉,建立了自己的数据清洗平台,2021年找中介把最后一个资格证办了下来,2022年底把图形商标的最后几个证也拿了下来。

2021年初那会认为自己都快走上人生巅峰,结果2022年底跟搭档总结的时候说“到2023年底,争取达到最低每个月xx收入,在武汉不减员不减工资,我们维持一个最低生活保障的情况下,让公司得以续存下去。”特么过了七年,感觉又回到了创业最开始的那段日子,不同的是,没有了当初的那份焦躁,取而代之的是船到桥头自然直的顺应。不过我还是低了头,给员工说,“作为程序员,我是高兴的,写出了自己认可的一个优秀的产品;但作为老板,却是有些不合格的。”

人生时局,蹉跎变化,真的很难说一时好,一时差。好在我们过去赚了一些钱,也没有乱花什么钱,2021年和2022年这两年我们都扛了下来,也还留了一些给未来,如果2021年初扩张太快,估计现在也歇菜了。当初发展熠熠生辉的火球网的同事,却是去了就很难回头了。老大哥说,“人啊,得明白自己几斤几两,该退的时候一定要退。不过,本来就不知道自己怎么上去的,估计很难明白自己什么时候该下。”当时以为听懂了老大哥这句话,后来才发现没懂,因为我重仓买的一只股票赚了4倍多没有出,很快便跌去了75%。

2019年我们花了一整年时间完成了从angluar到vue2的整个升级,这次整个前端框架调整不得不完全重写前端代码;2022年我们投入整个公司的人力花了足足三月完成了从vue2到vue3的升级,我们没做兼容式升级,而是直接匹配最新特性,并做了大量重构和优化;随后又花费了一个月时间用core-js替换了整个网站的lodash,还有node的升级。

重构这事儿,以前打工的时候是最讨厌的,典型的吃力不讨好,因为老板看不到,而花费的时间却是巨大的。给自己打工的时候,心态就完全不一样了,新的项目和工程给搭档去做,因为他们受限制小,可以发挥自己最大的能动力;而我却最喜欢重构,这样可以慢慢把过去软件中的各类毒瘤给一个个清除干净,这有利于公司的长远发展。而很多软件在发展过程中,程序员往往力求责任最小化,输出最大化,这样导致的一个必然结果就是软件越发庞大臃肿。在企业成长过程中,这些都不是问题,毕竟有增量,更多的人以及更多的资源,意味着更大的能力;而当增量消失后,软件自身的维护成本相对值大幅提升,成为公司最为头疼的事儿,执行层往往会给出“不如重做”这种让老板下不了台的建议。想到后来经济学家狠狠批评罗斯福新政,指责他掩盖了问题导致经济失去一次重构的机会;人类社会几次重大变革,也推进了整体向着更高层级的模式发展,反而在整体变革中得以延续的结构却不可避免地走向衰败。它们似乎也是同样的道理。

代码越写就越觉得以前的代码写的烂,也越能看清什么是优秀的代码。第一个层次的人逻辑严密,写出来的东西少有bug;第二个层次的人代码如行云流水,函数不多一个参数也不少一个参数,能在阅读的过程中脑子里形成一幅图;第三个层次的人能看明白代码的趋势,做出最明智的选择。

理杏仁越做越发觉得开源世界的NB,它提供了一个通道可以让想学习的人持续打怪升级,渐渐摆脱自身阶层束缚;它提供了一个自由竞争的环境,让优秀的头脑能够脱颖而出;它提供了一个合作模式,让互不相识的人一起做一件事情,并避免大家重复造轮子。我想如果社会也按照这个模式去改造,应该是个很好的方向。

2022年,最烦躁的时候请教了下老大哥,老大哥给提了几句建议,最后我跟夫人说,我无条件听从老大哥的,因为他比我聪明太多。

2022年,从来没有对“历史的尘埃对普通人的影响”具有如此深刻的感受,那些过去的人,过去的事儿,不会再回来,但我不会忘记。好在,我还是幸运的。

祝大家新年快乐。

上篇:产品、代码及投资 — 产品篇