公司是否应该在所有开发工作中强制使用单一架构?

时间:2021-03-25 07:27:38

I know it's a slightly rhetorical question, but I'd like to hear opinions that support or reject this doctrine as it will help me build a better case in my request to not use the dictated solution.

我知道这是一个略带修辞的问题,但我希望听到支持或拒绝这一学说的意见,因为它将帮助我在我的请求中建立一个更好的案例,不使用口述的解决方案。

A little background: I develop and maintain a large, mature application (VFP for the UI, Oracle PL/SQL for the middle and back end) that is used strictly in-house. I have asked my superiors about re-writing the UI in C#, but I've been told that all future development efforts are to be done in Java /Spring. I've explained that the amount of effort going from a desktop application to a web application would be significantly larger than simply migrating to C#. I have also explained how the whole UI would have to undergo a major redesign to make the transition to a web browser. Finally, I explained that this application is only used in-house so there wouldn't be as much benefit realized by having a web architecture in place as opposed to the benefit an external application would receive. Unfortunately my arguments have not swayed them.

一点背景:我开发并维护一个大型,成熟的应用程序(UI的VFP,中间和后端的Oracle PL / SQL),内部使用严格。我已经要求我的上级用C#重写UI,但我被告知所有未来的开发工作都要在Java / Spring中完成。我已经解释过,从桌面应用程序到Web应用程序的工作量远远大于简单地迁移到C#。我还解释了整个UI如何进行重大的重新设计以转换到Web浏览器。最后,我解释说这个应用程序仅在内部使用,因此,与外部应用程序将获得的好处相比,实现Web架构不会带来太多好处。不幸的是,我的论点没有动摇他们。

Part of me is tempted to capitulate and attempt the rewrite in Java just so I can gain the experience, but I fear it could be a disaster of a project that will take quadruple the time and effort that a migration to C# would have required.

我的一部分很想投降并尝试用Java重写,这样我就可以获得经验,但我担心这可能是一个项目的灾难,需要花费四倍于迁移到C#所需的时间和精力。

I understand that there are benefits to having a department support only a single language, but to me it feels like we're trying to drive screws in with a hammer.

我知道让一个部门只支持一种语言是有好处的,但对我而言,感觉就好像我们正试图用锤子驱动螺丝钉。

So, what are the positives and negatives of a company using a single solution for all development efforts? Also, does anyone else find themselves in a similar situation where their language of choice is rejected despite all the practical reasons for that choice?

那么,对于所有开发工作,使用单一解决方案的公司的积极和消极是什么?此外,是否有其他人发现自己处于类似的情况,尽管有这种选择的所有实际原因,他们的选择语言被拒绝了?

5 个解决方案

#1


I agree with you and Rob Wells that it is a bad idea to enforce a single architecture doctrine. The only thing that might work in this case is to do an analysis of cost of each solution (Java Vs. C#) and make a presentation to them with actual numbers and conclusive evidence. You can also try to see if there are any case studies. If they are unavailable, you might want to see if any other company has done something similar, study its effects and use that to convince your management. That said, this may be more work than coding in Java (Kidding :)). I wish you luck in convincing your management.

我同意你和Rob Wells的说法,强制执行单一架构原则是一个坏主意。在这种情况下唯一可行的方法是对每个解决方案的成本进行分析(Java Vs. C#),并使用实际数字和确凿证据向他们进行演示。您还可以尝试查看是否有任何案例研究。如果它们不可用,您可能想看看是否有其他公司做过类似的事情,研究其影响并用它来说服您的管理层。也就是说,这可能比编写Java(Kidding :))更多的工作。祝你管理层顺利,祝你好运。

#2


To be fair, the question as stated is something of a straw man argument. Of course the answer is no if we take the "no matter the cost" condition literally.

公平地说,所提出的问题是一个稻草人的论点。当然,如果我们从字面上理解“无论成本”条件,答案就是否定。

EDIT: OP has removed the "no matter the cost" wording, the rest of my answer should still apply though.

编辑:OP删除了“无论成本”的措辞,我的其余答案仍应适用。

That said, usually the reason for enforcing a single architecture is to save costs. They want everyone to devote their efforts into that architecture. If that architecture fits most of the problems they deal with, this can reduce their costs. The question then becomes: Is the savings of enforcing an architecture worth the cost of occasionally using it for problems where it isn't appropriate?

也就是说,通常强制执行单一架构的原因是为了节省成本。他们希望每个人都投入到这个架构中。如果该架构适合他们处理的大多数问题,这可以降低其成本。那么问题就变成了:执行架构的节省是否值得偶尔使用它来解决不合适的问题?

There are going to be many instances where the answer is still no, but isn't black-and-white, it depends on what your company does, where your core compentency lies and what projects they are really interested in developing.

很多情况下答案仍然没有,但不是黑白分明,这取决于你的公司做什么,你的核心能力在哪里以及他们真正有兴趣开发什么项目。

#3


No.

That would be like going to an architect who can only work with concrete.

这就像去一个只能使用混凝土的建筑师。

You can only superimpose a single solution to all problem spaces.

您只能将单个解决方案叠加到所有问题空间。

Edit: Mind you, it would be very difficult to convince any management that worthwhile ROI will come from the rewrite of a mature system.

编辑:请注意,很难说服任何管理层认为有价值的投资回报率来自重写成熟系统。

#4


An architecture is not usually imposed to make one project team's life easier, so unless you were using Java/Spring before it's going to come at some cost to you.

通常不会强制使用体系结构来使一个项目团队的生活更轻松,因此除非您在使用Java / Spring之前需要付出一些代价。

A choice of Java and webapps isn't necessarily just about a single language.

Java和webapps的选择不一定只是一种语言。

There are many reasons why the company may mandate a single architecture. You need to understand the reasons why your company has done that and the value to the company from doing so.

公司可能要求单一架构的原因有很多。您需要了解公司为什么这样做的原因以及公司的价值。

The reasons for doing so might include

这样做的原因可能包括

  • Having to maintain expertise train people in only one language and toolchain
  • 必须保持专业知识,只用一种语言和工具链培训人员

  • Making it easier to move people between projects, since the technology is similar.
  • 由于技术类似,因此可以更轻松地在项目之间移动人员。

  • Making maintenance easier, since staff working on the application later don't have to know multiple languages.
  • 使维护更容易,因为以后处理应用程序的人员不必知道多种语言。

  • Not having to buy tools (IDEs, refactoring browsers etc) for multiple languages
  • 无需为多种语言购买工具(IDE,重构浏览器等)

  • Making it easier to use non-Windows desktops
  • 使用非Windows桌面更容易

  • Reducing the operational costs of supporting the application (e.g. no need for desktop installations, or through reducing the number of technologies they need to know)
  • 降低支持应用程序的运营成本(例如,不需要桌面安装,或通过减少他们需要知道的技术数量)

  • IT Director is getting backhanders from Java tools vendors :)
  • IT总监正在从Java工具供应商处获得回复:)

So there are benefits, as well as costs, in adopting the architecture. You need to show that you at least understand the benefits and can make the case why using your preferred language on this project makes corporate sense.

因此,采用该架构既有好处,也有成本。您需要表明您至少了解其中的好处,并且可以说明为什么在此项目中使用您的首选语言具有公司意义。

Why do you think it will be a disaster? What make Java such a bad fit for the rewrite? You need to be careful you're not coming over as someone who has a favourite language and just bad mouths things you don't yet know.

为什么你认为这将是一场灾难?是什么让Java非常适合重写?你需要小心,你不会因为有一种喜欢的语言,只是那些你还不知道的坏话而过来。

#5


Limiting the choice of "sanctioned" architectures makes sense if you consider maintenance costs. It makes it easier to move people or even entire teams between projects.

如果考虑维护成本,限制“制裁”架构的选择是有意义的。它可以更轻松地在项目之间移动人员甚至整个团队。

#1


I agree with you and Rob Wells that it is a bad idea to enforce a single architecture doctrine. The only thing that might work in this case is to do an analysis of cost of each solution (Java Vs. C#) and make a presentation to them with actual numbers and conclusive evidence. You can also try to see if there are any case studies. If they are unavailable, you might want to see if any other company has done something similar, study its effects and use that to convince your management. That said, this may be more work than coding in Java (Kidding :)). I wish you luck in convincing your management.

我同意你和Rob Wells的说法,强制执行单一架构原则是一个坏主意。在这种情况下唯一可行的方法是对每个解决方案的成本进行分析(Java Vs. C#),并使用实际数字和确凿证据向他们进行演示。您还可以尝试查看是否有任何案例研究。如果它们不可用,您可能想看看是否有其他公司做过类似的事情,研究其影响并用它来说服您的管理层。也就是说,这可能比编写Java(Kidding :))更多的工作。祝你管理层顺利,祝你好运。

#2


To be fair, the question as stated is something of a straw man argument. Of course the answer is no if we take the "no matter the cost" condition literally.

公平地说,所提出的问题是一个稻草人的论点。当然,如果我们从字面上理解“无论成本”条件,答案就是否定。

EDIT: OP has removed the "no matter the cost" wording, the rest of my answer should still apply though.

编辑:OP删除了“无论成本”的措辞,我的其余答案仍应适用。

That said, usually the reason for enforcing a single architecture is to save costs. They want everyone to devote their efforts into that architecture. If that architecture fits most of the problems they deal with, this can reduce their costs. The question then becomes: Is the savings of enforcing an architecture worth the cost of occasionally using it for problems where it isn't appropriate?

也就是说,通常强制执行单一架构的原因是为了节省成本。他们希望每个人都投入到这个架构中。如果该架构适合他们处理的大多数问题,这可以降低其成本。那么问题就变成了:执行架构的节省是否值得偶尔使用它来解决不合适的问题?

There are going to be many instances where the answer is still no, but isn't black-and-white, it depends on what your company does, where your core compentency lies and what projects they are really interested in developing.

很多情况下答案仍然没有,但不是黑白分明,这取决于你的公司做什么,你的核心能力在哪里以及他们真正有兴趣开发什么项目。

#3


No.

That would be like going to an architect who can only work with concrete.

这就像去一个只能使用混凝土的建筑师。

You can only superimpose a single solution to all problem spaces.

您只能将单个解决方案叠加到所有问题空间。

Edit: Mind you, it would be very difficult to convince any management that worthwhile ROI will come from the rewrite of a mature system.

编辑:请注意,很难说服任何管理层认为有价值的投资回报率来自重写成熟系统。

#4


An architecture is not usually imposed to make one project team's life easier, so unless you were using Java/Spring before it's going to come at some cost to you.

通常不会强制使用体系结构来使一个项目团队的生活更轻松,因此除非您在使用Java / Spring之前需要付出一些代价。

A choice of Java and webapps isn't necessarily just about a single language.

Java和webapps的选择不一定只是一种语言。

There are many reasons why the company may mandate a single architecture. You need to understand the reasons why your company has done that and the value to the company from doing so.

公司可能要求单一架构的原因有很多。您需要了解公司为什么这样做的原因以及公司的价值。

The reasons for doing so might include

这样做的原因可能包括

  • Having to maintain expertise train people in only one language and toolchain
  • 必须保持专业知识,只用一种语言和工具链培训人员

  • Making it easier to move people between projects, since the technology is similar.
  • 由于技术类似,因此可以更轻松地在项目之间移动人员。

  • Making maintenance easier, since staff working on the application later don't have to know multiple languages.
  • 使维护更容易,因为以后处理应用程序的人员不必知道多种语言。

  • Not having to buy tools (IDEs, refactoring browsers etc) for multiple languages
  • 无需为多种语言购买工具(IDE,重构浏览器等)

  • Making it easier to use non-Windows desktops
  • 使用非Windows桌面更容易

  • Reducing the operational costs of supporting the application (e.g. no need for desktop installations, or through reducing the number of technologies they need to know)
  • 降低支持应用程序的运营成本(例如,不需要桌面安装,或通过减少他们需要知道的技术数量)

  • IT Director is getting backhanders from Java tools vendors :)
  • IT总监正在从Java工具供应商处获得回复:)

So there are benefits, as well as costs, in adopting the architecture. You need to show that you at least understand the benefits and can make the case why using your preferred language on this project makes corporate sense.

因此,采用该架构既有好处,也有成本。您需要表明您至少了解其中的好处,并且可以说明为什么在此项目中使用您的首选语言具有公司意义。

Why do you think it will be a disaster? What make Java such a bad fit for the rewrite? You need to be careful you're not coming over as someone who has a favourite language and just bad mouths things you don't yet know.

为什么你认为这将是一场灾难?是什么让Java非常适合重写?你需要小心,你不会因为有一种喜欢的语言,只是那些你还不知道的坏话而过来。

#5


Limiting the choice of "sanctioned" architectures makes sense if you consider maintenance costs. It makes it easier to move people or even entire teams between projects.

如果考虑维护成本,限制“制裁”架构的选择是有意义的。它可以更轻松地在项目之间移动人员甚至整个团队。