企业开发的互联网转型
算起来,我从互联网开发转向企业开发已经有四年时间了。在刚刚投身企业开发的那段时间,虽然也读过《企业应用架构模式》之类的书,到底没有做过正经的“企业开发”,而且业务并不算太复杂,所以还是借着之前互联网开发的老底子解决问题。这么做确实解决了很多问题,但心里还不太放心,总觉得这不是名正言顺的“企业开发”,以后会有问题。
因为谈到传统的企业开发,大家通常想到的是重型的框架、瀑布模型、严格的限制、海量的文档和签字、对商用软件的倚重等等(正版盗版另论)。而谈到互联网开发,大家通常想到的是轻量的开发、迅速迭代、不断的试错、面对面的交流、开源/免费软件的广泛使用。传统上,企业开发和互联网开发并不对付,你觉得我是杂乱无章的恣意胡闹,我觉得你是傻大笨粗的因循守旧,好在双方“井水不犯河水”,也相安无事。
企业开发和互联网开发的这种区别,也是我在跨界之时的一大忧虑。然而工作得越久,事实却不断证明这种担心是多余的,或者至少不必高估“企业开发”的正统性。而且,有越来越多的迹象让我相信,企业开发的互联网转向,是未来的趋势。按照我的总结,原因大致有以下几点。
首先,经济的发展诞生了越来越多的小企业,而信息化的发展已经让IT成了各种企业的必须,所以“企业开发”必须考虑到这些小企业的需求。前些年大家开个饭馆、书店,可能手工记账即可。现在哪家饭馆、哪家书店没有IT系统,简直是不可想象——哪怕这种IT系统是非常简单的程序。尤其是在电子商务兴起之后,众多企业都希望上网展示自己、拓展业务,这时候更少不了IT系统。这些小企业只关心简单、便宜、易用的IT系统,传统的重型“企业开发”并不能适应它们的需求。即便其业务增长迅速,这种业务通常也是创新型的业务,没有现成的企业系统能够适应,所以互联网开发模式下轻量级的、能迅速迭代的系统,更能满足需求。
其次,企业开发已经很难吸引到优秀的人才加盟。最早的软件开发几乎等于“企业软件开发”,一招一式皆有成为规范可循,而互联网开发更像是半路出家,“摸着石头过河”的产物,一早并不被科班所重视。所以之前定义的“好学生”,往往是理论学得扎实、教材读得仔细、工具用得熟练的人。企业开发的套路正好又和学校学的一致,所以“好学生”往往能成为企业开发的优秀人才。如今的情况却大不相同,“好学生”嘴里谈的更多的,也更感兴趣的,可能是MongoDB、Node.js、Ruby on Rails、Go等等新鲜玩意。别说“老派的”WebService、Struts,甚至就连.NET MVC、Spring估计都不能引起他们的兴趣。加之传统从事企业开发的人对技术的保守特性(更愿意采用成熟技术),直接灭绝了大量人才(包括优秀的苗子)进入企业开发领域的可能性,而没有新鲜血液补充的企业开发团队,不说开发新功能,维护的成本都会日益增高。我曾经遇到过客户仍在使用Delphi开发的系统,可惜已经很难找到人维护了。
再次,移动办公的应用场景所倚赖的技术离不开互联网。传统的企业开发,无论Java平台还是.NET平台,与如今流行的移动开发基本是“绝缘”的。企业开发所使用的COM、SOAP、WSDL等等技术,在iOS、Android开发者看来,简直是天方夜谭,即便费劲周折,也不一定能取得好的效果。然而企业开发分明又面临着支持移动平台、移动办公的压力,如果固守之前的套路和技术,只有死路一条。
最后,如今的互联网已经越来越讲究互连互通了,传统企业开发的“闭环”思维和模式,已经越来越不适应时代的要求。我接触的很多客户、合作方,发现企业系统的一大问题是信息孤岛效应。或许两家企业都有各自的信息系统,而且运行流畅稳定,可是一旦需要进行数据交流则叫苦不迭。因为没有合适的对外接口,要么就冒很大风险开放不必要的权限,要么就只能通过QQ或邮件手工交换数据。在互联网开发的人看来,世界天生是由无数API构成的,这样才有无限想象空间;但对很多从事企业开发的人来说,别说对外的接口,就是对内的接口都很难做,大家更习惯为着确定目的“量身打造”紧耦合的系统。
不能互连互通的另一大问题在于,互联网、云计算,已经为以前麻烦的众多问题提供了低成本的解决方案。比如困扰许多企业系统的存储问题,传统的解决办法大概是去买专门的存储设备,购置费用一大笔不说,支持和维护的支出更是没有尽头。但是同样的问题,在互联网上已经有非常成熟的解决方案,存储的价格相当低廉,很适合存储海量的非敏感业务数据(如果不信任国内的云服务商,可以存放在亚马逊的S3,也可以分几家存储)。如果不能采用类似的方案,必然要求企业系统的开发者“亲力亲为”地解决这种问题,分散了本该聚焦在核心业务上的注意力。
当然,传统的企业开发方式里,还是有很多有意义而且值得保留的做法,比如明确的目标设定、详细的需求管理、规范的进度把握等等。我曾在知乎看到有人评价说“互联网有时给人的感觉是太杂乱无章了,有时根本不按规矩来,而要真正做好一件事情,基本的规矩是必须要遵守的”,这种观点我很认同。但是总的来说,企业开发从传统的“企业开发模式”转向“互联网开发模式”,是“不得不为”的趋势。我心中理性的企业开发,应当是在“专心关注核心业务”之外,广泛、合理地应用外界各种开发技术和资源的模式。各位身处企业开发领域,但还没有足够资本退休的朋友,或许该早早做准备了。