首页 > 其他分享 >读《大道至简--软件工程实践者的思想》有感

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

时间:2023-07-24 12:33:26浏览次数:30  
标签:本书 编程 工程 大道至简 -- 实践者 一个 软件工程

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

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

二.书中主要内容概述

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

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

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

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

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

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

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

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

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

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

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

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

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

标签:本书,编程,工程,大道至简,--,实践者,一个,软件工程
From: https://www.cnblogs.com/czfznb/p/17576926.html

相关文章

  • LeetCode 399. 除法求值
    classSolution{public:vector<double>calcEquation(vector<vector<string>>&equations,vector<double>&values,vector<vector<string>>&queries){unordered_set<string>node;//记录所有节点......
  • Vitamin Shoppe EDI 解决方案
    VitaminShoppe是一家在保健品和健身领域备受认可的卖场。多年来,VitaminShoppe致力于为客户提供高品质的健康产品和专业建议,以满足他们的健康需求。VitaminShoppeEDI需求分析EDI连接的传输协议:VitaminShoppeEDI项目中使用AS2(ApplicabilityStatement2)协议。AS2......
  • Do you already have another mysqld server running on port: 8008 ?
    实现"Doyoualreadyhaveanothermysqldserverrunningonport:8008?"的步骤概述在解决问题之前,我们先了解一下整个问题的流程。下面是解决问题的步骤:步骤操作1检查是否已经有一个mysqld服务运行在8008端口2如果有,关闭该服务3如果没有,继续其他操作......
  • Android开发本地验证码
    Android开发本地验证码验证码(VerificationCode)是一种用来区分人类用户和计算机程序的一种机制。它通常是由一系列的字符或数字组成,用户需要将其输入到相应的输入框中。验证码的作用是防止恶意程序自动化执行某些操作,如注册、登录、访问敏感信息等。本文将介绍如何在Android开发中......
  • DPI数据挖掘
    DPI数据挖掘的流程对于一位刚入行的小白来说,实现"DPI数据挖掘"可能是一项具有挑战性的任务。下面我将向你介绍整个流程,并提供每一步所需的代码及其注释,帮助你完成这个任务。步骤下表展示了"DPI数据挖掘"的步骤及其大致顺序:步骤描述1.数据收集收集需要进行数据挖掘的......
  • Android基于XMPP Smack openfire 开发的聊天室
    Android基于XMPPSmackopenfire开发的聊天室简介聊天室是人们进行实时沟通和交流的常见方式。而在移动应用开发中,实现一个聊天室功能是非常常见的需求。本文将介绍如何基于Android平台使用XMPPSmack库和Openfire服务器开发一个简单的聊天室应用。准备工作在开始开发之前,确保......
  • Creating network "docker_default" with the default driver ERROR: Failed to S
    创建网络"docker_default"withthedefaultdriverERROR:FailedtoS在使用Docker容器时,有时会遇到以下错误信息:Creatingnetwork"docker_default"withthedefaultdriverERROR:FailedtoS。这个错误通常表示Docker无法创建名为"docker_default"的网络。本文将解释此错......
  • 编码技巧 --- 使用dynamic简化反射
    引言dynamic是Framework4.0就出现特性,它的出现让C#具有了弱语言类型的特性。编译器在编译的时候不再对类型进行检查,默认dynamic对象支持开发者想要的任何特性。dynamic介绍在C#中,dynamic是一种类型,它允许你在运行时动态地确定对象的类型。使用dynamic类型可以使代码......
  • [SOLVED] 终端下screenfetch返回 Resolution: No X Server
    "Linux图形界面多数使用的是XServer,我们有时需要关闭/重启它.比如:安装NVIDIA的驱动程序时,就需要先关闭Xserver;希望让系统以server方式运行,关闭桌面环境以降低不必要的性能损耗."[1] 检查图形界面XServer的状态:systemctlstatuslightdm.service显示了li......
  • UE4构建基础和实践:一、概述
    序言构建这个概念是和应用程序包及资源等相关的,它的特点是使用脚本控制一系列的任务的处理,以减少人力操作带来的成本和操作失误风险。在UE的概念里,构建往往是和打包相关的(如编译、cook、压缩打包等)。但是在项目日常的开发中,构建的语义会更加的广泛,据我所知它可能包含:打各个平......