花了俩个晚上一口气读完了《软件工艺》,应该是即《程序员修炼之道》后再让我喝彩的非技术类计算机书籍了,虽然看得是囫囵吞枣,却也酣畅淋漓,解决了我心中的疑惑。软件工程强调的是软件开发的过程,软件工艺则强调软件开发中工匠的重要性,换句话来说,软件工程强调的是管理,软件工艺强调的是人。
软件工程将软件开发严格的划分需求、概要、详设、开发、终结几个阶段,各阶段有各自的负责人,通过详尽的文档传递用户需求,这样难免无法避免用户需求经过层层的传达而产生的流失;软件工艺则鼓励优秀的工匠贯穿软件开发过程的始终。软件工程认为,软件的开发过程要规划化、流程化、可控化,重管理,忽略开发过程中人的因素。软件工程认为,一个优良的软件工程,即使在人员变动频繁,开发人员技能参差的情况下也可以极小的减少其带给项目的损失;而软件工艺强调,一个优秀工匠自始至终在软件开发中所占有的重要地位,鼓励工匠技艺的不断精进,鼓励软件工匠们技艺的传钵,提倡学徒机制,避免软件工程中人作为流水线的一个零件单调重复的劳动。
其实,软件工艺的提出并非为了“颠覆”软件工程,相反地,它试图去纠正过分强调软件工程所带来的种种问题。《软件工艺》的作者始终认为,软件工程只是适应于超大型项目,而很多情况下软件工艺似乎更适合。软件管理者似乎会跟喜欢软件工程带来的可观性,可控性。而作为开发者,身处软件开发中的开发者,对软件工艺提出的杰出软件工匠会更感兴趣。
网上Google来的几篇相关的文章,附上: