关于我们的思考--“项目开发”及读《人月神话》有感-kaka

项目开发终于结束了,按项目流程,我应该写一份《项目开发总结报告》。拿来“GB856T——88”标准文档,有框架指导我该写些什么,但是怎么能让这些框架协束缚了自由的思想呢?于是决定换一种形式。

项目开发接近尾声的时候,也是最关键的时候,有人送来一本《人月神话》。我很幸运能在这个时候读这本书,因为会有很多思考,关于项目,关于团队,关于我们……

……

完美与放弃

在《人月神话》中有一段被截取,称为“程序员的苦与乐”,在网上广为流传。Brooks大师用简短的篇幅,描绘出整个程序世界的苦与乐。在这次项目开发中,有两个苦恼体现的比较明显。

一是追求完美。“因为计算机是以这样的方式来变戏法的:如果口语中的一个字符、一个停顿,没有与正确的形式一致,魔术就不会出现(现实中,很少的人类活动要求完美,所以人类对它本来就不习惯)。实际上,我认为,学习编程最困难的部分,是将做事的方式向追求完美的方向调整。”

看来我再次做出了正确的选择,我是个追求完美的人,而且我也一直认为程序员就应该有这种本性。在写程序的时候,甚至对一个变量名我都要反复斟酌,直到选择一个我认为可以表达这个变量的意义的。我并不认为这是在浪费时间:一是有助于对程序的理解和维护,好的程序本身就是注释;二是减少错误发生的可能。这次开发因为时间短,我尝试采用设计->编码->编译的方式来写程序,经常把一个几千行代码的模块写完之后才开始调试。效果不错,因为对设计考虑的比较充分,基本上都是一些拼写上的错误。不过有一个错误却另我苦恼了很久。因为一个结构的成员变量名与函数参数的变量名一样,而这个参数又在多处使用,写的时候,也可能是拷贝代码的时候,很容易把结构名给忘记或多加了一个结构名,而这时又不会有语法上的错误。吸取了这次教训,我把整个程序检查了一遍,并做了一些修改。这段程序我参考的一位大师的原型,令我欣慰的是,他的下一个版本和我的程序做出了同样的一些修改。

另一个“苦恼来自设定目标、供给资源、提供信息。编程人员很少能控制工作环境和工作目标。”后面章节又提到“结构师获得了所有的创造发明的快乐,剥夺了实现人员的创造力”。“实现同样是一项高级的创造性活动。具体实现中创造和发明的机会,产东会因为指定了外部技术说明而大为减少,相反创造性活动会因为规范化而得到增强,整个产品也一样。”程序员要学会放弃一部分乐趣,整个项目也一样,这是我读《人月神话》感触最深的一点。

设计网络认证的时候,本打算用一种简单的认证方式实现,因为这不是重点。Y提出用证书加自己写的Socket类实现认证的通讯过程。这是一个很好的创意,但VC写出类无法在Delphi里使用,BCB也不行。封装,回调……大家都搞晕了,只剩下两个字:“放弃”。

由于时间比较紧,产品的功能上也放弃了一些认为是很有创意的,但需求中没有提到的部分。后面的开发中也有类似的问题,每个人都按自己的喜好调用和提供接口,可以说是八仙过海,各显神通。问题主要在于交流。

善于交流

……

人月之所以不能成为神话,正是因为增加人手的同时也增加了人与人之间的交流。

我们在项目一开始就通过QQ群组进行沟通,后来又搭建了企业内部协作平台,而且还有不定期的会议。与大师所说的三种交流途径——非正式途径、会议、工作手册——不谋而合。但是,执行的效果却不很理想。是大师说的不对?不是。是我们没有利用好这几种途径。我们很好的利用会议,解决很多细小方面的误解;过多的使用QQ群组,一是在登陆QQ的时候消息太多而没看仔细,二是这种方式针对小的误解是很有效的,但对于一些系统的全面的理解必须通过文档;但是很少使用协作平台,没有仔细的阅读文档的习惯,也没有写出一个完整文档的习惯。

即使在QQ群组的交流中,也没有把问题表述清楚。经常看到:“某某:你那里有问题?”哪里?什么问题?QQ都是通过UDP传输的,这里就不需要发送ACK了,对方不在线可以通过服务器中转,到论坛发一个贴子或直接发送邮件。接着有人回答:“不可能啊?”什么事情都可能发生的,只要能满足条件。域名都会不易而飞,还有什么是不可能的呢?出了问题首先从自身找原因,发现一切的可能。

……

结束语

本文只是我在项目开发和读了《人月神话》之后的一点感想,没有谁的对与错,对于本文一些观点的正确于否欢迎与您一起讨论。本文只是按照项目流程,挑主要的部分叙述了在开发中体会到的一些感想。这次开发让我学到太多太多的东西,将使我终身受益。还有很多的想法,如团队建设、整体设计、开发模式……希望以后能与大家多多交流,相互学习。

《人月神话》这本书推荐大家都去读一下。它不是良药,不能为你解决实际工作中的问题,但它可以给你带来很多思考,让你变得更加成熟。软件工程是为开发软件服务的,标准不是目的,只是手段。《人月神话》没讲标准,但它为怎样做好一个项目提供了一些参考。它会增强你的自信心,当有人反驳你的观点的时候,你可以告诉他:“Brooks大师如是说^-^”。

http://kaka.rootcn.com/shadowstar/essay/engineering/thinking.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值