领悟软件工程精髓--《大道至简:软件工程实践者的思想(典藏版)》试读有感
? ? ? 实话实说,我在下载这本书的试读章节时候并没有抱读下去的希望,因为关于软件工程的书有很多,大多是枯燥而理论性极强的,读起来会颇感乏味,只是顺手把所有的试读书籍都下载下来。但是当我打开的时候,却不由自主的用了将近一个小时把试读的两章细细品味了两遍。
?
? ? ? 很少见到有讲工程的书能像本书的作者一样把软件工程讲的如此生动而有趣,也让我从另一个角度去反思,到底什么才是软件工程。我不得不承认,或许我现在还在停留在编程而不是工程阶段——研究学习各式各样的代码,讨论java和.net的优劣,甚至去争论linux的开源和android的非完全开源。
?
? ? ? 于是我发现,时间久了,编程已经不是那么复杂的一件事,有时候甚至不需要敲打很多行代码,只要从从前的项目中copy过来就可以了。想来这也是为什么程序员们的键盘上,“ctrl”、“c”、“v”这几个键是磨损最严重的。其实编程相对于软件工程来说只是最后的一环,软件工程不等于无休止的coding。
?
?
? ? ? ? ? ? ? ? ?
?
? ? ? 作者的“牛屎图”清晰而简明的归纳了什么是软件工程。从整体上来说可以从需求说起,对目标需求的描述和分析。在往前走,怎么去实现这个需求目标,便是“过程”(制定计划、角色间关系、划分职责)和“方法”(形成各种架构、设计)要去做的事情;最后用什么快速的去实现“过程”和“方法”,便是“工具”,从某种程度上说就是由程序员实现。
?
? ? ? 读到此处,一章终了,已经让我对软件工程有了全新的了解。所谓“大道至简”,其实的确并不复杂,作者仅仅用几个自己亲身经历的小故事而一些幽默简单的解说就让我对软件工程、对管理有了全面而深刻的认识。
?
? ? ? 继续读下去,走入了“工具”的世界。大多数的程序员们都是以钻研“工具”为重的,所以简历上最多见的永远是掌握了什么什么语言,精通了什么什么框架等等,并且以此为奋斗目标,却从来不曾想过到底这些都意味着什么。在本书里,作者用“秦统一六国”这样一个生动例子,告诉我们“秦不仅仅关注技法,而是关注法治”,引用原文一段话:
?
兵器只是作为一种征战的工具,在秦军中起着相当重要的作用。但秦国并不迷信兵器,而是把兵器作为工具取而用之,并透析剑、弩等武器的本质,了解具体特性的成因与功用,进而规范成方法技术(而非技法技巧)。这些构成了秦军的军事基础,成为战争——这个浩大工程的组成部分。工具之于工程,本质在于关注并发挥有益于工程全局的那些特性。一人一技,一器一物,又岂能是工程的要义?因此,我们最终看到拥有利器巧技的六国都不在了,最后只剩下一个强秦统一了天下。
?
? ? ? 同样的反思我们的软件工程领域,很容易就发现举凡成功的大型公司,如google、facebook都不是因为“工具”(也就是说什么技术牛人)而闻名天下的,可以想见其他的未成功的公司未必就没有更厉害的“工具”使用者,他们依靠的是成熟的组织管理体系和创新精神。回归到刚才的“牛屎图”中,成熟的组织管理体系属于“过程”范畴,而创新精神则大多属于“实现对”范畴。所谓“工具”,有能力的高手或许大多也是“唯手熟尔”。
?
? ? ? ?当然,我们也可以想见,作者并不是让我们完全抛弃“工具”,只是让我们换一个角度看问题。所谓“方法”、“过程”等等的思考也需要建立在“工具”的经验之上,没有人能跳过这个过程。所以现阶段的我们,要踏实的一步一个脚印的走在路上,静下心来研究代码,先成为一个“巧匠”。最后用作者的一段话结束这篇读书笔记,也是我想说想做的:
?
? ? ? ?“必先是匠人,之后才会是艺人,再之后才会是艺术家。程序员就是程序员,如果不静下心来做代码,好高骛远则终将一无所成。”
1 楼 dilantaya 昨天 在哪看?哪有下载地址 2 楼 jacksonren1987 昨天 dilantaya 写道在哪看?哪有下载地址http://dl.iteye.com/topics/download/77226575-eb6d-3b6e-bd78-93181c28019f