zoukankan      html  css  js  c++  java
  • 《构建之法(第三版)》第三章

    3.1 个人能力的衡量与发展

    1.软件开发流程不光指团队的流程,还包括个人开发流程。把每个人的工作有序地组织起来,就是团队的流程。“有序”,并不是“无争论”。每个人的工作质量直接影响最终软件的质量。

    2.初级软件工程师成长阶段

    • 积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)
    • 积累问题领域的知识和经验(例如:对医疗或金融行业的了解)
    • 对通用的软件设计思想和软件工程思想的理解 (较虚)
    • 提升职业技能(区别于技术技能):职业技能包括:自我管理的能力,表达和交流的能力,与人合作的能力,按质按量完成任务的执行力。
    • 实际成果:绝大部分软件工程师的工作成果都是可以公开的,所参与的产品用户评价如何,市场占有率如何,对用户有多大价值?在其中起了什么作用?

    3.软件开发的工作量和质量的衡量标准

    • 项目/任务有多大?
    • 花了多少时间?
    • 质量如何?(可以用缺陷的数量来除以项目的大小,如 5 Bugs / KLOC 意味着每千行程序有5个缺陷)
    • 是否按时交付?

    软件领域可以分为两个方面:一方面是技艺创新的大爆发;而另一方面是坚持不懈的工程工作,包括软件的改善、维护和测试等,这一方面占了90%-95%的比例。对于这些任务,一个成熟的软件工程师应该能够降低任务交付的时间的标准差。在团队工作中,稳定、一致的交付时间是衡量一个员工能力的重要方面。

    3.2 软件工程师的思维误区

    软件工程师在开发过程中会走很多弯路,对软件的模块之间的依赖关系的极端态度都会导致延迟交付。

    • 分析麻痹:想弄清所有细节、所有依赖关系之后再动手,心理上过于悲观
    • 不分主次,想解决所有依赖问题
    • 过早优化:在局部问题上陷进去,无视此模块对全局的重要性
    • 过早扩大化/泛化

    3.3 软件工程师的职业发展

    1.如果我们对职业有认真的态度,就可以发现很多证明个人能力的方式。

    2.需要有一些核心技术和许多扩展的知识,并在实际工作中不断学习和不断成长:

    3.“不精通”者会把时间花在解决低层次问题上,所以要通过不断的练习,把那些低层次的问题变成不用经过大脑的自动操作,然后才有时间和脑力来解决较高层次的问题。有了工程基础,再去谈高层次的“科研”。

  • 相关阅读:
    hihoCoder #1062 : 最近公共祖先·一
    hihoCoder #1050 : 树中的最长路
    hihoCoder #1049 : 后序遍历
    108 Convert Sorted Array to Binary Search Tree 将有序数组转换为二叉搜索树
    107 Binary Tree Level Order Traversal II 二叉树的层次遍历 II
    106 Construct Binary Tree from Inorder and Postorder Traversal 从中序与后序遍历序列构造二叉树
    105 Construct Binary Tree from Preorder and Inorder Traversal 从前序与中序遍历序列构造二叉树
    104 Maximum Depth of Binary Tree 二叉树的最大深度
    102 Binary Tree Level Order Traversal 二叉树的层次遍历
    101 Symmetric Tree 判断一颗二叉树是否是镜像二叉树
  • 原文地址:https://www.cnblogs.com/Jspo/p/8440443.html
Copyright © 2011-2022 走看看