在工作中使用“边缘”语言的道德规范?

时间:2009-02-04 14:36:56

标签: programming-languages

只想在这里征求意见。您如何使用在您所在地区未广泛使用的语言(和/或框架)来为公司编写软件?例如,我住在一个由.NET主导的区域,偶尔会有PHP工作。假设我正在学习Python并决定使用它为我的工作编写软件(我是一个团队,所以我几乎可以使用我想要的任何东西)。

现在他们的软件是用一种语言编写的,该区域几乎没有人使用或知道;如果我要离开公司,他们基本上没有人可以维护/加入它,除非他们留在我身边作为顾问。虽然这对我来说真的很好,但似乎有点“歪” - 被授予,这就是商业世界的运作方式。

你有什么想法?

我应该提一下,这是一家非常小的公司,我是唯一的IT人员,所以我有充分的选择来选择我们的开发平台。我不是专门使用Python,而是选择它作为一个例子,因为我的区域几乎完全基于.NET;我不再关心.NET,这就是为什么我不想考虑使用它。此外,该公司是......我们怎么说... 非常节俭并且不会购买.NET所需的资源(例如服务器许可证,SQL许可证,Visual Studio,组件)。我个人有一个MSDN订阅,但我不能用它们。

此外,还有 区域内的人使用我正在考虑使用的语言(Ruby on Rails),但远不及.NET开发人员那么多人。这并不像我使用的只是我知道的东西。

30 个答案:

答案 0 :(得分:27)

您可能认为这种方法对您有好处。但事实上,所有这一切都会让你陷入困境。在组织内部获得晋升的最佳方式是让自己在当前职位上不必要。这看起来像是胡说八道,但事实上确实如此。想想这样,如果公司必须继续维护你为他们编写的python代码,并且他们不能去其他任何人获得该技能,那么他们将继续支付(可能是一点点)高于市场价格)以维持该代码。

但是,如果您在.net中编写代码,并且您所在地区的供应充足,那么随着公司的扩展和您编写的代码证明成功,您将能够雇用人员来维护该代码,你可以继续设计其他系统。或者进入管理.net程序员团队 - 如果这是你想要的。

即使你想离开,对你的职业来说最好的事情是获得最好的参考。为此,请为它们编写一些易于维护的代码。帮助他们雇用某人来代替你维护它。他们将非常感激,并建议您作为他们朋友的顾问。

代码深奥的东西 - 你所在地区几乎没有支持 - 他们会在高尔夫球场上向他们的朋友说“不要雇用那个人,他为我们写了这个系统,但没有其他人可以维持它。我们永远困在他身边,现在他太忙了,无法正常照顾我们!“

做什么对业务最有利,而不是对您最感兴趣的东西 - 或者从表面上看是这样。从长远来看,你将获胜。

答案 1 :(得分:18)

我认为你有责任决定最适合这份工作的语言。这包括客观评估语言和框架的优点,它包括您自己的语言技能(因为您是从事工作的人),并且包括其他人的可维护性。只有您和您的公司才能决定对每个人的重视程度。

答案 2 :(得分:8)

对于您自己的个人开发,如果您的区域由.net主导,为什么您不想加速而不是Python?

从道德的角度来看,我不会写一些其他人无法轻易维护的东西。

答案 3 :(得分:7)

我认为使用python是正确的做法,如果它能满足客户的要求,并为他们省钱。是否有各种各样的角色在未来的应用程序上工作是无关紧要的,除非他们已将此指定为非功能性要求。

像往常一样,使用最好的工具来完成工作对你很有帮助。

答案 4 :(得分:7)

很多回答似乎都不适合这个问题。我们不是在使用现有标准的环境中使用未经批准的语言。我们谈论的情况是海报是他公司的整个IT和开发部门。

记住人才的可用性当然很重要,但Ruby现在几乎不是一种语言。在只有一个开发人员的环境中,生产力也是一个非常重要的考虑因素。能够在没有大型团队的情况下快速轻松地构建和维护软件,需要具有与大型团队可能需要的不同特征的工具。

我认为比使用Ruby或其他东西更重要的是尝试选择一些实用的通用内容并将其用于所有内容,除非有真正的使用的理由别的。如果你选择Ruby,坚持使用Ruby作为你的实用程序脚本,cron作业和那个小GUI应用程序,当他花了超过五分钟给他带咖啡时,老板想要自动发短信实习生。

答案 5 :(得分:6)

如果你只为此目的使用它,确实有点弯曲。

但是,如果您使用它是因为它是最佳解决方案,那么您就是明确的。

此外,他们可以雇佣其他知道python的人。

我的职业道德不允许我做这样的事情只是为了让我做生意。

答案 6 :(得分:3)

我个人认为,您应尽可能地尝试尊重您所处的工作实践 - 无论是缩进风格,命名惯例,测试程序还是编程语言。

如果您强烈认为不同的语言更适合某项任务,那么请游说接受(需要对其他语言进行重新培训)。

有目的地留下一个别人无法维护的应用程序是非常糟糕的职业行为,IMO。

答案 7 :(得分:2)

我们最近在我的店里遇到了一个糟糕的雇员,他突然决定使用Perl而不是任何版本的.NET来做一些简单的报告(这可能在.NET中很容易完成) )。这太残忍了。我建议使用指定的平台,并清除与运行联合的人的任何偏差......

答案 8 :(得分:2)

如果你内心深处感到不诚实,那么你可能就是这样。

没有人喜欢不诚实的人。这对你的声誉不利。

尽力根据实际上最好的选择,而不是满足一些不道德的动机。

答案 9 :(得分:2)

很多答案都触及了这个问题,但这是基于生产应用程序支持的考虑。

我的公司有一个启动阶段,代码骗子在本周的个人偏好或风格中掀起了解决方案。不可维护性和可支持性。

但是,只要它是一致的,做出改变是可以的。如果Python将为未来铺平道路,那就去吧。不要忘记,遗留的.NET和PHP代码仍需要支持,直到生命周期结束。建立自己的平台和框架的大杂烩将为你在工作和公司带来更多的困难,当你不在身边时。

答案 10 :(得分:1)

在罗马时......像罗马人那样做。

你可能不会长期维护这段代码而不是每个人都想学习一种“边缘语言”来修正错误或增强功能。

我将一些VBA的东西迁移到Perl以便在以前的工作中进行处理,并将效率提高了几个数量级,但最终没有其他人愿意学习Perl,所以我遇到的任务比我想要的时间更长它

答案 11 :(得分:1)

关于提出的问题,我认为没有任何不道德的行为,只要:

  1. 这是一种免费语言。虽然我是一个FOSS党派的人,但这不是这个标准的重点。它需要是免费提供的(不一定是FOSS),这样它就不会给公司带来成本,因此如果您需要更换(或者如果他们想要与您竞争),其他人将有机会学习它为了你的工作)。
  2. 您正在更改语言是出于可靠的原因,而不是为了创建供应商锁定(或者,如果您更愿意将其视为“工作安全”)。除了道德规范之外,你真的不想找到一个他们讨厌你的工作,但却被你困住了,因为你是唯一能够维持你所创造的混乱的人。
  3. 在您所描述的特定情况下,我建议切换到RoR可能是更合乎道德的选择,因为如果有必要的资源,那么使用.NET将是绝对不道德的(更不用说非法)了。只支付,你的雇主太便宜节俭,为他们购买适当的许可证。

答案 12 :(得分:1)

其他海报已经提出了一些好处,但这里有一个我没见过的:将情况告知管理层让他们决定。换句话说,与你的老板谈谈并告诉他或她你所在地区目前有更多的.NET开发人员,所以如果你明天被一辆公共汽车撞到,那么找到其他人来维护你的代码会更容易;但是,有些工具可以帮助您更有效地完成工作,并且需要花钱(并告诉他们多少钱)。或者,您可以使用Python或RoR(或其他任何方式)执行此操作并使用免费工具,但据您所知,目前该地区没有多少人知道这些语言。我在这里使用了“当前”几次,因为这可能会随着时间而改变。

在进行此对话之前,最好先了解您是否可以找到您所在地区替代技术的用户组,以及它们的大小。如果有人知道您所在地区的替代方案,您也可以在列表中询问。

当然,老板可能会告诉你在没有任何工具的情况下继续使用.NET,但在这种情况下,他们决定自己动手。 (并由你自己决定是否想找一份新工作。)

答案 13 :(得分:1)

道德规范是使用最好的工具来完成工作。如果有一个工具只需20%的时间来编写代码与其他选择,并且几乎没有维护,并且易于重新考虑,那么您有责任选择该工具,假设它可以根据您的需要进行扩展。业务。

如果你做得很好,雇用未来的人并按照 HOW 的方式对他们的工作场所进行培训应该成为任何成长型企业的惯例。如果他们是合适的业务人员,他们将能够学习代码。

在您的情况下,我不确定您是否要使用Python,除非它具有本机.NET支持以允许您的.NET世界与之交互。

答案 14 :(得分:1)

我经常遇到同样的问题。巧合的是,你提到的是这两种语言:当我更喜欢使用Python(以及其他)时,.NET强迫我。可能相反,我不判断。

由于其他答案中已经提到的原因,我没有使用Python。我做了我认为对公司最好的事情。对于没有经验的Python程序员来说,使用IronPython不会使你的python代码更易于维护。

然而,我离开了公司,现在我的工作更符合我的口味。我更快乐。在这种经济形势下,你可能没有这个选择......但它会通过。做正确的事。

干杯。

答案 15 :(得分:1)

“如果我要离开公司,他们基本上没有人可以维护/加入它,除非他们留在我身边作为顾问。”

你是说没人能学Python吗?我觉得很难相信。

新技术通常由知识渊博的人员在小型项目中引入,并通过组织传播,因为小项目是成功的。

使用Python。成功的。根据您的成功做出判断。

答案 16 :(得分:1)

我曾经认为你应该总是为工作中的工作挑选合适的语言。我现在正在改变我的观点。

当其他人选择你不想学习的语言时,会出现问题。我担心的是,我可能会选择其他人不想学习的语言。仅仅因为我认为Erlang可能是某些东西的正确选择并不意味着其他人都想学习Erlang或尊重我使用Erlang的决定。

答案 17 :(得分:1)

我认为这是一个非常糟糕的主意。对你而言,这意味着如果你想要休息一天(或一周),就没有备份。对他们来说,如果你离开或休假一天,就没有其他人。这是一个众所周知的伎俩,老实说,可能是没有让你四处走动的理由。

但是,这也可能是将Python引入环境的机会。你可以教别人,并向管理层解释,虽然这是一个很好的第三语言,可以在集团的支配下使用。

答案 18 :(得分:1)

从现在和中期为公司带来的商业利益来考虑它。

如果你能够使用不同的技术更快地提供更好的东西,而且它仍然可以实现目标,那么我会去做 - 但我仍然会让其他人知道并尊重公司的最终决定。然而,如果它纯粹是为了你自己,那么我可能会更加小心。

答案 19 :(得分:1)

我同意mquander上面所说的内容,但您可能还必须准备好为什么要将这种其他语言用于您的开发经理。如果他/她同意,也许这种语言可能会在公司内得到更广泛的采用。

答案 20 :(得分:1)

这取决于。我做了一些通常只是一个bash脚本的东西,用Java代替一个地方。为什么?因为他们都是Java程序员,而且经常有实习生/合作社可能会或可能不会知道任何其他事情(甚至可能或者甚至可能不是那么棒的Java)。

其他地方虽然往往有更多有经验的程序员,但我希望他们能够毫不费力地找出另一种语言。所以,我会选择这个项目的“最佳”。

答案 21 :(得分:1)

我做到了,在我的情况下是Delphi。我觉得Delphi经常被使用,但是当我找工作的时候......我一生都看到了3个delphi的工作机会。我还看到了更多我记得的java / j2ee / php优惠。我认为这是个糟糕的主意,随着我浪费在学习高级delphi编程的时间,我可以用j2ee变得更好,从更好的公司开始,也许现在赚更多的钱。

如果他们找不到维护应用程序的人,你将永远这样做,当你退出时,他们将不得不重新编写它。我认为顾问的事情并不常用。

答案 22 :(得分:0)

除非他们明白我正在做的事情,否则我不会带来一个新的语言/框架/任何东西,如果我离开/被解雇/被公共汽车击中,他们必须找到/训练某人与之合作。

我有一些承包商的经验,因为他觉得这样。在某些情况下,它们是工作的最佳工具(在其他情况下它们不是),但在所有情况下,它们都不是必须维护代码的团队的最佳工具。在我的情况下,承包商是一个严肃的混蛋,他并没有真正对其他任何人做过蠢事,我相信WAS试图让自己更难以取代。

在您的情况下,与您的老板交谈。如果他们真的不想在.NET框架工具/库上花费所需的钱,那么从长远来看,切换到其他东西可能是他们正确的做法。

而且,作为一个在职业生涯中走进其他人已经开始的中间项目的人 - 感谢您在添加新工具之前思考。

答案 23 :(得分:0)

随着MVC框架的发布,我也有类似的道德删减。使用WebForms或切换到MVC Framework以获取所有内容。答案实际上是你必须做正确的事情,并使用公司的标准。如果你偏离标准,就会给人们带来很多问题。

想想如果你在VB6上抛弃了一个项目,你多年来一直在做什么是.Net。所以这些是我提出的两个解决方案。

  1. 使用您有趣的语言来咨询您所做的合同。确保客户知道你在做什么以及他们是否同意去做。
  2. 尝试并说服您当前的公司迁移到您正在使用的这种出色的新语言。
  3. 如果您遵循这些路线,您将学习您的语言,而不是在此过程中惹恼任何人。

答案 24 :(得分:0)

Ruby on Rails肯定不是 fringe 语言。如果公司太便宜而不能为微软的工具获得适当的许可,那么你别无选择,只能寻找替代方案。 RoR肯定是一个合理的选择,如果有助于你的职业发展,那么对你们双方来说都是双赢的!

答案 25 :(得分:0)

我曾经在“使用工作中最好的工具”学校,但我改变了主意。仅仅问“如何以最快的速度完成这项工作”是不够的。如果您认为自己是唯一需要查看某些代码的人,那么您很有可能会犯错误。将新语言引入环境的总成本比您最初想象的要高。

如果您只需要生成结果而不是程序,那么您可以使用您想要的任何内容。假设你需要一份报告,或者你需要一些文件。如果输出确实非常重要,说这是你可以选择手工完成的,你可以练习使用你想要的任何语言。

答案 26 :(得分:0)

'原型'或'一次性'代码和生产代码之间存在很大差异。对于原型设计,我使用最快的工作,但我很清楚它的状态。生产代码是在批准和支持的环境之一中编写的。

答案 27 :(得分:0)

您可以使用免费工具充分开发.NET;成本并不是避免该平台的好理由。 Ruby on Rails正在成为构建数据驱动的互联网网站的合理主流。你甚至没有告诉我们你是否正在构建那种软件。

您提供的信息实际上无法让任何人都能给您一个正确答案。

如果你问的是,以公司依赖你的方式开展工作是道德的,当然答案是否定的。如果你问在RoR中开发是否合乎道德,那么答案是“我们不知道” - 但我的意见是,如果它是适合这项工作的合适工具,那可能会很好。

不要低估别人支持你的工作或替换你的能力 - 如果你的工作做得合理,一旦解决方案到位,任何值得付出代价的程序员都应该能够很好地学习平台来维护它。我调试,迁移并支持一些PHP应用程序,例如,几乎没有学习PHP的第一件事。我将失去从头开始构建一个新的PHP应用程序,甚至永远不会尝试,但支持一个没问题。我认为你所提到的语言也是如此 - 他们已经获得了临界质量,这意味着有大量的书籍和论坛等。当然,如果用任何语言编写得非常糟糕,那么可能很难支持无论任何人的语言能力如何......

答案 28 :(得分:0)

对这种明确的情况进行了如此多的讨论......

这不取决于你,取决于他们。如果他们没有足够的技术来打电话,那么你必须真诚地为他们做出 。更少的是不诚实的,我很确定这不在你的工作描述中;)

答案 29 :(得分:0)

在私人动机的丛林中,你已经浑身湿透。这个问题的答案是,除非您为可能的决策制定商业案例,否则您的个人动机无关紧要。如果你已经这样做了,答案仍然不明确,那么肯定的是,选择你最喜欢的答案是首先做出技术决策的好处之一。

就实际问题而言,在我看来,如果技术上最合适的选择也是很少有人合作的选择,那么就会发生以下两种情况之一:a)这是一个不错的选择,以及工作的人数随着它将在接下来的18-24个月爆炸(例如Django),或b)我的分析有问题。技术可能处于边缘,因为人们采用它们的速度很慢,但这通常不是他们留在边缘的原因。

如果你发现自己在想“我不能选择技术X,这会让他们更容易取代我!”你的工作是错误的。在几乎所有实际上都没有失败的企业中,那些让自己更容易替换的IT人员往往会转向更难,更有趣,更有利可图的工作。