7

我刚刚和我的一位员工讨论了部门编程语言标准。他认为编程语言的选择应该与项目团队一起驻留。我觉得管理层应该对使用什么语言做出全面的决定。如果考虑到团队的愿望,两种语言是否符合项目标准?我很想听听大家对此的体验。编程语言的选择应该是团队决策还是管理决策?

+0

我投票结束这个问题作为题外话,因为它不是关于编程。 – 2017-10-23 08:18:08

+1

这个问题是脱离主题,因为它不在本网站的范围内,如[我可以在这里询问什么主题?](// stackoverflow.com/help/on-topic)中所定义的。另请参阅:[什么类型的我应该避免提问?](// stackoverflow。com/help/dont-ask)您可以在[另一个Stack Exchange站点](// stackexchange.com/sites#name)上询问,例如[pm.se]或[softwareengineering.se]。请务必阅读帮助中心中针对您打算发布问题的任何网站的主题页。 – Makyen 2017-11-01 23:48:29

回答

10

如果他们说“我们想用这种语言”,我认为团队士气会遭受相当可怕的折磨。管理层说“不,你必须改用这种语言。”

它确实需要一个联合决定,每个人都需要支持他们的推理。

+1

这取决于情况。如果我的团队想要使用Java和WebSphere Portal Server,但我们是微软合作伙伴,我会说“不”。也许是一个极端的例子,但是有一些有效的管理理由是没有听取团队的意见。 – JasonS 2008-09-19 00:49:35

+0

这可能是事实,但它仍然会让你的团队失望,你会冒险让真正优秀的人走路。 – 2008-09-19 01:05:39

5

是的。 两组都应该有输入。 许多不同的方面也需要被优先考虑,尽管这可能是一个重要的方面。工作市场(雇用新人工作的能力),语言支持,工具等。

0

你必须考虑到团队,他们是那些会成功的人。如果他们不会/不能用这种语言工作,那么它会让项目变得非常困难。

显然管理有最后的发言权,这是管理的目的,但他们必须考虑团队的偏好/建议。我认为他们必须有一个真的很好的理由不选择团队建议的语言

0

如果你的程序员比Java更优于Java,那么使用Java是有意义的,如果其中任何一个将工作。与在该级别的任何决定一样,管理层可能有理由选择其中一个。他们应该听取团队的意见,但最终的决定应该是他们的。

0

我觉得开发者确实应该在所选语言中有发言权。总的来说,管理者似乎有一种习惯用“流行语”去做。 (好)程序员希望知道最好的工作语言,这是基于管理层可能缺乏的多年经验的一种观点。

22

请记住,管理层在编程团队继续前进时会保留代码,并且他们还需要聘请新的编码人员以在将来进行维护。所以,如果团队想要选择erlang或haskell,那么管理层有责任让公司拒绝。 (对不起,选择erlang和haskell开发者,但并不是你们中的很多人)。

一般而言,这就是问题所在 - 团队希望以某种方式使用某些有益于他们的事物,但重点应放在公司代码的未来,并由公司支付(即您的工资)。他们需要确保将来可以支持。

他们也会为你的培训付出代价,所以它的管理很重要。

团队可以提出建议并尝试影响决策,我相信除了最糟糕的公司之外,所有公司都会认真听取团队的意见,但管理层最终会做出决定。

2

当然,团队的投入很重要。如果您对应用程序的主要架构作出决定,并且团队认为他们没有参与其中,那么您将面临道德问题。这个决定最终应由管理层(假设管理层是技术性的)和主要建筑师和管理层做出。

但是选择语言时要记住的一点是,当团队对您的选择更加熟悉和满意时,您的成功率会更高。如果你听他们说什么,然后以具体的商业和技术理由来找他们,为什么你没有选择他们,那么至少他们会听到他们听到的谎言,并且是这个过程的一部分。

0

与生活中的大多数事情一样,必须在个人(每个团队成员)或组织(应该成为管理者的关注点)的好/乐之间达成平衡。

1

我在工作场所,管理层的经验与技术团队进行了讨论,技术团队就编程语言提出了我们熟悉和最好的工作方面的建议。然后管理层决定部门使用的编程语言。 它应该双向工作,因为技术团队必须能够熟练地使用编程语言(以便能够按计划交付),并且对于管理层,他们可以针对业务中的中长期计划,资源管理和培训。

0

球队 - 毫无疑问,

0

一个好的项目经理将让他的资深工程师做出这个决定,做他的工作:管理项目,即从“上位 - 管理 - 屏蔽开发团队BS”。一位优秀的项目经理还需要他的高级工程师详细论证为什么他们使用特定的编程语言(如果语言的选择非常重要)。如果他对理由不满意,我认为将他们的开发团队引导到每个人都可以生活和工作的方向是他/她的工作。在开发团队中强制使用一种语言?不是一个好主意。该项目将注定要失败。

3

在我看来,这很大程度上取决于情况。

当然,你应该考虑他们的愿望,但要考虑的一件大事就是团队最具生产力的语言是什么。另外一个有时看不到的语言是谁将维护项目长远来看,他们的能力是什么?

最后一个对我来说是一个很大的问题,一个程序员往往会在一些奇怪的方向上使用一些边缘案例技术,主要是因为他/她想要“尝试”或者因为它是新的和热门的。在这些情况下,可维护性往往被人遗忘,一旦程序员不在了,而其他人不得不去维护项目,那么可维护性往往会被大大地遗忘。

另一方面,如果您的团队对此感到非常强烈,是否值得引起分歧?

所以,在一天结束时,这取决于你的情况以及它是什么类型的项目。

3

我认为这两种方法都存在危险。程序员可能倾向于使用酷酷且有趣的即将到来的技术,管理层可能会使用大量销售或商业化的技术(但不受反微软开发团队的欢迎))。

需要有人担任架构师角色,可以与两个团队联系,并根据业务目标以及开发人员的关注做出客观决策。这个人需要了解系统的总体目标,衡量客户所需的基础设施,稳健性和技术支持。等等......当然这取决于公司/项目的规模对这些决策的影响。

0

同意其他海报,它应该是一个联合决定。但是 - 通常管理层必须从长远角度考虑,而不仅仅是项目团队,例如正在进行的维护工作。所以软件的使用寿命可能是一个因素。如果球队选择了一些不是主流的东西,他们总是会在他们手中争斗。

此外,最后的说法通常属于客户。如果项目是内部的,那么客户可能只是本地管理/技术。对于其他客户,团队需要一些非常诱人的理由来推翻他们的愿望。

4

真正的问题是什么是选择了另一种语言的好处:

  • 功能:什么能得到这份工作 无论是现在还是做得比较好的,并在未来 ?这项技术 决定证明这个项目的未来坚实的决定 和 我是否甚至在乎(当然从一个 管理职位)?

  • 费用:我需要为此 技术选择购买额外的 硬件或软件吗?我想成为 卡在那个硬件/软件? 开发人员是否精通 建议的技术或 我需要雇佣新鲜血液?

  • 时间:需要多少时间才能使用 这项技术?我要去 不得不培训人们使用这个?

问题的实质是管理层应该提出这些问题,发展应该成为他们的探讨者。

0

对不起 - 但在其他工程分支中,这甚至会成为一个问题? 波音的设计师决定使用火箭发动机代替涡扇发动机会更酷?

6

这实际上是一个变相的“信任”问题。

当管理层信任时,选择是毫不费力的(让专家技术人员决定)。

我建议任何团队都要审视潜在的信任问题,而不是仅仅关注语言问题。

专注于根本原因,结果/症状会自行解决。

3

您的首要问题应该是该语言是否能胜任这项工作。马克吐温说:“对于一个用锤子的男人来说,一切都看起来像钉子。”所以,仅仅因为团队熟悉一种语言,并不意味着它是最好的工具。另一方面,熟悉语言和领域专家的开发人员使用自己的工具可以提高生产力。

第二个问题是开发人员的可用性。当团队继续前进时,谁还会支持它?雇用或重新培训一种晦涩的语言可能代价高昂。该语言也可能是新的,开发者基础可能无法实现。

第三个问题是该工具的可用性/稳定性。每次语言改变时你都必须不断重写(我正在考虑VB/.Net)。另外,谁在支持它?如果供应商放弃它,该语言会发生什么?

那么简短的答案是,如果团队有偏好,他们应该为他们的选择提出强有力的论据;这足以说服老板说推销员的回扣不值得花钱。试着理解管理层的推理,如果你不能反驳它,你可以接受这个决定。

1

项目语言的选择应包括团队偏好,而不是覆盖项目及其环境的正确选择。

编程团队应该比管理团队拥有更多的短名单上的语言经验,因为这是他们聘用的,并且应该在技术上更好地判断哪些技术更适合他们使用。

只有当管理团队的选择至少具备资质和经验时,他们才会试图影响团队的合作选择,除非选择对技术业务有非商业影响,并且应该考虑这些影响。

良好的管理让我们这是员工做他们聘请他们做的事情,并在他们可以的地方进行设计,所以恕我直言,选择应该委派给编程团队。

一个快乐的编程团队将会提高生产力,最终取得更好的结果,如果他们在选择时遇到困难,不会抱怨。

管理层应该更关心在预算范围内按时完成最终项目,并取得积极成果,然后使用哪些技术,除非这些选择具有需要解决的特定业务影响。

编程团队成员和管理团队成员都在同一个团队中,应该考虑每个人的需求,包括编程团队成员最舒适的使用和思考哪些技术最适合每个项目,恕我直言,这应该是一个首要考虑因素仅仅是业务需求或事实技术考虑。

只是为了证明有效的商业理由不支持编程团队的选择,可能是因为技术不够主流,无法让团队成员以合理的成本从合理规模的池或简单接口转换为当前或计划资源。

2

最终,它必须是管理层的选择,因为他们承担程序员离开后的后果负担,并且代表公司在选择中的利益。语言选择不仅要考虑当前的编程团队的能力/技能集,还要考虑所有未来的成员和任何支持人员的可销售技能。如果这意味着你找不到合格的人来支持它,你不想选择太模糊的语言。此外,如果语言接近流行/支持生活的结束,那么它就有可能过早地被重写,而不是被期望。

我做了一个广泛的假设,即语言选择类型的可维护性,能力和类型没有根本不同(即ML与C++)。所有这些说法,如果牢记这些因素,并且语言选择在平等的基础上,那么使用团队的语言选择对于士气是最好的,并且会导致更好的产品而不影响长期长期的应用前景。

0

考虑语言。如果它是一个易于编程的编程位置(也就是说,如果您可以在一周内雇用某人来填补其中一位程序员的工作 - 他们是否应该离开),那么请遵循团队的建议。如果你给他们这样的话,你不会相信他们会做多少工作。否则,您可能需要填写多个职位。不要赌注糟糕的经济,让软件开发人员留在他们的座位上。这实际上是一个完美的时间去逛逛。保持他们的快乐,但要确保语言的选择不是一些晦涩难懂的语言。

0

我一定会咨询当时正在开发的团队。给他们设计文档并获得他们的反馈。这至少让他们觉得自己的决定很重要。

管理人员需要考虑其他事情,例如,所选语言的培训人员的成本,购买IDE的成本(如果需要),初始开发完成后的代码库维护成本。

在经理做出明智决定之后,开发人员应该感觉他们能够问为什么做出特定决定。将决定留给管理层,但是要提高决策的透明度。

1

这个问题有很多。最后,为工作付费的人做出选择。但是:

  • 除非管理层比他们雇用的人更聪明,他们应该考虑他们的意见。管理层通常不会向编码人员解释,与每种语言选择相关的费用可能会使其他选择更加令人满意。当他们认为他们的建议被忽略时,这会在编码员身上滋生怨恨。

  • 有相当数量的人有严重缺陷的判断力。他们只知道一种语言,所以他们只推荐一种语言。管理层可能已经做出了决定,并会忽视员工的良好建议。编码器或管理人员可能是过度的技术人员,即使他们不符合项目的最佳利益,他们也会接受技术解决方案。他们也可能有强烈的意见,情绪成熟度不足以让其他人不同意。

  • 员工也可能故意提出不符合项目所有者最佳利益的事情,因为他们认为这符合他们自己的最佳利益。

大多数情况下,我认为这些选择是出于情感原因而不是理性选择。

0

有趣的是,编程语言的选择对于管理来说应该是一个如此重要的问题,而依赖于精心制作的开源库或框架通常会在没有多少考虑的情况下完成。

从历史上看,这里有一些逻辑,因为改变编程语言意味着改变平台,但是现在编程语言标准化运行在CLR或JVM平台上,共享库和部署环境,多样化成本使用不同的语言可能会比取决于复杂框架的语言少。例如,如果您的应用程序需要规则引擎,那么使用JVM版本的prolog可能会更好,而不是依赖于某些模糊的Java规则引擎API。