您的位置:首页 > 理论基础

一个计算机爱好者的不完整回忆(二十四)最累的一次

2012-06-25 17:09 288 查看
  在编程比赛后就是计算机知识大赛的决赛,是要上电视的,我们这些单项比赛的获奖选手也都在现场当观众,最后进行颁奖仪式,那是我第一次上电视:)各单位的领导也都去了,我们厂的书记参加了这次活动,非常高兴,因为说编程大赛的冠军单位是船厂的,回厂后还特地在办公会上表扬了俺——口头表扬,一点实际的都没有。其实我是以我们论坛的名义参赛的,我们工厂实际上也派出了人员参加编程比赛(计算机管理处的),甚至在收到我的获奖通知后计算机管理处还联系人事局说“你们把名字搞错了,我们参加比赛的是XXX,XX……”,接电话的是我那个哥们wenbo,他说没错,就是你们厂的,只不过他是个人名义参赛的。

  之后,人事局还专门在专利技术园区(都是IT企业,绝大部分都是做软件开发的)举办了一个人才交流大会,我们这些获奖的选手也都特邀参加。没想到的是忽然发现自己成了香饽饽,其实按我的观点,这种比赛的冠军有什么啊,不就是一次比赛么,真没想到那些公司真的很想把你拉过去。那天我被拉来拉去,经常在这个公司聊了一阵,很快就被另一个公司拉走。不过我也跟这些公司讲了,我说基本上你拉我们是没什么希望的,前十名的选手中只有一个人是没有稳定工作的,剩下的选手中我的工作单位是最差的——造船厂,还有移动公司的,剩下其它人的工作单位不是地税局就是这个局那个局的,根本就不可能跳槽出来加入你们公司的。不过虽然没加入任何一家公司,不过跟几个公司的人就算是认识了。其中和我一起参加比赛那个MM的公司我去的最多,主要是那个MM本来就是我网友,关系也比较好,在参加比赛前我就经常去他们公司。有一天他们公司的老板找到我,说有一个软件需要找人来做,他们公司的人无法完成,问我是否愿意做。我了解了一下这个软件的情况,有难度,需要好多新的知识,好,那就做。老板说这个软件他一共报价8000,其中给我4000,剩下4000归他们公司,我说这个软件难度比较大,很累啊,然后他就涨到4500了。后来才知道,这个软件其实卖了八万。

  这个软件来源实际上是当时XXX区劳动局要做一套系统,主要功能是做劳动就业管理的,包括退休、下岗、安排就业方面的数据库程序。如果是单机的话这个软件一点难度都没有,问题是这个需要联网,更大的问题是劳动局把任务给了一个懂电脑也懂“经济”的人,他们还专门买了一台服务器(大概也花了几万),当年是这样的,见不到实物光靠软件卖钱那太不容易在领导面前汇报了,其实现在也一样,很多领导从来不认为软件会很值钱。不过除了那台服务器外,就不能再增加其它的钱了。所以基本情况如下:一,不能使用WEB,那样那台服务器就没用了,并且用WEB的话领导也会觉得看不见摸不着,必须看得到软件才行(当年给领导看下浏览器就想要钱?);二,没有宽带;三、20来家单位散布在各个地方;四、一个月内完成。最后给我的要求就是那台服务器接一台调制解调器,其它各单位的电脑也都安装调制解调器,也就是说各个单位的客户端都要通过调制解调器与服务器通信,数据库操作也要通过这种方式完成。并且每个单位内部都是局域网,局域网内的每台机器也都有可能录入数据。

  首先我跟那个人商量了一下,局域网内单独找一台机器做服务器,做一个C/S模式的软件,整个单位所有人的录入数据都保存在这台服务器上。在这台服务器上做一个客户端,用来向位于劳动局的服务器进行数据的提交、修改、查询、更新到本地等操作。这样等于做了两个独立的程序,能更清晰一些。局域网内的还比较好做,但与劳动局服务器连接的这段不好做,其实本质上这也算是一个局域网程序,通过电话线直接互连的。然后我做的第一件事就是赶紧去查调制解调器的AT命令。最开始的时候我以为我可能需要自己做通过调制解调器进行数据通信的模块,后来觉得那个太费劲了,根本无法在一个月的时间内完成,所以直接拨号拨通了(对方提出要求必须是我程序自动拨号,不能由操作人员拨号)后等于就连成局域网了,然后直接通过局域网方式进行数据库操作,只有这样我才能按时完成——我当时白天上班,只有晚上7点到夜里2点这段时间才可能编程。

  猫的速度大家都知道,最快也就56k,当时做了很多尽量减少传输量的工作,在做本地局域网的时候按查询条件直接提取出全部数据的方式肯定是不行的,所以当时对数据做了非常多的标记,每次都先传输一些数据的标志来确定哪些是新增的,哪些是修改过的,哪些是完全没改变的,发现修改后还要判断是什么单位修改的,涉及到数据不同步产生冲突的问题——有点类似于两个人同时共享打开word并都做了修改,你还需要确定一下以哪个版本为主。总之,那真是麻烦死了,而这种麻烦大部分是我自己给自己找的。实际上我也可以不用做这么多减少传输量的工作,可以借口说因为猫的速度慢,所以进行数据更新会比较慢一些,但我觉得我不应该这么干,一个做软件的人不能这么没有追求,不能这么糊弄。最开始的程序结构还是很好的,后来随着问题的不断出现,开始不断地进行修补,最后功能是完全实现了,而且也很稳定,但我自己知道代码结构不那么清晰了。如果我重新梳理一下应该会好很多,但做完这个程序后实在是太累了,看到这些代码就不想再碰了。

  与一个懂编程的计算机爱好者进行需求分析既是幸福的也是悲惨的,我后来的开发都是直接跟这个软件的第一级承包者(就是我说的那个既懂电脑又懂经济的那位)进行交流,他提出的需求远比那个开发公司的要明白得多,并且对我提出的一些建议他也很快就能采纳,交流起来非常顺畅。但也有我说的悲惨的一面,在我接触过的人中,程序员通常不太考虑用户感受,往往只注重功能,而编程爱好者通常会考虑到这些问题,这个人是一个爱好者,他提出了很多我也认可的要求,比如前面说的不能要求用户自己手动拨号,必须由我的程序来完成,因为不是每个使用计算机的人都会拨号的,比如与服务器连接后所有的数据更新都应该静默完成,你不能要求那些只会打字的人明白什么叫数据更新、什么叫数据库,换句话说,用户只管打开客户端,输入用户名密码后,他就负责录入和修改数据,除此外,什么都需要程序自己后台解决。要知道,服务器只有一个猫,20来家单位,很有可能别人连接上了你这边就无法连接了,这种问题也不能明确提示用户(不然用户有可能会认为你的程序有问题,至少觉得软件不够完善),只能自己先在本地保存,然后等待可以连上的时候再进行更新。由于细节方面的要求比较多,所以也造成了工作量的大量增加——最关键的是我也认为这些要求都是很有道理的,即便不提,我也会去做,只不过可能有些地方考虑得多而有些地方可能考虑的少一些而已。

  后来我在与一些给我们单位做软件的公司进行需求分析调查的时候也是这样的,我能很清楚的说明白我们需要什么样的软件,但我提到的一些细节方面的要求会让他们很头疼,因为软件公司就是这样,你不提出来的功能他们绝对不会做的。

  总之花了一个月时间,我做出了第一个版本按时交工,然后又花了一个月的时间进行部署、修改和完善,彻底完工。由于那个第一承包者本身就懂电脑懂编程,所以交工后我没做过维护,代码质量还是很高,没有什么软件本身的错误,而一些使用方面的问题我则完全不管,都是那个承包者负责培训,毕竟他是第一承包者,劳动局的人不会用这个软件肯定直接找他。这个软件应该没用太久,我估计也就一年多时间,搞了政绩拿到表扬也就算完成任务了。

  其实这世界很小,那家公司的财务也是我的网友,她还是我老婆的中学同学,而那个第一承包商后来居然是我老婆同事的老公。根据以上这些人后来提供的不完整未经证实的信息,劳动局大概出了15万把这个工程交给第一承包商,第一承包商把这个工程以8万的价格给了那家公司,那家公司以4500元的价格给了我。现在看,赔了哈,没办法啊。不过这个软件我做得真是很累,当时也正是因为有挑战性我才接的,如果只是普通的数据库应用,我一般都不会接,我从来没打算以编程为生。做完后其实还是有些得意的,一个十多人的公司都做不出来我一个人只用业余时间就搞定了。代码不完美,其实我的代码从来就很丑陋,从来不按标准使用变量名函数名,我最喜欢的就是英文加拼音(比如FindPinyin、ShowXingming之类的),呵呵,但是整个软件呈现出来应该算是完美了,别人要求的我做了,别人没要求的地方我也做了。虽然做完后我成了那家公司程序员们的偶像,虽然跟那个第一承包商成了朋友(他曾经跟我说我们城市大概只有我才会把把程序做成这个样子),但总体上,这个软件给我留下的回忆更多是痛苦而不是骄傲,并不是因为价格问题,而是这个软件我做得太辛苦了。尽管这个软件也是我自己非常满意的软件之一,但从我彻底交工后,那个软件的代码我再也没有翻开看过。

  当时就好像有一种强迫症一样,要做就要做得很完美,每一个细节都要做到尽量最好——我能力范围内的最好。现在,再让我用Delphi或者C#,我都觉得自己无法再做出当年那样的程序了,工具的进步无法替代一颗热爱的心(现在仍然热爱编程,但能够投入的程度有限,毕竟老婆孩子占据了生活的更重要的部分),用心写出来的程序才是最好的,跟所用工具关系不大。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息