我十年学习编程历史:在自我鄙视和鼓励中爬行

2012 年 10 月 25 日5240

IT之家(http://www.zjjv.com/):我十年学习编程历史:在自我鄙视和鼓励中爬行

首先,我不是标题党。其次,我只想说说十年来我自己的关于编程的故事,做过的一些乱七八糟的程序。我的成长并不快,下面这些程序已经足够让我丢脸的了,喜欢发难的朋友,尽管嘲笑我吧(当然,如果你产生了共鸣,我们或许是同龄人、好基友)。最近尤其喜欢回忆起一些以前的故事,是不是说明我越来越迂腐了?

其实接触编程,是从更早学习机上的G-Basic开始的。但那时的我只能说凑个热闹,回忆似乎已经模糊不清。所以这段时间实在不能算作什么历史。不过无疑学习机,以及是早些时候在同学家玩的电脑,才是真正领我进入神奇计算机世界的启蒙者。

2002年正值我高二,学校要组织一帮人去参加编程的比赛,我还记得当时对电脑有点兴趣,买了一些电脑的书籍,看了以后就开始改学校机房的注册表。老师看到了大概觉得孺子可教,让我去参加。那时候我可真是无知者无畏啊。题目可以选Pascal(好像是它)或者Basic,我选了后者,但是试卷的得分估计比零分高不了多少。

不过好在我脸皮够厚,没有郁闷很久,开始学习一些关于VB的东西。到后来买了一本正儿八经的编程书籍,就是这一本:

这本书是我真正编程的启蒙书籍。有人说过,程序员如果学习的第一门语言是VB,那么他不会成为一个好程序员,不相信的同学请自行搜索Dijkstra的博客。VB给我的第一感觉就是拖拖拽拽就写成程序了。所以,我至今仍然尤其喜欢拖拽……

其实到后来我还真用VB写出了一个发布到网上去的软件“妖精之翼计算强化训练”,现在在天空软件园等等地方还有下载。这款软件算是标志着我我拖拖拽拽到一定级别了(汗……)。软件提供了各种各样用预置的或者随机生成的计算题来虐待莘莘学子的功能(这真是我做过的一件无比罪过的事情),比如等级挑战、统计计算、题库读写、闯关模式等等。如果你曾经听说过,甚至使用过。不如告诉我,我向你认错……

好在大学的第一堂程序课是C语言,而到了2005年上半年,我们团队4个人,也用C语言正儿八经地做了一个“326管理系统”,这个取名完全是搞笑地缘于寝室的门牌号。大学的课程可不就擅长让学生做管理系统么?内容则完全是拼凑,包括通讯录管理、飞机票管理、学生管理和员工管理四个子系统。听起来就水的很,在当时写着软件却让我感到无比的快乐,自己设计了一个密码公式,用C语言显示图片,还有看到同学实现了鼠标的功能,都让我激动不已。即便是现在,想想那时候学习编程的故事,都会充满动力。

之后是纯真的年代、装叉的年代,以及吟风弄月的年代。我赶在这个时间里开始屁颠屁颠地学习HTML、CSS以及JavaScript,而且还有那些五花八门的图像处理软件,比如Photoshop、Fireworks,还半懂不懂地搞了一把Flash制作。右图是我正儿八经做的第一个网站(一看标题就是文艺青年对吧……),申请了一个临时免费空间,网站主要是用Frontpage做的,然后摘抄一些网上文章,再把我那些热烘烘的文字贴上去(全部都是静态网页),激动地我好几宿没睡好觉。

再看看我那时候用Photoshop弄的图,是不是还是可以稍微装一装的?

参加学校的社团联合会实在是让我收获很大。不是说我从中锻炼了多少,倒是实现了两个目的:1、找女友;2、学软件。我们用IIS维护一个网站,对于每次大的活动,我们都要做一个相应的页面来宣传,比如这个:

当时项目组有一位会用ASP的同学,我佩服他佩服得不得了。现在我还会和他聊起那个时候的故事。

接着一个耗费很大精力的考试系统,JSP+Servlet的,我们做失败了。这算是一次比较大的失败,小组都解散了,我被老师数落得无地自容。好在后面一起做了一个OA系统,Struts+Spring+MySQL+Tomcat,页面是用Dreamweaver搞的,费尽力气总算是弄出来了(足以证明我的智商实在是不咋地),可我还是缺乏足够的审美……

后来也用C++、C#,甚至汇编写了一些程序,大部分都是一些算法、解题之类的程序,反倒没给我留下非常深刻的印象,就不截图了。大学里学的东西其实还真不少,只是大部分似乎都没留下来。如果给我机会再来一次的话,我大概会把算法课再好好琢磨琢磨。

大学期间做了N多网站,我的毕业设计还是网站,这次使用Groovy on Grails来实现的。

给我印象最深的就是代码量不大,但是做出来的功能却不少。学生嘛,当时就是觉得功能越多越牛叉。排行榜、搜索、过滤、评论、评分、好友、IP封锁、网站地图……巴不得能想到的那些比较容易实现的功能全部都堆上去。

在整个过程中,我们试图按照软件开发的流程往下完成,乱七八糟的文档,还有UT都写了,当时也不管什么是有用的、什么是没用的,只要是有精力去完成的,就都尝试了。这段时间大概是我学生期间进步最快的时间。

最后,毕业纪念,还是做网站留念,简陋至极,就不截图了。

工作以后,第一个项目是关于彩铃系统的,也就是大家现在接触到的彩铃,当时就是我们团队维护的。整个系统分成前后两部分,前端外包给其他公司实现,后端我们自己维护,中间通过SOAP协议连接。终于不是网站了,我有点儿解脱的感觉。当时我负责的需求业务上有一点儿复杂,但是实现起来基本上除了写SOAP接口就是眼巴巴地看着DB牛人写那些存储过程。我对于软件工程的大部分认识,似乎就是从那时候开始的。至于学校里学的那些关于软件工程的玩意儿,基本就是过目即忘的。

之后的项目ESG-E,一个电子节目单的系统,对外暴露接口,没有界面。看起来似乎简单易上手,很适合我们这些经验不甚丰富的程序员下手。如果你使用过联通的手机电视,那么应该有我当时的一部分印记在那里。到了北京联通总部去开局,半夜常常起来解问题,要不就干脆通宵,搞得疲惫不堪,被局方以及现场的各种领导折磨得不成人样,那段时间应该算是最苦逼的岁月。实践出真知,我的Linux基础知识大概是那时候获得的。

再接下去就是两个短期的小系统,一个是iPhone上的手机电视开发,可惜的是我们不做核心的解码器,只是用Objective C做外壳;还有一个是数字版权管理系统的维护,DRMC,从中我逐渐体会到了维优工作的艰辛。程序员倒是确实应该多尝试各种事情,后来发现这些苦头也算没有白吃。

我一度以为不再接触网站了,想不到又回归本行。接下去做了几年的一个基于Portlet的产品,就是大型电信解决方案中的一个电信门户网站。我们从网站最初的需求梳理、原型设计开始,逐步把它从一个小小的雏形发展完善成庞然大物。以至于它后来庞大得让N个团队一起去交付和维护,甚至有些变了形,不再清晰灵活(网站上有许多文章都源于和这个庞然大物斗争而获得的启示)。去年一年时间则花了很大精力在整个系统的性能分析和优化上,一方面这类问题尤其折磨人,另一方面也获得了一些宝贵的经验,而且还在其间结识了一些低调的牛人。

下面就是该产品的一个定制版本,中国移动手机动漫:

现在我开始接触一些有意思的东西,比如分布式的计算、部署自动化的框架等等;项目要求下也逐渐涉入纯后台的关于机器学习、数据挖掘的算法和程序代码,感到充满挑战,又觉得知道得太少,每天在自我鄙视和自我鼓励中爬行……

0 0