前言￼Line Line

这半生，我干过很多多此一举、画蛇添足、徒劳无功、买椟还珠的事情。我本来要写一本Java编程的书，我认为应该让这本书比较有趣，就给每一章结束的时候写了一篇小说。这是非常不专业的事，这些小说肯定不能出现在正式出版的编程书里，到时候都会尽数删掉。

再讲一件不专业的事情，下面这张照片是我在青海西宁拍的，如果没记错的话应该是2006年，我去工作。机房里的机器都很”普通”，如果不用丑这个字的话。但是有一家公司，他们设计的产品的外壳就是很漂亮，别人都方方正正的，他家的外壳还有一个腰线，每次进很吵的机房，看到他家的机器我心里就有点开心。￼

后来我碰到了他们公司的人，我说你们公司的产品设计的真漂亮。他可能认为这是客套话，其实我是发自肺腑的。后来客套话说多了，他问我你真的这样认为么？我说是的。他说他们的外壳是一个设计师设计的，以前这个设计师是设计衣服的。然后他把机器关了电，然后搬下来，给我看机器的背面，背面散热网和电源竟然也是设计过的，有点像一个眨眼的女孩。

我说我要给这台机器买一条项链，戴在她的脖子上，他以为我在开玩笑，其实我没有，我真的买了一条地摊货挂在这台机器上。别人问起的时候，我说这是开过光的，你们不要动。那条项链挂了至少一年半，后来我又去了几次，每次看到项链挂在那里就觉得还挺开心，再后来，就不知道被谁扔掉了。

当这件事情在我公司传开了，同事们都笑我，让我尴尬了好几年。说我是一个给机器买项链的人。

现在，我是一个试图在编程书里写小说的人。糗事一件，供大家开心一下。

前言

1.引子

2.潘闻来到公司

3. 令人“恐怖”的bug

5. 老人与手机

6. 与我同龄的路由器

7. 令人头痛的代码

8. 潘闻要改进Java语言

9. 测试员阿轴

10. 软件园冷暖

10. 潘新“试车”

11. “外向”的程序员

1.引子

￼Line Line

我的老板叫潘新，他有一个小他十二岁的弟弟叫潘闻。最近，潘闻来到他哥的公司实习，他也是学计算机的。老板让我带他弟弟熟悉一下公司和业务。

老板潘新的编程生涯是从汇编和C语言开始的，现在他已经不再写代码了，但是对编程有强烈的爱好。

他看了本章Java版的HelloWorld，问了我一个问题，Java的类名，函数名，变量名啊，能不能是中文的？

我觉得这是个好问题，正好可以给他弟弟找点事干，就扩展了这个问题：Java语言支持的Unicode字符可以用在什么地方？变量名可以么？函数名可以么？类名可以么？

2.潘闻来到公司￼Line Line

部署网络的工作又有趣又繁琐，有时候繁忙的工作会让我的睡眠严重不足，但是我喜欢这个工作，所以，我每天都会早早的赶到公司，去查一下今天又有什么工作要做。

早上我赶到公司的时候，老板已经在公司了，我照例去问他有什么安排。他说：“今天你去接我弟弟吧，他大学二年级，要从外地赶来，他学的是计算机专业，这是他的电话，你给他打电话，问问什么情况。”

“没问题。”

“对了，他叫潘闻。”

我打了那个电话号码，在接通电话的那一刻，我以为把电话打给了老板，电话那头传来了一个和老板一模一样的声音。我赶忙仔细确认了一下电话号码，没打错。我问：“你是潘闻么？你听起来和你哥一模一样。”

电话那头传来了爽朗的笑声：“是吧，大家都这么说，我上午11点半就到了。我在火车站等你。”

我在车站接到他，简单的寒暄后，我认定潘闻是个阳光大男孩。他坐在副驾驶上，很自然的玩起了手机，一路上把他在手机上看到的新闻读给我听。东方的天空已经有些阴云，我问他：“你查一下手机上今天会下雨么？”。

“今天会有雷阵雨。”

我没话找话的说了一句：“你性格和你哥一点也不一样。”

潘闻沉默的片刻时间里，我意识到我说错了话，他悠然的回答：“都说哥哥是上帝送给弟弟的天使，我哥是上帝送给我的考试。”我着急把话题引开，听到他说考试，就连忙问道：“你现在刚刚考完期末考试吧？”

“是的，刚刚考完一些副科，还有两门主课《计算机组成原理》和《Java语言程序设计》。”

“这两门课程都非常有用，你哥的公司里，最主要的软件就是Java写的，这下你有用武之地了。”一路上闲聊了很多，乌云越来越黑，虽然还是中午时分，路上的车已经开了大灯，一阵阵的大风吹着路边的尘土和塑料袋漫天飞扬。偶尔有两颗顽皮的雨滴从空中落下，落在挡风玻璃上，积攒好久，我才开一下雨刷把它们擦掉。

一个多小时后回到公司，潘新已经在公司等着我们吃午饭了。在见到潘新之后，潘闻像变了一个似的，在吃饭的时候，潘新只和我在说话，他的弟弟对他来说就像空气一样，视而不见。

这可能是我吃的最压抑的一顿饭了，期间我数次想把潘闻拉到对话中，潘闻仅回复一两个词，就又躲闪了出去。饭后，一起回到了公司。潘闻在门口远离他哥的地方找了一个位置坐下，变戏法似的拿出一本英语单词背了起来。

天越来越黑，风越来越大，大风吹着办公室的窗户在颤抖。

突然之间，潘新平静的问了一句：“你考试考的怎么样？”我看到潘闻的身体颤抖了一下，半个屁股悬空在椅子上，嘴半张着，似乎那句回答像航班因为天气晚点了一样，迟迟不肯出来。见到此景，我有些心疼潘闻，又想转移话题，就说了一句：“好像要下雨了。”

老天爷仿佛听见了这句话，以一声炸雷作为回应，天被这个炸雷炸出了一个大洞，水冲了出来。雨越下越大，像决堤的大坝，水已经分不出你我，挤着一起浇了下来。乌云中的墨汁似乎把雨水染黑，雨越下，天越黑。透过玻璃，只能看到红色的尾灯连成一条路的模样。

兄弟俩仿佛没有被这瓢泼大雨所打扰，迟到的回答还是潘闻的嘴里讲了出来：“没太考好。《Java程序设计》考的马马虎虎，《计算机组成原理》没通过。”

相比于潘新的愤怒，窗外下的就像毛毛雨。潘新在咒骂着他的弟弟，数落着他弟弟的不是，我在那里感到手足无措，我被那一幕吓呆了，只听到潘新怒吼着让他的弟弟滚。潘闻默默的走了出去。我意识到，他没地方可去，就追了出去。

我说：“真遗憾事情变成这个样子。”

突然间，潘新笑了，露出一口白牙：“你不必担心，我了解我哥，他已经不生气了，只要他骂了我，这些天就没事了。”

“真的么？”

“当然是真的，这么多年了，我早就摸清他的脾气了。他现在知道我的《计算机组成原理》没考过，过几天他肯定会让我写Java的项目，在路上你不是说公司的软件是用Java写的么？”

“是的，幸好你的Java通过了。”

“我说了我通过了么？我只是说我的Java考的马马虎虎，我可没说我通过了。”

“你的意思是……”

“是的，我的Java也没通过，两门主课都没通过，只有那些副课通过了。你一定得教教我，否则我下学期补考也不一定能通过。”

雷阵雨就是雷阵雨，不一会儿，天所若无其事的晴朗，幸好这钢筋水泥修成的城市排水系统出奇的不好，保留着下过雨的证据。

3. 令人“恐怖”的bug ￼Line Line

自从网络联通了每一个乡镇以后，我们这些以网络为生的人就有了一个符咒，每个人都痛恨去山区的机房或者基站里debug，尤其是夜晚。

X官庄村，在这里我之所以用X代替，是因为那一代的村子都叫X官庄，X代表一个姓氏，大概有10来个小村子，蜿蜒散布于一条山沟之中。山里人的淳朴和执着，每到夜晚降临，每个村子会把一扇或铁或木做成的 “门” 关上，以防有人偷窃，在黎明时分再打开这扇“门”让道路恢复通畅。

由于人口不多，每个村子建一个机房成本太高了，因此，就在这几个村子大概中心的位置——一片荒山中略平的地方——建了一个共同的机房。机房里有监控设备，当有人进入的时候，会拍照，然后记录下来。最近出了一个诡异的情况，每到凌晨，设备会记录有人进入这个机房，但是查看监控的时候，又空无一人。甚至有时候会显示有多人进入，看监控的时候，连个鬼的影子都找不到。

设备厂家已经找过了，设备也换过了，始终有这个问题，公司让我和潘闻去看看怎么回事。潘闻很爽快的答应了，但是我知道，这条路是真的艰难，尤其是晚上去的时候，一路上挪开那几个村子放在路上的“门”，要挪七八次。

因为这个“bug”总是出现凌晨1点多，所以，那天晚上，我和潘闻9点就出发了。

夜已经很深了，远离了城市的灯光，抬头就可以看到银河挂在天空。我们的车就像一只飞在空中的萤火虫，顺着山路蔓延。很快到了第一个“门”，这是一个很正常的“铁门”，只是生锈了，我下车推开这个铁门，铁门发出巨大的“吱吱嘎嘎”的声音，铁门附近的房间里的灯马上就亮了，屋里传出一声怒吼“谁？”，我回答我是来修机房的。房门被打开，一个亮度比照明弹还亮的手电射在我的脸上，我赶紧转头避开手电的强光。

盘问完毕，大爷放行的时候，我的眼睛才慢慢看清楚大爷的模样。已经秋天了，天气稍微有点冷，但是这个大爷只穿着拖鞋和一个裤衩，想必他应该是听到声音从床上一跃而起来抓“贼”的。

这样又经过了5个门，终于到达最后一个门了，最后一个门是最难缠的，因为这个门是专门挡机房这条路的，并没有村民每天来开关这扇门，所谓“流水不腐，户枢不蠹”，这扇门好几个月才打开一次，户枢已经蠹的不像样了。

我让潘闻也下车，他表示不理解，我说这扇门一个人打不开。下车以后，我用手机的闪光灯检查了一下这扇门，它比上次我看到的它的时候更糟糕了。它本来有三个门枢，两个已经锈掉了，只剩下最下的一个门枢和一把“锁”来勉强维持平衡。这把“锁”其实是一根生锈的铁丝，我让潘闻一定要抓紧。然后，我小心翼翼的解开了那根生锈的铁丝，那道门像脱缰的野马，猛烈的跳动了一下，在潘闻还没有反应过来的时候，中间唯一管用的门枢断了，门重重的砸在潘闻的脚上。

在车灯的照射下，我看到他的脸先是变成红色，随后变成紫色，眼睛足足比平时大了一圈，额头上的青筋突然鼓得像网线似的。最后，喉咙里发出一声低沉的叫声，把门向前一推，跪在了地上。

我吓的赶快过去问他伤的怎么样？他咒骂了足足一根烟的工夫才缓缓站起来，谢天谢地，他没有骨折，我和他把那扇门扔到路边，上了车，终于赶在12点前到达了这个荒野中的机房。

进了机房以后，我们查看了监控，今天好的不能再好了，好像故障神奇的修复了一样。为了模拟真实的情况，我们把机房的灯关了，只借着手机的背光东一句西一句的聊天。我心里想：“不会见鬼了吧，今天一点事情也没有。”好像鬼读懂了我的心思一样，实然间，机房的灯打开了，监控开始工作，再查看监控的记录，显示进来了三个人。

我看看潘闻，潘闻看看我，在凌晨的荒山野岭里，竟然有三个人在机房里，这可比《张震讲故事》刺激多了。我提议把灯再关了，再试试能不能重复这个bug。这次，我俩没什么好谈的了，小潘在手机里放了一首歌，我明白他的意思，走夜路吹口哨，能自己给自己壮胆。歌还没放完，灯又亮了，监控又开始工作，现在机房里已经有四个人了。

如此重复了几次，现在这个小小的机房里已经显示进来了十个人，挺拥挤的。我们俩个检查了电源，检查了设备，还重启了能重启的所有设备，都不管用。潘闻把机房门打开，把车发动起来，秋天的后半夜已经有点冷了，在山里，会更冷一些。我们在车里坐了一会，车里开着暖气，车窗已经起了一层薄薄的水气。我们决定搞不定就离开了，突然，小潘盯着车窗，说：“会不会是潮湿导致的呢？”

我从工程车里拿出梯子，找到摄像头，摄像头在外面，这个摄像头没有做任何防潮的设计，再加上山里不同于城市，到夜里，潮湿的水气会凝结在摄像头上，所以会导致在夜间失灵。

我们提交了一个报告，公司把这个摄像头换成了有防潮设计的以后，机房里就再也没有发生过“灵异事件”了。在我的职业生涯中碰到过无数的bug，有软件的bug有硬件的bug，但是只有这个bug让我感到过毛骨悚然。

5. 老人与手机

￼Line Line

我看了一下今天的工作单：“乘园镇，中岗村，固定电话更换移动电话业务”。最近这几年，固定电话业务萎缩的非常厉害，公司大力推进固定电话改移动电话业务，人手不够，只要是有手有脚的人都要以此为主要工作。我是程序员，有手有脚，所以最近我做了很多这样的“外单”。

相比于城里格子间里的工作，我很喜欢“外单”。现在初春时节，城里虽然也有点点的花红柳绿，但这不过是虚虚的应个景儿。只有驱车到城外，满山的杜鹃轰轰烈烈的开，那灼眼的红色，一路摧枯拉朽的从路边烧到山顶。

车子在火海中穿行，经过的却是斑驳陆离的村庄，这种强烈的色彩对比给我强烈的视觉冲击。在这个装了橡胶轮子奔驰的世界里，城市化已经让村庄荒废了。我拨通了留下的电话，接电话的人告诉我他是帮另一位老大爷打的电话，并且告诉了我地址。我沿着村里仅有的一条小街道走到尽头，来到了那个看起来随时都要倒下的房子前。当我敲门的时候，门板剥落的油漆与灰尘不住的飘落。院里响起了一阵狗叫，随后一个满头白发的老人打开了门，一条狗安静的站在他身后，它静静的看着我，毫无敌意。

“我是来修电话的。”我说。那个老人笑了。

“好好好，进来吧，我不会用我的手机，我还是想用那个固定电话。”

他带我来到了一间卧室和客厅共用的狭小的房子里：“我现在一个人住，我那口子去年走了。我家里的电话只用来和我儿子联系，他在深圳打工。”他边说边指着桌子上的固定电话。

贫穷的证据随处可见。破旧的家具，一个暖水瓶。电器只有一个电灯和一部电话，老人的早饭还在桌上，一块馒头，几片咸菜。狗吃的早饭和老人是一样的，也是馒头，放在桌脚的碗里。

“我给我儿子打电话打不通了。”老人开口了。

“我知道，现在固定电话业务取消了，也就是说，这台电话不能用了。”当我说出这句话的时候，我看到老人有脸上流露出疑惑与失望的表情。我继续小心的说道：“你可以用手机。”

“我不会用手机。”老人回答。

“你可以到最近的营业厅里办一个每个月3元的套餐，营业厅里会送一台手机给你。”当我说这句话的时候，老人脸上的表情更疑惑了，他低声的问：“去哪里办理？”

“来吧，我开车带你去，你带上身份证。”当老人要上车的时候，他的狗一直跟着他，焦急的围着他转圈圈。我看出了它的焦虑，就让它和主人一起在后排，它安静的趴在老人的脚下。

到了营业厅，办了一个卡，我还要教老人如何使用手机。他不记得他儿子的电话号码，我又开车送到他家里，期间还折返了一次，买了一个插线板，老人家里没有给手机充电的插线板。

他从破旧的桌子里掏出一张纸，纸上记着他儿子的电话号码，我拨通了这个电话，跟他儿子说明了情况。当他跟他儿子通话的时候，我看到他的眼睛恢复了光亮。最后，我花了一些时间教他如何打电话，并且把我的电话号码也存在了那个手机上，告诉他，如果有问题，就随时联系我。

“我要付你多少钱？”

“啊，不用付钱。”我很快的说：“没什么，我只是路过这里，也不麻烦。”

老人有些吃惊：“但是你又买了这个。”他指了指那个插线板。

“没什么，这个不花什么钱的。”我说了再见，就走出了他的家门。老人和他的狗一直站在门口，我从后视镜里一直看到我的车子转弯，他们都没有离开。

一路上，我再也没有心思去看那鲜艳的杜鹃花，我的眼里只有那个破败的家，那个老人和那条狗。

后来，春节的一天，我接到一个电话，是他儿子打来的，老人让他儿子给我送一些家里种的花生。后来，我总会想到这个老人，不管我们认为多么简单易用的手机或者软件，对其他人可能真的难于上青天。做软件也好，做硬件也好，多考虑一下其他人。

6. 与我同龄的路由器

￼Line Line

“这台设备都要比我年龄大了。”当我坐在机房的地上，用螺丝刀用力拧已经生锈的螺丝，汗水不停的落在我的手背上时，我这么想。

为了找到这台机器，我已经在机房转了很多圈，每一个机架我都看过了，终于在一个没有标签的机架里找到了这台白色的机器，红色的旧金山金门大桥的标志印在白色的壳上，这是一台1986年思科公司生产的Cisco Systems AGS路由器。我想：“工作了快20年以后，它的寿命应该快结束了吧？”

在几个小时以前，厂区一半的计算机不能联网了，我被电话吵醒，凌晨2点从被窝里拖出来，在冰雪覆盖的路面上颠簸了20公里，来到这家发电厂查找故障。这次排除故障从头到尾都很糟糕。我一到这个电厂，两个人接待我，一胖一瘦，有点像金庸小说里的胖头陀与瘦头陀。虽然体型差异巨大，但是两个人都非常的沉默加忧郁，铁青的脸，好像随时在准备倒霉。我下车之后，想寒暄几句，握个手什么的，结果两人开门见山的说：“网络不通了，你快点弄好，要在早班上班前搞好。”这句话一出，让我刚伸出去的手触电一样缩了回来。

在去机房的路上，我问了几个问题，一问三不知，只知道网络不能用了。

这还不算最糟，我刚进机房，很意外的看到一个矮小的中年男人在抽烟，我心里嘀咕：“机房里还能抽烟，怪不得一问三不知。”哪想这个中年男人接我心里的话说道：“因为是夜班我才抽烟的，要不然真熬不住。”怪不得心理学家说什么“思想是不出声的语言”，这个男人肯定是有什么招风耳，我想什么他都能听到。

我初步看了一下，大概有20多个机架，这些机器分属不同功能，有做办公自动化的，有做财务的，不一而足。最伤脑筋的事情是没人真正搞清楚这些线路的走向，毕竟20年了，网络在架床叠屋的环境下，能搞清楚的人越来越少。看完以后，我就知道，这次有不少苦头在等着呢。看着网线像意大利面一样盘在地上，我就知道今天可能要在这个机房里呆上一整天了。

“小伙子，你觉得怎么样？”抽烟男子问道，“网络不通了，是吧？没什么大事吧，以前也有个工程师，挺厉害的，他来搞几下就通了。书本上的东西是死的，经验是活的。”

当年我虽然从业不久，但是类似的话我听了不少，总有这种“以前的工程师”能神奇的把网络搞好。我只能报以礼貌的微笑。

“你参加工作多久了？”这个男人总有问不完的问题。

“半年多吧。”

“才半年？”他的脸上总算露出的笑容，仰头从口中吹出一根长长的烟柱，“嗯，是个新手啊，以前的那个工程师可是有15年工作经验呢，他可真厉害，我就没见过他搞不定的故障。他可真是个好手。”

说实在的，我在任何时候都不介意一个人对另一个人赞美，只是今天的这些话，让我实在是有些不舒服。我就沉默不语。

胖头陀和瘦头陀一直没开口，但是他们三人很自然的坐在一起，看着我一根一根的检查网线，在这个年久失修的机房里摸爬滚打。胖头陀和瘦头陀眯着眼睛看着，吸烟男则不停的评判着。在这个风雪交加的夜里，他一根接一根的吸烟，越吸越快，小眼睛兴奋的像烟头一样红，恐怕这么多年来都没有今天这么开心过吧。

愤怒像风暴一样慢慢的在我脑海中形成，我强忍着，还是一根一根的检查网线，试图找出网络的结构。一边寻找，一边用捆线器把那一堆像意大利面一样的网线整理的井井有条。功夫不负有心人，我终于找到了，那么多昂贵的设备传输的数据，都要通过这台1986年生产的机器路由传输出去去。现在这台设备已经不再运转了。

我总算可以继续开展我的工作了：“是这台路由器坏了，现在要更换一台路由器，这台路由器用的时间太久了，现在不工作了。”

“不可能吧，换新的没问题，如果换了新的还不工作怎么办？”吸烟男不死心的问。我没空再搭理他，就对胖头陀说：“这台机器是1986年生产的，可能刚建机房的时候，就已经买了这台机器。”胖头陀向瘦头陀使了个眼色，示意他去取一台新的路由器过来。

“不可能是1986年生产的，1986年的设备还能运行？我在这里呆了快10年了，哪台设备是什么情况我门儿清，我可以跟你打赌，绝对不可能是1986年的设备。”吸烟男不依不饶的说道。

一会儿，路由器拿过来了，我把旧的路由器拆下来，里面的背板上清晰的写着1986年制造，我递给吸烟男看。他狠狠的吸了一口烟，不敢相信自己的眼睛：“好家伙，真是1986年生产的啊，这么久的设备，竟然还能运行，真是见了鬼了！”吸烟男的活力好像一下子没了。

新的路由器被安装在机架上，我把网线接上，再接上我的计算机，把路由器配置好。一切都开始工作了，胖头陀打了个电话询问同事网络能不能用了？在得到了肯定的答复以后，我如释重负。我一面穿上自己的外套，觉得好像跑了个马拉松，混身的肌肉都在痛，嘴巴很干。我把东西收拾好，走出机房，外面的天已经有些亮了。雪中夹着小小的冰粒从天空飘落，把我的眼睛打的有点痛。

虽然我不同意吸烟男大部分的话，但是有一句话我还是挺认同的，他说“书本上的东西是死的，经验是活的。”

是啊，以从事信息工作的人来说，书上没讲的东西太多了。书上不会讲如何在雪夜里开车，书上不会讲如何面对客户的不友好，书上还不会讲如何处理绝望的情绪。我突然想起来当年的教科书上的一幅插画，在编程的时候，干净的房间里，客户在微笑，程序员在微笑，项目经理在微笑，甚至计算机屏幕上还画了一个微笑的表情符号，一幅和谐完美的画面，好像在聚餐一样。画里没有意大利面一样的网线，脸上没有汗水，来回的路上也没有雪。

这也是一本编程的书，我希望告诉大家这些事。在编程中，在项目实施中，总有无数的十字路口，大家要习惯，这些十字路口中没有红绿灯，过路口的时候一定要加倍小心，照顾好你自己。

7. 令人头痛的代码

￼Line Line

上次雪夜修那台与我同龄的路由器回来后，我想看一看公司的软件到底可以支持多少种硬件。如果现出现故障，至少可以显示一些有用的信息，比如通过SNMP标准能返回设备信息，而不用再两眼一摸黑搞得自己精疲力竭。

中午和潘新吃饭的时候，我把这个想法和他讲了一下。我说：“我想研究一下咱们软件中处理不同设备的代码，看看有没有可能加上一些代码，如果设备出了故障，至少在软件中能个报错误出来。”

听到我讲出这个想法，潘新抬起头来看着我，半张着嘴，许久说不出话来。看那表情，仿佛有千言万语要说，这些话一股脑的涌上喉咙，像下班时间的马路，塞的结结实实的，一个字也没说出来。

过了许久，他才说：“你不要内卷，如果你要去查这些分外之事的代码，那么我也要去做一些分外之事，这会让我的工作强度更高了。我可不想让自己累着，再说了，这些代码又不是不能跑，你碰它们干什么。”

没有死心，下班回去以后，我找到了相关代码，不看不知道，一看吓一跳。一个长达15000多行的源文件，里面有很多条判断语句，每条判断语句处理一种设备。当每加入一种新的设备，就要在这个文件中多增加一条判断语句。确实很让人头痛。

我想起了《代码大全》上给出的解决方法，如果判断语句过多，可以改用表格驱动法，我又拿起了这本重达2斤，近10厘米厚，一直垫在显示器下的书仔细研究了起来。

对程序员来说，从键盘上敲出的代码可以分成两种，一种代码是负责软件运行的逻辑，另一种代码是要处理的数据。相比于软件运行的逻辑，添加要处理的数据要简单的多。

我正在思考这件事的时候，敲门声响了，我才想到今天是周五了，楼下的退休老师又要来找我了。一个刚退休不久的高中数学老师的确要寻找新的生命活力，王老师喜欢上了买足球彩票，虽然王老师从来没看过足球，根本不知道足球队和球员的名字，但是他仍旧喜欢买足球彩票。

有次我偶尔也去买一次玩玩，在彩票点碰到了他，当他发现我竟然对于球队，球员和战绩还能侃侃而谈的时候，而且我还是个程序员，从他的面部表情可以看在出来 ，他对我越来越敬重。于是每到周五，他就借口给我送本书，或者修一下手机什么的，来探讨一下买足球彩票的问题。

我只中过一次二等奖，不到300块钱，又加上他认为程序员和计算机有某种神秘的联系——那可是计算机啊，他曾经这么说过——我就成了他心中掌握了某种魔法的超级足球预言家。我一直保留着这唯一的一次中奖的凭证，只要有机会我就拿出来给别人炫耀一下，即使我早就赔进去了1000多块钱。我曾经给王老师看过我中奖的凭证，他赞叹不已，王老师一次也没中。

退休后的王老师没去跳广场舞，没每天早晨去公园用肚子顶树，而是研究起了足球彩票，在得知我是程序员以后，竟然也想学习编程了。他有一台女儿淘汰的计算机，在了解了他学编程的目的是为了辅助分析足彩以后，我推荐他可以试试.net编程，这个可以很容易在他的计算机上做一个客户端，并且我把几本书送了他。

王老师就是这样一个人，对别人的事情不关心，别人也不能干预他的事情。我曾经亲眼看到他动手打了一个跟王老师的妻子推销理财产品的人，拿着扫把追着别人打，周围的人总称他为教书把脑子教坏了的“疯子”。

对我来说，他的脑子一点都没坏，我内心为他鸣不平。经过了短短几个月，期间虽然也问过我一些这样那样的问题，但是，他的彩票分析软件竟然真的搞起来了。这次，又周末了，估计又要问我点什么东西，每次他就来20分钟，还能吃一顿王太太做的美味食物。

我开门以后，还没坐定，王老师像往常一样开门见山的问道：“小刘啊，我问你个问题，我想统计一下所有球队的战绩，每打完一场，我就要更新一次代码，用你教我的那个判断语句，每次都要写一次，麻烦的很，有没有办法让我把每次比赛的战绩输入在一个文件里，就可以不去修改代码了呢？”

我突然意识到，王老师碰到的问题就是我要解决的问题：把数据与逻辑分离。

我大体解释了一下如何做，如何读取文件，如何处理以后，王老师很开心的离开了。我就打开那个长达15000行的代码，提取出了里面要支持的设备，总共有1600多种设备。与众多的设备相比，操作并不复杂，这1600多种设备总共支持9种操作，每种设备都从这9种操作中选出一种来。

这是非常清晰的逻辑，完全用不着15000多行代码做这件事情。我思考了一会儿，只要把这1600多种设备分成9个文件，每个文件对应一种操作就可以了。我又花了一些时间，把这1600多种设备分类，把原来的9种操作分别写了一个方法，原有的15000行代码被压缩成了200来行，毕竟那15000行代码，绝大部分都是重复的判断语句。

以后再添加设备，只需要添加到相应的9个文件之一，代码完全不需要改动。

周一上班以后，我把代码给潘新与潘闻看，他们俩个都表示我代码修改的非常好。我笑了，这一幕是我所最爱的，把一堆混乱的代码整理得井井有条，并且能得到同事们的认可，感觉这是平淡生活中少有的乐趣。

8. 潘闻要改进Java语言

￼Line Line

也许在编程史上最戏剧化的小插曲之一就是windows编程日益衰落了。短短的几年时间，所有的windows程序员都不见了。而我不知道该说有幸还是不幸见证了这个改变。

当我在上大学的时候，最让人感兴趣的是给微软的windows编程，《Programming Windows》的书有几厘米厚，然而几乎是一夜之间，大家都开始给web和手机开发软件了。现在，我才意识到，当年死记硬背那么多方法是没有任何必要的。

一天早上，我如常的上班，坐在那里查资料。潘闻坐在我旁边，看着非常的勤快，他的鼠标在快速的点击，显示器上也显示着一大堆英文的资料，目不转睛的看着显示器，头向前伸着。我的余光看到潘新也在偷看他，脸上带着温柔的笑容。

看到他们兄弟这样的亲近，我也不免高兴起来。每当他们两个在争吵，我就会很难过，看起来，今天会是个好日子。潘新走到潘闻的旁边，问他弟弟在看什么？潘闻回答道：“在看一些Java的设计规范，也许我能改进一些。”听到弟弟这么说，潘新的眼睛里发出阵阵光芒，语速越来越快，他一股脑的把他所知道的知识全都倒给他的弟弟，末了，转过头对我说：“我今天出去有点事，你和潘闻来聊聊，看看他想如何改进Java。”说完，便一阵风似的出门了。

就在关门的同时，我看到潘闻的身子突然松驰了下来，开始端着茶杯一边喝茶一边上网。我试探的问潘闻：“你真打算改进Java？”

“看来你还是不了解情况。”潘闻说，他吹了吹茶杯的热气，笑得露出一口发亮的白牙，“我昨天在看Java的方法，感觉很简单，但是仔细一想又不简单，我说我想改进，只是为了让我哥高兴一下，不过我心里确实有几个疑问，我们来商量一下吧。”

潘闻说道：“你有没有觉得我们的代码写的太复杂了？”

“是啊，无论你做什么，用户的需求都会变的，所以软件自然就越做越复杂了。”我回答说。

“确实如此，前些天客户想找出所有带宽占用不超过30%的路由器。昨天又来问我能不能找出周末带宽占用不超过30%的路由器，这种需求真是让人头疼。有没有什么方法可以处理咱们这种情况呢？我倒是挺想改进点什么，比如，Java语言什么的。”

我听了以后，微微一笑，每个程序员都会碰到这种情况，其实，每个程序员碰到的新问题早就被先前的程序员碰到过，并且提出了解决方案。我问小潘说：“你可曾听说过有个叫行为参数化的技术？”

“没有，你解释一下吧。”

“打个比方来说吧，我们上了这么多年学，已经习惯了三点一线，知道怎么去学校，去食堂，回家。我们知道怎么去学校，怎么学英语，数学等。这相当于调用了一个go_and_learn()的方法。学校里的培养，总归是为了去社会上当个螺丝钉。于是，你毕业后，去公司打工，要做的事情其实和学校里没太大区别。老板让你去某个地方，拿些文件，学习这份文件。这还是相当于调用了go_and_lean()的方法。两者的区别可以通过不同的参数来体现，这里不同的参数是行为。”

“我有点明白你的意思了，我就是想要把用户的行为当作一个参数传进去，这样，我就不用再频繁的修改代码了。Java有这样的机制？”

“当然有这样的机制了，而且还不止一种这样的机制。”

“那讲一讲吧。”

“在Java中，你可以使用匿名类的方式来把行为当作参数传递到方法里，也可以使用Lambda方法来实现更简洁的代码形式。”

“我听说过Lambda方法，只是觉得它比较难，好像也没看到很多人用Lambda方法。是不是使用了Lambda方法，能让Java的功能变得更强？”

“Lambda方法是Java 8引入的，现在很多年过去了，接受程度已经比较高了。原则上，Lambda方法最主要的功能是让原来繁琐的代码变的简洁。原来做行为参数化的时候，一般是采用匿名类来表示多种行为，那样做的方式让人十分不满意：代码非常啰唆。啰嗦的代码会直接影响程序员在实践中使用行为参数化的积极性。”

小潘说道：“原来Java还有这么多没有大规模应用的特性啊？”

“是的，Java一直在不停的进化，甚至进化的有点太快了，新的特性层出不穷，以至于根本没有推广，下一个新特性就出来了。”

“推出这么多新的特性，如果没什么用，那干嘛还要不停的推出呢？”

我说道：“我推荐你读一篇论文吧，是1966年的一篇论文，作者是著名的计算机科学家Peter Landin，他写了一篇名为《The Next 700 Programming Languages》的论文 ，预测了接下来的700种编程语言是什么样子，其中就有Lambda。”

“竟然预测了700种编程语言，看来我想改进Java语言的想法还是太幼稚了。”

“当然不算幼稚了，以后还会出现越来越多的语言，哪个程序员不希望自己创造一种编程语言呢？编程语言就像生态一样，新的语言会出现，旧的语言会消亡。每个人都希望会出现一种语言能一统江湖，可是现实中不是这样。每种语言都有自己擅长的领域，C与C++在操作系统和嵌入式领域有很大的份额，因为它们运行的效率很高。Java和C#则的企业领域站稳了脚跟。只要你有心去做，一切都是有可能的。”

“那好吧，我还是先去找你说的论文来读一下，看看50多年前的人是如何预测的吧。”

9. 测试员阿轴

￼Line Line

自从潘闻来到了公司，他哥哥把所有的杂事都推给了他，写代码，部署，客服，当然，还有软件的测试。这让潘闻十分的不满，但是又不能表现出来。

今天有点特别，哥哥潘新来到公司的时候，脸上挂着和蔼的笑容。我就知道，今天会是愉快的一天。他对我和他弟弟潘闻说：“今天有个好消息告诉你们。”

“快说吧，别卖关子了。”我回答。

潘新笑着看了看了，又笑着看了看他弟弟，这可是铁树开花的事情，他竟然在对着他弟弟笑。他说：“你们还记得上次修改代码，为了兼容不同的设备，把代码搞乱了的事情么？”

潘闻听到这句话，赶紧把头转向自己的计算机屏幕，手中鼠标的滚动速度增加了不少。但是潘新并没有责怪他，反而走过去用手拍了拍他弟弟的肩膀，说：“你不要紧张，我们就要有一位测试员了。以后的测试工作，你就不用干了。”

潘闻抬头瞪着他，我也抬头瞪着他，潘新很得意的说：“这个人是我亲自选的，她在日本一家公司里做测试，工作特别仔细，特别认真。”

“那她到底是个什么样的人呢？”潘闻问道。

潘新神秘的笑了一下，说：“这个很难说，但是一定很符合我们公司的气质。我可不想像有些公司，请一些美女做公司的门面，整天化着浓妆什么事情也不干，还美其名曰什么程序员鼓励师。我们公司可不需要那样的花瓶。”

潘闻脸部表情越来越疑惑，插嘴问道：“什么，我们公司不需要么？”

“当然不要！这样的人，每天在公司里走来走去，什么工作也不会做，还鼓励师，我看就是会打扰程序员的工作。还有一件事，公司有你在这里，我怎么会请一位鼓励师过来，你能放过她？”

“那你呢？”潘闻涨红了脸反问。

“好了，好了，现在说你。”潘新嚷道：“下午一点钟，她会来公司，到时候大家就知道了。”

正好下午一点钟，一秒不多，一秒也不少，公司敲门进来了一位女士。潘新急忙跑过去，对我们说：“我来给大家介绍一下，这位是何小轴女士。这位叫刘栋梁，这位叫潘闻。”

她身材高挑，胸部臃肿，瓜子脸，披肩长发。我和潘闻对视了一眼，认为潘新完全不懂审美，这完全就是个“程序员鼓励师”啊。

“叫我阿轴吧，我已经工作了五年，都是做测试的工作，很高兴与大家见面，以后可能会挑大家的毛病哦。”

这时，潘闻已经抢先一步说要带阿轴熟悉一下公司的项目，潘新只好答应。

目前，阿轴已经在公司工作了一年多了。测试员和程序员之间发生的故事，阿轴与我们之间每天都在上演着。

与她的名字一样，阿轴真的是特别的轴。她纠结于每一个不完美的地方，每个行为不符合预期的功能，以至于我们都有点怕她了。她有一个位置绝佳的办公桌，那个办公桌位于玻璃墙的一角。从那个位置，他向外能看到走廊和大厅，向内能看到老板的办公室。她工作细致入微，在短短半年内，就熟悉了公司的软件，还按照她在日本公司里的工作流程，做了详细的笔记和标签。只要有一个地方出现问题，她就能迅速的找到谁写的这段代码。

“潘闻，你过来一下，你的代码有点问题。”

这时候，潘闻生无可恋的从他的座位上站起来，拖着沉重的步伐走到阿轴的座位前。阿轴坐在她的计算机后面，一闪身，随手拉过一把椅子来让潘闻坐下。

“阿轴，有什么问题么？”

“当然有，要不我喊你过来做什么。”阿轴拿出做好的记录，开始一条一条的与潘闻确认。

起初，测试员阿轴刚来公司的时候，还是占据下风，毕竟我们早来一步。但是阿轴是一位勇敢且心细如麻的测试员，她有许多的技术来对软件进行残酷的测试，使你不得不佩服她的创意。每一次她喊我们的名字，总是会使人的血压突然升高。

今天也是如此，时间一分一秒的过去，我看着潘闻的脸越来越红，声音也越来越激动。但是阿轴依旧保持着相同的表情，相同的语速，一条一条的询问着。

最后，潘闻终于出来了，一句话也没说，自己坐在椅子上发呆。吃午饭的时候，阿轴又熟练的玩起了她那套打一巴掌给颗枣的把戏，给潘闻带回来一瓶可乐。潘闻对着可乐直摇头。

不可否认的是，我们的软件，真的是越来越稳定了。

老板都在考虑要不要在公司里推行TDD（Test-Driven Development，测试驱动型开发）。如果一旦推行了TDD，虽然不知道会发生什么事情，但是阿轴应该可以主导公司的软件开发了。

当老板问能不能用TDD开发模式的时候，我们陷入了沉思。

延申阅读：TDD开法模式

TDD开发模式是英文词组Test-Driven Development首字母的缩写，翻译为中文叫测试驱动型开发。

在这种方法之前，写代码的流程是先进行详细的设计，然后再进行编码，编码以后再进行测试。

TDD方式把写代码的流程反了过来，先编写测试代码，然后写代码让测试用例通过。如果出现错误，就再编写代码，直到所有错误消失，使测试成功。最后再改善代码，使其变得整洁。

习惯了传统的编码方式的程序员，可能会觉得编写测试代码是一件又枯燥又麻烦的事情。实际上，使用TDD这种先写测试后写代码的方式，目前越来越流行，最大的优点是能得到及时的反馈。

如果用传统方式来写代码，有可能在设计阶段就搞错了，等到了测试阶段才能暴露这个错误（如果运气好的话）。那么期间要经历很长的时间，至少跨越详细设计和编码这两个阶段，做很多的无用功。如果使用TDD的方式，先有测试代码，那么在设计和编码阶段肯定会发现错误，如果发现不了，那测试代码无法顺利通过。这个巨大的优点，也使得TDD被引入了敏捷开发之中，得到了广泛的应用。

除了编写新的功能，修改软件功能也可以使用TDD开发模式。在修改软件功能的时候，先准备好测试代码，就可以随时检验代码是否可以正常运行。

还有一点，因为测试用例会有很多，为了能确保每个测试用例都能通过，我们会有意识的对所编写的代码进行功能上的分拆，使一个功能对应一个测试用例，这样，会使代码更加的模块化。

难点也有，就是测试代码一定要写的通俗易懂，最好是可以用以描述设计文档。这并不容易，需要很多锻炼。

可能大家会有疑问，这个TDD开发模式和Java有关系么？

实际上，关系并不是很大，但是又有千丝万缕的联系。TDD开发严重依赖xUnit单元测试框架（其中的x在不同的语言中代表不同的字符或单词）。

推广TDD、敏捷开发和Java的人很多都是相同的一群人和公司，比如Rational Software公司。后来这个公司被IBM收购，该公司提出了UML、还对面向对象编程提出一些开发方法，同时，该公司有大量Java语言的先驱程序员。笔者所在的公司就在使用IBM的系列产品， 从那些产品中，可以看到Java与各种新开发方法（敏捷开发、TDD、重构等）有极深的关系。

10. 软件园冷暖

￼Line Line

从地铁站到软件园的这条路，是我每天上下班都要走的路。初冬季节，天亮的晚了，我比平日要晚去一点。

有人地面推广工作人员沿街让人扫二维码下载软件，穿着一件卡通唐老鸭的衣服，头大大的，胸前挂着二维码。因为全身大部分都包裹在那件衣服下面，看不出性别，更看不出年龄。唯一没有包裹住的地方就是一双鞋子，从鞋子的粉红颜色上来看，大概也许是个年纪轻轻的姑娘。

她左手斜挎着一个印有公司logo的篮子，篮子里有一些类似钥匙扣、手环等一些小挂件。右手拿着一个捏一下，就会发出唐老鸭叫声的橡皮玩具。走一步，捏一下，响一声，像“秒针”一样记录着她的时间，仿佛那就是她生命的钟摆。行色匆匆的人们，从她身边闪过，甚至连头都没有转一下。在软件园这个寸土寸金的地段，我的脑海中闪现“一寸光阴一寸金，寸金难买寸光阴”的古老诗句。时间和土地，都标上了它的价格，有寸土寸金的地段，也有大片的荒芜。不要再说“寸金难买寸光阴”了，多少人为了一口饭吃想把自己的一生的光阴便宜的卖掉，还没人买呢。

唐老鸭对路过的行人点头鞠躬，希望能扫她胸前的二维码。在她鞠躬的那一刻，卡通头和卡通上衣之间的缝隙露了出来，一束黑色的长发铺在蓝色的外套上。看着她，也不知是黑色的头发，还是蓝色的忧郁，让我觉得很震动。仿佛一切成了慢动作，她鞠躬，她抬头，她又鞠躬，她又抬头，当然，并没有人停下脚步，她也目中无人似的，继续下一次鞠躬。再一想，总是这样跟着她后面看，万一她要我扫二维码了，这才三脚两步的走开了。

再走过去是一家店面，卖的是早餐，别家早餐店门口的音箱都是放着自家店的卖的吃食，“稀饭、包子、豆浆、油条、牛杂汤、牛肉面”，这家店的老板也许有些故事，他一年四季放着同一首英文歌曲《The Sound of Silence》，仿佛这高速的大城市，这缤纷的广告牌，这嘟嘟响的汽车喇叭，这吸溜吸溜吃牛肉面的食客，都无法耽误他听这首歌。我也喜欢听这首歌，耳朵如鱼得水，尤其是听到“The words of the prophets are written on the subway walls And tenement halls”心中总是泛起一些涟漪。听着这句音乐，转角就碰到了一堵铁栏杆做的墙，栏杆上还有微枯的藤曼叶，枯叶虚掩着巨大的一排字，是一个小学。

小学门口变得拥挤起来，家长开着私家车把小孩送到学校，车尚未停稳，车门便打开了，小孩从车上下来，随手把车门重重的关上，车便开走了。早餐店的英文歌还在唱着，可是歌词已经听不清了。小心躲避着急于奔向学校的学生，留意着店家橱窗又变了什么花样，店家的橱窗，和我们做的软件一样，不管代码写的如何的混乱，也要把最好的一面展示给用户，勾引起他们的购买欲。只有购买欲过度膨胀以后，为了买不必要的东西，便会想赚非分的钱，不惜说弥天的谎，甚至为非作歹。

快到软件园门口的时候，我掏出工牌，套在脖子上。有一次忘记戴工牌，被门口的保安拦在外面，工位就在几十米远的地方，却咫尺天涯，可望而不可及。我激动的和保安吵了两句，没想到惹怒了这位保安大人，他可能觉得只身一人和我争吵太过平淡，用手里的对讲机喊来了十来名保安来绷紧场面，目光四射，制服笔挺，非要吵到我司的领导亲自来领人才算结束。事后，还在门口贴了一张告示，凡不带工牌者，一律不得入内。自此，这个保安每次看到我，都要斜着眼看我的脖子上有没有套上工牌。最初，他并不斜着眼看我，但是他经不起我和他对视，只要他看我，我就微笑的从头到脚，从脚到头的打量他几次，这让他恼火，自此，他只斜着眼看我了。

进了软件园，一切所见的就都是我的日常工作了。在软件园中，无非就是三种人：老板、项目经理和程序员。当然也有美术人员，测试人员，这些干活的，都可以归为程序员这一类。要区分这几种人一点也不能。前几天，我就看到两个人谈话，没人抬举程序员，一旦受抬举，连程序员本人都会窘迫。老板翘着二郎腿指手画脚地在说，另一个人则坐在对面，只有猴子没进化成人之前长尾巴的地方坐在椅子上，双手放在膝盖上端端正正的坐着。像刘姥姥进大观园，张开嘴笑着，笑得舌头都发了凉。

程序员之间的谈话，则要激烈的多，也真诚的多。有bug就有bug，并没有程序员会可以隐瞒自己的bug，这能有什么关系呢？打个补丁就可以了，这是中国，中国的天都是女娲打了补丁补过的呢。

10. 潘新“试车”

￼Line Line

离城市越来越远，路边开始没有护栏了。这条公路穿过城市的喧嚣，穿过拥挤的街道，穿过一片片树林，沿着河岸蜿蜒展开。我的车轮可以轻易的从柏油路滚到路边的草地上，我跟老板潘新说：“时间还早，要不要先下车看看风景。”

潘新简短的回答：“好。”

我把车子停在路边的野草上，脚下的绿草沿着河岸无际的展开。河里有几只不知名的鸟在游泳，岸边有放羊的牧人赶着吃草的羊，一切都像是我小时候在农村的样子，除了我能看到那个牧人在玩手机，还有一些远足的孩子在用四轴飞行器航拍河边的风景。

我靠在车旁，阵阵凉风吹过我的脸庞。我多么希望以后会住在这样的地方，品尝什么叫恬静，体会什么叫和谐。

仿佛在一夜之间长大了一样，今天我要和潘新去一家高科技公司，做自动驾驶的。这家公司的试车场建在远离城市的地方，今天我们要去谈一些合作的项目。

几年前，我们还在为买车到底是买手动挡还是自动挡争论不休，现在却已经在讨论以后买车要不要自动驾驶了。这个世界上，没有什么永远不变的事情，不止汽车，手机这些高科技领域发生了巨大的变化，畜牧业又何尝没有惊人的进步？老旧的养猪方法已经被科学化的养猪方法逐步取代，老一辈养猪人赖以维生的技术已经被新一代的科技巨头所超越，听说，有些高科技公司已经实现了猪脸识别，进步和变迁正紧锣密鼓的渗透到每一个领域。

谁不进步就要被淘汰，在这样的恐惧下，我们公司也开始布局下一个产业，以防自己像恐龙一样被淘汰。这次要来考察的正是下一个热门的行业：自动驾驶。

我轻轻的叹了一口气，和潘新钻回车里。说实在的，行业的剧烈变化让我们都感到沮丧，只有当我看到小草没变，山川没变时，心里才稍微好受一点。这时候，我总在心里默念陶渊明的诗：“天地长不没，山川无改时。草木得常理，霜露荣悴之。”

车子到了试车场地，接待我们的是一个项目负责人，他简要的给我们介绍了自动驾驶的项目。

“这么多摄像头？”潘新围着实验车转了好几圈，又不停的将脑袋伸到车里观望，一会儿摸摸这个，一会儿动动那个。“车子倒是不错，到底能不能开的比人好啊？”

“潘先生，我们现在的技术，在大部分时候都比人开的要好要安全，虽然不能说是100%，95%的情况下都比人开的要好。”这个项目负责人夸下海口说道：“我们这个车已经开了30万公里，已经达到了L4级别，也就是说你上车以后，基本上可以睡觉了。”他讲完这句话以后，脸上浮现了项目经理特有的自信表情。

“这是试车场吧？”潘新问道。

“是的，这个场地全是我们的，跑下一圈下来有10公里，里面模拟了各种路况。”项目经理回答说。

“你不介意我坐上跑一圈吧？”潘新又问道。

“当然不介意。”项目经理笑着说，“你只要坐在这里，就可以了，开得非常稳。”潘新坐进了副驾驶的时候，项目经理也自信的坐在了后排。我楞住了，我在思考是坐在驾驶位，还是不坐了，毕竟从来没有坐过没有司机的车。

这时候，我的老板扭头对我喊到：“你赶紧上来，坐后面。”我只好无奈的坐在了后排。车子发动以后，我死死的盯着方向盘的位置，感到非常的诡异，像有一个透明人在开车一样，方向盘自动转来转去。幸好车子速度很慢，只有不到50公里/小时。

他们讲了一路的话，我一句也没听进去，就死死盯着方向盘，谢天谢地，终于开完了一圈。

下车以后，项目经理说：“潘先生，我们这个自动驾驶可以模仿车主的驾驶技术，如果你在开的话，自动驾驶就会进入学习模式，你开的越多，自动驾驶就会有你的驾驶风格。”

潘新的眼睛里闪出了一丝光芒，兴奋的问道：“这是真的么？”项目经理回答道：“当然是真的”。这句话还没有传到潘新的耳朵里，他已经坐在了主驾驶的位置上，迫不及待的让我们上车，他要教自动驾驶开车。

我刚坐好，赶紧拉上安全带。伴随项目经理关车门的声音，车子已经咆哮着冲上车道，我听见项目经理一声惨叫，他的头刚好碰在后排头枕上。

车子在赛道上左右旋转，车轮在赛道上摩擦出呜呜的声音，还间歇的抖了几抖。在一条直道上，我右手死死的拉着把手，项目经理在慌乱中竟然握紧了我的左手，把我抓的生疼。我看到潘新兴奋的耸着肩，引擎在他的地板油下吼叫。

可惜赛道太短了，一会儿工夫就要跑完了。潘新说：“我们来试试刹车吧。”他刚说完，就不留余地把刹车踩到底，那部车发出嘶鸣，我觉得车子像螃蟹一样横着走了十几米才终于停下。车窗外的风景才慢慢的显露出本来的面目。

项目经理的脸还是白的，潘新转过头，用手疑虑的托着下巴，眼神中充满疑惑地问道：“怎么样？我这样开车，自动驾驶软件能学会么？”

“你以前不会是开赛车的吧？”项目经理惊魂未定的问道。

“我以前是开卡丁车的，可惜没坚持来下。”潘新回答道，“如果我这样开，自动驾驶还会学习我的风格么？”

项目经理沉默不语，若有所思。

“要不，咱们再开几圈试试？”潘新问道。

这时候，项目经理突然活了过来，眼珠胀大了一圈，急忙回答说：“我一会还有点儿事，这样吧，车你可以随便开，我得先走了，让自动驾驶先学习着，我们还真没有请个专业赛车手来做测试呢……两位先看着，我先走了，一会儿让同事过来，咱们再来研究数据。”

在回去的路上，还是我在开车。“你觉得自动驾驶会取代我们么？”潘新突然问我。我回答说：“会取代我，但是不会取代你。你真的开过卡丁车？”

“开过几年，人总有实现不了的梦想，你说是么？”

一路上，他没有再讲话，我也没有。

11. “外向”的程序员

￼Line Line

我喜欢去乡村野外出差，公司里人人都知道了。因此，一旦有这样的机会，公司都愿意让我去，我也很乐意去远离城市的地方度过一段美好的时光。

得益于互联网，现在乡下和城市的关系在有些行业越来越紧密了。牛奶行业就是其中之一，城里的客户想了解奶牛厂的情况，他们想知道牛奶是不是干净无公害的，牛奶公司为了满足这样的需求，安装了监控，供广大的客户随时查看奶牛和牛奶厂的情况。

农场建在远离城市的地方，想拥有速度很快的带宽并不是一件容易的事情。我要去的这个农场就是如此，在群山环绕中，有一大片广袤的草地，我沿着山路开车，沿途看过来，颇有一番“风吹草地现牛羊”的风景。

来之前，我大体了解了这家农场的情况，农场有800多头牛，产奶的有400多头，一天可以产奶6吨多。已经在这里经营了20年，附近的城市都非常认可这个当地的品牌，农场除了养牛，还有其它类似农家乐这样的产业，让我们部署一个可以支持5万客户的监控。如果在城里，这没什么难度，但是这是在山上，奶牛又不上网，因此手机的信号非常弱，也没有光纤。

我到了农场以后，和工作人员说明了来意，结果所有人都很忙，分不出人手来与我接洽这个事情，让我先去屋里坐着等，于是我百无聊赖的等着。

“你是来部署光纤的么？请问尊姓大名？”突然有个姑娘边笑边问边向我走来。

“啊……是的，我是来看看能不能部署光纤的，别人都喊我栋哥。我要先看一下具体情况才知道能不能部署光纤，毕竟拉根光纤到这里，并不容易。”

“好，我带你在这里看看吧。现在工人都很忙，现在正是挤奶的时候，他们都在挤奶。我有个很好记的名字，不许笑哦，我爸妈可能很喜欢用雅芳洗发水吧，他们给我起了个名字叫雅芳。”

雅芳领我到了屋外，笑着对我说：“你是城里来的吧，今天可要爬爬山了，就当锻炼了，这里总共有8个奶牛饲养场，这8个分布在不同的地方，你可以瞧见那几个。”她边说边指了指山腰上几个白色的大房子。

我瞧着眼前这个叫雅芳的女孩说：“我当然不是城里人啊，我是农村长大的，农村做题家，现在在城里打工而已啦。爬这点山，对我一点难度也没有，要不选个最远的过去吧？”

“我们抄一条近路吧，就是有点难走，你还要带什么设备么？”

“好的，不用带设备，今天我只是来看看，大概估算一下距离，回去我写一份报告就可以了。”

她带着我穿过了一条深深的峡谷，这条峡谷一定经过了千百万年的冲刷，坚硬的石头已经被溪水冲成了深深的沟壑。石头缝里，松树坚强的伸了出来，遮天蔽日的松叶让阳光无法直射下来。我们就这样行走在松软的土地上，比地毯还要舒服，多少年的松针一层一层的堆积在脚下。

一路上，我跟她讲我认识的每一种植物，还有哪些植物能吃，哪些植物不能吃，哪些植物好玩，哪些植物味道难闻。看到这些多年不见的植物，就像见到多年前的老朋友一样。我如数家珍的告诉她这种植物叫马齿苋，做熟了很好吃。那种植物叫灰菜，无论怎么洗，怎么做，吃到嘴里总有一种沙子的感觉，所以叫灰菜，洗不完的灰。这种植物叫苘麻，用来做绳子非常结实，种子可以做润滑油。那种植物叫曼陀罗，动物都不会吃这种植物，武侠小说里的蒙汗药就是用这种植物的种子做的，我们小时候不怕死，就用种子冲水喝，太难喝了，像喝油漆，喝完以后天旋地转的……我滔滔不绝的讲个不停，她只是偶尔回应一下。

不得不承认，这些年的城市生活，让我的体力有所下降。我渐渐跟不上她的脚步了。她依然健步如飞，我却只能硬撑着追赶。终于爬上了这个沟壑，来到了一个白色的奶牛棚，走进去一看，才知道与我想象的不同，现在的设备比我想象的要先进多了，挤奶，喂料，甚至奶牛在里面的行走路线都是全机械化来控制的。我高兴的问东问西，而且，不顾她的阻拦，我喝了一小杯没有经过巴氏消毒的牛奶。

很快，她带着我走完了几个牛棚，回来的路上，可能她已经察觉到气喘吁吁的我，就和我在树荫下休息。峡谷里的水声响在耳畔，柔和的风带着花香徐徐吹来，伴随着一些不知名的鸟叫。我陶醉在这优美的风景里，仿佛互联网，会议和程序员都已经离我远去。

“你在这里工作可真是幸福，”我说，“每天都能看到这么好的风景。”

“我非常喜欢这里的生活，我也上过大学，而且，在大学里我也学的是计算机，应该跟你差不多的专业吧。”她停了一下，眺望着远方说：“看得出你确实是农村出来的，因为只有农村土地里长出来的孩子，才知道那么多植物。”

我不禁哈哈大笑：“是啊，做梦都想在农村呆着，光着脚丫在水库边上玩的日子，一去不复返了。”

接下来，我又跟她谈到我的工作，如何写代码，会碰到什么样的问题，然后一路谈到大学的生活，谈到小时候在农村生活的日子，谈到现在的同事，谈到潘新和潘闻，还有我那些一直没实现的梦想与抱负……

我从来不是一个外向的人，但是我今天竟然如此滔滔不绝的高谈阔论，甚至有时候我觉得她已经听烦了。但是她一直坐在那里，双臂抱住自己的膝盖在那里静静的听着，时不时的微笑。

“别人都说程序员都非常不善于交际，显然你有点例外啊，感觉你还是非常外向的。”她笑着说。

“不是有句话叫‘酒逢知己千杯少，话不投机半句多’么。其实，我也是不善于交际的，也许我这种性格属于依赖他人型外向吧，是因为你让我变得外向了。”

在返回的路上，我们又谈了一些，时间过得太快了。

“好了，我回去写一份可行性报告交上去，我会回来拉网线的。”我便侧身去开车门。

她微笑的回答：“谢谢你，最好能快点把网线拉好，让我们这个农村，也能早点用上高科技。”我把车子发动以后，放下车窗，和她挥手再见，她便转身回去了。

回去的路上，我一直在想怎么写这份报告，能让公司快点派我来拉光纤。