• 《大道至简》读后感


        大道名同,至简为一。

        正如这本书名所写的那样,大道至简。

        小说里不也是经常写到,某某大侠武功修炼到了极致,招式随意,看似简单却更加有威力,此之谓大道至简。

        编程同样如此,同一项任务,有些人会用很多代码去写,而有些人则可以用更少的代码去写,同样可以解决问题,越是简洁,才越接近大道。

        学习过面向过程的C与面向对象的C++,才知道C++更加的简洁,更加方便。试想着当我们面对一项庞大的工程时,面向对象的设计会比面向过程简单不少,会使这项工程完成的更加有效率,这也是为什么文章开头一再强调简洁的原因了。

        愚公移山走的是他的繁琐道,而李冰却是简洁道。为什么我们的社会不断地发展进步,因为人们懒,人们希望可以用更加简洁的方式方法生活,希望活的更加滋润,不用去思考那么多繁琐的事情,不用去出那么多的力,于是,一批又一批的人们为这个懒惰的欲望去不断地创新,接着社会就发展了。

        我们学的是软件工程专业,这是一个要求动手能力,创新能力都要发达的专业,这是一个懒惰并且勤劳的人才能存活的一个专业,如果只是一味地按部就班的完成任务,那只能说他是一个天生就应该被奴役的奴隶。编程也好,做其他事也好,都有着一个互通的道理,那就是大道至简,结果固然重要,但过程也不能忽视,如何能让过程变得更加简洁,更加快速的反应也是一大关键所在。

        当然了,想要完成一项工程,需要的并不仅仅是方法的简洁,还有团队的协作与组织。

        团队协作是毋庸置疑的,没有相互之间的协作,那也就是一盘散沙,这样的团队或许还不如一个人单独去做。

        我没有说管理,而是组织,因为团队并不需要管理。一个管理人员要做的是观察员工是如何做的,发现规律,在其中加以引导,不是去命令般的管理,让员工心生怨念。所以并不提倡一个管理人员就真正做管理者,但如果管理人员只是与员工一样进行开发,那么他就只能是一个员工,而不是管理人员了,所以他还需要脱离开发团队,做一个旁观者,发现其中的问题,同时也对员工进行明确分工,去发现每个员工的价值,做管理也就是做伯乐。

        我们学习CC++等编程语言干什么,可能很多人会说是为了之后找工作,赚钱。对,我也是这么想的,但是,我们是赚谁的钱,是用户,那么我们所做的软件就应该使用方便,通俗易懂。这其中就涉及到了沟通,调研人员与客户进行沟通时,不能用调研人员明白而客户不懂的编程语言去交流,而是用调研人员与客户都熟知的方法去沟通,比如用汉语。一个项目里各个角色之间也存在着沟通问题,设计人员看不懂分析报告,开发人员不懂设计方案,测试人员不明白开发结果。要学会沟通,人与人之间的沟通,人与机器之间的沟通。

        

        编程的真正目的是结果,是实现。“项目要求这样做”或“客户的本意是那样的”才是我们真正要做的,也就是真正要达到的目的。工程只是一种实现的途径,原来没有什么编程语言,但最初做开发的前辈还是达到了自己的目的,编出了程序。我们现在只不过是拥有了更加方便的工具去协助我们达到目的,这看重的不是过程,而是结果。

        工具是为了更好的达到目的,过程理论中,如果懂得了所谓的模型都演化自那个简单的瀑布模型,本质的东西都能理解透彻,那无论工具存在与否,一切架子都是信手拈来。越是简单的东西,往往越是接近于本质。

        

        程序=算法+结构,这其中没有涉及到语言,因为语言只是工具,我们学习各种语言只不过是掌握了各式各样的工具,掌握更多的工具并不足以让我们自豪,运用这些工具去达成自己的目的才是王道。

        过程伴随工程而出现,它把工程分为一个个环节,环节中需要角色,角色间需要沟通。一个软件的好与坏除了取决于它本身要达成的那个目的,还有就是团队之间的配合与沟通,各个角色之间的相互协作是否紧密,也关系着项目成功与否。而各个角色的分配与协作又需要管理人员的组织,站在组织者的角度去分析每个环节,对于每个员工的能力分配不同的角色,并确保角色间的相互配合。一个好的项目经理并不是一个不犯错的人,而是一个以尽可能少的错误来获取成功的人。

        考虑到现实生活与理论可能会存在很大的出入,所以要在方式方法上灵活的变通,,例如虽然语言只是工具,但是不同语言的适用性也不同,IBM敏锐的发现了java作为平台中立的语言特性,以及它在大型应用工程方面的成功表现,作为遏制Micorsoft平台优势的唯一途径。不仅是在语言问题上有出入,也要考虑商业因素,商业因素也影响着软件工程的发展。项目经理还要考虑成本与利益。

        软件工程不是死板的刻画与模仿,要学会灵活运用,无论是开发人员还是管理人员都要根据实际情况灵活变通,做软件需要头脑,知律而变、创新都是毋庸置疑的,学会语言并不是万能的,但不学会语言是万万不能的。语言是工具,智慧生物与野兽的区别是能否制作与使用工具,不学会语言也就是不会使用工具,那也就不能说他是一名程序员。我们编程看重的是结果,而不是过程,一个程序运行的速度,正确率,适用性,这些结果都是用来评价一个程序的好坏。而作为一个管理人员更加需要的是管理能力,即便他的开发技术不太好,管理人员要注重每个环节的细节,总体的成本与利益,市场需要,角色的安排,各角色间的相互配合,各方面的沟通等等。

        我们需要的是思想不是思考,思考只是对于表面形式的解析,而思想是对事物本质的剖析。就像毛主席思想,只有对本质的剖析才能说是思想。

  • 相关阅读:
    [程序员代码面试指南]递归和动态规划-换钱的方法数(DP,完全背包)
    [程序员代码面试指南]递归和动态规划-换钱的最少货币数(DP,完全背包)
    [程序员代码面试指南]数组和矩阵-未排序数组中累加和为给定值的最长子数组长度
    浅谈RDD
    Java中的移位操作符
    Boolean类源码分析
    IntegerCache详解
    Java Integer类分析
    ArrayList LinkedList Vector
    java的"=="与"equals"
  • 原文地址:https://www.cnblogs.com/cc-9878/p/7389973.html
Copyright © 2020-2023  润新知