软件作坊式的软件公司运营及软件开发要诀
以软件作坊这样的含意来比喻我们的软件公司的开发过程,那我们的软件开发技术骨干们将无不怒发冲冠了,IT业毕竟被称作“高新技术”行业,而拿我们掌握技能的骨干技术人员比作小作坊的“匠人”,这无论无何是一种恶劣的、污辱性的诋毁!但不幸的是,我们大多应用软件的开发过程的确以“软件作坊开发”比喻是较为恰当的。
“软件作坊”开发虽然只是对软件开发形式的一种比喻的说法,但深究起来却还真是一个不小的话题。讲到“软件作坊”,主要是指传统手工作坊的生产模式而言的。所谓软件作坊生产模式大同小异,一般情形是:由一个掌握了某种技能的“匠人”,带领几个不需太多技能的“伙计”进行全程生产,匠人的技能是由其师傅“口传心授”的,其他人基本上插不上手。生产过程中由匠人以他的一套“规矩”来安排,不需什么规程、制度,更不需要做什么“计划”、“方案”。匠人在作坊里的“技术权威”使得老板也不敢对其“指手画脚”,否则他会 “撂挑子”,事情成败取决于匠人的能力。在这样的情形下,生产过程基本上是无序的、无约束的,老板作为“管理者”角色的职能几乎谈不到,甚至受匠人的摆布,除非老板是一个非常高明的匠人。
如果你承认我们几千年民族手工业正是由作坊里的匠人们支撑的,那作为刚刚有二三十年历史的应用软件开发业,沿袭了我们的民族传统,应该说不是什么丢人的事。但是,在我们的“软件作坊”里还是有了太多的项目失败,这种失败或者表现为无法实现的不可为、或者表现为开发周期的不可控制、或者表现为项目结果为用户所不认可、或者表现为项目最终的严重亏损,这种失败的惨痛出乎我们的意料,以至于我们无所是从。再加上技术人员、资金严重匮乏的困扰,软件开发管理举步维艰。
软件作坊式的软件公司中,很多东西都是装在开发人员的脑子里面的,往往会因为一两个开发骨干走了,就造成整个公司的瘫痪。赌注完全押在这一两个人的身上,资本投入风险很大,如果研发骨干一个人另谋高就,公司投资等就将全部付之流水,软件作坊的运作模式严重阻障了软件公司的成长。
软件开发本身确实是一项复杂、艰苦而又充满着风险的工作,唯其如此,几十年来中外软件开发业的专家和学者们在大量的失败项目中总结着失败的经验和教训,陆续创立了相关的学说并应用于指导软件开发的实践,取得了一定的成果。在项目开发过程上借鉴一般工程过程建立了软件开发的“工程化理论”,在开发方法上总结有结构化分析方法、组件式开发、净室开发以及目前较为推崇的面向对象的分析开发方法等等,在软件开发质量管理上有CMM、ISO等一些成熟的体系。这些规范化理论和方法在不断的改进发展中日趋成熟和完善,并对软件开发过程的工程化管理和规范化实施起到了革命性的指导作用。
事实上,但凡专业的软件开发人员在大学里就学过《软件工程》这门课,所有上面提到的一些理论知识都全面涉及,在此就不讲其具体内容了。纵观这些指导性的理论以及我们所采用的开发方式,我们说,软件作坊开发对小型应用软件开发项目是有一定的用武之地,在一定程度是不违背快速开发理论的;但对于稍成规模的小型软件(更不用说中、大型的软件)项目的开发过程,那就必须遵从于工程化理论的原则和方法,落实规范化的管理,否则失败的风险将伴随着整个开发过程,而且越到后期失败的可能性会越大,一旦失败,其经济损失也就会非常巨大。