求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
 
这是一个负载平衡的艺术
 

2010-04-16 作者:taowen 来源:taowen的blog

 

最近在读James Coplien的组织模式。觉得最有意思的还是这张图。

最近公司级别组织了一次Open Discussion,总结来总结去,问题都是“沟通问题”,根源呢就是“价值观”。项目级别也做过好多次Retrospective,也是那句老话“沟通问题”。Cope总结得非常好,他说软件开发组织有多高效,主要就是取决于沟通的强度。上面那张图就很形象地标榜出了什么是高强度,健康的沟通。我觉得软件开发中只要解决两个问题:

1、从技术层面,怎么解决控制复杂度的问题。主要的手段就是Divide and Conquer和Compression。分模块分子系统就是Divide and Conquer,分函数分层就是Compression。
2、从团队,组织层面,怎么解决高效高强度的沟通问题。

但是这两个方向的问题,最终结果似乎是“殊途同归”的。控制复杂度似乎最重要的就是控制包的依赖数量和方向。做到均衡的负载,不能让太多的包都依赖于同一个包,导致所有的改动都要经过同个包。建模良好的系统不应该出现一堆人都在改同一个类的现象。除非这个包或者类处于更高更稳定的抽象级别,最极端的例子就是.NET Framework中的那些类。

而沟通问题也是在做均衡的负载。在上面的图我看到的是平衡的负载,没有人是Overloaded的。

在这张图里,我们就明显的可以发现有人是Overloaded的。在你的团队里有这样人吗?很多项目里的项目经理,不但要管项目,管需求还要管技术,显然是会Overloaded。有的项目专门有人负责“沟通”,就是他去和客户沟通,然后回来和程序员沟通,然后和QA沟通。很快,沟通就变成他的全职工作,那么他的附加值是什么呢?只要团队内有这样的Overloaded的角色,他们就会变成薄弱点。一旦团队的规模变大,外部的压力变大,就会整体垮掉。所以,平均负载是关键。

有一个非常形象的类比。就是Bridge游戏。这个游戏让你设计钢铁互相搭配的形状,设计一座桥梁,然后让汽车从上面通过。如果受压大的钢条就会变红,超过负载就会断掉。



由外而内看敏捷软件开发
架敏捷开发中史诗故事与用户
看板任务管理
面向全球化的有效敏捷交付
小型团队快速开发方法
DevOps,不是一个传说!
更多...   


统一过程及应用
敏捷过程实践
基于XP/RUP的迭代开发
软件开发过程指南
SCRUM过程实践
敏捷测试-简单而可行


某博彩企业 产品经理与产品管理
北京 研发团队与工作管理
广东金赋信息 敏捷开发过程与项目管理
某支付平台 软件配置管理与发布管理
富士 软件外包项目管理与进度管理
塞孚耐 基于Scrum的敏捷开发
更多...