在多年的软件研发管理过程中,对于如何看待、管理软件研发人员,如何有效的管理软件研发过程,一直存在着不同的观念。项目管理者联盟
软件工厂项目管理者联盟
一种观点是,尽量使软件研发过程工厂化,把软件研发人员视同工厂流水线上的工人,按照一套严格的规范进行软件产品的生产。blog.mypm.net
在这一思路指导下,在软件研发过程中,往往会详细规定软件研发的每一道工序。由于软件研发属于脑力工作的特点,所以需要大量的文档在各个工序之间传递思想或者思路,分工越细、工序越多、需要传递的环节就越多,文档要求也就越多越详细,而且要求文档在信息传递过程中尽可能的不出现偏差,不产生二义性。如果这些确实都能达到像工程图纸一样明确、准确,那么就可以对软件研发人员的工作技能进一步细分,有的专门做需求分析,有的专门做软件设计,有的专门编写代码等等,从而降低对各类技术人员的要求,使人员的专业化更加集中,在各自工序上更加熟练、更加高效,从而降低软件产品生产的整体成本。从上述的模式可以看出,这种软件工厂的思路,与劳动力密集型的制造业如出一辙,通过高度的专业分工,使工人在细分的工序中尽量的简单重复,从而降低单位成本。项目管理者联盟
采用软件工厂的管理模式,软件研发过程高度可控,后续工序必须严格按照前面工序所给出的规格说明进行下一步的工作,使得目标高度可控,沟通成本、管理成本也非常高,客观上开发周期会相对比较长,这是许多商业企业多难以承受的。“不就是改个程序吗,怎么这么麻烦”,这样的抱怨也是经常听到的。但是另一方面,由于在过程中形成了大量的详细文档,对于产品后续的维护、升级非常有利,对于一些规模大、生命周期长、要求苛刻的产品来说,还是具有一定必要性的。项目管理者联盟
将劳动力密集型的管理模式,用于智力密集型的软件研发管理,总觉得有点怪怪的。人才和奴才不可兼得。
软件作坊项目经理圈子
另一种观点是,把软件研发工作看做是一种类似手工艺品的制作过程,把软件研发人员看做是艺人,更像在一间手工艺作坊当中,发挥自己独特的创造力来制作出自己的作品。项目管理者联盟
在这种思路下,虽然也存在着一些基本的工序,但软件研发工作的分工并不那么详细,而且在研发过程中,只要是有利于完善、提升目标成果的,在后续的工序中都可以不断发挥创造力来修正前面工序的结果。更加不同的是,作为艺人的程序员,更加热爱自己的作品,更愿意为完善自己的作品而发挥创造、付出心血。在这种工作模式下,对软件研发人员的要求就比较高,不论处于哪道工序,都需要对最终成果的要求有完整的认识,更会把最终成果看做是自己的作品,所以人员的单位成本也会相应比较高。这一思路在《software
craftmanship》(《软件工艺》)一书当中有更为详细的阐述。项目管理者联盟
如果采用软件作坊的管理模式,经常遇到的是大量的诟病,什么“边计划、边实施、边修改”的“三边”工程,什么“拍脑袋、拍肩膀、拍胸口、拍桌子、拍屁股、拍大腿”的“六拍”项目,这些现象在许多不规范的场合经常会看到,而且至今仍是层出不穷、屡见不鲜,将这种管理模式应用于大型项目,其结果必然是灾难性的。即使最终完成交付成果后,后续的维护也将不得不极大的依赖于当初参与开发的个人,管理上存在着很大的风险,可持续性受到很大的威胁。项目管理者联盟
软件工作室PgMp.mypm.net
随着近年互联网业务的蓬勃发展,在很多具有互联网特点的商业领域的软件开发当中,特别是直接用于支撑业务运营的应用软件的研发,往往需要“互联网速度”,能够快速的响应客户需求、应对市场变化,而且希望创新中能达到标新立异,吸引眼球,实现商业上的差异化竞争。包括像银行、政府这样非常传统的机构,也采取了不同的措施来适应互联网的特点,不断的推陈出新。传统的软件工厂模式是难以满足对快速、创新的要求的。具有高超技艺、具有创新能力、充分理解需求意图、能把成果当做自己的作品而具有成就感的软件艺人,已经成为人力资源市场中的新宠。有行业领域经验的高级程序员身价倍增。懂业务、懂技术、思想活跃、敢于创新、追求成就感,已经成为这类“艺人”的典型标签。项目管理者联盟
但是鉴于前面所提到的软件作坊存在的种种问题,要想在市场中使软件艺人的聪明才智得以充分发挥,需要对传统的软件作坊进行升级,为了加以区分这里姑且称其为“工作室”吧,将软件作坊当中的高效、创造性的特征,与软件工厂中的分工、规范相结合。在“工作室”的模式下,遵循最为基本的软件工程原理,在规范性与艺术性之间取得折中。其实,不管是传统的瀑布模型,还是快速迭代、原型法,或者是现在的敏捷开发,无论管理模式怎样变化,需求-设计-编码-测试过程的基本规律始终是存在的,一些关键性的文档还是必须具备的,但是这些规范不应成为创造力的限制,不再是前面工序对后面工序的指令,而是在整个开发过程中对产品不断更新、完善的沟通记录,仍需要能够为以后的软件维护提供支持。项目管理者联盟文章
对于“工作室”当中的软件研发人员,也有更高的要求,在“艺人”的基础上,还要增加职业化、自律性的要求,不仅要有很好的个人技艺,还要具有较高的职业化素质,具有很好的团队意识,能够围绕整体工作目标,充分发挥自己的主观能动性,遵守约定的工作规范,加强沟通协作,不能是“野路子”。现在的敏捷开发方法,对从业人员的素质要求其实比以前更高了。项目管理者联盟
我的观点项目管理者联盟
对于软件工厂、软件作坊、软件工作室三种不同的管理模式,我的个人观点是,需要根据软件产品的特点来选择使用,像发射卫星这样的工程,规模大、周期长、要求高,容不得半点差错,那么软件工厂的方式也许是最适合的;对于有一定规模的市场化企业,既要面对快速变化的市场需求,又要满足一定的管理要求,软件工作室的管理模式或许能够兼顾;对于规模很小、影响不大、生命周期很短的软件开发任务,采用作坊的方式或许也问题不大。项目管理者联盟
整齐划一的正规军、出类拔萃的特种部队、放荡不羁的武林高手,都有各自的用武之地。项目管理者联盟
文章首发于乔东老师个人微信公众号:IT管理工匠,专注于IT管理的理论与最佳实践,不断提升IT管理“工艺”,欢迎关注交流。项目管理者联盟 项目管理者联盟
本文为项目管理者联盟联盟会员原创文章,授权发布,非经同意不得转载!
|