这是"码爸育儿"的第七篇。上一篇写完我用管理下属的语气跟他说话,被他一句"你是我的老板吗"问住之后,我以为自己已经开始改了。直到昨天晚上,我发现自己换了个战场,把同一套控制欲用在了别的地方。
昨天晚上,儿子拿了一篇看图写话过来,让我帮他"看看"。
我一看,字写得歪歪扭扭,第一行就有两个错别字,第二行用了个"然后"开头。我掏出手机,打开计时器,开始改。
改到第四行的时候,我意识到一个问题:那篇看图写话原本有六句话,我改完之后,只有第一句的开头三个字,是他自己写的。
其他全是我改的。
我用"漂亮极了"换掉了他写的"很好看",用"高高兴兴地"换掉了他写的"开心地",把标点符号挨个捋了一遍,最后连"今天天气晴朗"都给他换成了"周六的阳光洒在草地上"。
改完我把作业本递给他,拍了拍他的肩膀:"好了,你看,这样写就通顺多了。"
他看了一眼,没说话。
过了半天,他小声说了一句:"爸爸,作文是我写的,但词都是你选的。"
我愣住。
他抱起作业本,回自己屋了。我坐在那儿,看着手机里的计时器,零分钟零秒。我连一次计时都没有开过。
一、这就是一场灾难级的 code review
干过几年开发的都知道,code review 最怕遇到一种人:每一行都给你改。
你提交一段代码,他在这里换了个命名,在那里改了循环方式,又把你的注释删了重写,还在每一个地方批注"建议改为……"。
最后你拿回来的代码,确实更"好"了。但你说得清那段代码里,哪些是你的判断吗?说不清。你只知道"评审过了",可以合入了。
下次你再提交代码,你会怎么做?
你不会再想"这样写对不对",你只会想"他会不会又给我改"。你提交的每一行,都在猜他喜不喜欢,而不是在想这件事本身该怎么实现。你的成长速度,肉眼可见地变慢。
时间长了,你就变成了一个永远在等别人给答案的人。
我以前带过一个新人,能力不差,但他每次提交都不敢做主,非要我确认。后来复盘的时候我才发现,是我第一次给他做评审时改得太狠了。从那以后,他判断代码好坏的唯一标准就变成了"老张会不会打回"。
我把这套东西,原封不动地带回了家。
二、孩子交上来的不是作业,是他的"代码"
一个六岁小孩,第一次尝试写一小段话,那是什么水平?
字不会写,他用拼音。句子不通,他硬凑。标点不认识几个,全用句号。但那些拼音是他自己拼的,那些不通的句子是他自己组织出来的,每一个句号都是他自己在脑子里转了一圈才放在那里的。
我拿过来,一路红笔划过去:错别字改掉,标点改掉,语序改掉,连"的得地"都给他统一了。
他拿回去看到的是什么?是一片标满红色修改痕迹的纸。他认不出哪个是他写的,也搞不清自己哪里做得对。他只接收到了一个信息:我写得不好,爸爸全给我改了。
下次他再写再拿给我看——是因为他相信我,还是因为他知道"反正爸爸都会改"?
说实话,我心里已经有了答案。
三、真正的 review,不是替对方写代码
现在回头想,我当时应该怎么做?
我跟同事一起做评审的时候,不会直接上手替他改代码。我会在评论区写:这里是不是可以不用 for 循环?这个命名有歧义,换个名行不行?我提出疑问,不提供标准答案。
拿到儿子的看图写话,我完全可以换个方式。
他可以自己发现字写得不够好——只要我先问一句"你觉得你写的这六个句子,哪个写得好?"让他读一遍自己写的东西。
他可以说"我觉得第一句好",我可以问"你觉得好在哪里",让他自己想。如果我指着"很好看"问他"你想不想换一个更有画面感的词"?他大概率会自己想出"很漂亮、很美",甚至"美得像朵花"。
答案是他自己长出来的,不是我贴上去的。
我们做 code review 的时候最看重什么?培养对方的判断力。你评得越少,他思考得越多。你越克制,他成长得越快。
四、道理我懂了,但没坚持过第二天
昨天晚上想通这些之后,我觉得自己想得挺明白,甚至有点得意——上一篇才写完"向下管理"的教训,这次总算学乖了。
今天晚上他写数学应用题,写错了一步,卡在那儿咬笔头。我瞟了一眼,答案已经在我嘴边了,手也已经伸向他的作业本准备直接圈出错的地方。
伸到一半,我自己顿住了,把手收了回去,改成问他:"你再读一遍题,看看这一步是不是漏了点什么。"
这句话说出口,我心里其实是有点别扭的——比起直接告诉他哪错了,忍着不说要费劲得多,而且他没有立刻想出来,皱着眉头又卡了快两分钟,我坐在旁边,手心里全是想替他说出答案的冲动。
后来他自己找到了那一步漏掉的单位换算,改了过来。整个过程,比我直接告诉他多花了差不多五分钟。
我意识到,"少改一点"这件事,说起来是个决定,做起来是要一次一次跟自己的手痒较劲的——今天忍住了,不代表下次看到他写错字、用错词的时候,我不会又下意识地伸手去改。这大概不是一篇文章、一个道理就能改掉的毛病,得一次一次地拦住自己那只手。
五、写到最后
昨天那篇看图写话,最后一句话是他自己写的,我只帮他改了一个错字。
我看着那段话,六句话,歪歪扭扭,但其实还蛮通顺的。那句话是很普通的一句:
"今天我在公园里看到一只小狗,它的毛是黄色的。"
他没有再用"很漂亮"。
我知道他心里还在想他喜欢的那个词——被审掉的"很好看"。下次,我说不定就不用给他改了,让他自己念出来。
过度 code review,本质上是一种控制欲。我们害怕他写出不够好的句子,就像我们害怕新人写出不够优雅的代码。但我们忘了,孩子需要的不是一份完美的作业,而是他自己面对作业的勇气——而我自己需要的,大概是一次一次地忍住那只想替他改的手。
如果这篇文章里也有你家的影子,评论区聊聊。你家孩子拿作业过来的时候,你在旁边是不是也有点手痒?你是一路改到底呢,还是会忍住?