这是一个更普遍的问题,即哪个方向对公司来说是一个更好的投资。
我们公司的核心业务应用程序是用Visual FoxPro编写的,大约有9年以上的历史。数据库是15+演出,核心逻辑很复杂,更糟糕的是数据模型很糟糕。建造它并且这些年来一直保持这种状态的两个人至少在他们的50年代,所以不用说退休或可能在接下来的十年左右可能会死亡。
此VFP应用程序驱动我们所有核心业务功能,并要求终端服务和Citrix从外部访问它。我们的网络应用程序必须通过ODBC与它进行交互,我们总是遇到性能问题。运行这个系统的服务器也很老,比如Win 2000服务器,并且正在崩溃。
最近,我们一直在开展有关升级运行此核心应用程序的系统以及电子邮件和文件存储等其他服务的会议。然而,最大的费用是购买新的服务器硬件,操作系统许可,终端服务许可,Citrix许可等,以解决我们目前正在使用的一些性能和外部访问问题,以及通常将我们带到我们的系统上。
价格标签将在55,000美元到65,000美元之间。所以作为一名网络开发者,我的观点是,这是一个巨大的浪费!我的解决方案是将这些资金用于重写核心系统,以便在基于Web的.Net平台上运行。这将消除对终端服务器和Citrix许可的需求以及昂贵的硬件和配置管理来运行它。我并不认为将这种资金投入到一个过时的系统中是有意义的。无论如何,这个系统都应该出现。
我希望得到一些有说服力的论据,说明为什么这是浪费钱。希望有人在这之前遇到过这种情况可以给我一些观点。硬件升级似乎是最容易上手的路,因为他们只会有一位顾问进来并做到这一切。软件开发项目需要更长的时间,需要更多的资源,并且可能需要花费更多的钱。
答案 0 :(得分:6)
无法赢得短期重写与重新硬件争论。硬件和许可证总是比重写便宜。硬件和许可证似乎没有任何风险。
你无法赢得投资回报率的论点。除非系统是微不足道的并且你是一个天才,否则重写一个实际上做某事的应用程序总是花费10万美元或更多。想想多人年。
你可能会赢得“技术债务”的争论。变化越来越复杂,风险越来越大,越来越昂贵。此代码延续的时间越长,风险和成本就越多。
真正的问题是“现在开始修复?”或者“等到它破裂后再受苦?”而且没有确定的有价值的答案。
您不能在资金上竞争,因此您必须在风险,功能,增长,可维护性,适应性,标准合规性,安全性,为每个客户创造独特价值等方面展开竞争。
“我们现在正在寻找更大的客户群和更多数据”。这可能是你赢得的一个论点。
(我已经超过50岁了,我不打算很快就会死去。这个说法并没有赢得人心。除非他们超过80岁,否则你不能真正使用年龄,除非是为了获得你的论点被忽略了。)
关注进行变更的成本(和风险)。
证明您拥有基于网络的解决方案,可以降低成本,降低风险。
此外,深入了解其中的内容并找到可以由Web框架替换的部分。你不写的代码维护你编写的代码会更便宜。
答案 1 :(得分:3)
每个项目都需要进行成本效益分析。如果一笔60,000美元的一次性投资将解决未来10年的所有问题,那么(可能)比雇用一个开发团队甚至一年来构建更新,更好的系统要便宜得多。
另一方面,如果它已经花费了5万美元/年的维护成本,这笔资本成本只是为了让系统保持活力,而且你需要在几年后再花费6万美元,那么它需要保证重新考虑重新设计。
或者您可以采取中间道路并开始将其包裹在像Web服务一样不透明的东西中,然后逐渐更换具有更好(更高效,更易维护等)内部组件的组件。很多公司都采用这种方式,因为它推迟了重写的前期成本;如有必要,您可以将IT资源推迟到其他地方。
尽管如此,S.Lott是对的 - 很可能你无法单独与成本竞争。您必须尝试量化与这些古老系统相关的风险 - 例如,如果原始程序员决定退出(或者使用这么多管理者的说法,那么公司要花多少钱来找到并培训合格的FoxPro开发人员) “见过面,”乘坐公共汽车“...”...只是为此添加一些进一步的观点:在.NET之前(以及之后的几年),我在Delphi中完成了大部分项目。当时,它确实是企业发展的绝佳选择。我实际上是那个不想“升级”的人。然而,过了一段时间,我和我的高层人士都明白,这让公司外面的人感到害怕。
投资者,审计师,每个人 - 他们不喜欢我们的核心IT资产是用某种“模糊”语言完成的。当然,德尔福不是那么晦涩难懂;在SO上有一个“delphi”标签,计数为3340.但是让我们以SO为例 - 这是当前的计数:
c#
- 57293 .net
- 30577 asp.net
- 26600 java
- 31023 vb.net
- 5996 delphi
- 3340 foxpro
- 69 vfp
- 27 让这些数字暂停一段时间。德尔福,我当时选择的工具,现在只有不到10%的C#代表,这让非技术人员感到紧张。 Foxpro / VFP甚至不到1%。我甚至不记得有多少次我必须回答如下问题:
我显然在这里略显戏剧性,但如果我是你,这就是我要采取的角度。忘记短期经济学,忘记年龄,关注产品的默默无闻。如果他们为FoxPro开发者提供了一个想要的广告,他们认为他们会得到多少真实的,合格的回复?他们必须为这样的职位提供什么样的薪酬?营业额会是什么样的?如果这两位开发人员已经在那里工作了20多年,这可能看起来都很遥远,但是当你经营一项价值数百万美元的业务时,你应该知道将一个人的生存放在一个人身上永远不是一个好主意。或两名员工 - 如果你能提供帮助。
答案 2 :(得分:1)
总的来说,补充一个糟糕的系统,这大量的硬件是一个糟糕的计划,我可能会说重写更好,但是如果不了解细节就很难说。
请记住,正确的重写可以提高性能,可靠性和可维护性,因此潜在的节省量很大,并且只会逐年增加,即使初始投资多一点。
答案 3 :(得分:1)
为了弄清楚它是否值得,你必须计算,除了重写的成本:
记录系统当前所做的一切,并对要求进行逆向工程。
为当前存在的所有内容编写单元和集成测试。这可能不存在,但应该是。
维护新系统的成本。新系统不会消除维护成本,只是减少维护成本。你会节省多少钱?
新系统的硬件成本。新系统将不得不运行。
任何软件/等的许可费用。这是新系统所需要的。一切都是开源的吗?或者您是否需要为开发人员和测试人员提供多个Visual Studio测试版?
聘请新员工进行开发的成本。除了直接的工资成本,还有办公费用。对于3名开发人员来说,总数可能是300,000美元,包括工资,办公空间,设备,执照和医疗福利。
储蓄的时间范围。储蓄不会立即发生。它将在未来发生。与此同时,他们仍然需要支付当前系统的许可费用,因为在新系统建立之前,必须要做一些工作。
现金流量问题。由于上述原因,短期内他们将需要更多资金来资助开发。实际成本较高,因为他们基本上必须获得贷款,筹集资金或有机会成本(他们必须放弃一些其他投资机会来进行重写)。
商业风险。可能存在重写可能花费更多,工作更糟的危险,
答案 4 :(得分:1)
两个重要数字:
许多其他提到的观点都是有效的。但是,您可以在硬件上花费尽可能多的钱,但事实是,如果某些事情发生故障并且您需要帮助,那么您将很快找到更多可以提供帮助的人。
现在是开始讨论迁移¹到更新,更好支持的技术的好时机。 (在.NET成熟的10年里,你可以重新做一遍:)
[1] 并进化系统,不要重写它。我猜你当前的系统会根据当时的需求有机地增长。你无法完全取代所有这些(至少,不是没有几年和几千亿美元)。
答案 5 :(得分:1)
作为一个历史性的VFP开发者(使用Foxpro / VFP超过20年,并且STILL有人要求我用VFP编写/更新他们的系统,出于各种原因),它仍然非常强大。然而,在研究和掌握我的OOP和开发经验并与.Net合作时,我确实发现.Net中的一些东西更容易,尤其是强大的类型转换。但是,做一个基本的报告需要对数据库表/结构/对象进行所有强类型转换,并且在很多情况下,到目前为止,还有一个PITA要做。
重写的价格标签始终是重要的考虑因素,但任何系统的崩溃也是如此......无论是VFP,VB,Access还是其他。我强烈建议聘请一家咨询公司帮助您重新建模您的系统,并担任项目经理/导师,为您的内部员工提供他们的才能,即使可能需要一些在新的发展环境中进行培训。通过这种方式,您可以获得语言强大人才的良好基础,同时通过使用自己的编程人员来降低成本 - 但您可能需要聘请补充编程人员。从VFP到.Net的学习曲线就在那里,并且仍然可能是一个令人头疼的问题。
有很多公司都是VFP专家,他们随后将他们的服务迁移到.Net世界,并可能为您的组织提供完美的匹配,拥有两个世界的历史知识和专业经验。我知道他们也可以作为导师来发展这样的工作。
答案 6 :(得分:0)
在分析投资回报率后,你只能说这是浪费钱 - 它将在很大程度上取决于重写系统需要多少钱。
答案 7 :(得分:0)
对JOS的经典错误 - “系统是一团糟,让我们改写它”。
就像看着这座古老的建筑,看到一根牙签,想知道为什么它在那里。你认为它不是必需的,然后把它拔出来。
突然,建筑物在你的脑袋周围坍塌:)
答案 8 :(得分:0)
可能是个更好的主意
考虑重写系统的各个部分,以便更好地维护。
优化系统以获得更好的性能。
摘要Foxpro特定部分,因此可以更容易地转换为其他技术。
这种增量方法可以降低风险,并提供一些短期的改进。
答案 9 :(得分:0)
这里没有灵丹妙药。唯一可以确定的方法是在新服务器上获得成功,以获得为现有关键业务软件带来的稳定性和速度优势。然后,一旦停放了几年,就开始在.NET这样的不同平台上重新设计这个东西,如果这就是你想做的事情。请记住,您必须在某些时候将VFP数据迁移到新的数据库结构中。