论软件生产中的专业分工

目前大多数软件公司的应用系统的生产方式,都是先建立一个基础版,然后根据客户的需求进行定制化的开发,而定制化的收益率主要取决于,后期开发人员对代码的熟悉程度,代码质量的优劣,以及代码量的多少。同一个模块的升级或者客户化,熟手和生手相差数倍。一般生手要比熟手多做三件事情,了解功能模块的意义,模块的设计方案和熟悉代码。真正编码的时间是比较少的。在任何行业熟练工都是抢手货,在IT行业也如此,几乎每家公司招聘软件工程师都希望找到有业务背景,又熟练掌握主流应用技术的软件工程师,谈何容易,这样的人不但成本高,而且更郁闷的是,这样的高级软件工程,在一个新环境,接触新的产品,在其上做二次开发同样不能避免新手最头痛的三件事情。当然他会比低级别的软件工程师更快一些结束这三件事。软件项目的成本主要是时间,避开或快速处理完这三件事成为项目是项目节约时间的关键,是项目最易挤出油的地方,也是油最多的地方。如何做到呢?我认为,模块专业分工是最好的办法。下面说说如何实施。

一个产品在开发初期有两个角色是最重要的,一是产品经理,二是系统设计师,前者把握业务后者把握技术,相辅相成,缺一不可。这两个角色由一个或两个人承担都可以。系统设计师将业务模块化,并规定对外接口。把模块划分到人,那么此人就专业负责此模块更细致的设计,开发和测试。当然不能过于专注,对其他同事的业务模块,毫无所闻。理越辩越明,沟通也是分析业务的方式。对自己负责模块的理解和心得与同事沟通很重要。从软件开发的思路历程来看,从第一版到第二版一般会有很大的变化,第一版通常偏重体现意识,第二版偏重体现理性,之后版本变化通常比较小了。也就是说同一段代码你第二次写完的时候,就可以准备写设计文档。模块专业分工后,当此产品销售到市场,客户对产品提出客户化的要求事,涉及哪个模块,就有专业负责这个模块的人处理。如此不会有最头痛的三件事。此模块经历项目的过程中,模块负责人为了避免每次都修改并调试代码,自动会思考如何使代码的灵活性更强,容错性更强,代码更简洁并满足需求,无须外界督促。人的天性不愿意破坏性的修改自己产品,更愿意并乐意完善自己产品。整个系统会自然地逐步完善,项目的实施周期会逐步缩短,项目收益率逐步提高,产品竞争力增强,公司和员工收入也会提高。我们的员工也可以抽出更多的时间思考总结,或投身于更有意义的工作中去,而不至于天天忙碌丢掉自己的灵魂。
代码量少,简洁易读,文档齐,全通俗易懂,就算模块创始人离开了,也可以最大程度帮助新手快速处理完头痛三件事。阅读优秀的功能代码和文档又成了新手融入公司的入门课程,一举两得。还有初级的软件工程待遇较低,以低待遇换学习,换时间,换因老员工离职而造成项目实施周期延长的时间。 另一方面,因模块专业化分工,模块负责人就少一些心思和理由去了解其他模块的细则,对保护知识产权也有一定的好处。
总结一下:软件生产专业化
1.有利于功能模块化。
2.有利于提高代码质量。
3.有利于保护知识产权。
4.有利于提高生产率,降低工业成本。

当福特研发出世界上第一个流水线后,福特降低了员工工作时间,开出的工资是其它汽车厂商工资两倍之多,并且还大幅度降低了汽车价格,为此亨利•福特也被评为20世纪为世界装上轮子的人,这是专业化分工的利刃,也忘此利刃划开软件实施的天空。

[该贴被cuwkuhaihong于2012-02-23 09:21修改过]