优秀与平庸
年轻的软件经理,喜欢由一流精英组成的团队,因此,程序员也分为优秀的与平庸的。
那么优秀的程序员与平庸的程序员之间又有什么区别呢?首先,优秀的程序员的生产效率是平庸的十倍,编程速度是平庸的五倍。如果一个老板给优秀的程序员2万美元的月薪,那么,这名程序员的产出可能是给1万美元平庸的程序员工资的十倍。
根据以上结论,如果有200个人的团队,找出其中25个最能干的,当然也包括项目经理,开除剩下的175人。然后,把最有经验的人才作为这个项目的经理。
不过短小精干的团队所带来了一个新的问题:相对于真正意义上的大型系统来说,它的开发速度简直是太慢了。
如何适应大型系统
那么如何才能适应大型系统呢?第一,每一个模块由一个团队去解决。第二,这个团队要类似于做外科手术的方式,并非一拥而上。第三,有一个人完成整个问题的分解,其他人只是给予支持和实现。
因此我们将会看到一个全新的团队,这个团队由这些成员组成。
外科医生
相当于是首席程序员,只需要一名即可,也就是我们通常理解的架构师,他应该亲自定义功能技术说明,并且设计整个程序的框架,编写核心代码,这名架构师应该是一名经验非常丰富的技术人员。
一名副手
也就是架构师的后备,他能够完成任务的一部分,但是经验比较少,它可以作为外科医生设计的思考者与评论者,与外科医生经常保持沟通,其实他充当着外科医生的保险机制。
一名管理员
相当于是整个项目团队的老大,他控制着财务、工作地点和办公设备的整合。
一名编辑
他负责整理整个项目的文档,并且随时保持更新。
两个文秘
他们负责非项目文件的整理,并且要使项目的协作与目标保持一致。
一名专职的程序员
其他人的配合使他从琐碎的事情中解放出来。
一名工具的维护者
比如经常保持工具的升级等等。
一名测试人员
他需要准备大量的测试用例,搭建整个测试平台。
一名语言专家
对新的编程语言和技术要保持最高的热情,并且需要花费时间去研究,然后运用在项目之中。
总结
总之,要有一个架构师负责所有的设计,并分清设计与实现的界限。而具体的实现,由其他人去完成即可。其实这个就有点类似于我们通常所说的二八原则,核心的代码由小部分人去实现,剩下的人全部处理一些普遍性的功能。