我在一家小型创业公司工作,而且最近毕业的人对系统的设计和规划几乎没有经验。我们有一个旧的但设计合理的产品,我们从另一家公司那里获得了产品,该公司关闭并向我们提供产品以换取股票。该产品已过时,采用Java编写,有两个版本。 V1不是很好 - 意大利面条代码,大型代码库等.V2大大改进,设计简洁,更薄更快,但我们公司的功能愿望略有不同,我们完全不能使用V2。该应用程序是一个守护程序,在后台运行,只有在安装和配置期间对用户可见 - 非常小的GUI。
时间表也是一个问题:我们有两个月的时间,直到一个重要的里程碑。
选项1: 使用V2的核心并使用我们想要的内容进行更新。该程序是一个桌面客户端,可以完成一些工作,并将结果发送到我们的服务器API。它在Java中,而我们的服务器在NodeJS中。
优点:
缺点:
选项2: 使用JS和Electron从头开始构建。
优点:
缺点:
最后一个选项是考虑C#和所有Windows开发,但这基本上类似于选项2:我们也必须学习所有内容,同时我们在团队中提供Java和JS技能组,但没有C#技能。
这可能是一个奇怪的问题。如果有人有类似情况的经验或只是感兴趣,我真的很感激一些建议。
答案 0 :(得分:3)
作为最近的毕业生,我建议你不要做出这些决定,并与组织的建筑师或治理专业人士(如果有的话)交谈。
如果很少有人担任该职位,请深入思考利弊并提出您的发现。这不是您应该做出的决定。提供指导,但让Business决定Cheap / Fast / Good三角形的风险/成本/时间平衡。
请记住,作为一个乐观的开发者(我认为我们通常都是),我们倾向于低估任何项目的生存时间。对我来说,我发现,如果我将我本能的估计乘以我之前所做的事情,我已经做了2.5倍,那么我最终会接近准确的估计。如果这是我可以想象的东西,但之前没有实现我采取本能的,乐观的估计并乘以7!
祝你好运!答案 1 :(得分:0)
我不确定选项2是否可行。
电子是非常棒的,绝对是很多地方将来会使用的东西,但看看已经使用它的人,Slack,VScode。他们是有时间的大型服装和跨所有平台工作的人。我听了VScode的一个播客,他们有很多样板工作要做,以便在所有系统上运行。不知道电子家伙在此之前是否大量聚焦在窗户上。
然而,这不是主要问题。我想你必须考虑时间,我赞同蒙扎。把你的估计和时间至少计算为4.如果项目需要花费几个月的时间,那么你就麻烦了。我之前曾为创业公司工作过,如果你开始做任何新的事情,需要花费几个月的时间,他们会变得神秘,让你在遗留代码中做得越来越多。你也可以在制作一个新系统的时候永远推迟这个错误,所以你最终放弃了新项目,大多数重写都会在那里结束,除非你有很多钱。
我认为你拥有的最佳选择,以及之前的许多选择是迭代地改变项目。不确定它是否可能,但你可以从java应用程序创建一个视图,如下所示:https://docs.oracle.com/javase/8/javafx/embedded-browser-tutorial/overview.htm并调用以node / angular编写的后端(因为你有技能)并托管在网络上?然后,您可以缓慢地构建功能并在当前应用程序上进行迭代,直到您将其全部替换为止,并且还有一个通用的Web /桌面视图。
Facebook拥有大量用不同语言python,ruby和js编写的遗留代码。如果它对他们来说足够好......