zoukankan      html  css  js  c++  java
  • 《构建之法》阅读

    0. 说明

    我觉得把书上已经有的东西抄一遍到博客上,对于学习帮助不大。我想了个办法,把每个知识块用一句话加以提炼,每次看到这句话,都把相关的知识在脑中快速再现一遍,作为检验。如果回想不起来,就去重新学习。多次再现成功之后,知识转为长期记忆,就把这些话再作为一个知识块提炼成一句话。如此迭代,书可以越读越薄。
    心得与评论的丰富度,除了和书本的知识量有关系之外,我觉得还和我自己已有的“相关知识”的量有关,因为知识只有通过联结才能活起来,心中有底才能说得出话。因此有些章节我没写什么评论,说明我没有新想法,只是在积累知识“学习一个”而已。

    1. 概论

    知识要点:
    航空业和软件业的类比,商业与业余软件的区别,软件工程大致领域,软件复杂性的来源,什么是工程,怎样的软件才算好。

    1.1 软件 = 程序 + 软件工程

    实际上从产业规律来看,先驱探索应该放在成熟产业之后,毕竟能战斗在一线的都是化用规则于无形的巨佬。
    商用软件与业余软件的区别在于,商用软件需要确保符合需求、功能齐备、可以维护、万无一失。但是,企业的能力是有限的,软件bug是无穷的。就算是微软的OS也在一直打补丁不是么?所以其中的取舍,确是一门学问。

    1.2 软件工程是什么

    软件的复杂度,随代码量指数增长。
    软件的复杂度,本质不在技术而在管理。软件工程的工具能够帮助降低便携软件的难度,当一个软件工程师的代码量达到瓶颈后,他就知道应该使用更强力的软件工程工具了。

    2. 个人技术和流程

    知识要点:单元测试,回归测试,抽样,代码注入,效能分析工具的用法,psp。

    2.1 单元测试

    单元测试就是一堆的测试函数,是一堆的用例。我直接把这种函数和普通函数放在一起,每次跑程序的时候顺便测试一下。单元测试显然更规范,更灵活了,但是也就那么回事。
    回归测试,概念类似“回档”。模块的版本,就像一棵树,应该可以用github管理,但是我现在还不怎么会用,也没遇到过这么复杂的情况。现在我最多只会保留一个备份而已。

    2.2 效能分析工具

    选个指标,比如说内存吧,分析一下,发现某个函数特别消耗资源,改它,资源消耗量将下来了。这就是用效能分析工具进行优化,理论上特别简单。当然,性能不是一切,不能为了性能牺牲代码的可维护性。

    2.3 个人开发流程

    是个检核表,好用。现在我对其中各项的理解还不够,所以我准备了一个秒表,做什么事情都计时,最后再看看什么任务属于什么项目,再加进去。当然,这样就很难估算各个项目的耗时了,但是这样做是理解其中各项的最好办法。

    3. 软件工程师的成长

    知识要点
    个人贡献者的工作流程,初级工程师的成长方式,TSP要求简介,三层问题模型与自动化。

    3.1 个人能力的衡量与发展

    现阶段主要就是积累知识、训练基本能力,其他的太虚了。我也感慨,PSP真的是一个很好的管理工具。

    3.2 软件工程师的职业发展

    3.3 技能的反面

    怎么检测是否真正掌握了某个知识?

    • 脑中有一个知识地图,脉络非常清晰,用知识的时候就想在地图上开车,也清楚地知道自己知识的边界。
    • 化繁为简,能用起来,甚至教会10岁小孩。
      书里面介绍了问题层次的模型。我马上就想到那个很出名的心理学模型:舒适区、过渡区、恐慌区。我在很多领域都见过类似的东西,这个模型真的很重要。比如说习惯培养的最终目的,就是自动化地做事情。
  • 相关阅读:
    make学习笔记(一)
    进程学习笔记(二)进程间通信
    背包入门(01背包,完全背包,多重背包)
    线程学习笔记(一)
    设计模式学习笔记
    Python学习笔记(一)
    poj1276(多重背包)裸题
    【树莓派】树莓派小车(二)树莓派、小车和红外线模块连接(多图)
    【Java Web】IDEA如何创建及配置Web项目(多图)
    【树莓派】树莓派小车(一)小车配件选购及安装(多图)
  • 原文地址:https://www.cnblogs.com/Metak/p/7499966.html
Copyright © 2011-2022 走看看