把代码跑起来之前,我这脑子跟翻书似的,左顾右盼半天,生怕踩到没走过的雷。

有时候想写个函数,一写出来发现卡住了,改改又认定不对劲儿,最终干脆直接甩个 Bug 出来,自己骂骂咧咧自己烦。

后来啊,我试着把脑子里的东西转化成图,看着看着就顺了,那种感觉就像是在画一幅画,线条搭错了立马改,一旦看着顺眼了就顺着画下去。

实际上大量时候,人的思维跟画图一样,都是先画个大约轮廓,一旦落笔就有点舍不得撤走,生怕把整个体系给拆了。 我在写简历的时候发现,大量候选人特别喜爱讲大道理,非要告诉你“起初我们需求……其次我们要……最终实现……"这听着别看逻辑严密,可一听就认定头大。

实际上我也没啥特别大的想法,就想把项目拆解成小块,一块一块地敲,每块都跑通了再说。

有时候为了赶进度,确实会跳过中间那些复杂的环节,直接上黑盒测试,别看不出难题就行,但心里总认定少了点味道。

后来在跟新人交流时,我才意识到,搞技术最大的乐趣实际上就在这“试错”和“重构”之间,就像做饭一样,把调料放错了味道可能全变了,但不放对也没关系,慢慢摸索总能找到那个平衡点。 说到数据,我脑子里有印象就录下来,毕竟历史是最好的教科书,也是最锋利的匕首。记得前两年有个项目,我想统计用户活跃度,先是用 SQL 把表里跑了一遍,结局发现某些特定日期的数据,特别是周末和节假日,竟然呈现出一种怪的波动,既不是线性增长也不是好办的指数翻倍。

这时候我就想到,是不是得换个角度?便我把工夫轴切分了一下,按周、按天、就连按小时来看,结局发现原来那些所谓的“波动”,实际上都是用户批量操作要么系统维护害得的。

那时候我站在办公室里,盯着屏幕上的数字,突然认定代码就像这数据一样,要是只盯着平均值看,挺好办得出毛病的结论。

后来我写了一个小脚本,把那会儿三年的数据都叠在一起画了一遍,那种起伏的波浪图,比任何公式解释都得直观多了,哪怕它看起来有点毛躁,起码能告诉我们真相。 在团队协作里,我也发现过各种各样的沟通方式。有的项目是纯粹的黑盒交付,咱们俩坐在一起,看着代码跑,只要最终结局对就行,中间的过程随意。

有时候我认定这挺好的,效率确实高。但后来有一次遇到个复杂的模块,中间有个逻辑跳了步,害得后续几行代码全错了。我就启动反思,是不是文档没写好?

是不是评审的时候没把细节讲清楚?便我就把自己那段逻辑重新梳理了一遍,写成了个新的子模块,分成了前后两段,每段单独命名,逻辑顺序明确得像个工夫轴。

后来跟团队复盘时,大家说这种“分而治之”的方式确实有用,避免了一次大爆炸,别看最终还得回过头来补那一小块数据接口,但总体流程还是稳当不少。 有时候也会遇到那种看似好办实则深奥的情况。

比如要改个 bug,可能只需求改一行,但上下游依赖忒多,改完发现后面一堆报错,整个链路全断了。

这时候我就得像个侦探一样,哪位也没关系,略微拉个网,看看是哪位的数据不通,是哪位的代码逻辑不对,哪怕中间隔了几天都没关。记得有个项目,出于一个字段的数据类型搞错了,整个统计报表全错了。我当时心里实际上挺慌的,但冷静下来后发现,原来难题出在那段循环逻辑上,要是一启动就把数据类型转换成统一格式,最终根本不用改如此多次。

这道理就像做饭,把食材切得规整点,后面煮起来自然就快了,不用反复折腾。 还有一些时候,我会把自己当成个“观众”,看着项目上的各种代码流转。

有时候认定挺有意思的,就像看一场戏,actor 在台上演戏,观众在台下鼓掌,但不知道戏到底演了没,看完才知道是不是演砸了。

后来我就试着在旁边多问几个难题,要么拉着同事一起看看,有时候发现代码里的某个变量名写错了,要么某个注释没跟上逻辑,这时候才发现原来项目里藏着如此多没被发现的漏洞。

这种时候我就认定自己像个观察者,专门负责把那些看似无涉紧要的细节挑出来,别看挑出来的过程有点累,但看到最终项目跑通的时候,那种成就感是单纯的代码修改根本带不上的。 我也见过有人为了追求完美的代码结构,把项目拆得碎碎/cc,纠结哪块该用哪种语言,哪种库,搞得项目像是一座山一样高,动一下都得小心翼翼。

后来我就跟同事聊了聊,认定实际上结构是为了让人更好办操作,不是为了让人更难操作。

有时候为了代码写得干净利落一点,略微加个注释,要么换个命名方式,反而能让别人读起来更省事,理解起来更快。

哪怕代码不是那么优雅,但只要它能干活,并且能让人信得过,就不算忒差。 实际上说到底,写代码就像过日子,有得有失。

有时候写得好办点别看效率低点,但能活下来;有时候写得精妙点别看耗时耗力点,但能走更远。关键不在于你有没有那些花架子,而在于你能不能往这个方向上钻下去,能不能在不断的试错中找到那个最适合自己的节奏。 最终啊,我也得说句心里话,有时候看着别人写出的代码,挺眼红他们的,认定他们一直能写出那种看起来就顺眼的东西。但回过头想想,那背后也有无数次推翻重来的过程,也有无数个深夜对着屏幕发呆的时候。目前我自己也慢慢找到了感觉,就是不管做啥事,先把核心目标定下来,然后从最小的地方入手,一块块去落实,边干边看边改,直到难题解决了为止。

哪怕最终发现之前的分析也有点偏差,大不了重来,反正技术这东西,总有机会修正的。