首页 > 代码库 > 现代软件工程 第三章 练习与讨论

现代软件工程 第三章 练习与讨论

1  选哪一种医生?

作为一个软件工程师, 你觉得自己表现如何? 有没有这样的体会:

看书的时候觉得“技止此耳”,开发项目的时候才觉得实际情况和书上讲的都有一些出入,一些重要的细节书上没有提。我们很多人是边看Asp.net的书, 边开发Asp.net 的项目,这相当于一边看医学书一边动手术……

如果你是病人,你希望你的医生是下面的哪一种呢?

a)     刚刚在书上看到你的病例, 开刀的过程中非常认真严谨, 时不时还要停下来翻书看看……

b)    富有创新意识, 开刀时突然想到一个新技术、 新的刀法,  然后马上在你身上试验……

c)     已经处理过很多类似的病例, 可以一边给你开刀, 一边和护士聊天说昨天晚上的 《非诚勿扰》花絮……

d)    此医生无正式文凭或正式医院的认证, 但是号称有秘方, 可治百病。

事实上,很多软件项目就是用 a)或者 b) 这样的方法搞出来的。当然也有一些人走 d) 这条路。

讨论: ① 你要选哪种类型的医生?② 医生、药剂师、律师和很多行业都有职业考试和职业证书,软件工程师需要有正式的职业证书才能上岗么? 请参考Steve McConnell 的观点[i]。

2  工程还是艺术

软件开发是一门工程(Engineering),  是一门艺术(Art),还是一门手艺(Craftmanship)? 你如何衡量艺术家? 如何衡量创造能力?

如果是一门工程, 那工程师要守规矩; 如果是一门艺术, 那艺术家要创新。

  • 写诗歌最多的人是谁?
  • 最有创造力的诗人是谁?

一些最有影响力的作家,他们的作品都非常少,甚至只有一本,例如:

  • 《飘》 (Gone with the Wind) 作者 Margaret Mitchell[ii]
  • 《红楼梦》,作者曹雪芹(这一本据说都没写完!)

另外,优秀的作品往往并不符合所有“好”的标准。例如,找出下面这首词中重复的字:

念奴娇 · 赤壁怀古  - 苏轼

大江东去,浪淘尽,
千古风流人物。
故垒西边,人道是,三国周郎赤壁。
乱石崩云,惊涛裂岸,卷起千堆雪。
江山如画,一时多少豪杰。

遥想公谨当年,小乔初嫁了。
羽扇纶巾,谈笑间,樯橹灰飞烟灭。
故国神游,多情应笑我,早生华发。
人生如梦,一樽还酹江月。

出现了三遍的字有: 江,人;   出现了两遍的字有: 国,生,千,故,如。这符合“好词”的标准么?

南宋人俞文豹评价道:

今人看人文字,未论其大体如何,先且指点重字。

软件设计工程师们在做代码复审的时候,是看“重复字”的多少, 还是程序的艺术性?

这个问题的另一个侧面是,在中国,一个成名的歌唱家往往出现在各种场合,演唱她当年成名的作品,观众们往往显得百听不厌。一个软件工程师就不能这样,在舞台上展现他当年写的“hello world” 程序,或者是1.0 的产品。为啥有这样的区别呢?

3  绞刑架和职业发展

移山公司的人力资源总监给同学们做了职业发展的演讲,大意是随着软件工具和软件工程理论的发展,开发软件将会越来越容易,软件企业的水平都是CMMi4级以上。软件白领的生活指日可待,金领也不是梦,大家前途无可限量,学软件工程的同学越来越多,就是明证。大家纷纷鼓掌。最后他分享了一个故事:

两个劫匪在亡命的路上看到一副绞刑架,劫匪小弟说,大哥,如果这世界上没有绞刑架,咱们的职业就好干多了。大哥说:你真笨!如果没有了它,这世上做劫匪的人怕是太多,我俩恐怕竞争不过同行,早就饿死了!

请同学们思考这个故事对个人及软件业发展的启示。

4  案例

程序员小飞原计划三天完成某个任务,现在是第三天的下午,他马上就可以做完。但是在实现功能的过程中, 他越来越意识到自己原来设计中的弱点,他应该采取另一个办法,才能避免后面集成阶段的额外工作。但是他如果现在就改弦更张,那势必要影响自己原来估计的准确性,并且会花费额外的时间,这样他的老板,同事会因此看不起他。如果他按部就班,最后整个团队还要花更多时间在后续集成上,但那就不是他个人的问题了。怎么办?

 

 

 



[i]      Professional Software Development, ISBN 0-321-19367-9 作者:Steve McConnell, 出版社:Addison-Wesley

[ii]      参见:http://en.wikipedia.org/wiki/Margaret_Mitchell