有些书,合上就进抽屉吃灰。有些嘛,偏得在凌晨两点,台灯底下陪你死磕那些改了三遍还报错的bug。前阵子我翻《Java编程方法学》,正赶上头秃期。IDE里红绿报错符跟萤火虫似的乱闪,脑子里的类和方法搅成一团乱麻。键盘敲得劈啪响,逻辑就是串不起来。书的前半截叫“基础篇”,语法、结构、基本规矩交代得那叫一个规整。读着像极了大学期末老师划的重点。可你接着往下翻,到了“体验篇”,好家伙。Struts、Hibernate、Spring这些重量级选手全排着队进场。多线程、网络套接字、安全性编程,一股脑儿摊在桌面上。我盯着目录发愣。心里大概就一个念头:原来真学门手艺,压根不是从背规矩开始的。得先一头扎进这堆乱麻里。呛几口水再说。

书里夹着句话,我反反复复盯了两遍。意思大概是,理论里绕晕你的那些概念,跑一遍实例就透亮。刚看到这儿,我差点嗤之以鼻。心想这不又是技术书的正确废话嘛。跑一遍就透亮?我信你才怪。直到自己吭哧吭哧对着屏幕,把几段GUI和多线程的demo敲完。报错改到手软。才咂摸出点不对味。书本上的逻辑永远顺溜得像德芙。可实际跑起来,全是硌牙的砂子。当你亲眼瞅着那段原本抽象得让人头大的“线程同步”代码,真能稳稳兜住那一波波并发请求不崩盘的时候。脑子里“咔哒”一下。透亮感。死背定义绝对给不了。这事儿大概就是这么个意思:道理听烂了,真不如自己亲手踩个坑。书里塞的那些例子,与其说是标准答案。不如说是作者往泥地里扔的几根木棍。专门给转圈的人借力用的。

脑子里突然就窜出前年接新项目那会儿的惨状。那时候我轴得很。非得把整条流程摸透、每个模块的边界画得严丝合缝,才敢敲第一个字。结果呢?越琢磨越心虚。鼠标悬在键盘上半天,愣是敲不出个字母来。后来deadline直接逼到脑门上。没办法,只能硬着头皮把能跑的碎片先胡乱拼起来。能跑通就赶紧填肉。跑不通?咔咔拆了重来。现在回头咂摸。这种“先跑起来,再找逻辑”的笨招儿,居然跟书里“基础篇和体验篇分开摆”的路子暗合了。咱们平时总误以为,得把语法背得滚瓜烂熟才能开工。可现实开发哪管你什么编译顺序?它压根不在乎你心里多完美。你就在一次次红字异常提示里,一点点摸它的脾气就行。我觉得吧。这种“先开枪后瞄准”的野路子,未必多高明。但确实管用。

不过话说回来。这书也有让我直挠头的地方。讲Spring这些主流框架的时候,步子迈得实在有点大。全摁着“怎么用”在教。至于“为啥这么设计”。或者这架构在极端高并发下怎么反噬开发者,基本是一笔带过。安全性编程和套接字那几章,读着像赶工出来的速查手册。道理都懂。可真落到细节上,哪有那么轻巧?它更像案头随时翻的字典。而不是带你进丛林探险的指南。作者肯定也掂量过。技术迭代太快,写深了还没印出来就过时了。这我理解。可偶尔翻着翻着,我还是忍不住嘀咕。能不能在实例之外,多掰扯两句技术背后的取舍和妥协?毕竟光跟着框架跑,遇到个非标准场景,心里总有点发虚。我觉得吧。这书可能更适合当拐杖。真要想走远,还得自己练腿脚。

合上书往窗外一瞅。天早就黑透了。屏幕的冷光打在桌面上。那些曾经让我头皮发麻的语法和架构,这会儿安静得像一堆随便码在一起的乐高积木。写代码也好。干别的也罢。哪有什么严丝合缝的完美模板?咱们真正要琢磨的,大概就是在别人搭好的框架里,给自己硬挤出一个能落脚的结构。是在满屏的红字报错里,耐着性子一行行往下抠。有时候你死磕到底。到底是真热爱,还是单纯咽不下那口气?这问题本来就没标准答案。可能纯粹就是咱们那点莫名其妙的执拗。代码跑通的那一刻。通常也就是下一轮调试的开头。这点倒是一点没变。

算了。不扯远了。明天太阳一出来。估计还得碰新钉子。但好歹心里有谱了。知道该怎么敲下第一行修正的代码了。