开发工具一直在变换改进。它们变得更巧妙,使开发者能用更少的操作就完成更多的事情。它们能更直观的表现他们如何工作。同时它们可视化程度更高,能让你在更抽象的水平上创建越来越多的程序。
你怎么能知道在面对更新的技术时,何时应该升级你的开发工具呢?当然,没有一种答案能够适应每种情况。几乎从来没有过那样的状况。然而,在做决定之前有一大堆起作用的因素需要先考虑。
三种升级类型
这里有许多开始进行升级时可能出现的情况:
- 同一产品的提高版本:你可能需要判断是否你需要从X.Y版本升级到X.Y+1版本。这种程度的发行相当普遍。他们通常包含较小的功能性改进和缺陷修复。尽管必须经过测试确定,他们通常来说不会对环境有太大的影响。
- 同一产品的主要版本改变:当一个产品从X版本升级到X+1版本时就是这种情况。有时这只有很小的影响。而有的时候,卖方会在新版本中推出相当多的改变。在某些极端情况下,新版本可能和旧版本完全不兼容。
- 全新开发工具:最后一种情况包括真正地移植到完全不同的技术和工具。在这种情况下,你要做出更重要的决定,譬如更换数据库供应商,移动到新平台,或者采用新的编程语言和环境。这类转变确实需要考虑短期和长期的费用和收益。通常状况下,这类升级在短期内会引起混乱.
最近,我需要做出一个升级的决定。我们的团队在使用典型的Microsoft系列工具做互联网开发工作。有一天,一个开发员来找我,说他们确实需要考虑移植到.
NET开发环境了。那时,. NET系列开发工具甚至还没有发布,所以我不必为做任何短期的决定而担心。然而,我知道我将需要再一次为我们的开发机构做出决定,同时决定什么时候做出改变。
也许这里还有一些更重要的因素,需要你总是站在新的发展技术前沿。这些商业因素也许意味着你要更早的移植到新工具,甚至是需要紧紧地跟在卖主后面。然而,我们其余的人总是有一段时间用来做决定。最终归结为两步:成本与收益的计算和风险评估。
收益
就我的经验而言,升级开发环境经常能带来长远效益,但是也会导致短期内的痛苦。如果你不能转变所有的老技术,那么你将同时体会到长期的痛苦。无论如何,在你想要升级系统之前一定会看到某些好处。也许是你能立刻检测出的短期效益,或者是从更长远角度能看到的收益。包括这些情况:
- 增强生产力:一般来说,你改用新的工具是为了获得梦寐以求的发展目标——快速发展时期。工具越来越多的替代人工编程的工作,帮助开发员工作得更有效率,错误更少。尽管很难确切地衡量生产力增长了多少,但是随着时间的推移,发展的速度确实在提高。
- 节约成本:更好的工具能使得只用更少的开发员完成更多的工作。有时,新工具本身就比旧工具省钱。
- 士气:我认为使用新技术(或者至少保证使用相当新的技术)能保持人们工作的动力和兴趣。如果你的开发技术是非常陈旧的,一些人会感到他们好像落伍了,可能会想要离开你的团队。
成本
毫无疑问的,移植新技术需要费用。这其中的成本包括:
- 转化:许多时候,当你升级你的开发工具时,用旧工具编写的商业软件需要修改转化。这样的转化带来短期的痛苦和费用。然而,如果你不做转变,你将支付长期的维持跟了解两种技术的费用。确实,这样做的话也许确实可以避免短期内转化的费用。当我为一家排名在Fortune
100内的大公司工作时,我们总是使用一个标准开发环境。问题是这个开发环境每隔一年就要做一次改变。随着时间的流逝,结果是留下了一大堆融合不当的各种各样的技术和工具。这种状况使得开发环境极其复杂,难以维持。但是,确实避免了从旧的技术移植到新技术的费用。
- 测试:你经常需要做测试,尽管你只是升级到当前开发工具的最新版本而已。这包括了解新工具的性能,将其安装到开发或测试环境,以及之后的测试所有相关的应用软件,确保全部运转正常。
- 培训:当你升级到现有工具的最新版本时,也许不存在培训的问题。然而,更换开发工具通常都会带来培训费用。你也许还需要引入已经掌握这种最新工具的合同人员,来帮助你的成员更快地掌握这项技术。
- 许可费用:再一次说明,如果你升级一个已有的技术,也许并不包含许可费用。然而,如果你取得一个新技术,那么你在继续为旧工具支付许可费用的同时,还不得不为新工具支付许可费用。
有的时候,新开发技术所能带来的好处是如此引人注目,你的团队立即就决定要使用它了。然而,许多决定不是黑白分明那么绝对的。实际上,再很多情况下,升级和移植的实际费用不可能在与含混不清的生产力收益做比较时,就做出准确的判断。那么为什么我们还要不断升级和移植开发环境呢?特别是,为什么将很大比例的Microsoft开发工具移植到.NET上呢?这个答案同时存在于长期风险管理和成本与收益的分析中。尽管这篇文章着重于成本与收益的比较上,这个系列的下一篇文章将着重于风险管理方面。
|