大家好,我姓陈,名伟,今年二十八岁,目前在一家中型互联网公司负责前端架构。平时喜爱喝点冰美式,周末总爱窝在沙发上啃那种硬皮面包,要么去河边发呆看蚂蚁搬家。

那会儿做过电商后端,目前转行做前端,认定做页面就像在搭积木,但搭好后想想又能拆掉重来,这种循环往复的感觉,瞬间就把人那种“为了生存而工作的焦虑”给磨没了。 想当年大二那会儿,我也沉迷于在 GitHub 上写一堆 CRUD 模板,那时候认定反正代码能跑就行,数据没啥意义,结局后来搞到那个数据仓库项目,才发现原来数据价值连大马都撼不动。记得有个深夜调试图标的经历,我为了优化一个 SVG 路径,在 VS Code 里开了十个终端窗口,改了一百遍 CSS 样式的间距,最终发现浏览器渲染引擎根本不理睬那些超精细的像素计算,直接直接直接地直接……直接直接直接地直接直接直接地把图片加载进内存。

那一刻确实悟了,所有的算法和工程优化,本质上都是给浏览器去除了那些它本来就不该存有的冗余,哪怕它只慢了一毫秒。 后来转进互联网行业,遇到了大量不忒一样的案子。上次做某个高并发系统的压测,我原本当作只要把线程池调大就行,结局压到峰值时,发现数据库连接池的等待工夫直接拉到了 400 毫秒,服务器 CPU 也跑红了。我把所有的指标都盯着,最终发现是缓存层和数据库交互之间有个怪的时序难题,缓存里的数据没过期,直接被主从同步卡住了。

那天晚上我坐在机房里,从凌晨两点熬到五点,把整个逻辑链从头到尾重新梳理了一遍,最终发现是中间有一层中介组件,它的响应速度忒慢,直接把调用链给堵死了。

那一刻才意识到,技术不是堆参数,而是理顺关系。 在学术圈混了几年的下来,我发现学术论文有时候写得忒像教科书,这就有点枯燥了。

那会儿我写论文一直要先列个大纲,再按部就班地写,生怕漏了哪个地方。

后来才明白,论文就像聊天,有铺垫,有转折,也有留白。

有时候几句话就能把难题说到点子上,有时候一串数据就能推翻一个结论。

比如在做用户体验研究的那个项目,我一启动就打算做深入的访谈,结局发现访谈的话聊了两小时,数据还是不够用。便我就改主意,找了一批不同的用户,让他们在真的场景里做操作,收集到的数据多了大量,并且真场景下的表现往往比题库里预演出来的要好得多。 我也教过几个实习生,刚启动总想让他们按公式去解题,结局大家都认定自己懂了,做出来的东西却漏洞百出。

后来我自己也总结了一套经验,就是告诉他们,代码是死的,人是有感情的。在做系统重构时,最忌讳的就是闭门造车,好办被自己脑子里的假设带偏。

故此我会提前找几组类似项目标老员工聊聊,听听他们的心路历程,有时候他们的一句“实际上那样做挺合理的”,就能帮我省好多冤枉钱。 如何才算一个合格的程序员?我认定大约得有两点:一是代码写得漂亮,二是心里能装得下如此多杂事。我不喜爱那些复杂的样板代码,哪怕是为了省事,也不会故意写那种能跑就行但维护性极差的东西。

比如那会儿那个老项目,每次部署都要半天,我就想,能不能把那些重复的模板取出来,做成一个通用的组件库。结局最终发现,隔行如隔山,别看能写出来,但修改起来也挺费事。

后来干脆自己写了一套,别看看着好办,但修改起来挺快,大家上手也快。 最终想说的是,做科研和做工程,最大的区别就在于心态。科研好办陷入对“对性”的执念,认定只要结局对就行;而工程更看重解决实际难题的本事。

有时候我认定自己有点“偏执”,总认定找不到那个完美的解法,总认定还有优化的空间。但正是这种不知足,让我能在项目中不断挖掘新的功能,创造新的体验。

实际上大量时候,所谓的“完美”,不过是接纳不完美的过程,接纳不完美的结局,然后在平凡的日子里,把那些微不足道的细节一点点拼凑起来。 哈哈,可能话就说到这了。毕竟目前这个年纪,还要面对各种各样的挑战和不确定性,每天也都是个“大”字辈。

不过好在,凑合过,也折腾过,也算没白活。希望未来的日子里,能持续在这样的项目里,持续折腾下去,哪怕只是做点小事,也能有点成就感。谢谢大家,我是陈伟,咱们下回见。