zoukankan      html  css  js  c++  java
  • 人月神话阅读笔记02

    外科手术队伍

    在开发小组中,最好和最查人员生产率比在10:1,在运行效率和空间上5:1惊人差距。如果一个200人的项目中,有25个最能干和最有开发经验的项目经理,那么开除剩下的175名程序员,让项目经理来编程开发。


    对于一个软件项目,适合的项目团队规模在20人左右,这是一个专职的IT项目经理可以管理的最大值。那由于项目进度压力需要增加团队规模到100人的时候,让项目经理来开发实际操作是很困难的方式,在这里推荐的方式是将系统按照高内聚,松耦合分解为5个子系统。这样则可以将100个分解为5个项目,由5个项目经理来管理,这是减少和有序化沟通渠道最有效的方式。


    小型敏捷的中小型团队可以保持最高的效率,但对于大型软件系统却不得不投入更多的人力资源来换取进度的提前。对于一个软件产品,在激励的竞争下对进度要求是非常严厉的,往往推迟半年推出都有可能失去竞争和市场,更不用说10年。对于信息化软件产品我们更强调的是迭代和多版本开发概念,每个迭代周期在1-2月左右,每个迭代周期都是真正可以向用户提供完整的可交付的功能。

    外科手术队伍的目的仍然是为了提高整体效率,要达到这个目的就需要分清主次,由外科医生和副手主体人员复制解决问题和保持概念完整性。将有经验的首席程序员真正能够解放出来,让他们能够真正的专注于产品和程序实现。外科医生和副手构成了整个团队的核心,副手不是简单的打杂人员,而是外科医生的后备和左右手,他们在经验丰富后就可以升任为外科医生。


    对于企业管理信息系统软件开发和大型操作系统的开发有一些差异,跟业务相关密切的信息系统会更加强调需求的重要性,需求分析也是系统分析的重要内容。因此在这种情况下一般会划分出专门的需求分析人员这种角色,或者说将需求和总体设计合并为系统分析员角色,当我们理清楚了业务架构和技术架构后,后续实现阶段就变得简单。


    对于队伍如何运作的问题,外科医生和副手是核心保证高度的概念完整性,跟传统按生命周期阶段来分角色的团队相比,我们可以看到一个显著的差别就是流水线式的沟通方式朝扁平的总线式沟通方式转化。这种方式沟通更加高效,同时概念完整性更加容易保证,当出现冲突的时候外科医生具有绝对的权威。

    一位首席程序员、类似于外科手术队伍的团队架构提供了一种方法—既能获得由少数头脑产生的产品完整性,又能得到多位协助人员的总体生产率,还彻底地减少了沟通的工作量。

    扩建过程的成功依赖于这样一个事实,即每个部分的概念完整性得到了彻底的提高—决定设计的人员是原来的七分之一或更少。所以,可以让200人去解决问题,而仅仅需要协调20个人,即那些“外科医生”的思路。


    对于协调的问题,还是需要使用分解的技术。在这里,可以认为整个系统必须具备概念上的完整性,要有一个系统结构师从上至下地进行所有的设计。要使工作易于管理,必须清晰地划分体系结构设计和实现之间的界线,系统结构师必须一丝不苟地专注于体系结构。总的说来,上述的角色分工和技术是可行的,在实际工作中,具有非常高的效率。


    这里所讲到的重点就是体系结构设计师要抽取出来组成核心设计团队,其他人员是实现人员,这样沟通的范围将限制到到这20个人的核心团队中,以保证高度的概念完整性,大大的提高沟通效率。

  • 相关阅读:
    百度PaddlePaddle入门-14(多个CPU加速训练)
    Quantum Hierarchical State Machine (量子层级状态机)
    百度PaddlePaddle入门-13(网络优化)
    MachineLearning入门-9(数据准备)
    百度PaddlePaddle入门-12(损失函数)
    MachineLearning入门-8(数据可视化)
    百度PaddlePaddle入门-11(网络结构)
    页面生命周期
    JS控制开灯关灯
    JavaScript基础知识
  • 原文地址:https://www.cnblogs.com/0710whh/p/8447907.html
Copyright © 2011-2022 走看看