昨天写了到底谁骗了谁 看了大家的留言,我就接着CMM的话题再来写这篇文章,本意不是抗大旗讨伐CMM,指示借用CMM的话题,从我自己的实际感受出发,来谈谈软件工程的话题.在这里首先要感谢所有留言的朋友,特别是Jsaon(因为我们是合作关系,被我强行拉来看我写的东西)
现在的软件开发趋于大的方向发展,以前可能一个或责两个人就可以挑担干活,现在则不然.现在的开发规模是人群战术,一堆人来参与软件的总体开发,包含有用户人员,开发人员,市场人员,管理人员等等.一旦人多,就涉及到沟通,管理,等等开发以外的许多因素.如何协调所有与项目有关的人员,这就提出了管理的课题,用户向市场人员说我想要什么设么,市场人员配合开发人员去分析客户的期望,然后确认,开发,测试,部署.开发的流程就是这么一个简单的过程.但是事情往往很难简单,比如客户或许他自己也不知道他想要的软件到底是什么样子,等做到程序做完之后,发现原来不是这样,那么就再原来简单的流程上加入了循环,如果问题越多,循环也就越多,如果始终跳不出循环的圈,那么项目也就注定失败.
在整个循环过程中,多种角色参与问题,那么彼此之间的沟通就非常主要,有一则笑话说:有户人家在一天下雨后发现井盖子被风刮走了,第二天早上他和别人说起这件事,但是到傍晚,他发现很多人跑到他家来,他就觉得很奇怪,想知道为什么.来得人就说:"听说昨天大风把你家的井给吹走了."道理很简单,信息在通过口头的传递过程中会因为遗忘或记忆问题造成差错.交流靠嘴的项目我觉得项目很难做到理想的结果.
当很多人参与的时候,就涉及到彼此合作,什么是很作呢?我也觉得这么问很好笑,但是仔细想想,这个问题不容易回答.在一个团队中,彼此合作的的时候,就要项目配合,那么在事情的计划,前进的安排上都要彼此配合.两人三足的游戏可能比较简单,喊喊口号:"1,2,1,2"也就可以前进了,但是团队分工的时候,不是只靠这写就可以.每个人的习惯,特点,工作能力等都要被计算在内.还有因为某些特殊的原因造成进度的延误等等都要在计划中被考虑.能过做好一份计划,需要耗费的精力不亚于写一段相当函数的代码.
人都是来来往往,现在的人很难在一个公司待上很久,特别是项目比较大的情况,那么这种人员的流动率就更高.如果说因为一个人的离开影响到整个项目上的总体进度,那么这就属于管理上的问题.可能有些公司会烦扰一点:"天啦,某某的代码像密码,没有密匙很难解开."什么是密匙,就是那堆看不起眼的规范和开发的文档.对于高手来说所,规范往往会制约其手脚.但是对于公司来说,可能就那么一两个高手,一堆小罗罗,那么我想公司可能更愿意靠小罗罗来发挥效果,毕竟高手再厉害,难以一抵百.
到这里为止,上面没有写道一个CMM的东西,CMM既然能存在,就有他们的存在的道理.我们总不能说因为刀可以杀人,那么它就是十恶不赦的家伙,毕竟没了刀子,用石头切肉总不太方便.问题的根源在用刀的人上.CMM也一样,现在在国内作为他们的管理作用很少被发挥出来,问题在于使用CMM的人的出发点和他们的认识, 其实不论公司的规模大小,如果希望从管理上有所进度,那么就要活学或用它,用好它.而不是生搬硬套的取使用或责是门面的功夫做足了.天下功夫那么多,不是高手有多少能够练完全的,不过如果取其一两点简单实用的,道也可以强身健体,何乐而不为.
现在的软件开发趋于大的方向发展,以前可能一个或责两个人就可以挑担干活,现在则不然.现在的开发规模是人群战术,一堆人来参与软件的总体开发,包含有用户人员,开发人员,市场人员,管理人员等等.一旦人多,就涉及到沟通,管理,等等开发以外的许多因素.如何协调所有与项目有关的人员,这就提出了管理的课题,用户向市场人员说我想要什么设么,市场人员配合开发人员去分析客户的期望,然后确认,开发,测试,部署.开发的流程就是这么一个简单的过程.但是事情往往很难简单,比如客户或许他自己也不知道他想要的软件到底是什么样子,等做到程序做完之后,发现原来不是这样,那么就再原来简单的流程上加入了循环,如果问题越多,循环也就越多,如果始终跳不出循环的圈,那么项目也就注定失败.
在整个循环过程中,多种角色参与问题,那么彼此之间的沟通就非常主要,有一则笑话说:有户人家在一天下雨后发现井盖子被风刮走了,第二天早上他和别人说起这件事,但是到傍晚,他发现很多人跑到他家来,他就觉得很奇怪,想知道为什么.来得人就说:"听说昨天大风把你家的井给吹走了."道理很简单,信息在通过口头的传递过程中会因为遗忘或记忆问题造成差错.交流靠嘴的项目我觉得项目很难做到理想的结果.
当很多人参与的时候,就涉及到彼此合作,什么是很作呢?我也觉得这么问很好笑,但是仔细想想,这个问题不容易回答.在一个团队中,彼此合作的的时候,就要项目配合,那么在事情的计划,前进的安排上都要彼此配合.两人三足的游戏可能比较简单,喊喊口号:"1,2,1,2"也就可以前进了,但是团队分工的时候,不是只靠这写就可以.每个人的习惯,特点,工作能力等都要被计算在内.还有因为某些特殊的原因造成进度的延误等等都要在计划中被考虑.能过做好一份计划,需要耗费的精力不亚于写一段相当函数的代码.
人都是来来往往,现在的人很难在一个公司待上很久,特别是项目比较大的情况,那么这种人员的流动率就更高.如果说因为一个人的离开影响到整个项目上的总体进度,那么这就属于管理上的问题.可能有些公司会烦扰一点:"天啦,某某的代码像密码,没有密匙很难解开."什么是密匙,就是那堆看不起眼的规范和开发的文档.对于高手来说所,规范往往会制约其手脚.但是对于公司来说,可能就那么一两个高手,一堆小罗罗,那么我想公司可能更愿意靠小罗罗来发挥效果,毕竟高手再厉害,难以一抵百.
到这里为止,上面没有写道一个CMM的东西,CMM既然能存在,就有他们的存在的道理.我们总不能说因为刀可以杀人,那么它就是十恶不赦的家伙,毕竟没了刀子,用石头切肉总不太方便.问题的根源在用刀的人上.CMM也一样,现在在国内作为他们的管理作用很少被发挥出来,问题在于使用CMM的人的出发点和他们的认识, 其实不论公司的规模大小,如果希望从管理上有所进度,那么就要活学或用它,用好它.而不是生搬硬套的取使用或责是门面的功夫做足了.天下功夫那么多,不是高手有多少能够练完全的,不过如果取其一两点简单实用的,道也可以强身健体,何乐而不为.