• 《大道至简——软件工程实践者的思想》读书笔记


    《大道至简——软件工程实践者的思想》读书笔记

    代码是不存在的,存在的只是思想

    通常而言,语言的差别主要表现在适用范围上。一些语言适合做数值处理,小数点后可以精确到原子级,而小数点前则可以表达到宇宙之无穷;另一些语言则适合做图形处理,它的底层函数库比其它语言可以快上十倍或数十倍;还有一些语言则适合于做网页,要用它来做一个通讯薄软件都将是史无前人的挑战

    面向过程是对“流程”、“结构”和“编程方法”的高度概括。而面向对象本身只解决了“结构”和“编程方法”的问题,而并没有对“流程”加以改造。

    而与“面向对象”是否出现完全无关的一个东西,却因为“过程”和“单元”的出现而出现了。这就是“工程(engineering)”。

    现在先考察一下你的公司,在整个系统里面,有没有这样的人:他既不归任何人管理,也不管理任何的他人。如果有,那么就早早地把他开掉好了

    即使是做开发,也是需要了解市场的,你必须知道用户想要什么,你必须理解你的客户。

    更好的选择是明确分工,而不是弹性分工。

    项目组员被要求:

    • 分析用户的每一个表格,以构建基础数据库;
    • 分析每一条数据的含义以确定它的上下限,以及数据间的相关性;
    • 从工作文档中去了解客户的组织机构及其相互关系,同时确定了每一类使用该系统的角色;
    • 从报表中去了解客户关注的数据信息,以及被他们所忽略掉的数据信息

    应该清楚的是,保障每一次沟通的有效性都是最重要的事。沟通不是打电话或者请客户吃饭那么简单的事。你得到的每一次沟通机会,都是向客户了解更深层次的需求的机会,因此最好在见到客户之前,你就已经设计了所有的问题和提问方式。

    维护旧项目比做新项目更难,许多人深有同感。然而这些“有同感”的人又何曾想过,自己在做“新项目”的时候,要为“项目维护”这种还不存在的角色,留下一个沟道、对话的渠道呢?

    历史记录(History)与注释(Comment)不是一回事。代码中的注释是为阅读代码而留备的,而 History 是为整个项目而记录的。一些参考的记录内容有:

    • 需求阶段:与谁联系,联系方式、过程、结果以及由此引发的需求或变更;
    • 设计阶段:如何进行设计、最初的构架、各个阶段的框架变化、因需求变更导致项目结构上的变化(有助于了解构架的可扩充性);
    • 开发阶段:每一种技术选型的过程、每一种开发技巧的细节和相关文档、摘引的每一段代码、算法、开发包、组件库的出处和评测;程序单元的测试框架;每一个设计和构架变更所导致的影响;
    • 测试阶段:还记得测试用例和测试报告吗?那是最好的 history 之一。

    当然,另一件最重要的事,是记得在每一笔记录后写下时间和你的名字。

    V 模型在每一个环节中都强调了测试(并提供了测试的依据),同时又在每一个环节都对实现者和测试者的分离。由于测试者相对于实现者是一种监督、考察和评审的关系,因此它相当于在不断地做回顾和确认。

    语言只是工具,成天讨论这门语言好,或者那门语言坏的人,甚至是可悲的。

    作为项目经理,你必须有一部分的工作是非技术性的。甚至,你可能绝大部分的工作是非技术性的。——因为与技术相关的管理技能(需求、配置、过程管理等)可以由开发经理来做,或者公司对于这一方面有较统一且成熟的规范,因而无需投入过多的精力。

    BOSS 在公司中解决的是“经营”问题。

    未完待续...

  • 相关阅读:
    Python处理海量手机号码
    javascript面向对象
    NET实现的DDD、CQRS与微服务架构
    增加打赏功能
    开发测试时给 Kafka 发消息的 UI 发送器――Mikasa
    Computational Network Toolkit (CNTK) 是微软出品的开源深度学习工具包
    线程同步和多线程优先级
    linux sed命令详解(转)
    linux sort,uniq,cut,wc命令详解 (转)
    linux awk命令详解(转)
  • 原文地址:https://www.cnblogs.com/jancoyan/p/14942404.html
Copyright © 2020-2023  润新知