Answers:
许多程序员犯的错误是,他们将仅基于技术优点来争论这一点(或者只是同意或不同意)。对于管理层(以及整个业务),您必须首先争论业务案例和优点,然后是技术优点。
这超出了编程语言的选择范围,几乎遍及每个技术决策。
让我举一个例子:PC。Joel认为(正确)开发人员应该拥有一流的机器,因为开发人员的时间很昂贵。在这方面他是完全正确的。但是你怎么争论呢?简单:
示例:我每天大约进行20次代码构建。每次需要3分钟。如果我有一台快速的PC,我可以在1.5分钟内完成构建。因此,每两年增加1,000美元,我每天可以获得一个半小时,对于一个收入10万美元(至少有50%的启动成本)的程序员,这相当于每年大约10,000美元。
但另一方面,人力资源部则争论说,人力资源部决定一种尺寸适合政策和PC,因此呼叫中心工作人员的收入为2.5万美元,而程序员的收入为四倍,因此由于某种原因应该拥有同一台PC。
技术平台和语言将在决策组合中考虑很多因素:
无论哪种情况,您都需要了解原因(并且我保证会存在多种原因),并在这些方面争论是非曲直。一些程序员在这个部门中非常幼稚,似乎认为当几乎总是有许多因素在起作用时,这种决定是出于无知甚至是斗气。
根据我在公司中的样子:当经理选择一种编程语言时,他们通常会非常保守-考虑到团队目前拥有哪些编程技能(如果很容易轻松地聘请其他技能) ),无论它是否是一种完善的语言,都应尝试选择适合当前基础架构的内容,而不要花大力气使其适应现有的基础架构。当程序员选择一种编程语言时,事情往往会有所不同-他们经常喜欢面临新的挑战,并希望了解最新的热门趋势,并选择一些可以学习新知识的东西。
理想情况下,一切都取决于讨论经理和开发团队之间的利弊,并找到最适合该问题的解决方案。这通常涉及很多交谈和说服力:-)
回复较晚,但是由于尚未接受答复,我将尝试一下。我将其作为两个问题,并将尝试分别回答:
管理人员如何选择编程语言?
很大程度上取决于组织的规模和经理的经验,但通常将涉及评估当前状况以及未来的方案和要求。这通常是通过PESTLE或类似分析完成的,只是在每个类别中提供一些样本:
然后,可以使用SWOT,成本收益分析或类似方法进一步评估符合标准的一堆语言。
整个过程可能相当复杂,但是作为底线,大多数公司或项目团队将在当前状况下仍能提供所需功能的最安全选择。通常,这可能意味着需要更长久地使用当前平台。
程序员如何帮助确保为项目选择正确的编程语言
希望已经证明,一个典型的程序员通常只占决策过程总投入的1/6。通常,她或他只会对语言能力感兴趣!
嗯,影响决策的最好方法似乎是对选拔过程有更广阔的了解,与团队内部和外部结盟,就技术方面做一个很好的简介,并尽量不要只专注于语言能力。
而且,当然,当项目或开发经理(或其他负责人)看到整个评估过程带来的好处并准备考虑转换到其他项目的风险和不确定性时,就需要担任职位首先是语言。为此,需要证明:
但是,如果您问“在工作中能够使用我喜欢的语言的最佳方法是什么”,答案可能是“加入已经使用该语言的公司或创建自己的语言”。
每个平台都有好和坏的一面。.NET很酷而且功能强大,但是您几乎只能使用Windows服务器。Ruby很酷但是很慢。很难找到Haskell的开发人员。
关键是,语言不会影响项目执行的速度和代码的美观程度,也不会影响经理所关心的东西。因此,如果您想影响他们,现在就应该选择他们的偏好,并在他们的观点中找到尽可能多的好的方面。
通过分离关注点。商业应负责业务决策,技术应负责技术决策。我喜欢“接受的责任”一词。如果我要承担责任,我也要求我做出与我的问题所在相关的选择。业务给我和我的技术同事带来了业务需求,我们就如何接受交付责任提供了一种或两种选择。永远不要像“我们将用Python或C#来做”。而是
“我们在这里可以承担两种不同的责任:如果我们这样走下去,我们就可以做到这一点,并且我们能够很好地满足这些业务需求,而且要困难一些。我们也可以这样做,这使这些业务需求胜过一切。 。备选方案A要求这些资源,而备选方案B意味着我们也需要这样做,而且这...”
然后,企业进行选择,但是请注意,企业的选择基于对业务事物的影响,而不是对技术事物的影响。在技术还不准备接受技术部门责任的替代方案中,他们无法选择。
这在很大程度上取决于经理的个性:
有那些流行语。只需找出他们喜欢哪些流行词,然后在与他交谈时,便将其与您要使用的语言结合使用。
其他人只会信任自己了解的事物(例如VB 6.0)。使他们易于选择的语言(“就像使用老式VB一样,即使您在谈论Haskell,也是如此...”)
但实际上,大多数经理并不像我们的极客所想的那样愚蠢,可以对它们进行推理。重要的是要了解他们的观点:他们通常不在乎特定的技术细节,而在乎结果。因此,不要告诉他们.net或Java或Delphi或具有这种超酷功能的任何东西。告诉他们(在这里输入您的语言)是个不错的选择,因为它的功能A可以缩短这样的项目的开发时间,或者功能B 的bug可以减少,从而缩短了测试所需的时间。只要确保您的论点是正确的,不要对他说谎。
换句话说:像对待一个聪明的人一样对待他(他可能就是)。
选择编程语言通常是业务决策。客户/用户不在乎。这是简短的报价(来自http://www.ericsink.com/bos/Geeks_Rule.html):
选择编程语言主要是出于业务原因。我将大部分时间都用在我不太喜欢的语言上,因为我想使用的语言所带来的业务弊端超过了它们的技术优点。这就是游戏的本质。我可以接受这种情况(我的选择)或找到新的雇主。抱怨如何不能使用Java或Python或其他任何工作方式,这不是一个选择。
首先,编程是另一种艺术形式。一种非常合乎逻辑的艺术形式。如果您的经理热衷于他非凡的软件项目(在某种程度上来说是杰作),那么请询问该热情的经理以下内容:
多少精力和时间将它伦勃朗花费 额外的不与他最喜欢的画刷,但刷的是,经过慎重考虑后的管理团队,在递给他,400多年前他的作品之前成名。他的画或多或少值得您思考吗?
同样,如果您要告诉程序员应该使用哪种语言,请保持一致,并告诉画家应该使用哪种画笔大小!或者,或者,仅将这一选择留给需要每天(和大多数杰作)一起工作的人们!
这些是不同的概念。
进行会计核算时,您可以共享自己的结果:税收,法律,投资者等。他们需要一种工具来查看您的劳动成果,并且该工具必须众所周知。
进行编程时,可以使用所需的任何工具-只要它输出.exe
可以在Windows上运行的文件即可。在进行会计处理时,这与Quick Books可读文档完全相同。
因此,如果您开发烤面包机,则可以自由地将内部文档保留为中文,但最好提供英文手册。
还有一件事:如果贵公司的规则假定代码的结果不是产品本身,而是产品的源代码,那么可以肯定的是,他们可以决定产品的外观(通过选择所需的语言)。
他们选择什么取决于他们的目标:如果他们想要易于替换的程序员,那么他们选择Java。如果他们将其发送到另一个部门,则将是该部门的要求等。
根据我的经验,它始终取决于:
除非项目仅需要特定语言/平台/技术/框架提供的内容,否则它取决于我们已经知道和使用的内容。对于大多数公司而言,聘用新人和培训现有的程序员都花费很大。招聘时,我们始终考虑语言,并确保应聘者知道他们可能会使用的语言。
希望您有一个既是经理又是经理并且可以在这些类型的决策中代表程序员的程序员。如果不是这样,那将是一个危险的情况,如果您知道正在做出这样的决定,则应与您的经理联系。