写了十年代码的老程序员是什么感受?

作者:投稿 , 分类:经验心得 , 浏览:30377 , 评论:8

  从1990年算起,到现在已经有25年了吧。现在不太写代码了,也就看看别人的代码或者写个console application做点实验验证。

  

  其实我相信在那个年代,学编程和玩游戏是紧密联系的,刚接触编程语言的时候的想法就是为了写游戏啊。小学时基本没接触,到了中学预备班遇到一个同学是我的启蒙师傅,他在少年宫计算机兴趣小组的,传说中的邓摸头(画外音:计算机要从娃娃抓起)就是和他们一起的。我开始学电脑就是跟着他混的,后来自己也去了少科站计算机课外班。

  

  最早就是Apple II上学BASIC。每次去少科站的上机时间很有限,所以我们都是事先在练习簿上写好代码,到上机的时候迅速输入而后抓紧时间调试的。我记得我写的第一个比较完整的游戏就是一个梭哈游戏,在练习簿上写了大概4-5页纸吧。纯文本的,你下个注,然后你的电脑每人发5张牌,比较大小。估计是那时候看的赌神类电影受的影响。我还能记得当时的两个难点,一个是怎么洗牌(后来用的是随机交换两张牌n次),另一个是怎么比较大小,后来是先排序然后比较死板地判断牌型(炸弹,3带2,等等)。

那时候的经典游戏就是crossfire了,居然能在wiki上找到。就是下图这货,IJKL控制移动,ESDF控制往哪个方向射击,非常考验左右脑配合。

52d91651c9082ca1b5657de3c8a15778_b.png

  后来我又做了个开车躲避障碍的游戏,算是一个“大作”了,也就是有几条车道,用键盘控制左右切换车道,来躲避前方障碍,还可以吃东西。

  

  当时我师傅写了个街霸游戏,就是模仿街机里的街头霸王,只不过是用几个色块表示一个人,可以发波动拳,升龙拳,和旋风腿,非常好玩。要知道这都是BASIC写出来的啊。

  

  后来开始接触DOS和C语言了,然后自己家里搞了台XT-286,装个Turbo C就可以自由编程了。那时候资料实在太少了,所以会写个TSR就算很牛的了,我还记得时钟中断是每秒18.2次,然后设两个计数器,第一个每18次就知道过了1秒,第二个记满5次就要补偿1秒。如果你能搞定XMS/EMS那就是属于特别厉害了。

  

  那时候游戏都很经典,比如这个,三国演义1,智冠的:

26211882ea4f8f99891732ec09cc221c_b.jpg

这个轩辕剑1,这个县太爷其实是个老虎精变的:

201509101441861511314218.jpg


当时我们也想做个大游戏,都企划好了,模仿那是得街机游戏快打名将,主角是机械战警,人设都画好了,招式什么的都想好了。然后我还写了图形库,比如用来TextOut的函数库,那时候在图形模式下是要自己读字库文件然后自己画出你要输出的字符的。


后来我也忘了为什么没有做下去。


那时候还学了dBase,那个东西还是挺好用的,算是Access这种类型的祖先了吧。学那个的主要原因还是时常要给我爸朋友公司做点数据库相关的程序,比如做个员工工资管理系统啊,进销存系统啊,之类的,用dBase是最简单的了。后来慢慢换成FoxBASE,FoxPro。


大概94年左右吧买了modem,开始接触BBS,C-Fidonet。不是Internet,是打电话到别人家里去的那种BBS。估计这里知道的人比较少了。这个是蓝波快信了。

05e8f1bc71b5498229a25824956ccc9b_b.jpg

 然后有了Internet接入服务,就开始学做网页了,那时基本都是手写html的,不过这也算不上编程了。那时候网站编程基本是cgi模式,做个一个计数器就是用cgi方式。我那时在geocities上做了第一个个人主页。

  

  那时候比较热门的网站有pchome,站长叫Hayes,modem的品牌名。我算是第一批给pchome供稿的人群了。我记得那时就是自己用htm做好网页,包括用到的图片文件,打个包发给Hayes,然后他再放到网站上去。后来听说pchome卖了挺多钱啊,也没给我分点稿费。。。

  

  比较有意思的一个插曲,有天有个Ubisoft的人突然给我发了个email,说看到我在pchome上的东西要找我聊聊,然后我和几个小伙伴就去Ubisoft的办公室了。我们还是高中生,见到了那里的电脑技术立刻就晕了,这个差距好大啊。聊的内容主要是听听我们对游戏的想法啊什么的,当时挺羡慕那里的工作的,觉得这就是理想啊,可惜年纪太小了,高考还没考呢。

  

  后来到了大学里,网站技术越来越成熟了。我们那时候成立个工作室,趁着那时候.com火热,到处接活干。各种技术都用过了,一开始用得比较多的是asp,不是http://asp.net哦,就是手工拼html输出的asp,然后配合ADO和access数据库,算是一种很经济的开发手段了。后来也用过jsp和servlet,php,mysql。那时候基本算全栈了,不光是coding,连macromedia三件套也是熟练运用了。

  

  网站做好了一般是放在电信的虚拟主机服务上,一台主机有多个网站挂在上面。当时大家的安全意识真的很差,用的NT4的服务器,基本不打补丁,好多漏洞。比如那个用Unicode的..\就可以访问到根目录然后就可以调cmd了,还有像SQL注入也是90%命中,因为基本都是在asp里面拼sql语句。我记得有个.com的网站和我们的挂在同一台服务器上,然后我居然能看到他的源文件,里面有数据库连接串啊。。。

  

  那时候也找一些软件公司替他们做外包项目,基本上什么都做,网站啊软件啊都有,还有做flash的。印象比较深的一家叫火速,给他们做得比较多。刚开始合作的时候那家公司没几个人,CTO是个女生,技术上的事就和她谈的。后来听说他们越做越大了,有上千人规模,也挺不容易的。

  

  桌面开发入门的是VB,真的太好用了。后来转到MFC,貌似纯WIN32开发被我跳过了。

  

  毕业工作后基本上就是忙工作上的事了,业余时间不多。有一段时间比较迷p2p下载,就是电驴电骡那个时代。我算是国内第一批接触电骡eMule的,那是个开源项目,用MFC写的。当时看到没人去做简体中文的本地化,就去申请做了简体中文翻译,也就是写个中文的resource文件,电骡启动的时候会载入相应语言的resource文件,也就实现本地化了。后来的各种电骡版本基本上都继承了我最初的翻译,我的翻译有个特征码的,有一个选项叫Beep on error,被我一时脑残翻成“出错时嘟嘟叫”,后来若干年后我随便下了个电骡发现还是这句。

QQ截图20150910130557.png

之后给eMule开发小组提了不少bug和小段代码,对eMule的代码算是比较了解的了。那时候国内的p2p下载都是基于不少论坛的,我主要在一个叫牛过的论坛,后来分裂了一个叫牛过一个叫汉风。我们一群人做的事就是先到某个ftp下载一个片子,然后放到自己的emule里面共享出来,当然我们的id里面都是有名号的:[CHN][Hanstyle]名字,这样的。


再后来我做了个eMule的mod,提供给论坛用户使用。有什么作用呢?第一会给带特殊标签的用户名更高的优先权。什么意思呢?eMule里面你的上传队列是有限额的,比如同时给10个人提供上传,然后其他人就会在你这里排队。排队的时候每个人就会有个ranking值,随着排队的时间ranking值会变高,这样决定下一个机会给谁。当然会有其他的因素决定ranking,比如是不是好友啊,是不是passive connection啊,然后我那个mod里面就加了另外的因素,比如如果你的id里面带[CHN]就乘个系数,哇咔咔。论坛当时分裂的另一边也做了相似的mod,差不多的策略。


所以你就别奇怪之后电骡里面的人名怎么很多都带[CHN]了,后来的VeryCD版本还自动给你加[CHN]这个tag,我们就是始作俑者啊。现在想想也挺幼稚的,并不公平。


后来mod里面又加了个挺强力的功能,因为论坛想要统计每个成员的下载和上传量做考核用。这个怎么实现呢?上传量这个数据本来就是emule客户端自己统计然后记录在ini文件里面的,很容易就可以篡改。后来想了个很傻的办法,把上传量,你的id之类的数据,加上一个盐,hash一下再保存在ini中,然后定期给一个web服务器post这些信息,服务器那边会用同样的算法hash一下看看是否被篡改。其实这东西很容易破,因为用到的盐和算法都在客户端代码里面,逆向工程就可破了。不过当时用用效果还算不错的。现在想想这不就是PT吗?


然后更新了几个版本我就玩消失了。太累了。后来我又出现的时候已经叫中国驴了,作者acat就是当时隔壁论坛那个mod开发者,和他联系上后又和他合作写了一段时间代码,再后来感觉无爱了就又消失了。


说了这么多玩的,再说说工作上的编程吧。我进微软后先做的是技术支持,所以也算不上是程序员吧,主要的时间花在windows的调试(蓝屏啊系统锁死啊之类的),因此大多数时候我是在看代码而不是写代码。几年的时间我也数不清看了多少行windows代码了,可以说是阅码无数,心中有码了。编程主要是做点小工具用来帮助调试,或者是模拟客户环境来试图重现问题。一般就是写个console application调用些win32 api就可以了。有时候会改下windows某个组件的代码,加点调试信息,自己编译一个版本出来,让客户替换上,这样可以在下次发生问题的时候获得更多的信息。也有时候找到个bug,自己先做个fix给客户试一下,如果有效再走正式流程出hotfix。


后来到了产品组,做的职位是测试开发工程师,从Windows Server 2008到R2,再到SQL 2008 R2, 2012等等,写了好多测试程序。有时候是有现成的测试框架你只需要写测试用例里的代码,有时候就是从框架的测试用例都是自己写。比较有意思的就是不时地想些新方法来测试。比如有一次用Model-based testing,先写一个模型出来描述测试对象,比如要测一个对话框,用一个模型(类)来描述这个对话框的状态以及各种动作(点击按钮),然后模型里面自己计算出各种状态正确的改变方式,同时用相同次序去操作测试对象,然后比对两者结果是否一致。模型建立完善之后,就可以用随机数生成各种各样的测试步骤了,会找到一些你根本想不到要去找的bug。


发现bug后进行调试也是一个必备的技能,因为之前有大量调试经验所以这还是很顺手的,经常是开个bug,自己把bug的原因找到,然后把fix代码做个changelist打包到bug里面,然后dev只要check in就行了。


开发技术上,看到的主要是由C++ native向C#的变迁过程,使用.net的越来越多,产品代码和测试代码都是这样。现在做Azure云服务基本都是C#了。


再后来带了团队,然后测试和开发也合并了,工作重心就转到工程管理上了,想的更多的是做什么,怎么做是正确的,而不是自己去做这件事。有时候一个正确的决定,可以躲过好多坑了。现在带个小队伍,主要做内部工程系统的研发,比如做一个持续开发部署平台,或者做个生产环境的监控报警平台,或者做个云测试平台。做的东西不固定,目标就是提高内部工程开发的效率。做这个最有意思的一点就是没有产品经理啊,自己就是产品经理,自己得决定做什么,什么先做什么后做。


现在代码已经很少写了,最多就是看看code review,有时候心血来潮也会打开windbg调下bug。

感谢【微软校招】提供的稿件,想要报名的小伙伴进去看看

版权说明:如非注明,本站文章均为 华省省 (QQ:283365526)原创,转载请注明出处和附带本文链接。

发表评论

必填

选填

选填

◎参与讨论,发表您的看法、交流您的观点,加我咱俩聊聊QQ:283365526

已有8位网友发表了看法:

1#香港vps  2015-09-10 14:18:37 回复该评论
写了十年代码的老程序员,如果他很爱写代码这个工作的话,别说写十年就是让他写几十年他都愿意
1#群伟伟博客  2015-09-11 12:52:53 回复该评论
你的评论一针见血的节奏。。
2#群伟伟博客  2015-09-11 12:52:38 回复该评论
群伟伟:目测省省这里流量正在减少。。。。。[嘻嘻]
3#星辰美文网  2015-09-11 18:27:15 回复该评论
感觉我很屌的样子
4#聚合网站目录  2015-09-11 21:44:43 回复该评论
好牛逼的前辈啊
5#博客导航  2015-09-26 20:50:37 回复该评论
这才是真正的程序员啊 现在还有几个从这么基本开始学
6#老迷糊街拍  2015-10-10 14:50:36 回复该评论
我的新站2个月做到了每日6000ip,可以吗?
7#购物分享  2017-03-21 12:52:44 回复该评论
不错赞一个
热门文章
站长新闻
IT创业
好文分享
热评文章
华省省博客