读《大道至简--软件工程实践者的思想》有感

发布时间 2023-07-24 12:27:20作者: 序章0

《大道至简–软件工程实践者的思想》这本书,是一部极具启发性的著作。它揭示了软件工程实践者在追求卓越的过程中所持有的思考方式和原则其中更加重点的是此书是从本质上面向读者解释软件工程到底是什么,从事软件工程的人应该干什么。

一、背景介绍和作者愿景
       《大道至简–软件工程实践者的思想》这本书是周爱民先生所著。他拥有多年的软件开发经验,并经历了无数的项目和挑战。在这本书中,他总结了自己在实践中的体会,并分享了自己对软件工程的理解和追求。

二.书中主要内容概述

       这本书的开头的序讲述了周爱民先生为什么要写这本书,并且解释了这本书为什么这么薄,这本书可以说每一个字都不是多余的,极致的精简,这本书不是简简单单的教我们软件工程的招数,而是再告诉我们很多软件工程中本质的道理。

      在这本书的第一章中,周爱民先生用了古代故事愚公移山来类比软件工程,形象生动的给我们解释了编程得精义--顺序分支和循环。接着书中用我们现实生活中处处都是编程得讲法告诉我们只要我们有生活自理能力就一定能学会编程。然后此书提出了对编程语言的看法,语音对编程来说并不重要,任何语言都有自己适用的地方,作为一个程序员不应该纠结于哪种语言,更应该是在合适的地方用合适的语言。这一章都是在讲一个程序员的所有,并没有涉及到工程。

      第二章中用李冰积薪烧山和愚公移山最对比揭示了一个“懒人造就了方法”这个道理。这让我们看到了一个工程中领导者不应该是愚公这样只知道埋头苦干的,而更应该是像李冰这样的懂的分析,懂的想方法解决工程中的困难的人。接着作者提出了程序=算法+结构+方法的观点。我觉得这个观点我非常认同这个观点。愚公式的开发工作显然是一定会被淘汰的,在一堆“懒人”的推进之下,“工程”应运而生。

      第三章作者主要是分析了团队中的管理者,一个团队的管理者首先第一点就是能够承担起责任,可能他不是最有能力的,也不是最聪明的,但他一定是在危机来临时,敢于第一个站出来顶在最前面承担责任的那一个。接着作者又指出了项目经理是需要成长的。然后作者对组织模式和制度进行了分析,有了领导者自然是要定下一些制度来。接着作者又提出了组织中角色的重要性,每个人在任何一个组织中都有自己所扮演的角色,紧接着提出来组织机构模式,简单介绍了R模型。最后作者指出作为一个管理者,明确分工要比弹性分工更加可靠,管理者并不等于伯乐。

      第四章作者主要讲述了在工程中沟通的重要性和沟通的重要方式。

      第五章作者主要分析了工程重要的不是过程而是最终的目的。之所以有工程只是为了更加快速的实现结果。所以更重要的是实现而不是过程。所以过程模型不重要和语言一样,我们要在适当的时机使用适当的过程模型,这些只是工具,它们最终都是服务于实现目标,所以不应该死板的盯着过程,应该灵活一点。当然失败的过程也是过程,从其中我们能学习到很多东西。工程不是做出来的,而是组织出来的,项目经理的工作就是组织好一个工程,让每一个人明确自己的角色,分工明确。

      第六章主要讲述了从编程到工程的整个过程,从语言程序方法过程工程组织逐步递进分析了每一个模块。

      老实说,第七章我在读了两遍之后依旧没有读懂,因为阅历有限,我对书中说的现实中的软件工程可以说是云里雾里。其中涉及很多公司和专有名词,完全读不懂。

      最后的第八章也是有点不懂的,主要说的是工程更应该关注的是“实现”,向我们阐述了做工程不应该被其中局部的一些细节困扰,更应该从整体去看,从“实现”出发。

三.读后感受以及过去问题和解决方案

通过研读这本书,我深受启发,对软件工程有了一个初步的认知。说实话,在读这本书之前,我对软件工程的印象无非就是一堆人编程然后合在一起弄出一个软件,这样的认识很明显是对软件工程最流于表面的认知。所以我之前并不关注工程思想,而是一味的觉得学号编程就是学好软件工程了。读完这本书之后,我发现软件工程并不仅仅只是简单的是很多人一起编程实现一个软件。我之前的想法和做法是有多么的天真和荒唐。

软件工程中涉及到很多有别于编程领域的知识,编程或者语言仅仅只是软件工程中最最简单也是最最基础的工具而已。这本书让我意识到学好软件工程并不简简单单的是编程有多快,代码有多简洁,实现的功能有多完善,那样只能成为一个很好的码农。从软件工程这个名字中的工程二字来看也知道,仅仅是会编程是不够的,既然是一个工程,其中就一定包含了最初的设计,订制计划,分析可行性,真正动手编程中也一定包含了和各级人员的沟通这些都是编程之外的东西。这些东西也不仅仅是软件工程独有的,只要是一个工程都无可避免的涉及这些,就拿一个盖房子这种工程来看,从最初的选址到房子的设计到动工时的各级沟通你会发现这和软件工程好像是一样的流程。事实上两者确实是差不多的,因为软件工程本质上就是一种工程,不过这工程的实现目标不是具体的盖一些东西或者维修一些东西,而是完成一个软件实现一些功能,相应的工具也不是一些施工机器,而是编程语言,对应的工人也不是那些农民工,而是从事软件工程的程序员。要学好软件工程不仅仅是简单的学好编程,更应该注重各种思想对学习和应用,工程思想的训练更是重中之重。

在以后得学习中,我不会再一味地只看重编程,而是更加注重工程思想的训练。