论文部分内容阅读
像所有软件一样,网络应用也会随着技术进步和业务需求的变化而不断推陈出新,但这并不意味着无休止的编程。——尼尔麦·卡利斯特
十年前,成千上万的开发者夜以继日地忙于开发数百万行代码的应用程序,每个公司都希望自己能够引领数字时代的变革,抢占行业的制高点。可当时的那些代码现在都到哪儿去了?
与十年前相比,如今的网络应用构建模式已经有了很大差别。花费大量成本使用C/C 搭建大型电子商务引擎及内容管理系统的时代已漸渐远去,取而代之的则是采用Java或PHP语言的开发模式。
任何变革都可能推动行业的进步。在IT行业中,开发平台的进化速度常常超过搭建在该平台上的应用程序。比如Java是网络时代涌现出的一颗新星,但如今的Java EE开发模式与最初基于servlet的模式相去甚远;在Linux上编译的代码有时无法在最新的服务器上运行。这意味着,与经常运行在老旧服务器上的企业级应用相比,早期的网络应用代码已逐渐消失,而“徒劳”过后的我们,现在应该做什么呢?
首先,一个成功的网络项目一定是敏捷的。“尽早发布,频繁发布”是开源行业中的箴言,对于网络开发而言同样适用。“发布”可以视为产品的一个重要特性,不可或缺。对于刚刚起步的企业或项目则更是如此,将产品更快投入市场的能力要比详细的开发规划更加重要。
此外,在项目的初始阶段还应该特别重视程序的可扩展性。在网络开发行业中,尽早发布一个版本之后再逐步重写代码以实现更强的扩展性,要比开发人员仔细推敲细节导致产品的延迟发布更划算。最近几年,我们已经目睹了这种快速松耦合式的开发方法在很多知名网站上有着成功的应用。例如,Twitter已经逐步淘汰Ruby代码,取而代之的是一款使用Scala语言开发的新平台。
其次,以程序员编程行数或类似参数作为考量标准的企业需要反思。如果我们清楚网络应用的代码只有有限的生存周期,那么最好的避免浪费时间的方法并非多写代码,而是少写。而且,如今的开发者可以利用库函数、框架、服务器等很多工具来搭建网络应用,网络应用的开发过程也因此变为搭配这些组件的过程。于是开发者可以将更多的精力集中在处理特定应用的业务逻辑上,从而使产品质量与竞争者拉开距离,而非浪费大量时间在代码编写上。
最后,企业应该意识到他们对软件的投资只是短期资产。代码是一次性的,但开发者不是。任何一个版本的网络程序所具有的知识产权价值微乎其微,更加有价值的恰恰是搭建程序的开发人员,在技术及商业环境不断变化的今天,他们才是真正的随需应变者。
十年前,成千上万的开发者夜以继日地忙于开发数百万行代码的应用程序,每个公司都希望自己能够引领数字时代的变革,抢占行业的制高点。可当时的那些代码现在都到哪儿去了?
与十年前相比,如今的网络应用构建模式已经有了很大差别。花费大量成本使用C/C 搭建大型电子商务引擎及内容管理系统的时代已漸渐远去,取而代之的则是采用Java或PHP语言的开发模式。
任何变革都可能推动行业的进步。在IT行业中,开发平台的进化速度常常超过搭建在该平台上的应用程序。比如Java是网络时代涌现出的一颗新星,但如今的Java EE开发模式与最初基于servlet的模式相去甚远;在Linux上编译的代码有时无法在最新的服务器上运行。这意味着,与经常运行在老旧服务器上的企业级应用相比,早期的网络应用代码已逐渐消失,而“徒劳”过后的我们,现在应该做什么呢?
首先,一个成功的网络项目一定是敏捷的。“尽早发布,频繁发布”是开源行业中的箴言,对于网络开发而言同样适用。“发布”可以视为产品的一个重要特性,不可或缺。对于刚刚起步的企业或项目则更是如此,将产品更快投入市场的能力要比详细的开发规划更加重要。
此外,在项目的初始阶段还应该特别重视程序的可扩展性。在网络开发行业中,尽早发布一个版本之后再逐步重写代码以实现更强的扩展性,要比开发人员仔细推敲细节导致产品的延迟发布更划算。最近几年,我们已经目睹了这种快速松耦合式的开发方法在很多知名网站上有着成功的应用。例如,Twitter已经逐步淘汰Ruby代码,取而代之的是一款使用Scala语言开发的新平台。
其次,以程序员编程行数或类似参数作为考量标准的企业需要反思。如果我们清楚网络应用的代码只有有限的生存周期,那么最好的避免浪费时间的方法并非多写代码,而是少写。而且,如今的开发者可以利用库函数、框架、服务器等很多工具来搭建网络应用,网络应用的开发过程也因此变为搭配这些组件的过程。于是开发者可以将更多的精力集中在处理特定应用的业务逻辑上,从而使产品质量与竞争者拉开距离,而非浪费大量时间在代码编写上。
最后,企业应该意识到他们对软件的投资只是短期资产。代码是一次性的,但开发者不是。任何一个版本的网络程序所具有的知识产权价值微乎其微,更加有价值的恰恰是搭建程序的开发人员,在技术及商业环境不断变化的今天,他们才是真正的随需应变者。