我笑了一声,没有接话
路灯正从绿色变为黄色,我踩了一脚刹车,车子在路口停了下来
阳光从挡风玻璃照进来,铺在仪表台上,亮晃晃的
"师傅,到前面那个路口停就行了。"他说
我打了右转向灯,靠边停下车
他弯腰把水壶从脚边拿起来,推开车门,先把水壶放在路边,然后一只脚踩到地面上,另一只脚跟着下来,站直的时候他的手撑了一下车门框,像是腿弯久了有些发僵
他站直之后,弯下腰从车窗边探进来
"师傅,好多钱?"
"打表来的,二十三。"
他从工装裤口袋里掏出一张皱巴巴的二十块和一张十块,递进来
"不用找了"
"那谢谢了哈"
他直起身,把安全帽往头上一扣,弯腰捡起地上的水壶,转身往工地大门的方向走了
后视镜里,他的背影正在越来越小,工装裤上的水泥灰在阳光下泛着暗白色的反光,像一层已经嵌入布料纹路中的痕迹
水壶在他手里晃着,随着他走路的节奏一左一右,像是正在用那个动作标记这段路程的结束
我坐在车里,手搭在方向盘上,看着他走进工地大门
门是铁栅栏做的,蓝漆已经褪了大半,他侧身从旁边的小门钻进去,然后消失在脚手架和堆放钢筋的区域之间
我低头看了一眼那二十三块钱,拿起仪表台上的二十块放进了储物格里,和那几张纸币放在一起,又多了一层厚度
然后挂上挡,松手刹,车子慢慢滑出去,汇入主路
阳光从挡风玻璃照进来,铺满了整个仪表台
前面的路还在延伸,下一个乘客在哪里,还不一定
我沿路溜着车,车速不快,二十出头的样子,午后的街面上没什么人,阳光把柏油路面晒得微微发软,车轮碾过去的时候声音比早上闷一些,像是压在一层正在变软的东西上面
我不想停下来,也不想刻意接单,就想这么沿着路边慢慢溜着,听着引擎低低地转着,空调吹出来的风打在手腕上,把刚才那段对话的余温慢慢吹散
那条街两侧的店铺招牌依次从车窗外滑过去——一家修车店门口挂着几条轮胎,排成一排,像是被正在缓慢前进的时间依次清点
一家卤味店门口摆着一张玻璃柜,柜面上蒙着一层薄薄的油光,像是已经在那里摆了一整个上午,还剩下几块用旧报纸盖着的边角料
一家五金店门口挂着几串铁链,在风里轻轻晃着,金属碰撞的声音隔着车窗几乎听不见
一家小超市门口停着一辆电动车,车座上落着一片树叶,边缘已经开始卷起来了
我就这么溜着车,车速不快,没有急着接下一单的意思
开了大概几分钟之后,我松了油门,让车速降得更慢一些——前面那棵大树底下坐着一个人
我放慢车速,隔着大约二十米从车窗边往那边看
是一棵老梧桐,树干很粗,树冠撑开很大一片,投下来的阴影把那整块人行道都盖住了,像一个被撑开的深色罩子
树底下那个人坐在阴影的正中间,穿着一件洗得发白的灰色外套,外套敞着怀,露出里面一件灰白色的旧背心,领口已经被洗得变形了,像是一片被反复折叠过的纸
戴着一副深色墨镜,墨镜的镜片在午后的阳光里反着光,看不清底下的眼睛
手里拄着一根木头拐杖,拐杖的把手被磨得发亮,握柄的位置有一圈颜色比周围深一些的区域,像是已经被人握过太多次
面前放着一个打开的琴盒,深红色的绒布衬里已经磨得有些发白了,上面散落着几枚硬币和几张皱巴巴的零钱,像是已经被风吹了一上午
他正在拉二胡,曲子很慢,断断续续的,像是同一段旋律重复了好多遍
弓子在琴弦上拉过去的时候发出一种闷闷的声响,尾音被墙壁弹回来又散开,像是在用自己的方式完成一段不需要被听见的独白
我本来想研究他一天能赚好多钱
隔着车窗,我数了一下琴盒里的钱——几个一块的硬币,散落在盒底,有的已经歪了,像是被风吹过之后没有重新摆正
还有几张五块的零钱,有一张折了一下,边角已经卷起来了,被风吹动的时候轻轻掀起来又落回去
还有一些一块的纸币,叠在一起,边缘露在外面
加起来大概三十来块
阳光从树叶缝隙里漏下来,落在琴盒里的钱上,在那些金属边缘和纸面折痕上反射出细碎的光点,像是正在用自己的方式完成一段缓慢的计数
看了五六分钟,街上安静得很,一个人都没路过
午后的街面被太阳晒得像一条正在慢慢变白的布带子,灰扑扑地往前延伸,连风都懒了,贴着地面滚过去的时候带不起什么声响
老头还在拉二胡,拉完一遍又从开头重新开始,像是那段旋律已经被他磨成了圆角
琴声在空荡荡的街面上飘着,尾音被墙壁反弹回来又散开,像是正在用一段不需要被确认的节奏覆盖着这条街的安静
我松了安全带,准备下去捐一点
反正今天彩票也刮了,一百块也花了,不差这几块
就当是听了一段曲子,给他添个硬币,让他多拉一会儿
我解开安全带的时候安全带滑回去发出轻微的声响,手已经搭在车门把手上了,指尖碰到金属把手的时候感觉到一股被太阳晒出来的温热
正准备推开,那个老头站起来了
动作利落得完全不像个需要拐杖的人
他先是把二胡从膝盖上拿下来,琴身顺着大腿滑落到腿边,靠着地面放稳
然后双手撑着地面,膝盖伸直,整个人直挺挺地站起来,没有扶任何东西,没有踉跄
接着他弯腰拿起那根木头拐杖,在手里转了一下——那拐杖底部有一个接口,我这才看清,是那种可以收缩的
他握住中段,往左一拧,往下一压,拐杖缩进去一截
再拧一下,再压,又缩进去一截
像收鱼竿一样,一节一节地收进去了
整个过程流畅得像是已经重复过几千遍,手指的动作不需要思考,像是在完成一段已经被身体记住的程序
最后变成了一根不到手臂长的短棍,被他往外套内侧口袋里一塞
然后他又抬手把墨镜摘了,折好,放进了另一个口袋里
我靠。他看得见?
墨镜底下是一双圆溜溜的眼睛,正在左右张望,哪里有半点瞎子的样子
他先眯了一下眼适应阳光,像是一直藏在镜片后面,突然被光线刺了一下
然后扫了一圈——左边、右边、前面,像是在确认周围还有没有人注意到他
目光经过每一侧的时候都短暂地停顿了一下,像是在用最短的时间完成一次全面的观察
我手本来都伸进口袋里摸到塔山的边角了,烟盒的边缘都碰到了,瞬间又拿了出来
手垂回身侧,搭在车门把手上,没有推开车门,也没有重新锁上,就那么隔着挡风玻璃看着他
然后他骂了一句
声音不大,但隔着一道没关严的车窗刚好飘进来了
每一个字都带着那种终于不用再装了之后的舒坦劲儿,像是那句骂已经在嗓子眼憋了一整个上午了,就等着周围没人的时候放出来
“我——!这么热?我特么是来乞讨的,不是来受苦的!”
说完用手背蹭了一下额头上的汗,手指在额前停了一下,又低头看了看自己手背上沾的汗渍,甩了一下手
然后他朝四周飞快地扫了一圈——这一次目光定在了我这辆车上
黄色出租车停在路边,在午后的阳光里泛着一层暖黄色的光泽,车顶的“空车”灯亮着,隔着一条街都能看见
他的视线在那盏灯上停了一瞬,然后弯腰把地上的琴盒合上,锁扣咔嗒一声,拎起来往肩上一背,大步朝我这边走过来
脚步很快,像是已经在心里算好了最短路径,每一步都踩得很实,鞋底和路面之间发出短促的接触声
他走到副驾驶车门旁边,伸手敲了两下车窗。笃笃
力道不重,但节奏很稳,两下之间间隔的时间差不多
敲完之后手收回去,垂在身侧,站着等,像是在完成一段已经被设定好的程序
我把车窗摇下来
外面的热气涌进来,裹着他的体温和那股在太阳底下坐了一上午之后的气味——汗、灰尘、还有一点琴弦上松香被晒热之后发出的气味,混在一起被热气裹着送进来
他的表情变了
刚才那句骂天气的不耐烦完全不见了,换成了另外一种表情
嘴角往上扬了一点,弯下腰凑到车窗边,嬉皮笑脸的,语气也软了,像是在一秒之内完成了从“骂街”到“求合作”的切换,快到像是已经练习过很多次
“师傅,三瞎广场走不走?”
我还没回过神
从“他是个瞎子”到“他看得见”,从“他在拉二胡”到“他骂天气”,从“他坐在树底下”到“他站在我车窗外”——这一串转换来得太快,每一帧都在变化,我还没来得及消化上一帧的内容,下一帧就已经盖过来了,像是被人连按了好几下快进键
“二十。”我随口说了一句
这段路打表大概十二三块,多报几块算他刚才那段表演的观赏费
报完价之后我看着他,想看他会不会还价,会不会说“太贵了便宜点嘛”,会不会皱一下眉头
“走。”
他说完这个字拉开车门坐了进来
动作利索,关门的声音很轻,像是带着一种经过校准的力道——既不会太轻关不紧,也不会太重吓到人
安全带拉过来扣上,咔一声
琴盒放在脚边,二胡的琴筒露出来一截,木头上有一层暗红色的漆面,像是被摸了很久
他坐稳之后,手搭在膝盖上,透过挡风玻璃看前面的路,已经在用自己的目光确认方向了
他都不问一下起步价的吗?二十块比打表贵了七八块,他眼皮都没眨一下就“走”了,一句多余的话都没有
我内心一个懵逼,侧过头看了他一眼——他已经在看路了,坐姿松弛,呼吸平稳,像是在用那个姿势完成一段已经被设定好的程序
那根收起来的拐杖正躺在他外套内侧口袋里,从外面看完全看不出痕迹,像是什么都没装过一样
我没有再多问什么
挂上挡,踩下油门,车子滑出去
三瞎广场这条路我太熟悉了,开了十几年,闭着眼睛都能走
于是我就留了个心眼,趁着等红灯的时候侧过头看了他一眼
他正侧头看窗外
墨镜已经推到了头顶
镜腿上印着一个logo——几个字母拼在一起,像是某个奢侈品牌的缩写,字体是烫金的,在透过挡风玻璃的阳光里泛着细碎的光
我看了两秒,拼出来像是“二家IN”但写成了“二家IM”,最后那个字母不对。然后我又看了一眼他的外套——洗得发白的灰色布料,胸口位置也印着一个logo,远看挺像那么回事,近看才发现边缘微微发毛,像是印上去的时候温度没调好,字母的边缘有一点晕开的痕迹。拼出来像是“怎么选RRY”但写成了“怎么选ERYY”,多了一个Y
再往下看,他弯腰调整琴盒位置的时候,短裤裤脚往上收了一截,露出来的裤脚边缘也印着一个logo——像是“大裤衩CCI”但写成了“大裤衩CCl”,两个字母拼错了
我的妈。墨镜、外套、短裤,三样东西,三个不同的“名牌”,每一件都拼错了一个字母
全是高仿
但每一件都仿得挺像那么回事——墨镜的镜腿弧度是对的,外套的版型是对的,短裤的走线也是整齐的,就是字母错了
三样加起来怎么也得好几百块
一个路边拉二胡的老头,穿了一身高仿名牌,在那棵大树底下用一根折叠拐杖和一副墨镜把自己伪装成一个瞎子
每一件都在努力模仿真的,但每一件都在细节上露了馅,像是故意留下了一个可以被发现的破绽
我握着方向盘,没有多问也没有拆穿。他也没怎么说话,偶尔侧过头看一眼窗外
车子到了三瞎广场之后,我停靠在路边,他扫码付了二十块,把手机放回口袋里,推开车门拎着琴盒下去了
没有往广场中心走,也没有往人多的地方走
他沿着人行道走了一小段,在一棵大树底下停下来了——树干很粗,树冠撑开一片厚厚的阴影,刚好把那一整块人行道都遮住了
他蹲下来,把琴盒打开放在脚前,墨镜重新拉下来戴上,拐杖从口袋里掏出来一节一节甩开放回身边,然后架起二胡,开始拉
还是那首曲子,还是那个节奏,手指的位置和刚才一模一样
像是他只要坐到树底下,就能自动进入同一种状态,把刚刚那一段路程完全抹掉,重新开始
我在路边候客处停下来,没有熄火也没有走
隔着大约二十米坐在车里看着那棵大树底下坐着的身影
琴声飘过来,隔着车窗和距离,音量已经很小了,像是被风和空间一层一层地削薄
阳光从树叶缝隙里漏下来,在他肩膀上一步一移地滑过去
他拉完一遍又从头开始,一遍又一遍地重复着同一首曲子,琴盒前面始终是空的
没有硬币落进去,没有脚步声靠近
他一直都在那里坐着,阳光正在从树叶的缝隙里缓慢地移过他的肩膀和胸口,像是在用自己的方式测量这段下午的长度
我没有走
手搭在方向盘上,看着那段正在不断循环的旋律在树影底下安静地转着
前面的路还长着,但这一单的收尾还在那棵树的影子里,一遍一遍地重复着
我摸到那包塔山的边角,没有拿出来,又松开了
琴声还在,隔着风隔着距离,像是正在用自己的方式填满这段下午的安静
从三瞎广场那边开出来之后,我沿路又溜了一段,阳光已经开始偏西了
一个年轻男的在前边招手,穿着一件黑色T恤,T恤胸口印着一行白色小字,像是某个技术会议的名字,字体很细
背着一个双肩电脑包,包的边角已经磨得发白了,拉链头上挂着一个很小的金属挂件,像是键盘帽改的
我靠边停下,他拉开后座车门坐了进去,关门的声音不重但干脆,安全带拉过来扣上的时候发出“咔”一声
然后我听见后面传来笔记本电脑掀开的声响,合页转动时那种细微的塑料摩擦声,紧接着屏幕亮起来的微光从后视镜里反射过来——一道偏冷的绿光从他脸上反射出来,在他下巴的位置形成一小片亮区,在车厢偏暗的光线里格外明显
我挂上挡,车子滑出去
“师傅,去沙坪贝软件园。”
他的声音从后面传过来,说话的时候没有抬头,像是在一边说话一边盯着屏幕
我应了一声“要得”,车子加速汇入主路
从后视镜里能看见他的轮廓——他低着头,脸被屏幕的光照着,鼻梁和颧骨之间的区域被绿光切成明暗两块,手指在键盘上快速地敲着
那声音很密,哒哒哒的,像是一串正在被连续输出的序列,偶尔会停一下,像是卡顿了一拍,然后继续
“你在车上写代码?”我问了一句
“嗯,改一个接口返回值。”
他的声音从后面飘过来,带着一点鼻音,像是注意力大部分还留在屏幕上
“有一个字段类型不匹配,客户端解析报错了。刚才看了一眼日志,定位到了,正在改”
他说完之后键盘声又响起来,比刚才快了一些,像是在追赶一段正在运行的进度
从后视镜里看见他按了几下快捷键,屏幕上的内容切换了一下,绿光的分布变了,像是有新的窗口被打开了
他停了一下,读了几行,然后开始敲,动作比刚才更快了,像是正在把确认过的方案转化成指令
过了一会儿,键盘声停了
他靠回座椅,活动了一下脖子
“改完了,服务重启之后就好了”
他合上笔记本,咔一声,绿光收窄成一线,然后完全消失了
车厢里的光线恢复了正常的暗度
他侧过头看了一眼窗外
路边那些商场楼顶的大屏幕正在轮流播放广告,其中一块屏上正放着护肤品广告,白底粉字,画面柔和,一个女明星正在用手指轻点自己的脸
“师傅”他说
“你靠边停一下”
“停哪?”
“路边就行,不用熄火,等我几分钟”
我看了一眼前面,正好有一个公交站台旁边的空档,我打了右转向灯靠过去,拉了手刹,车子停稳了
他推开车门下去了,没有背包,笔记本电脑还留在后座上,合着
我坐在车里,从驾驶座侧过头,能看见他走到路边,掏出手机,低头在屏幕上操作着什么——手机屏幕的光映在他脸上,不像电脑屏幕那种偏冷的绿光,是更暖的白光
他站着那里操作了大约十秒左右,然后抬头看了一眼路边那块大屏幕
大屏幕闪了一下
先是停住了,画面静止了一瞬,然后暗了大约一秒,接着重新亮起来——上面出现了几个大字,白底黑字,没有任何修饰,就那样安静地排列在巨大的屏幕上
“大哥,你看我技术怎么样?”
我隔着挡风玻璃看着那几个字
字很大,从路这头到那头都能看清,像是正在用自己的方式完成一段不需要被验证的展示
他在路灯下站着,抬头看着那块屏幕,像是在确认那几个字确实正常显示了
然后他又低头操作了一下手机,屏幕闪了一下,恢复成了原来的广告画面
他转过身,朝我这边走回来,拉开车门坐回后座
“走吧。”他说
“我勒个去”我说
“你这技术可以啊!说黑就黑了?”
“不算黑”他说
“就是接口没关,我访问了一下而已。就像你家的门没锁,我推门进去看了一眼,然后又出来了。没有改动任何内容”
“那你这操作要是在你们行业算啥子级别?”
他沉默了一下
“我这么说吧。程序员这个圈子,有一套非正式的分级方式,不在公开的文档里。分了六级”
“你直接说重点就行。”
“简单来说,C级是能正常完成日常开发任务的。B级能在不影响业务的情况下对系统做细微调整,比如在运行时动态修改接口返回内容而不触发告警。A级能在系统出现异常苗头之前就感知到它的存在”
“那你呢?”
“我是B级。”
我握着方向盘没有接话
他在后座沉默了一会儿,像是在等我说“那你这个B级是啥意思”
但我没问。他自己又开口了
“我就这么说吧,你把程序员看成中国的神——那么国家A级就是如来。你想说什么,他都先知道你想说什么了。而国家B级程序员,是下一级,仅次于神之下。就是我们传说中的神仙,除了不会读心术,其他的啥都能干”
我看了后视镜一眼,他的表情很认真,不像是在开玩笑
“也就是说,国家A级程序员像你这样黑屏幕就是瞬间的事?而你是B级,需要先敲两行代码?”
“不是,我不是这个意思”他说
“我的意思是,国家A级程序员,只要是有关数码的产品,他都能分分钟破解并改写,甚至直接发明出盗版。而我们B级需要先研究一下,比如说这个程序的漏洞在哪里。我们虽然说不能瞬间,但是也可以立马找出漏洞并改写”
“那你刚才这个操作,黑大屏幕,用了多久?”
“三十七秒。”他说
“从拿出手机到恢复画面”
“那要是国家A级呢?”
“大概三秒。”他说
“他们不需要研究漏洞在哪,他们看一眼就知道漏洞在哪。就像有人在你面前关了一扇门,你想的是怎么撬锁,他想的是一脚踹开”
“那你觉得你离A级还有好远?”
“远得很。”他说
“差了大概五个级别”
他说完自己先顿了一下,然后又补了一句
“不过我刚才发现了一个更严重的问题”
“啥子问题?”