zoukankan      html  css  js  c++  java
  • 阅读笔记《人月神话》3

    书中多次提到软件工程的意义,软件开发的意义在于使程序转变成更有用,创造新事物的纯粹的快乐,开发对他人有用的东西,虽然会产生很多bug,但在解决问题的过程中学习新事物的过程的快乐。同时程序给程序员更大的想象空间。但也容易产生问题:1.追求完美,来自他人设定的目标。2.对估算技术缺乏有效的研究,进度并不一定与工作量一致。系统编程的进度安排背后的第一个错误假设就是一切都将运作良好。构思(模型)、实现、交流。编程人员通过纯粹的思维活动即概念以及灵活的表现形式来开发程序。用人月来衡量一项工作的规模是一个危险和带有欺骗性的神话(人员数量和时间并不是可以相互替换的)。软件开发本质上是一项系统工作,即错综复杂关系下的一种实践,因为沟通交流的工作量大,会消耗任务分解所节省下来的时间的个人时间,因此,添加人手并不一定缩短了进度。系统测试进度的安排常常是变成中最不合理的部分,因为系统测试时间难以计算,而不为系统测试安排最后的时间将会是一场灾难。

    效率高和效率低的实施者之间个体差异很大,经常能够达到数量级的水平。需要协作沟通的人员数量影响着开发成本,成本的主要组成是相互的沟通和交流,以及更正沟通不当引起的不良结果(系统调试)。对于效率和概念来说,最好由少数干练的人员来设计和开发比如首席程序员:定义功能和性能技术说明书,设计文档,编制源代码以及技术文档;副手:设计的思考者、讨论者、评估人员,详细的了解所有的代码,研究设计策略的备选方案;管理员:仅在项目具有法律、合同、报表、财务方面时,管理员才有全职责任等。这是从个人艺术到公共实践,所有程序员的专业分工,使程序员从文书等杂事中解放出来。都说项目提高技术水平,是因为在实践中总会遇到各种各样的问题,那么就要去解决。无论是通过翻阅书籍,上网搜索,或者是求助他人,亦或是自己调试解决,在这个过程中,我们需要找到问题,弄明白产生问题的原因,最后才能解决它。

  • 相关阅读:
    【Educational Codeforces Round 101 (Rated for Div. 2) C】Building a Fence
    【Codeforces Round #698 (Div. 2) C】Nezzar and Symmetric Array
    【Codeforces Round #696 (Div. 2) D】Cleaning
    【Codeforces Round #696 (Div. 2) C】Array Destruction
    【Educational Codeforces Round 102 D】Program
    【Educational Codeforces Round 102 C】No More Inversions
    【Good Bye 2020 G】Song of the Sirens
    【Good Bye 2020 F】Euclid's nightmare
    使用mobx入门
    requestAnimationFrame 控制速度模拟setinterval
  • 原文地址:https://www.cnblogs.com/Nojava/p/14908099.html
Copyright © 2011-2022 走看看