上帝是个程序员----IT男的成长之路

作者: 懒人老吴

  日期:2015-01-04 22:14:00
  “每天上班7小时,每周上班5天。但手机一定要保持24小时开机,一旦有故障发生,一定要在15分钟内响应,有必要时要立即赶赴现场处理,有没有问题?”
  “没问题!”朱恨痛快地答应了一声。
  对于一个即将毕业的学生来说,有什么比找到一份工作更重要的呢?而且还是自己梦寐以求的程序员工作。面试很顺利,让朱恨相信自己的未来充满阳光。

  然而,9年后的今天,朱恨坐在G市的小蛮腰顶层,俯视着珠江两岸的万家灯火,回想起9年的程序员生涯,感慨万千。如果上帝曾给他一双看透未来的慧眼,那么9年前的他一定会坚决地对这份工作say no!因为他万万没想到,从接受这份工作开始,迎接他的就不再是阳光灿烂的未来,而是一个永远无法摆脱的噩梦。如果世界上真有一个上帝----他曾经那样的期盼上帝对他的人生指引,而现在的他,却对上帝的存在怀有深深的恐惧之情。

  朱恨永远不会忘记卓老师私下跟他探讨“上帝”这个话题时所说的话。
  老师说:“其实程序员就是上帝,程序员用枯燥的代码创造出一个个绚丽多彩的程序,每个程序就是一个小小的世界,在程序世界里,一切都按照程序员设计的规则运行。你说,这和上帝创造世界有什么不同?”
  一直以来,朱恨都认为:如果世界上真的有上帝,那他一定是个像卓老师这样的程序员。卓老师对他亦师亦父,不但教给他扎实的计算机技能,也教给他做人的道理,现在又给他介绍了一份好工作。对卓老师,他心里永远只有感激。

  日期:2015-01-04 22:28:25
  新员工的生活忙碌而充实,前两周在各种入职培训中度过,从公司制度到客户服务规范,从行政领导到客户经理,满满当当二十节课,还有数十份厚薄不一的文档。
  培训完后,朱恨被分到代号为X5的安全项目组,和他一起分到X5的还有一名一起参加培训的新同事谭旺,两人年岁相仿,都是应届生,虽然程序员话都不多,但两周的相处,也还算是混熟了。
  从第三周开始,项目经理张工指导他和谭旺接手项目代码,他接手的是X5项目的数据监控程序。这个程序和黑客程序的性质很像,成天监视着电脑被谁访问了,哪个数据被谁读过,又被写进了什么样的新数据。总之,怎么说呢,就好像是一双成天盯着电脑的眼睛,这双眼睛高深莫测,永不言眨,忠实地记录着电脑上的一切使用痕迹。
  经过两周的熟悉,朱恨已经对公司的开发框架和项目代码有了初步的了解,慢慢开始掌握这个高深程序的运行逻辑。
  日期:2015-01-04 22:30:19

  时间过得很快,一个月时间过去了,拿到第一个月薪水的朱恨非常兴奋,虽然作为实习生,工资不多,但是自食其力的感觉真好啊。朱恨和谭旺商量一起请师傅张工吃顿饭,张工很痛快地答应了,还答应他们将部门经理老韦一起叫上。可惜老韦经常出差,并没有来赴宴。当然,张工也没有让两位实习生请吃饭,而是由他请两位徒弟吃了一餐好的。
  说到老韦,自从他面试了朱恨之后,似乎很少时间看到他出现在公司,以至于朱恨都快忘记他面试时所说的要24小时开机待命的话了。直到入职后将近3个月的时候,有一天凌晨1点,突然一个电话把朱恨吵了醒来。
  “朱恨,我是老韦。东江通信的数据监控程序发生紧急故障,要马上处理,给你15分钟时间,接入到公司的网络,远程到办公电脑上!”老韦声音很急,一说完马上就挂断了电话。
  朱恨一时还没搞清楚什么状况,只得先穿好衣服,打开电脑。刚远程到公司的办公电脑中,办公邮箱就提示收到新邮件,是老韦发给他的服务器的日志文件。老韦同时在办公QQ中描述了故障的大致情况:

  客户的维护人员连续收到了7条告警短信,说数据监控程序没有心跳消息。心跳消息是每分钟发送一次,也就是说监控程序已经连续7分钟没有响应了。但同时,进程监控程序并没有报警出来,说明程序仍在运行,并没有被关闭掉。更奇怪的时,故障只发生了7分钟,现在心跳消息已经恢复正常了。我刚传给你的是数据监控程序的运行日志,这块是由你来接手的,你马上分析一下日志,看能不能找出故障原因。

  “好的”朱恨在QQ上回复了这条消息。
  “对了,第一条告警短信收到的时间是01:01:57,短信有大约30秒的延迟,也就是具体故障时间是在01:01至01:09这段时间内。”老韦又发来一条信息。
  老韦也是程序员出身(据说是公司元老之一,国内顶尖的C++高手),描述问题非常技术化。朱恨在脑子里翻译了一下,大致是这么个情况:
  所谓数据监控程序其实是两个程序,姑且称之为A程序、B程序吧。其中A程序就是前面所说的一双眼睛,盯着电脑上的一切动作。但这双眼睛,还只是螳螂的眼睛。它后面还有另一双眼睛----黄雀的眼睛,这另一双眼睛就是B程序。B程序做什么呢?它负责盯着A程序有没有在干活……如果A程序不干活,它就发短信告状,现在客户就是收到了B程序的告状短信,说A程序不干活了。当然,A、B这两双眼睛,是相互瞪着的,如果B偷懒了,A程序也会发短信告状。而且A、B程序还有一项特异功能,就是让对方满血复活。打个比方说,如果A程序被人干掉了,B程序立马就会将A程序原地满血复活—--重新启动,同时发条短信告诉主人:“A被人干掉了,还好有我春哥在,他又满血复活了”。

  好吧,技术上的事,说起来总是挺复杂的,总之老韦说的意思就是:数据监控程序没有被人干掉,但是它也没在干活。就好像它小睡了7分钟,然后又接着起来干活了。这是一件很神奇的事情!
  日期:2015-01-04 22:36:52
  日志文件有50兆,还好老韦及时提供了具体的时间信息,朱恨很快定位到01:01分的日志,但是奇怪的是,从01:01分到01:09分,日志文件中一共就两个字:“懒人”。这两个字孤零零地占着一行,与上下行的日志格式也一不样,并不是以日志时间开头的。好吧,事情越来越离奇了,好像数据监控程序也知道自己偷懒7分钟一样,自我标榜为:“懒人”。
  “01:01到01:09之间,日志文件中只有一条记录:懒人。”朱恨把这个发现发给了老韦。同时截了一张图过去。
  “什么???”老韦发过来的信息似乎非常吃惊。紧接着朱恨的电话响了起来,证实了老韦确实很吃惊。
  “什么!你说在日志文件中有这段时间有‘懒人’两个字?”老韦在电话中着急的问。
  “是的,我也不知道为什么出现这种情况,但确实只有这两个字,而且这一行日志没有时间。”朱恨解释道。
  “你准备一下,我们要马上赶到现场去!”老韦的声音越发急促起来。

  这下轮到朱恨紧张了,“现在?这么晚?去现场?”
  “是的,15分钟后,公司的车会到你楼下接你!”老韦说完又挂断了电话。
  “什么情况嘛!”朱恨完全没反应过来,第一次出差,居然是三更半夜的,还是这么离奇的问题,朱恨心里有点发毛,一边嘀咕一边收拾电脑,“要不要带衣服也不说,要待几天也不知道,这个死老韦。”
  15分钟后电话准时响起,“朱恨,公司车已经到你楼下,怎么还没下来?”
  “不好意思,我收拾两件衣服,马上下来!”
  “不用收拾衣服了,明天一早就回来,张工在现场等着!”老韦的话一向是这么简单直接,没办法,朱恨只好背起电脑包就走。
  日期:2015-01-04 22:39:27
  车上只有司机老黄和老韦两个人,朱恨一上车,老韦就说:“你在后排躺会吧,就我们三个了,G市过去H市大致1个半小时到现场。”说完他就靠着副驾的座椅闭目养神起来。甚至发出了轻微的鼾声。
  太神奇了!前一秒还在说着话,后一秒就睡着了。朱恨心里想着,自己却怎么也睡不着,望着车窗外飞速倒退的路灯,朱恨感叹这半小时真的是太神奇了。
  一路无话,当车停到东江通信的综合大楼下时,老韦立马神奇地醒了过来,“到了!走吧!”一边走一边拿出一张工牌给朱恨,朱恨注意看了一下,这并不是自己公司的工牌,老韦见他不戴上,回头解释了一下,说:“这是东江公司的维护厂商工牌,戴这个牌才能进到机房里。”果然,进到大堂就有经警来检查工牌,见他们两个戴的都是维护工牌才放行。
  一踏进机房,就看到张工正站在一排机柜前忙碌着,老韦着急地将朱恨拉到张工身边,点着电脑屏幕上的一个文件问:“朱恨,你刚才看的是这个日志文件吧?”

  “是的!”朱恨肯定地说。
  “但是你看”张工将日志文件拉到最下边,“并没有‘懒人’这两个字!”。
  朱恨吃了一惊,仔细看着屏幕上的日志,前一行是
  【2005-05-20 01:01:27】收到心跳消息,回复正常
  下一行却是
  【2005-05-20 01:08:39】收到心跳消息,回复正常
  中间那一条“懒人”没有了!
  “这不可能!”朱恨惊叫一声,手忙脚乱地打开自己的电脑。
  这次的开机格外漫长,在张工、老韦两个人着急地注视下,朱恨感到手心一直在冒汗。
  终于打开日志文件了,朱恨拉到文件最下边,赫然发现“懒人”个两个字依然夹在两行正常的日志中间!
  日期:2015-01-04 22:42:47
  三个人面面相觑,过了好一会儿,老韦才开口说:“看看这两个日志文件的时间。”
  “1点10分33秒”朱恨说。
  “3点15分42秒”张工说,然后又接着解释了一下“我打开的是服务器的日志,你那份是1点钟我传回去的。”
  “那有没有可能日志文件在这段时间内被修改过呢?”朱恨小心的问道。
  “你是说人工修改还是被程序修改呢?”张工反问。
  “两个都有可能吧!”朱恨小声说。
  “人工修改不可能,因为现场只有我一个人在这,没有第二个人打开过日志文件,而且,数据监控程序是一直在运行的,所以我打开的日志文件是只读的,根本修改不了。”张工语气非常肯定。
  老韦点点头“那只有程序修改这一种可能性了,回头我们再检查一下源码,看看是哪里写出来的‘懒人’这两个字,还有什么情况下,日志文件中的记录会被删除。”
  “我们的程序中不会写出‘懒人’这两个字的”朱恨肯定地说,代码我全部看过。
  老韦和张工对视了一眼,然后张工说:“这也并非完全不可能,我们知道汉字是占两个字节的,有可能出现两个字节组合到一起意外变成了一个汉字的”。
  朱恨心中有个模糊的念头一闪而过,正想开口,老韦挥了挥手,总结性的说:“这个问题我们回去再讨论,程序已经恢复正常了,现在最重要的是怎么写一份故障报告给到客户。”
  “对了,故障报告中不要把‘懒人’这个日志信息的内容写进去,这件事就我们三个人知道,等查清楚了再说。”
  朱恨不理解的问道:“那问题都没查到,怎么写故障报告呢?”
  老韦看了他一眼,没理他,而是转向张工说:“查一下01:01到01:09这段时间内有没有什么后台进程在运行,比如磁盘备份,杀毒软件等,占用了大量资源,导致数据监控程序假死了。”
  “嗯,我检查过数据库日备程序是在01:00分执行的,刚好是在故障这段时间内,而且备份的磁盘刚好是日志所在的D盘,如果备份程序将磁盘用到了100%,那么就会出现写不了日志文件的情况。”看来张工在这2小时内对服务器做了全面检查。
  老韦若有所思地点点头,“那有没有检查过备份的文件和现在D盘的剩余空间大小是不是差不多呢?”

  “是的,备份文件比现在的D盘空间大20M左右”张工回答。
  “那基本上可以确定是这个原因了”,老韦又回头看了一眼朱恨,朱恨心里一动,那个模糊的念头又要冒出来,但很快老韦接着说了下去,“张工你就按这个思路写一份故障报告吧!”那个模糊的念头就云烟般消散了。
  “你把磁盘剩余空间,备份文件大小,日志内容这些都截个屏,放到故障报告里去!”老韦又下了一条指示。
  “好的,我都已经截好了!”
  后来朱恨想了想,张工现场的分析确实是非常正确的,在那种条件下唯一正确的解释。翻译过来大概是这样:数据监控程序并非没有在干活,而是客观条件让它干不了活。打个比方说:你写日记写得正美呢,恰好日记本最后一页都被写完了;开车开得正爽呢,前面路被封了。7分钟后,新日记本买回来了,路通了,于是,日记又可以接着写了,车也可以继续开了。

  张工的工作确实做得非常到位。在以后的几年里,张工一直是朱恨崇拜的偶像,他认真细致的做事方式对朱恨造成了深远的影响。当然,在更多年以后,朱恨才领会到,张工和老韦在现场所说的每一句话都是经过深思熟虑的。他更没想到的是,在更多更多年以后,“懒人”这两个字就像魔咒一样,贯穿了他的整个程序人生。
  日期:2015-01-05 20:28:32
  第二章 牛刀小试
  第二天一早,司机就把朱恨送回了G市,而老韦和张工一直待到第二天晚上才回公司。客户那边认可了故障是由于磁盘被写满引起的,给服务器加了2T的存储空间,这个采购自然是由朱恨所在的H公司来承接了。
  回到公司后老韦和张工都没再提这个事情,朱恨多次私下查看源码,无论如何也找不到写出“懒人”这两个字的地方,张工发给客户的故障报告,也抄了一份给他,报告中并没有提到日志中有“懒人”两个字的问题。而且在几年以后,他也明白了张工所说的两个字节意外组成了一个汉字不过是一番鬼话。但是繁忙的工作让他没有更多时间去追究这个问题。而且很快到了6月,他的毕业设计还没交,他向老韦请了一个月假回学校做毕业设计。

  拿到毕业证后,朱恨再次回到G市,公司为新入职的员工举办了一次欢迎宴会,吃饱喝足之后又杀到KTV鬼哭狼嚎了一番,连一向严肃的老韦也乘兴唱了两曲,大家尽兴而归。朱恨等一干新人也从中感受到公司文化中热烈的一面,正式融入职场生活当中。
  在三个月的实习中,朱恨大部分时间都在看文档,看代码,维护X5的数据监控模块,并没有真正开始写代码。
  日期:2015-01-05 20:30:37

  新员工欢迎宴会之后,朱恨回到家就一直琢磨怎么让张工给自己安排些开发任务。像是猜到了他的心思一样,第二天张工就把朱恨和谭旺召集到小会议室,郑重地给他们分配了一荐“极其重要”的任务,张工做事严谨,说话也喜欢带上“非常”、“极其”、“严重”等情感强烈的词语。
  任务很明确,东江通信公司的电脑系统准备升级,因此H公司也要同步升级数据监控程序,张工简单介绍完之后,就开始做任务分配。
  “小朱,我看过你的毕业设计,你对数据库和网络编程都非常熟悉,而且对进程管理,内存管理也富有经验,我想,你来修改数据监控程序肯定没有问题的!”张工说得坚决而肯定,让朱恨心里感到无比自豪。毕业设计是他花了两个月心血的得意之作,分客户端程序和服务端程序两部分,客户端程序能将客户机上正在运行的所有程序,所占用的CPU,内存等资源发送给服务端进程;而服务端则将数据存入数据库,展现到界面上,并且可以通过服务端发送指令,直接关闭客户端的指定进程。当然,在逐渐熟悉了程序员这个行当之后,朱恨明白当年为之自豪的毕业设计,不过是调用了若干个API而已。而张工夸张的言辞则是每个领导用来骗员工加班的不二法宝。

  搞定朱恨之后,张工又对谭旺施展了相同的法宝:“小谭啊,从你在公司实习的三个月中,看得出来你对界面美工相当有眼光,很善于发掘客户在软件使用上的需求,我相信,由你来开发数据展现功能,一定会让客户非常满意的。”果然谭旺听到后也小脸红红两眼星光闪闪地保证,肯定不辜负领导的期望。
  不过张工并不是真的放心让两个应届生来负责这么重要的系统,接着又做出具体的指示:“数据监控程序之前是由林工开发的,这次他会协助小朱来完成代码升级,小朱你有什么问题可以直接问他;数据展现程序原来开发的李工去年已经离职了,不过这个关系不大,小谭这边我会安排公司最厉害的界面程序员,高级工程师大韦来协助你。”
  日期:2015-01-05 20:32:06
  接下来的工作简单而忙碌,说是由林工来协助,实际上林工已经完成了全部的设计,朱恨只需要按照文档完成编码即可。不过这也正是朱恨最喜欢做的事,看着程序在自己的一行行代码中逐渐丰满起来,朱恨感到由衷的满足。由于这次升级时间紧迫,所以经常要加班到十一、二点。朱恨喜欢这种生活,甚至于有点沉醉于这种生活,H公司办公楼在G大校园里,每次深夜下班后走过宁静的校园,心里想着在自己手中慢慢成型的程序世界,总是会不由自主地微笑起来。唯一让他心里不爽的是,张工一直没为他分配SVN账号,而是让他用林工的帐号来提交代码。所以看起来所有代码都是林工写的一样,不过这是小事,朱恨没有计较。不过出于私心,他还是在某些地方隐蔽地签上了自己的名字。

  谭旺那边的进展似乎没有那么顺利,她那点美术眼光在编码时完全帮不上忙,不过美女自有美女的好处,何况是稀缺的美女程序员。大韦几乎每天都陪着谭旺加班,下班后也很绅士地送谭旺回家。每天看到大韦手把手教谭旺写代码的样子,朱恨竟慢慢有了一种酸溜溜的感觉。

  “难道自己喜欢上了谭旺?”朱恨暗暗问自己。平心而论,谭旺算不上有多漂亮,圆脸,还有点胖,这都不是朱恨喜欢的类型,而且谭旺极易脸红,跟她多说几句话都有犯罪感。朱恨摇摇头,把思路切换到代码当中。
  日期:2015-01-05 20:35:04
  上线的日子越来越近了,张工又安排了两名测试人员过来帮忙,帮助朱恨做测试的同事姓夏,是个很活泼的小姑娘,刚休完婚假回来,成天脸上洋溢着幸福的笑容。小夏(H公司里有条不成文的规定,没有叫女同事为X工的,小一点的一律叫小X,大一点的一律称X姐)话很多,喜欢美食,人也幽默。她喜欢把一个BUG等同于一餐饭,每测完一轮之后,她总是一本正经地跟朱恨算账:“截止到2005年10月21日,数据监控程序累计测出BUG12个,即朱恨欠小夏12餐饭。”起初朱恨总是感觉不好意思,就像杨白劳旁边站了个黄世仁一样。时间久了,也慢慢了解到她不过是在开玩笑。不过朱恨一向不善言辞,所以通常也只是笑笑就过去了。

  BUG一个个减少,时间一天天迫近。终于在上线前两天小夏笑嘻嘻地跟朱恨说:“小朱,你欠我的饭可以结算了。”

  朱恨一时没反应过来,旁边的林工大力拍了拍他的肩膀说:“小夏是说你的程序已经通过测试啦!”
  “啊?!这样,那真的要请你吃饭哦,就中午吧,好不好?”朱恨兴奋地搓了搓手。
  小夏抿嘴笑了笑,说:“我就算了啦,不过你是应该请林工好好吃一餐,好好感谢感谢他。”
  林工哈哈一笑说:“别急,饭是要吃的,不过先得把事做完。小朱,你这边程序测完了,还有两件事要做,第一是要制作安装包,第二要写个升级文档。”
  这两件事朱恨之前从未想过,之前自己做的程序都是用U盘拷贝一下就OK了,更没有升级文档一说。因此,听了林工的话朱恨半天才反应过来,支支吾吾地说:“这个文档----怎么搞法?还有安装程序我之前也没有做过。”
  “安装程序很简单,一会你用VS创建一个安装包就行。文档呢,之前有现成的文档模板,你从SVN上拿下来,稍微修改一下就可以了。”
  朱恨是个喜欢钻研程序的人,对于创建安装包,很快就在google上找到了资料,按教程一步步做下来,居然很顺利地生成了安装包。
  不过部署文档这个对朱恨来说可是件头疼的事了,WORD对他来说,比VS难用多了。好在SVN上有上一个版本的部署文档,里面按章节写得很清楚,升级文件,升级文档应该放在哪里,几点钟开始,谁来操作,更新前必须要做的备份工作,升级后的测试流程,测试不通过后的恢复流程,以及升级过程中的注意事项,居然写了12页之多,朱恨真是大开眼界了,没想到简单的一个复制粘贴操作竟然能写出10几页文档出来。看到首页上注明的作者是林工,朱恨想不到林工除了代码外居然还写得一手好文档,真是大开眼界了。

  在请教了林工多遍之后,朱恨按林工的指导,对每项操作一步步修改下来,居然整个文档才改了100来个字就可以了。真是万事开头难啊。
【网站提示】 读者如发现作品内容与法律抵触之处,请向本站举报。 非常感谢您对易读的支持!举报
© CopyRight 2019 yiduik.com 易读所有作品由自动化设备收集于互联网.作品各种权益与责任归原作者所有.