09年买的。扔书架最里头,至今没挪过窝。那天收拾桌子,实在没处下手,一抽,好家伙,封皮软得跟没骨头似的。哗啦一翻,纸页脆得很,黄边全卷毛了。夹着的哪是什么绝版秘籍,分明是当年那股子死磕技术的轴劲儿。翻旧书嘛。翻的不是字。是那时候的自己。

书名倒是挺老实,《ASP.NET 3.5和C#》。搁现在看,控件、数据访问、母版页、AJAX……这词儿一股脑儿砸过来,光念一遍腮帮子都酸。可你耐着性子往下看呢?看作者怎么把个按钮拖进设计器,怎么吭哧吭哧调连接字符串,怎么死盯着一片白屏,等它慢吞吞吐出数据。你会发觉,这根本不是冷冰冰的手册。是个脾气倔的老工程师,正拍着桌子跟你掰扯:底子,到底该怎么打。技术书嘛。写得再干巴,只要作者真在坑里摔过跟头,字缝里就漏得出烟火气。

书尾那两块企业级实战,我一直惦记。一个搞人力资源系统,一个搭淘书网。排版是板正,建表、写接口、跑部署,一环扣一环。可当年我合上书,脑子里转的,压根不是流程图。HR系统里敲的那几行DataRow,背后全是几十号人的工资条。调岗时磨破嘴皮的拉扯,老员工离职默默收拾纸箱的动静,全在里面。淘书网的货架上挂的,也不是干巴巴的SqlDataSource。是咱们在格子间里熬夜盯屏,硬想从现实里抠出点喘息的念头。代码本身?真没体温。但敲它的人要是心里没点事儿,页面跑起来,轻飘飘的。技术这东西,到最后拼的哪是什么炫技的语法。是你能不能把那些鸡毛蒜皮的人情世故,妥帖地、严丝合缝地,塞进逻辑里。

摊开讲,有些章节现在瞅着,是真啰嗦。讲状态保存那章,作者把ViewStateSession的差别掰碎了揉烂了讲。光那对比表格,就霸占了三页纸。当年我盯着CRT显示器,手指头敲键盘敲得发麻。报错弹窗一蹦出来,活像拦路虎。憋屈得我想直接砸键盘。那股子味儿,隔了十几年,还能尝出点涩。不过话又说回来。真得这么一遍遍搞砸了重来,才能摸出门道。技术这玩意儿,未必是啃书啃下来的。多半是手上磨出来的茧子。不亲自踩两次坑,你根本不知道哪条路能通。更不知道哪个变量,会在半夜偷偷吃掉你的内存。现在的书,全追求“十分钟上手”。我倒觉得,少踩点坑,人反而容易飘。

如今再翻这老古董,ASP.NET 3.5早被拍在沙滩上了。VS2008那套灰扑扑的界面,现在的孩子估计连见都没见过。可怪就怪在。当我把那些老掉牙的控件重新拽进设计器,看着网页一块块拼起来,心里头,莫名就踏实了。外头的技术栈换了一茬又一茬。现在连写个Hello World都嫌多余。但“我想整点东西出来,并且真把它弄明白”的那股子劲儿,好像真没变过。咱们老以为在追新框架。其实我觉得,最后能站稳脚跟的,未必是跑得最快的。是那些肯花时间夯地基的笨人。工具再旧。那份死磕的认真,照样能兜住新手刚上手时的发慌。这话可能带点怀旧滤镜。但底层逻辑这东西,真不是靠追能追出来的。

书里原话,我当年压根没多琢磨。后来调水晶报表调到头秃,它突然就蹦出来了:“配置与部署不是最后一步,而是让作品真正走向用户的开始。”那会儿我正对着一屏幕的红字报错干瞪眼。瞅见这句,心,突然就静了。道理特简单。逻辑写得再漂亮,不推上去,不让人点两下,也就是硬盘里占空间的一串字符。干活儿不也一样?琢磨半天,不如直接上手干。干出来,不如赶紧发出去。哪怕糙一点。哪怕还带着bug。只要它能跑起来,就总有机会被人瞧见。听着像鸡汤。但当年,真就靠它把我从报错堆里硬拽了出来。

现在我电脑里,塞的全是最新版的开发工具。但偶尔,还是会抽这旧书翻两页。不为学新语法。就想找找当年那种慢条斯理的节奏。外头天光一点点暗下来。屏幕上的光标,还在一格一格闪。下一个版本长成啥样,我懒得猜。但我知道。只要还有人愿意从零开始,把一行行字符,敲成能用的家伙什儿。那些关于搭建的、关于死磕的、关于把脑子里的玩意儿变成现实的老办法,就永远不会嫌过时。

页脚那块儿,还没敲完。天快亮了。正好喝口咖啡,接着写。这事儿,大概就是这么个意思。写书也好,写代码也罢。总得有个收尾,对吧。