管理者如何选择编程语言


23

管理人员可以并且经常会强加用于项目的编程语言,这对任何人来说都不是秘密。

作为我自己的程序员,我从来都无法理解这一点。

但是现在我想我做了:当乔尔·斯波斯基(Joel Spolsky)在播客上说他们应该使用QuickBooks时,我得到了一个启示,因为“世界上每个会计师都知道”。这让我感到非常类似于“选择Java,因为世界上每个程序员都知道它”。

既然我已经从另一个角度看到了相同的问题,我对会计知识了解不多,但是我确实对编程有所了解,我想知道程序员如何才能帮助确保为项目选择正确的编程语言?


永远记住,经理是一个相信9名妇女可以在一个月内分娩一个孩子的人!
7

Answers:


29

许多程序员犯的错误是,他们将仅基于技术优点来争论这一点(或者只是同意或不同意)。对于管理层(以及整个业务),您必须首先争论业务案例和优点,然后是技术优点。

这超出了编程语言的选择范围,几乎遍及每个技术决策。

让我举一个例子:PC。Joel认为(正确)开发人员应该拥有一流的机器,因为开发人员的时间很昂贵。在这方面他是完全正确的。但是你怎么争论呢?简单:

示例:我每天大约进行20次代码构建。每次需要3分钟。如果我有一台快速的PC,我可以在1.5分钟内完成构建。因此,每两年增加1,000美元,我每天可以获得一个半小时,对于一个收入10万美元(至少有50%的启动成本)的程序员,这相当于每年大约10,000美元。

但另一方面,人力资源部则争论说,人力资源部决定一种尺寸适合政策和PC,因此呼叫中心工作人员的收入为2.5万美元,而程序员的收入为四倍,因此由于某种原因应该拥有同一台PC。

技术平台和语言将在决策组合中考虑很多因素:

  • 与特定供应商的战略关系。如果您的公司是Microsoft的金牌合作伙伴(或现在称为“金牌合作伙伴”),那么祝您好运加入Java或Python。
  • IT部门争论一个特定的配置,因为PC的钱来自预算。
  • IT部门决定每个人都应该运行Windows 2000,因为他们没有人运行Linux。
  • 公司已经拥有的其他系统(例如,如果将Java用于其他所有用途,则将Java用于此用途是有意义的,即使单独使用Java也可能不是最佳选择);
  • 仅仅由于缺乏经验而对不同平台或语言的风险厌恶;
  • 对让高层管理人员争论风险比让开发人员满意更感兴趣;
  • 有些管理人员之所以做出决定,仅仅是因为他们的双手被绑住了。
  • 预算方面的原因,尽管它也可以使您受益,因为它可以使昂贵的笨拙的东西(例如PVCS,Rational生产的任何东西)拒之门外;
  • 法律部门不愿使用开源许可证;
  • 不让技术人员参与计划和项目估算;
  • 经理对特定平台的熟悉(技术人员也对此感到内but,但在两种情况下都不一定是一件坏事,因为许多工具可以使您所知道的魔鬼做得更好)。
  • 技术人员的经验。如果它们全部来自C#背景,为什么还要使用Java,Python或Ruby?
  • 许多其他原因

无论哪种情况,您都需要了解原因(并且我保证会存在多种原因),并在这些方面争论是非曲直。一些程序员在这个部门中非常幼稚,似乎认为当几乎总是有许多因素在起作用时,这种决定是出于无知甚至是斗气。


很好,很详细的答案!

1
“像PVCS一样昂贵的东西从家里出来,这是Rational生产的任何东西”。哈哈!有趣,因为它是真的;)
钻机

我的公司是Microsoft金牌合作伙伴,但我们会使用我们合理需要的任何东西。您需要介绍自己的情况并为之奋斗,但是聪明人可以实现一切
Budda

16

根据我在公司中的样子:当经理选择一种编程语言时,他们通常会非常保守-考虑到团队目前拥有哪些编程技能(如果很容易轻松地聘请其他技能) ),无论它是否是一种完善的语言,都应尝试选择适合当前基础架构的内容,而不要花大力气使其适应现有的基础架构。当程序员选择一种编程语言时,事情往往会有所不同-他们经常喜欢面临新的挑战,并希望了解最新的热门趋势,并选择一些可以学习新知识的东西。

理想情况下,一切都取决于讨论经理和开发团队之间的利弊,并找到最适合该问题的解决方案。这通常涉及很多交谈和说服力:-)


为什么要下票?

2
我不赞成投票,因为您实际上没有回答我的问题。您刚才说了一堆概论。除了最后一句话,可以将其视为答案。但这几乎没有用。

14

回复较晚,但是由于尚未接受答复,我将尝试一下。我将其作为两个问题,并将尝试分别回答:

管理人员如何选择编程语言?

很大程度上取决于组织的规模和经理的经验,但通常将涉及评估当前状况以及未来的方案和要求。这通常是通过PESTLE或类似分析完成的,只是在每个类别中提供一些样本:

  • 政治
    • “没有人因购买IBM而被解雇”-安全的选择。
    • 首席执行官听说Java很酷-炒作。
    • 首席架构师喜欢.NET-pet项目。
    • 该语言由敌对的竞争对手控制-为什么Google不依赖C#。
  • 经济
    • 许可费用。
    • 开发人员培训费用。
    • 代码库迁移成本。
  • 社会的
    • 从团队买进。
    • 内部的技能可用性(培训需求,连续性)。
    • 市场上的技能可用性。
    • 威胁开发团队中的现有现状。
    • 足够大的实践社区的可用性。
  • 技术的
    • 生产率提高。
    • 质量改善。
    • 能够与现有代码库进行互操作。
    • 遵守标准。
    • 到期。
  • 法律
    • 许可条款。
    • 技术控制(谁拥有和控制技术?未来的许可策略可能是什么?)
    • 遵守法律和法规。
  • 环境因素
    • 公司内现有的基础架构。
    • 公司现有技能。
    • 与外部合作伙伴的整合。
    • 更广泛的环境提供的技术支持水平。

然后,可以使用SWOT,成本收益分析或类似方法进一步评估符合标准的一堆语言。

整个过程可能相当复杂,但是作为底线,大多数公司或项目团队将在当前状况下仍能提供所需功能的最安全选择。通常,这可能意味着需要更长久地使用当前平台。

程序员如何帮助确保为项目选择正确的编程语言

希望已经证明,一个典型的程序员通常只占决策过程总投入的1/6。通常,她或他只会对语言能力感兴趣!

嗯,影响决策的最好方法似乎是对选拔过程有更广阔的了解,与团队内部和外部结盟,就技术方面做一个很好的简介,并尽量不要只专注于语言能力。

而且,当然,当项目或开发经理(或其他负责人)看到整个评估过程带来的好处并准备考虑转换到其他项目的风险和不确定性时,就需要担任职位首先是语言。为此,需要证明:

  1. 当前平台已不再足够。
  2. 一个新的平台所带来的好处远远超过了麻烦。

但是,如果您问“在工作中能够使用我喜欢的语言的最佳方法是什么”,答案可能是“加入已经使用该语言的公司或创建自己的语言”。


5

经理A前往避暑胜地,与经理B会面。

答:那么您在公司中使用哪种语言?B:哦,我们使用CA Visual Objects,它使无人机比COBOL生产率更高。

这就是做出决定的方式。真实故事的结尾。


那是什么公司

3

每个平台都有好和坏的一面。.NET很酷而且功能强大,但是您几乎只能使用Windows服务器。Ruby很酷但是很慢。很难找到Haskell的开发人员。

关键是,语言不会影响项目执行的速度和代码的美观程度,也不会影响经理所关心的东西。因此,如果您想影响他们,现在就应该选择他们的偏好,并在他们的观点中找到尽可能多的好的方面。


1
您提出了一些有趣的观点,但是找到Haskell开发人员是错误的。大多数在Haskell编程的人都不会在工作中这么做,但是他们想要(而且他们通常都很聪明)

1
我知道他们很聪明:)但这意味着他们不会做支持工作,因为这很无聊,或者您必须付很多钱。确实就像COBOL,您可以找到一个了解它的人,但是与其他人相比,您必须花费大量时间在寻找上并且要付出更多。

不,您不会对300多名Haskell开发人员有所了解,他们将以现在比仅在Haskell工作的薪水低得多的薪水从事他们现在从事的相同工作。
雷恩,

2

通过分离关注点。商业应负责业务决策,技术应负责技术决策。我喜欢“接受的责任”一词。如果我要承担责任,我也要求我做出与我的问题所在相关的​​选择。业务给我和我的技术同事带来了业务需求,我们就如何接受交付责任提供了一种或两种选择。永远不要像“我们将用Python或C#来做”。而是

“我们在这里可以承担两种不同的责任:如果我们这样走下去,我们就可以做到这一点,并且我们能够很好地满足这些业务需求,而且要困难一些。我们也可以这样做,这使这些业务需求胜过一切。 。备选方案A要求这些资源,而备选方案B意味着我们也需要这样做,而且这...”

然后,企业进行选择,但是请注意,企业的选择基于对业务事物的影响,而不是对技术事物的影响。在技​​术还不准备接受技术部门责任的替代方案中,他们无法选择。


很有意思。

1

成为经理。(笑)

认真地说,您只需要与相关决策者讨论此事,并提出您的论点。如果他们选择坚持一个真正的错误的决定,那么他们很可能一般能力是没有这么热,它可能是值得寻找别的事情做。


或者是您自己的沟通技巧失败了,您应该研究磨练那些技巧。

也有。

1

我认为您在谈论的内容与Joel在谈论的内容之间的区别在于,编程是一项核心能力,而会计则不是。使用Quickbooks的目的大概是因为您不是会计师,而会计师可以帮助您。但是,如果编程是您的核心能力,并且大概是您是程序员,那么游戏规则会有所不同。


2
编程通常不是经理的核心能力。

好吧,大概这是企业或部门的核心能力,其方式与Quickbooks的讨论大不相同。

我听不懂 您是在将苹果与橘子进行比较吗?

为什么要下票?我只是指出了您的逻辑错误。至于苹果和橙子,我想锅里有水壶。Joel在谈论wrt Quickbooks与管理人员选择Java有很大不同。

1

这在很大程度上取决于经理的个性:

有那些流行语。只需找出他们喜欢哪些流行词,然后在与他交谈时,便将其与您要使用的语言结合使用。

其他人只会信任自己了解的事物(例如VB 6.0)。使他们易于选择的语言(“就像使用老式VB一样,即使您在谈论Haskell,也是如此...”)

但实际上,大多数经理并不像我们的极客所想的那样愚蠢,可以对它们进行推理。重要的是要了解他们的观点:他们通常不在乎特定的技术细节,而在乎结果。因此,不要告诉他们.net或Java或Delphi或具有这种超酷功能的任何东西。告诉他们(在这里输入您的语言)是个不错的选择,因为它的功能A可以缩短这样的项目的开发时间,或者功能B 的bug可以减少,从而缩短了测试所需的时间。只要确保您的论点是正确的,不要对他说谎。

换句话说:像对待一个聪明的人一样对待他(他可能就是)。


1

想一想您要非常努力地使用的语言。确保您知道这不是适合该工作的语言,然后询问经理是否对使用另一种更好的语言提出建议。提供任何可以证明该语言对工作不利的信息,然后查看他的讲话。不会疼的 :)


有趣的一点。但是我觉得举证的责任应该放在施加语言的人身上,而不是相反。

在妖精的尾巴世界中。
雷恩

1

选择编程语言通常是业务决策。客户/用户不在乎。这是简短的报价(来自http://www.ericsink.com/bos/Geeks_Rule.html):

选择编程语言主要是出于业务原因。我将大部分时间都用在我不太喜欢的语言上,因为我想使用的语言所带来的业务弊端超过了它们的技术优点。这就是游戏的本质。我可以接受这种情况(我的选择)或找到新的雇主。抱怨如何不能使用Java或Python或其他任何工作方式,这不是一个选择。


我同意这里。但我也认为,必须指出,鉴于业务和技术这两个角色,技术将在满足业务需求的语言/框架方面具有最重要的投入。西服很少具有所需的技术知识。

1

首先,编程是另一种艺术形式。一种非常合乎逻辑的艺术形式。如果您的经理热衷于他非凡的软件项目(在某种程度上来说是杰作),那么请询问该热情的经理以下内容:

多少精力和时间将它伦勃朗花费 额外的不与他最喜欢的画刷,但刷的是,经过慎重考虑后的管理团队,在递给他,400多年前他的作品之前成名。他的画或多或少值得您思考吗?

同样,如果您要告诉程序员应该使用哪种语言,请保持一致,并告诉画家应该使用哪种画笔大小!或者,或者,仅将这一选择留给需要每天(和大多数杰作)一起工作的人们!


用蜡笔和油画颜料创作艺术将是一个更好的类比。但是,优缺点仍然在于业务方面-尽管艺术家可能更喜欢使用油漆,但该项目可能需要廉价的材料/可能需要更少的准备时间/可能为此客户/等等需要更长的使用寿命。就是说,艺术家应该对此做出选择,但他/她必须意识到说服和证明的重担在他/她的肩膀上。
Lunchmeat317

0

这些是不同的概念。

进行会计核算时,您可以共享自己的结果:税收,法律,投资者等。他们需要一种工具来查看您的劳动成果,并且该工具必须众所周知。

进行编程时,可以使用所需的任何工具-只要它输出.exe可以在Windows上运行的文件即可。在进行会计处理时,这与Quick Books可读文档完全相同。

因此,如果您开发烤面包机,则可以自由地将内部文档保留为中文,但最好提供英文手册。

还有一件事:如果贵公司的规则假定代码的结果不是产品本身,而是产品的源代码,那么可以肯定的是,他们可以决定产品的外观(通过选择所需的语言)。

他们选择什么取决于他们的目标:如果他们想要易于替换的程序员,那么他们选择Java。如果他们将其发送到另一个部门,则将是该部门的要求等。


隐喻地说,与我所说的类似的烤面包机是管理要求内部文档以西班牙语编写,因为地球上说西班牙语的人越来越多。

究竟。如果在劳动力市场上更容易找到说西班牙语的烤面包机装配工,那么文档当然应该用西班牙语。

0

根据我的经验,它始终取决于:

  1. 我们是否有使用该语言的资源?
  2. 我们是否有资源来维护语言?
  3. 如果我们没有资源来使用和维护语言,那么获得这些资源有多困难/代价多大?
  4. 语言的“未来”是什么(它会出现并使用一段时间吗?)

除非项目仅需要特定语言/平台/技术/框架提供的内容,否则它取决于我们已经知道和使用的内容。对于大多数公司而言,聘用新人和培训现有的程序员都花费很大。招聘时,我们始终考虑语言,并确保应聘者知道他们可能会使用的语言。

希望您有一个既是经理又是经理并且可以在这些类型的决策中代表程序员的程序员。如果不是这样,那将是一个危险的情况,如果您知道正在做出这样的决定,则应与您的经理联系。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.