《大道至简:软件工程实践者的思想》读后感
《大道至简:软件工程实践者的思想》读后感
首先 ,我粗略的看了下这几本书目录 ,一下就被这本书所吸引,在我看来在读惯了枯燥的代码书籍之后,这本书给我耳目一新的感觉,如同新大陆一般,这时候我才发现,原来编程的书还可以写成这样。而且真如同这本书的核心思想—大道至简,书也不厚,很快就会看完。而内容 一点也不枯燥,语言通俗易懂,诙谐有趣,读起来甚至是一种享受。
在读过这本书之前,我对于软件工程的理解仅限于编写程序,或者说我仅仅了解到了编程这一小部分,认为编程就是软件工程的全部。而对于编程,我也经常抱有应付的态度,并不愿意去思考程序中所蕴含的逻辑,常常对着网上找到的程序模板照搬,虽然会顺着别人代码的思路,但很少有真正完全自己创造出来的方法和思路。在读过这本书之后我才发现自己以前对于编程的错误认知,对于写代码的自我怀疑以及对于软件工程的了解片面。
这本书内容不是非常多,八个章节,对于每个章节我都写了一点收获和从书中学到的和自己以前做法的对比。
一:编程的精义。用愚公移山的寓言,道出编程的根本:顺序,分支,循环。移山这等的工程都可以通过编程来简单实现,这便是编程的精义了;接下来又谈到会或者不会写程序的问题,书中写道:除了先天智障或后天懒惰者,都是可以学会写程序的。如果知道早上起来天冷先穿衣后洗漱,天热则反之,就可以开始编程了。
学习了一年代码,代码的魅力可以说是无穷的,给我心里焦虑的同时也给了我成功的喜悦,看了这本书以后,我明白了这些编程语言,对于我们只有喜欢和不喜欢的问题,没有会不会的问题。各种难与不难就是一个心态的问题,书中说道:成天讨论这门语言好,或者纳闷语言坏的人,甚至是可悲的。所以,还是保持好心态,去学习那些编程语言,去挖掘它的魅力!
二:是懒人造就了方法。提出新的方法,解决的将是影响做事成效的根本问题。正是“懒人”造就了方法,亦即提出新的方法。对于解决“一百万行代码写到一个文件里”查找一个函数要按五千次pageup键来说,是不可能指望他们写出“单元文件”来的。接下来的第三节“你的书桌上是乱的吗”。
针对学习过程中内容繁杂或者解决问题比较慢,在书中而言,还是方法问题。我们应该像整理书一般,把学过的知识分类,归纳在脑子里。记住定式,运用定式,忘掉定式,创造定式。方法亦如此,我们要不断摸索,创造自己的方法!
三:团队缺乏的不止是管理。这个章节介绍了团队的特性:主从,监督和责任。接下来打了个很有意思的比喻做项目=死亡游戏?(这里又接触到了工作后的一个职位--项目经理)项目的失败与项目经理的经验直接相关。接下来作者还讲到做IOS质量体系的教训:有了确定的团队模式,才能寻求相应的管理制度,并且才能把这样的制度实施在团队之上。也讲到 皮之不存,毛将焉附。
这让我也了解了一个职位,项目经理。以前老是让找自己心中想做的岗位时候,我大多注意到的都是工程师架构师之类的,反而对于项目经理这种岗位了解很少。这也让我明白了原来做程序不只有单纯的建工程敲代码那么简单,还要考虑到一个团队,以及每个成员的作用及管理,三人成虎,团队的力量强大,但管理团队也不是一件轻松之事。
四:流于形式的沟通。编程语言是程序员与计算交流的语言,而不是与客户交流的语言。这一章节认识了一种新的语言:统一模型语言UML,也知道了有"最简沟通"的存在,在工作中,每一次与客户交谈需要保障每一次的沟通都是有效的,是有目的性的,要知道,平时生活中那些酒肉应酬并不是最有效的。如果仅仅是流于形式的沟通,那么可能使项目不断推翻和延迟。
正如书中作者所说的一句话,我们需要在正常人和盲人之间建立一种沟通的方式,既然盲人不能睁开眼睛,那么你就闭上眼睛好了。开发者要为“项目维护”这种还不存在的角色留下一个对话的渠道,保证维护的进度。
五:失败的过程也是过程。介绍了瀑布模型及其一些变形,说道:做过程不是做工程的精义也不是目的,还拿戏目与项目比较,提出走过场之类的词语,道出编程的目的——实现。实现,才是目的。工程只是一种实现的途径,也给我们这些初学工程的学生一个警示:为工程而工程的人,都迷失在项目中了。
我平常也是这样,为了交作业而赶代码,忘记了敲代码的目的是什么了,殊不知越是简单的东西,越接近于本质。现在学的简单的敲代码做工程是为了以后的大一点工程,实现才是目的。这一章节也扩展到了生活中的工作:工程不是做的,是组织的。分工明确,步调一致,共同完成这个项目。
六:从编程到工程。开门见山:语言只是工具。和第一章讲述的一样,成天讨论这门语言好,或者那门语言坏的人,甚至是可悲的。详细介绍了 代码、方法、过程、工程、组织的关系。过程伴随工程而出现,解决的是过程中的角色间的关系问题;工程,对目标的描述和成果的检测;也介绍了作者口中的“牛屎图”。
这一章也让我清楚的认识到语言的作用是什么工程出现的原因——软件规模不断增大,团队及组织的重要性,以及通常人们口中BOSS的真正含义,最后总结出“上帝之手”——“实现”。
七:现实中的软件工程 。这一章比较贴近生活,讲到商场中的变化莫测,大公司手中的算盘,项目经理等等……从IBM的选择来看,很好诠释了“ 把握力量总比创造力量来得经济”这句话。书中还提到商业因素也推动着软件工程体系的发展,把软件工程推到了“它激发展”的状态上了。工程最核心的那个环节是 编程=算法+结构+方法。
对于一个刚刚步入代码海洋的我来说,读起来有一定的难度,在掌握了一些基本观点的同时理解上可能就不会太深入,而是片面性的理解,相信在软件工程这条道路上走得越远,回过头来再来读一遍,又是另一般的理解。
八:是思考还是思想。 "此郎亦管中窥豹,时见一斑。"开章点题:工程的整体问题仍旧是实现。本章同时介绍了UML与甲骨文的异同,同时也介绍了一个我们经常混肴的一个点;经营者离开发者很远。因为角色的关注层面不一样,就如同前面谈及的BOSS,很容易搞错,经营者也可以对软件技术一窍不通,因为他是经营者。
通过这个,我明白了软件工程是灵活的。变化或者变通,我们要不时的自我检查,触到一些错误的地方及时回头。总结出的一句话:死读书不如会读书。死读一本《软件工程》的人是不会做真正的软件工程的。思想要存在,但是思考是一直伴随着我们每一个程序员的。读完这本书,我对以后的编程之路有了大致的认识。