说简单点就是分工要明确,按照博弈论的观点,假如我们每个人的目标都是合理的,那么我们通过相互的制约很好的推进项目的周期,但是如果角色分配的不合理,比如说职责重复,缺少角色等等,那么开发的过程中就会遇到很多利益冲突,解决不好,就容易导致团队不和谐,没有凝聚力等等,最严重的情况就是大家各自为政,都听不进别人的意见,大家都是会为别人着想的人,但是有时候想得太多,总是会觉得不合理,不公平,难免影响工作情绪。
在我现在这个项目就有类似的问题,首先,就是没有一个架构设计人员,经验丰富的开发和经验较浅的开发做的事情是差不多的,整体架构的设计名义上是大家一起来做,但是在开发过程中就发现了问题,对于一个架构变动,没有人有决策能力,TM只会说,有问题跟我说,然后你发现了问题告诉他,他却不知道和谁来商量,经过和一个个的开发者进行了讨论,认为这个架构的变更确实是必须并且可行的时候又要开一次会,来讨论怎么来做这个变更,由谁来负责这个变更,所以说,SD是必须的。而在一次会议上我听别人说做SD必须要有10年的经验,我觉得有点可笑,有很多优秀的开发在很早就做上了架构师,我认识的人里面就有一个,其实我觉得逻辑思维能力较强,有整体架构思想,并且对项目中使用技术有一定研究就可以做SD了,倒是我不明白现在为什么很多软件公司都特别在乎工作年限,认为做了10年IT就是万金油了,什么事情都可以解决,真是大错特错。
我认为,做什么事情都有一个精与不精的区别,假如那句什么语言不重要,重要的是思想,一通百通的话我觉得真是没什么意义。我们都知道C和JAVA.NET的侧重点不一样,一个偏向底层,一个偏向应用,让一个做C做了10的人去做一个网站可能都做不好,为什么?因为他没有对网站应用根本就不了解,用户需要什么他都不知道,他脑袋想的只是如何使用户体验更加的绚,但是却不知道网页上能不能实现这个绚的效果,网页上上传做个进度条能不能实现,实现的难度大不大,他都不知道,这样的架构师能做好网站吗。同样让。NET程序员去做JAVA的事情也不一定做的好。闻道有先后,术业有专攻,这句话是有道理滴。
我以前就碰到过这样一个PM,让我去做一个图片处理的程序,他想让我把一张图变清晰,我觉得一张从100K压缩成了10K的图你还想让他变清晰仿佛是不可能的事情,用脚趾头想问题也知道那丢的90K是干什么的,PM要我多测试几次,经过测试确实是不可行的,但是PM不相信,因为他做了一年多的开发,于是中午不吃饭跑到我的机器上写代码,口中还念念有词的,等我吃完饭睡好午觉,他终于认输了,虽然如此,但是从这件事上我就觉得有点不痛快,多的就不想说了。
角色分配的问题还体现在我们不能越庖代厨,如果你是RD,你就不要过多的去摆弄需求,觉得需求不该这么做,因为这个问题不该你想,想这个问题只是浪费时间。如果你是PM,你就不要过问架构和技术细节,因为你始终不如开发了解实际的问题,如果你是一个做了十几年开发的PM,自己手下的技术不如自己,硬要按照自己的想法去做事,那么不要做PM,你可以做个SD。