这是一个负载平衡的艺术

最近在读James Coplien的[url=http://www.amazon.com/Organizational-Patterns-Agile-Software-Development/dp/0131467409]组织模式[/url]。觉得最有意思的还是这张图。[img]http://dl.iteye.com/upload/attachment/206465/61f20318-3664-357f-8a7b-c1f7f5742cf9.png[/img]

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

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

但是这两个方向的问题,最终结果似乎是“殊途同归”的。控制复杂度似乎最重要的就是控制包的依赖数量和方向。做到均衡的负载,不能让太多的包都依赖于同一个包,导致所有的改动都要经过同个包。建模良好的系统不应该出现一堆人都在改同一个类的现象。除非这个包或者类处于更高更稳定的抽象级别,最极端的例子就是.NET Framework中的那些类。
[img]http://dl.iteye.com/upload/attachment/206476/8327c420-11b8-37da-9e2c-8c97d77059e7.gif[/img]
而沟通问题也是在做均衡的负载。在上面的图我看到的是平衡的负载,没有人是Overloaded的。
[img]http://dl.iteye.com/upload/attachment/206467/d3f49b15-5573-3901-86f2-9a936f763eac.png[/img]
在这张图里,我们就明显的可以发现有人是Overloaded的。在你的团队里有这样人吗?很多项目里的项目经理,不但要管项目,管需求还要管技术,显然是会Overloaded。有的项目专门有人负责“沟通”,就是他去和客户沟通,然后回来和程序员沟通,然后和QA沟通。很快,沟通就变成他的全职工作,那么他的附加值是什么呢?只要团队内有这样的Overloaded的角色,他们就会变成薄弱点。一旦团队的规模变大,外部的压力变大,就会整体垮掉。所以,平均负载是关键。
有一个非常形象的类比。就是Bridge游戏。这个游戏让你设计钢铁互相搭配的形状,设计一座桥梁,然后让汽车从上面通过。如果受压大的钢条就会变红,超过负载就会断掉。
[img]http://dl.iteye.com/upload/attachment/206474/70d47cd0-5368-330e-a679-981722e89c34.jpg[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值