如何阻止精益编程成为牛仔编码?

时间:2009-07-23 21:31:48

标签: process agile methodology kanban

我的团队一直在逐步采用越来越轻量级的方法,从Scrum转向精益/看板,那里的流程越来越少。在某些时候,我们将回到牛仔编码;事实上,我担心我们可能已经处于边界线上了。

在轻量级精益和敏捷流程与无政府状态之间可以划分界限?我们怎么知道什么时候越过这条线?我们怎样才能阻止自己越界?

这个问题也可能被称为“精益驱动消除浪费的哪些过程无法安全消除”?

14 个答案:

答案 0 :(得分:24)

当你的小组中只有一个人知道或管理代码的某些事情时,你就会看到一个漂亮的红色发光的“Saloon”标志,而你基本上是在推动大门。

答案 1 :(得分:14)

据推测,你担心牛仔编码的效果

  • 无要求
  • 没有设计
  • 没有测试
  • 没有用户反馈
  • 没有时间表
  • 难以维护
  • 公交系数
  • ...

只要你有一个计划/机制/过程来避免这些不良影响,那么你就好了;正确?

答案 2 :(得分:4)

作为该行的一部分,人们会想到何时完成任务/故事/工作单元的问题。如果你需要测试,并且一双眼睛已经看了一些东西,这可能有助于防止想成为牛仔的流氓开发者的情况。同样,代码如何投入生产?如果团队中的任何人都可以随心所欲地推送代码,那将是我心中的警告信号。

我注意到的其他一些警告信号是:

  • 团队是否有编码标准并承诺维持该标准?
  • 是否有一大堆代码更改来自一个人进行“重构”而没有其他人认为值得的?

答案 3 :(得分:3)

我想如果你保留某种代码审查,那么这方面就不会出错。如果没有人知道其他程序员在做什么以及他们是如何做的,那么你可能已经越过了这条线。

答案 4 :(得分:2)

可能没有明确的警告标志清单,如果你看到你告诉你你在牛仔领域。就个人而言,如果人们发布未经测试的代码,开发未明确理解的功能,或者无论如何急于工作或忽略警告标志,我都会感到担忧。

最好用自己的判断。希望,因为你问的问题是你是治安官的合适人选。

答案 5 :(得分:2)

牛仔编码是流氓编码。允许流氓行为的唯一因素是权威机构缺乏监督。

敏捷的“自组织”经常被滥用到使得这个词大部分毫无意义的地步,因为开发团队机会性地将其重新解释为“自我决定”。

精益的组织管理方法可能与我们习惯的方式有很大的不同 - 甚至来自敏捷团队。正是这个组织和方向问题及其组织机制使这一切变得与众不同。

在软件中采用精益产品开发仍然很年轻,不幸的是,受到看板分心的影响。但这是可以预期的 - 方法中最可外化的方面通常是首先被认可和采用的方面,而这些通常是最机械的方面。看板是精益的公然机械部分。但这只是其中的一部分。

精益是一种组织变革,远远超过敏捷。如果你没有改变董事在组织中的角色,那么你可能最终只能访问精益的最重要的物质和机械方面,并且可能以最天真的方式。

为了让任何组织中的任何人都不会流氓,他们需要被指示去实现期望。不过,导演在精益组织中的角色不仅仅是一个欺负者。精益组织(开发团队等)的董事也是一名技术工人,能够教授他人必要的技能,以便更加熟练地履行他们承担的责任。

无论您采取何种具体流程(代码审查,配对,激励措施等),都取决于您在恰好考虑这些因素的特定时刻特定于您的组织的太多因素。努力的导演应该了解如何争取整个团队的集体脑力,找到良好的解决方案或探索,实验和学习的途径,并做出最好的决定 - 即使它偶尔意味着与集体相矛盾(特别是如果集体在精益方面很年轻。)

除非你的组织完全分散了精益的知识分子主义(例如看板)这样的弱势导演问题。如果你让人们变得流氓,你就没有方法论问题,你就会遇到组织问题。如果你遇到了组织问题,你就不可避免地遇到了董事职位问题,以及非权利性使用权力的问题。

答案 6 :(得分:1)

  1. 永远不要忘记自动单元测试。
  2. 永远不要忘记您的功能测试。
  3. 永远不要忘记你的考试。
  4. (我很内疚)

答案 7 :(得分:1)

  

正式过程越来越少。在某些时候,我们将回到牛仔编码......

Agile / Lean / Scrum“流程”的讽刺之处在于,不那么正式的流程不会导致牛仔编程。

虽然这些方法 更喜欢 “人们过程”,但过程并未完全放弃;管理仍然是必需的。在一天结束时,您仍然对客户和截止日期做出承诺。这些承诺应该控制在奶牛身上。

答案 8 :(得分:1)

  

“什么过程不能安全   在精益的驱动下消失了   消除浪费“?

这是一个非常普遍的问题,很难准确回答。

当您抛弃不产生价值的管理流程时,您需要包含更多技术实践,例如在极限编程中找到的技术实践。我所谈到的大多数敏捷教练都认为测试驱动开发,结对编程和持续集成在他们使用敏捷采用时是一个给定的。使用这些技术摆脱“牛仔编程”是非常困难的。如果我担心代码失控,我也会抛出一些代码评论。

答案 9 :(得分:0)

聘请(或代理)治安官,并将代码保留下来,以便它不会被提交,而是被整个团队看待。

答案 10 :(得分:0)

这里是ScrumMaster / Lean / Agile教练的价值所在。在你的团队中填补该角色的人应该能够发现团队的自律何时滑落,并提醒团队他们对每个团队的承诺。关于代码质量的其他内容。

您可以做的另一件事是调整容器。将代码评论添加到您的看板,然后对其进行限制以确保完成。更好的是,要求所有代码成对写入几周,以便改善良好的习惯,并且没有人可以对代码的部分声明所有权。

最后,考虑一下,或许你摆脱Scrum的正式过程有点为时过早。 Scrum的规则是教你一种完全不同的思考和工作方式。如果精益和敏捷的价值观尚未在你的团队中根深蒂固,那么很容易回到原来的习惯中。这是严格执行Scrum规则可以帮助您直到团队准备就绪的地方。

请记住,看板是一种工具。如果您没有始终如一地将精益和敏捷原则应用于其使用,您将无法获得全部收益。

答案 11 :(得分:0)

精益和敏捷都涉及在特定背景下最大限度地减少浪费:提供价值。

如果您停止使用可帮助您有效生成价值的流程,那么您将产生更少的价值或减少产生价值的速度。

由于精益和敏捷技术都涉及衡量你在价值生产方面取得的进展,你应该能够分辨出你何时越过界限并消除有用的做法。

如果您没有使用速度或周期时间来衡量您的价值交付,那么您已经越过了这条线!

答案 12 :(得分:-1)

牛仔编码出了什么问题?如果您开始看到质量差,代码交付时间越来越长,无法满足最终用户的期望(或者无论是谁付钱),那么它的时间(我是PM说这个)。当你有一个优秀/可靠的编程团队时,不需要正式的流程 - 它通常是内化的 - 优秀的程序员自然地遵循良好的形式/流程 - 我认为很多流程适用于那些表现较差的人许多案例对优秀/优秀表现者产生负面影响。一个好的项目经理需要在特定情况下平衡流程......领导/跟随/走出路的方法

答案 13 :(得分:-1)

也许与客户打交道,所以你不要在BAU预算下写一个理论体系,而这个理念并不是企业真正想要的?和你的经理谈谈。