对于1998年以前接触过PC的人来说,求伯君是一个传奇,他是软件个人英雄主义时代的代表之一。从1988年5月开始,求伯君为了编写WPS,将自己锁在了宾馆,和方便面结婚,引爆肝炎三次,每次住院一两个月,在医生的告诫中,他却将电脑放在病床前继续一个人战斗,就这样反复折腾,1989年9月的某天,国内第一款中文字处理软件WPS1.0终于问世。那时的微软还没有推出office。
那是一个个人英雄主义时代,一个程序员便可以创造一个经典程序,王永民的王码、王江民的KV杀毒、鲍岳桥的UCDOS等等,他们和他们的软件无疑是那个时代的代名词。自从进入21世纪,互联网的兴起,个人英雄主义时代也退出历史舞台,因为现在要想一个人单打独斗完成一个中规中矩软件项目,那是难上加难了,原因在于时代在进步,软件需求及其本身的开发越来越复杂。在这样一个时代,唯有团队合作才能完成一个出色的软件项目。
从《构件之法》的第二章开始到第五章,作者给我们深刻阐述了个人技术和团队合作的重要性,可以说在现在社会中,团队合作已经深入到每个行业中了。当然首先还是要把个人的技术提升上来,作为一个软件工程的学生,我相信大多数学生以后的职业追求还是想成为一名软件工程师,而且还是一名职业的软件工程师。每个人不是生下来就无师自通,勤奋学习,刻苦练习才能逐渐成长。作者对于初级软件工程师的成长谈到了许多地方,最重要当然是编程基础,那是基本功,而且还要掌握设备驱动器,内核调试器和某一开发平台的使用。这些都能体现在我们毕业后的面试简历上面。对通用的软件设计思想和软件工程思想也要深入理解。还有就是职业技能的提升,这区别于技术方面,主要是为人处事,人际交往方面。
最后我们一定要自己做出来的“成品”,这是非常重要的,行动永运胜过空言,不然对于我们这一职业单凭简历上简简单单的描述是远远不够的。
正如我在文章开头提到的软件工的个人英雄主义时代已经过去,现代软件产业经过几十年的发展,一个软件由一个人单枪匹马完成已经很少见了,软件都是在相互合作中完成的。作者在第四章谈到的合作的最小单位——两人合作之间一些基本的注意点。我们思考这样一个问题,我们写的代码是给人看还是给机器看?其实都有看,但是最终还是给人看,所以最重要的一个点就是我们的编程规范,我们可以从看同学的代码之中体会到编程规范的重要性,一个同学代码出了点问题,编译没通过或者程序运行出错,叫你看看,虽然你也写过一模一样的程序,但是两个人的变量命名方式,缩进,括号和换行等等在大多数情况下都是不一样的,特别的变量名的命名方式上面,如果不是规定好了,那肯定是每个人都有自己的一套,如果这样的话,你来帮忙调试,还得一个一个变量的问,一个一个方法(函数)的问,愿意的同学有着耐心,如果没耐心的那可能看一眼就拒绝了。我们可一想象,在实际工作中,两个人写的代码也是这样,单从软件的开发效率上看那是非常低下的,更不必谈把个人情感包括进来了。所有说团队合作,首先在代码规范上必须要达到统一,然后在代码设计规范上面也到达成一致。
代码的复审在软件开发中也是非常重要的,代码复审有个人、同伴、团队复审三中形式,其中最基本的是同伴复审形式。代码复审的核心目的就是找出错误,提高代码质量。对于作者提到的结对编程我还是觉得陌生,但是从书中的例子可以发现结对编程的最大的好处效率非常高。我觉得进后可以尝试一下这种编程方式。
《构建之法》在这一方面的讲解的非常深刻,虽然第一遍下来可能没法理解,但是再结合实际开发之中遇到的问题就可以大致体会到团队合作的重要性了。
软件开发可以是一门理论,也可以是一门工程,还可以是一门手艺;但是软件工程也是一门艺术;是工程我们就要有规矩,有规范;是艺术我们就要有创新,有思想。