刚碰代码那阵子,谁没傻过?总以为把语法书啃穿,函数名敲得跟印刷体似的,程序就能“啪”一下,乖乖跑通。天真。跑起来呢?满屏红字报错,界面卡得跟砖头一样,鼠标点出火星子也没动静。苏灵在《javascript编程循序渐进》里早就挑明了:写代码最头疼的,压根不是背语法。是啥?是搭那个“输入—处理—反馈”的闭环。光往系统里扔指令,它连个屁都不放。算啥?单机自言自语罢了。别跟死记硬背较劲了,真没必要。

你随便翻开目录瞅瞅。好家伙,清一色的硬骨头。操作六种数据类型,拿DOM去改HTML,验表单,做图片翻滚,再用Ajax搞交互。你要是光拿这当个功能打卡表,那可真是亏大了。作者为啥死磕表单验证?因为它在门口拦着那些胡输的乱码,不让脏数据祸害系统。DOM操作为啥占C位?因为它得把后台算好的玩意儿,原封不动地搬上屏幕。Ajax呢?专治页面刷新那一下的卡顿,让数据真正跑起来。书里挂着“循序渐进”和“从实践中学习”的招牌,真不是随便喊喊。交互这东西,死记硬背绝对拼不出来。你得自己把手弄脏。敲下那个触发事件的代码。亲眼瞅见按钮按下去颜色变了,表单交上去弹出一句“邮箱格式不对”。这圈,才算真正转圆了。我当初自己写的时候,为了调一个表单提交,愣是盯着控制台看了两个晚上。后来才咂摸出味儿来。不是代码写错了。是反馈没接上。

这说法听着有点玄乎?底子其实特实在。代码说白了,就是一堆干巴巴的指令。没反馈的指令,就像往空谷里喊话,连个回音都捞不着。咱们平时干活、学本事,不也老踩这个坑吗?光顾着闷头干。忘了留个口子让人反馈。做方案,数据砸得山一样高,却连个让人提意见的按钮都不留。练手艺,动作重复了八百遍,就是不知道哪儿走形了,越练越歪。没反馈的系统,就是个只进不出的破漏斗。耗完精力,也长不出新东西。可能很多人觉得“反馈”是开发者的专利。其实哪啊。你发个邮件石沉大海,或者做个PPT没人回话,本质上,都是闭环断了。

不过,把这事儿捧成万能灵药,也容易翻车。这本书盯的是前端开发。规矩就一条:用户手一碰,界面就得变。可项目一摊大,或者你搞底层算法、搭数据架构。反馈那根弦儿,就得绷得长点。这时候要是还死盯着“点一下必须秒回”,反倒会被一堆细枝末节绊住脚。连整体架子稳不稳都顾不上。作者这套打法在Web应用里确实犀利。但尺子也有量不到的地方。它适合人机天天打交道的活儿,不适合那些求稳求长的后台逻辑。我觉得未必得全盘照搬。认清楚这点,翻书的时候心里才有底。知道哪儿该用,哪儿该收着点。毕竟,底层数据跑一天不出错,跟前端按钮点一下没反应。那是两码事。别拿同一把尺子量到底。

说句掏心窝子的。刚瞅见书里大谈“从实践中学习”,我以为是那种打鸡血的陈词滥调,准备划过去算了。等真把表单验证、DOM和Ajax拆开揉碎了看。才觉得有点东西。这哪是教写字。分明是套脑子转法。它逼着你认一个死理儿:程序真不是敲出来的,是调出来的。你发个请求,系统甩个状态回来。你照着结果改参数,再发下一轮。这么一来一回,手底下才有真功夫。编程的肌肉记忆,就是这么练出来的。可能新手会觉得这过程磨人。但真熬过那几个来回。手感,就出来了。

敲代码是这么回事儿。过日子,估计也差不离。咱们老觉得,多背几套语法、多啃几个框架,路就能铺得平。可真正让一段代码活长久的,是它能不能在变天儿的时候,给出个靠谱的反应。下次再怼着屏幕写东西。不妨少琢磨“这行该怎么敲”。多掂量掂量“它该接住什么信号”。毕竟,能接住外界动静、还能吐出回音的。从来不是墙上贴的说明书。而是活蹦乱跳的系统。