第三章 软件工程师的成长
1. 软件工程包括了开发、运营、维护软件过程中的很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫做“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营、维护的效率,以及提升用户满意度、软件的可靠性和可维护性。
2. 在团队的大流程中,是每一个具体的个人在做开发、测试、用户界面设计、管理、交流等工作。因此,个人在团队中也有独立的流程。把每个人的工作有序的组织起来,就是团队的流程。
3. 软件领域可以分为两个方面:一方面是技艺创新的大爆发;另一方面是坚持不懈的工程工作,包括软件的改善、维护和测试等,后者占了90%-95%的比例。
4. 软件工程师的思维误区:
- 分析麻痹:想弄清楚所有细节、所有依赖关系之后再动手,心理上过于悲观,不想修复问题,出了问题都赖在相关问题上。
- 不分主次、想解决所有依赖问题:过于积极,想马上动手修复所有主要和次要的依赖问题,然后就可以“完美地”达到最初设定的目标,而不是根据现有条件找到一个“足够好”的方案。
- 过早优化:一个工程师在写程序的时候,经常容易在某一个局部问题上陷进去,花大量时间对其进行优化,无视这个模块对全局的重要性,甚至还不知道这个“全局”是怎么样的。
- 过早扩大化、泛化:有些软件本来就是解决一个特定环境下的具体问题的,要了解必要性、难度和时机。
5. 首先,一个软件工程师需要具备一定的知识和能力(知识:McConnell把相关的软件知识分为十大知识领域。能力:一个工程师对这些知识的掌握分为如下四个阶段——入门、熟练、带头人、大师)。其次,工程师有8个职业成长级别。