首页 > 代码库 > 《构建之法》第三次
《构建之法》第三次
本周着重阅读了《构建之法》的第三章:软件工程师的成长。
软件工程包括了开发、运营、维护软件的过程中的很多技术、做法、习惯和思想。软件工程把这些相关的技术和过程统一到一个体系中,叫“软件开发流程”,软件开发流程的目的是为了提高软件开发、运营、维护的效率,以及提升用户满意度、软件可靠性和可维护性。
软件开发流程不光指团队的流程,还包括个人开发流程,因为团队是由个人组成的。在团队的大流程中,是每一个具体的人在做开发、测试、用户界面设计、交流等工作。因此,个人团队中也有独立的流程。
把每个人的工作有序的组织起来,就是团队的流程。这里的“有序”,并不是“无争论”。在大部分成功的软件团队模型中,各个角色(开发,测试,项目管理等)考虑问题的出发点是有区别的,不同意见的冲突在所难免,一个好的团队流程能把冲突的积极方面(各自尽力把自己的工作做好,说服别人)释放出来,而避免消极方面(因为冲突而产生的消极,抵触情绪等)。
就拿篮球来作一个比喻,篮球队中也是有个人流程的。职业篮球队对于球员有很严格的要求,例如:体能、技术、意识、斗志,具体的技术有传接球、起跳高度、三分球、两分球命中率、跑位、挡拆意识等等。篮球队有不少“阵型”:2-3,1-2-2以及它们的各种变体。还有不少风格:下快攻、篮下得分、远投得分、中投得分、上篮得分、造犯规罚球得分等等。
然而,尽管有这么多战略和团队阵型的理论,篮球的每一次进攻、传球、挡拆、投篮都是单个球员完成的。如果单个运动员的技术、体能不行,无论是什么阵型,用处都不大,有些阵型还会起反作用,例如,让个子矮的球员打内线,让体力差的一直下快攻。篮球队有没有交流?当然有,教练和球员之间、球员之间都有很频繁的交流,有战前的计划和训练,有事后的总结和分析,当然也会有争论。
软件团队和团队中的工程师也是这样。软件系统的绝大部分模块都是由个人开发或维护的。在软件工程的术语中,我们把这些单个的成员叫做IC。
作为一个初级工程师,我们需要有所成长。首先,要积累软件开发相关的知识,提升技术技能(如对具体技术的掌握,动手能力)。例如:对Java、C/C++、C#的掌握,诊断/提高效能的技术,对设备驱动程序、内核调试器的掌握;对于某一开发平台的掌握。其次,积累问题领域的知识和经验。对通用的软件设计思想和软件工程思想的理解。提升职业技能(区别于技术技能)。要有实际成果。
《构建之法》第三次