zoukankan      html  css  js  c++  java
  • 《大道至简——软件工程实践者的思想》读后感

         “ 大道至简”源自老子的道家思想。道,即道理,理论。大道,即事物的本源,生命的本质。大道至简的含义就是最有价值的道理其实是最朴素的道理,很重要的道理,其实是很平常的道理。它很简单,简单到一两句话就能说明白。所以这个“大道至简”可以适用任何行业。世界“虽变化万端,而理为一贯。”在学习任何东西之前,都要首先了解它的思想。做工程亦如此。周爱民先生的《大道至简》简洁明了的介绍了编程的精义及软件工程的一些相关的内容。正如他所说:这是一本很容易就知道"做工程其实很简单,只是大家把它想复杂了"的书。

         本书分为了八个章节:

         一:编程的精义

          用愚公移山的寓言,道出编程的根本:顺序,分支,循环。移山这等的工程都可以通过编程来简单实现,这便是编程的精义了;接下来又谈到会或者不会写程序的问题,书中写道:除了先天智障或后天懒惰者,都是可以学会写程序的。如果知道早上起来天冷先穿衣后洗漱,天热则反之,就可以开始编程了。作为一个计算机专业的学生,更不可以觉得自己天生不会编程了,因为你已经进入了代码的世界,又不是先天智力有问题,那  就肯定是会的了。再就是我们刚一接触代码就知道的  程序=算法+结构  ,编程作为一种行为,第一要务把事情分析清楚,再去代码实现,书中所言极是:积极地工作和勤于思考都要占时间。这个公式确实没有提及代码,可以认为根本和代码没关系的,有关系的既是思想;之后讨论了语言,学习了一年代码,代码的魅力可以说是无穷的,给我心里焦虑的同时也给了我成功的喜悦,这种感觉是相当棒的。而这些编程语言,对于我们只有喜欢和不喜欢的问题,没有会不会的问题。有人学了C会觉得学C++很难,其实还是一个心态的问题,书中说道:成天讨论这门语言好,或者纳闷语言坏的人,甚至是可悲的。所以,还是保持好心态,去学习那些编程语言,去挖掘它的魅力!

       二:是懒人造就了方法

          两千年的某一天,闲极无聊的李冰下厨给夫人炒了一个小菜,他发现垒灶的鹅卵石被烧得爆裂开来,遇水尤甚。从此《史记》上记下“蜀守冰凿离堆”,另一本书记下了他做这件事的方法“积薪烧之”,在差不多的同一时间,愚公在山北之塞“碎石击壤”。愚公越发的勤快,也就越没机会找到更快的方法。提出新的方法,解决的将是影响做事成效的根本问题。正是“懒人”造就了方法,亦即提出新的方法。勤快的愚公创造不了方法,对于解决“一百万行代码写到一个文件里”查找一个函数要按五千次pageup键来说,是不可能指望他们写出“单元文件”来的。接下来的第三节“你的书桌上是乱的吗”,我们应该像整理书一般,把学过的知识分类,归纳在脑子里。现在已经不是面向过程的那种愚公时的时代,总体结构面象对象,关系运用数据结构,并通过算法实现。那么你所学来的东西你就知道是做什么的了,不用想,身为大学生的我们,我们的书都是分类放开的吧!最后介绍的是周爱民先生的关于程序的第一次思考以及因“过程”和“单元”而出现的“工程”。在这给我的想法,我引用第一章的一句话总结:一接到任务就开始Coding的程序员,通常就是加班最多的程序员。“道之为物,惟恍惟惚。”软件工程的道路上,应该记住定式,运用定式,忘掉定式,创造定式。方法亦如此,我们要不断摸索,创造自己的方法!勤奋的人坚持不懈,可人精力终归有限,于是乎懒人造就了方法,解决了影响做事成效的根本问题。 

      三:团队缺乏的不止是管理

         这个章节介绍了团队的特性:主从,监督和责任。接下来打了个很有意思的比喻 做项目=死亡游戏?(这里又接触到了工作后的一个职位--项目经理)项目的失败与项目经理的经验直接相关,但项目做不成就要递交辞呈,那项目经理可从来不会有的,项目的完成时间可能总是被进度变更所更改,没有决定对合理的工期,因此项目经理是需要时间来成熟的!管理人员需要做一个蚂蚁洞外的人,而不是循规蹈矩的人。他们的职责是明确分工而不是做伯乐。可以说 这些对于我来说是没有接触过的,但读完这一章,也对以后的工作有了一些了解。接下来作者还讲到做IOS质量体系的教训:有了确定的团队模式,才能寻求相应的管理制度,并且才能把这样的制度实施在团队之上。也讲到 皮之不存,毛将焉附。道出确定的组织的重要性。接下来还谈到一个团队制度的问题,也谈到管理者自省的重要性及角色。现在身为一个大一的学生,对团队的接触确实很少,读完这一章,带来的感受可谓颇深,原来做程序不只有单纯的建工程敲代码那么简单,还要考虑到一个团队,以及每个成员的作用及管理,三人成虎,团队的力量强大,但管理团队也不是一件轻松之事啊!

      四:流于形式的沟通

          编程语言是程序员与计算交流的语言,而不是与客户交流的语言。这一章节认识了一种新的语言:统一模型语言UML,也知道了有"最简沟通"的存在,在工作中,每一次与客户交谈需要保障每一次的沟通都是有效的,是有目的性的,要知道,平时生活中那些酒肉应酬并不是最有效的。如果仅仅是流于形式的沟通,那么可能使项目不断推翻和延迟。总结一下(还是用作者原话)我们需要在正常人和盲人之间建立一种沟通的方式,既然盲人不能睁开眼睛,那么你就闭上眼睛好了。后面还说到项目的维护问题,当然啦,一款软件,一个操作系统,总有出错的时候,所以项目的维护是必然存在的,开发者要为“项目维护”这种还不存在的角色留下一个对话的渠道,保证维护的进度。

       五:失败的过程也是过程

          介绍了瀑布模型及其一些变形,说道:做过程不是做工程的精义也不是目的,还拿戏目与项目比较,提出走过场之类的词语,道出编程的目的——实现。实现,才是目的。工程只是一种实现的途径,也给我们这些初学工程的学生一个警示:为工程而工程的人,都迷失在项目中了。我们平常大多数人也是这样吧,为了交作业而赶代码,忘记了敲代码的目的是什么了,殊不知越是简单的东西,越接近于本质。现在学的简单的敲代码做工程是为了以后的大一点工程,实现才是目的。这一章节也扩展到了生活中的工作:工程不是做的,是组织的。分工明确,步调一致,共同完成这个项目。

      六:从编程到工程

          开门见山:语言只是工具。和第一章讲述的一样,成天讨论这门语言好,或者那门语言坏的人,甚至是可悲的。详细介绍了 代码、方法、过程、工程、组织的关系。过程伴随工程而出现,解决的是过程中的角色间的关系问题;工程,对目标的描述和成果的检测;也介绍了作者口中的“牛屎图”,工程出现的原因——软件规模不断增大,团队及组织的重要性,以及通常人们口中BOSS的真正含义,最后总结出“上帝之手”——“实现”。这一章也让我清楚的认识到语言的作用是什么,如何更好的看待一门语言,以及今后学习过程中的团队!

      七:现实中的软件工程 

          这一章比较贴近生活,讲到商场中的变化莫测,大公司手中的算盘,项目经理等等。。。从IBM的选择来看,很好诠释了“ 把握力量总比创造力量来得经济”这句话。书中还提到商业因素也推动着软件工程体系的发展,把软件工程推到了“它激发展”的状态上了。工程最核心的那个环节是  编程=算法+结构+方法。当然 这一章讲的比较现实化了,对于一个刚刚步入代码海洋的我来说,读起来有一定的难度,在掌握了一些基本观点的同时理解上可能就不会太深入,而是片面性的理解,相信在软件工程这条道路上走得越远,回过头来再来读一遍,又是另一般的理解!

       八:是思考还是思想

          "此郎亦管中窥豹,时见一斑。"开章点题:工程的整体问题仍旧是实现。本章同时介绍了UML与甲骨文的异同,同时也介绍了一个我们经常混肴的一个点;经营者离开发者很远。因为角色的关注层面不一样,就如同前面谈及的BOSS,很容易搞错,经营者也可以对软件技术一窍不通,因为他是经营者。同时也介绍了实现目标与保障质量的矛盾,还有一些枝节与细节的点,最后讲到软件工程是灵活的。变化或者变通,我们要不时的自我检查,触到一些错误的地方及时回头,正是许多人不知道技巧,思考,思想,方法技术原理,因而不知道变通,也不知回避错误。其实是常见之事,编程语言那么多,哪个简单用哪个,知律而变,仅此而已。总结出的一句话:死读书不如会读书。死读一本《软件工程》的人是不会做真正的软件工程的。思想要存在,但是思考是一直伴随着我们每一个程序员的,正如,李冰“积薪烧之”。

          这本书用非工程的方式重新解析软件工程现象,全面、细致而深刻地分析了工程中各个环节的由来、价值及其内在关系。综合论述开发、工程二者的现状,例如对程序员“工匠思想”的起源进行广征博引的分析,也对工程中“敏捷过程”的经验主义本质进行深至髓质的论证。  “工程其实很简单,只是大家把它做复杂了。”或许,这就是周爱民先生想阐述给我们的软件工程的核心思想。对于刚刚步入软件工程的我们,这本书无疑给我们指明了我们所要做的事,以及可以避免的误区。工程其实很简单,不要把它做复杂。读完这本书,我对以后的编程之路有了大致的认识。

      

  • 相关阅读:
    vuex2 mapActions 报错 `unknown action type: xxxx`
    IE报vuex requires a Promise polyfill in this browser问题解决
    vue路由懒加载
    vue-router各个属性的作用及用法
    JS实现继承的几种方法
    ES6学习笔记--promise对象
    jQuery--data()方法
    原生js实现二级联动下拉列表菜单
    sql server中部分函数功能详解
    js中字符串转换为数值的两种方法的区别
  • 原文地址:https://www.cnblogs.com/mm20/p/7383669.html
Copyright © 2011-2022 走看看