问题是,你的直觉反应可能是对的,但这并不意味着你的经理一定是错的——他可能有很好的理由希望这一切都在 java 中完成。尤其是,如果你在公共汽车下,找到一个懂 java、perl 和 bash 的替代者将比找一个懂 java 的人困难得多。这撇开了“它们只能在安装了 cygwin 的 PC 上运行”的问题。而且很可能,性能并没有您想象的那么大。
话虽如此,您最好的选择是花一点时间估计将它们全部移植到 java 所需的时间,以便他做出明智的决定。并且,当您使用它时,估计将 bash 脚本移植到 perl 并记录它们需要多长时间。然后让他决定。记住 - 他不会像你那样把大部分时间都花在编码上,所以他可以做出一些决定是公平的。
如果他决定继续使用 java 选项,尽可能移植其中一个脚本,然后报告两个版本,如果你对 perl/bash 脚本的简洁性是正确的,你应该能够通过并排检查两个版本获得一些里程。
编辑: MCS,老实说,在我看来,这些脚本在 perl 和/或 bash 中而不是 java 中实现得更好,但这并不是重点——重点是你如何向你的经理证明这一点。如果你解决这个问题,你就同时解决了“直觉反应”问题(顺便说一句,这里有一个提示 - 开始将你的直觉反应称为“基于经验的判断”)和“陈述我的案例的最佳方式”问题。
现在,您必须意识到的第一件事是,您的经理(可能)不会走这条路来激怒您。他几乎肯定对这些剧本有真正的担忧。考虑到他们可能是真正的担忧(如果他们不是,那就没有必要再进一步了——如果他出于某种政治原因下定决心做这件事,那么无论如何你都不会改变他的想法什么,所以只要继续下去并将其添加到您的简历中)因此,如果您要去任何地方,您需要向他提供解决他的担忧的信息。如果你能做到这一点,那么你就成功了一半以上。
那么,他的担忧是什么?根据你的帖子,以及我的判断和经验 :-) 我会说他们是:
我也猜他的担心是不是:
当然,我对最后一个可能是错的;在我工作的最后一个地方,我们遇到了与复制有关的 SQL Server 性能问题,它影响了企业提供客户支持的能力,所以性能是一个问题,所以我们解决了这个问题。但一般来说,性能并不像程序员想象的那么严重。如果他真的告诉你性能是一个问题,那么就把它考虑进去。但如果他没有提到它,那就忘了它 - 可能只有你认为这些脚本在 perl/bash 中的运行速度比它们可能在java 很重要。
所以,可维护性。这归结为回答“如果 MCS 落在公共汽车下,谁来维护这些脚本?”这个问题。和补充问题“这会给我(即你的经理)带来问题吗?” (顺便说一句:不要被整个公共汽车的事情挂断。“跌倒在公共汽车下”是各种风险的有用且外交的简写,例如“如果有人用我公司无法提供的薪水引诱他离开会发生什么匹配?”、“如果他决定移民到百慕大会怎样?”、“如果我想解雇他会怎样?”、“如果我想提拔他会怎样?”当然还有“如果只是因为某种未知的、可能与公共汽车有关的原因,他有一天不再上班了吗?”)
请记住,考虑和减轻这些风险是您经理的工作。
那么,该怎么做呢?
首先,演示这些脚本的实际可维护性。或者至少它们的可维护性如何。记录它们(在适当的文档中,而不是在代码中)。培训一个同事来维护它们(选择一个想要获得/提高他们的 perl 和 bash 技能的人,以及你的经理信任的人)。重构它们以使它们更具可读性(必要时牺牲性能和巧妙的脚本技巧)。如果您想继续使用 bash,请创建一个文档,提供安装 cygwin 和 bash 的分步说明。不管怎样,记录下安装 perl 和运行脚本的过程。
其次,选择其中一个脚本并将其移植到 java。随意选择最能展示 perl/bash 优于 java 的脚本,但尽你所能移植它。使用 java.util.regex 做同样聪明的事情在你的 perl 中。将其记录为记录其他内部 java 实用程序的标准。如果性能确实是一个因素,请测量其相对于 perl/bash 脚本的性能。
第三,在经历了那个练习之后,对自己诚实地对待它们的相对可维护性。问问你训练的那个人他的想法。如果您仍然认为 perl/bash 脚本或多或少与 java 版本一样可维护,请尽可能准确地估计将剩余脚本移植到 java 所涉及的工作(您现在可以非常准确地做到这一点,因为你实际上已经移植了一个)。然后将比较脚本、文档和估算(以及性能数据,如果合适的话)交给您的经理,并与他一起检查。提出您的反建议(a. 将它们保留在 perl 和 bash 中,但记录它们并培训一位同事,b. 将 bash 脚本移植到 perl,记录它们并培训一位同事)。
最后,让您的经理权衡所有信息并做出决定,并遵守他的决定。事实上,不要只是遵守他的决定,要接受他可能是对的事实。仅仅因为你比他更了解 perl/bash/java 并不意味着你一定比他更了解管理团队/部门。如果他的决定是坚持使用 perl/bash,或者移植到 perl,那就高兴吧!因为您不仅走上了自己的路,而且您的经理对您的评价也有所提高,并在此过程中学到了宝贵的一课。