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

Process 如何阻止精益编程变成牛仔编码?,process,agile,methodology,kanban,Process,Agile,Methodology,Kanban,我的团队一直在逐步采用越来越多的轻量级方法,从Scrum转向精益/看板,在那里,流程越来越不正式。在某个时候,我们将回到牛仔编码;事实上,我担心我们可能已经在边界线上了 一个非常轻量级的精益和敏捷流程与无政府状态之间的界限在哪里?我们怎么知道我们什么时候越过了界限?我们怎样才能防止自己越界呢 这个问题也可以用“在精益消除浪费的过程中,哪些流程不能被安全地消除”?当团队中只有一个人知道或管理代码的某些内容时,你会看到一个红色发光的大“沙龙”标志,你基本上是在推开大门。作为这条路线的一部分,我想到了

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

一个非常轻量级的精益和敏捷流程与无政府状态之间的界限在哪里?我们怎么知道我们什么时候越过了界限?我们怎样才能防止自己越界呢


这个问题也可以用“在精益消除浪费的过程中,哪些流程不能被安全地消除”?

当团队中只有一个人知道或管理代码的某些内容时,你会看到一个红色发光的大“沙龙”标志,你基本上是在推开大门。

作为这条路线的一部分,我想到了什么时候完成任务/故事/工作单元的问题。如果您需要测试,并且一双眼睛已经检查了一些东西,这可能有助于防止流氓开发人员想成为牛仔的情况。类似地,代码是如何进入生产的?如果团队中的任何人能够突发奇想推送代码,那将是我心中的一个警告信号

我要注意的其他几个警告标志是:

  • 团队是否有编码标准以及维护该标准的承诺
  • 是否有一个人在进行“重构”时所做的大量代码更改没有人认为值得

我想,如果您对代码进行某种形式的检查,那么在这方面就不会出太大的问题。如果没有人知道其他程序员在做什么以及他们是如何做的,那么您可能已经越过了这条线

可能没有明确的警告标志清单,如果你看到这些标志,就会知道你身处牛仔领地。就我个人而言,如果人们发布未经测试的代码,开发不明确理解的功能,或者匆忙工作或忽视警告标志,我会感到担心

最好用你自己的判断。希望,既然你问了这个问题,你就是当警长的合适人选

  • 永远不要忘记您的自动化单元测试
  • 永远不要忘记你的功能测试
  • 永远不要忘记你的考试

  • (我有罪)

    雇佣(或代理)一名警长,并将代码圈起来,这样它不仅会被执行,而且会被整个团队看到。

    大概你担心牛仔编码的影响:

    • 无要求
    • 没有设计
    • 不测试
    • 没有来自用户的反馈
    • 没有时间表
    • 无法维护
    • 母线系数
    只要你有一个计划/机制/过程来避免这些不良影响,那么你就没事;对吧?

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

    敏捷/精益/Scrum“过程”的讽刺之处在于,不太正式的过程不会导致牛仔式的编程


    虽然这些方法论倾向于“人胜于过程”,但过程并没有被完全抛弃;仍然需要管理。一天结束时,你仍然对你的客户和最后期限有承诺。这些承诺应该约束奶牛。

    牛仔编码有什么问题?如果您开始看到质量差,代码交付时间越来越长,无法满足最终用户的期望(或者不管是谁付费),那么是时候了(我是一位PM,我这么说)。当你有一个好的/可靠的编程团队时,就不需要正式的过程——它通常是内在化的——好的程序员自然遵循好的形式/过程——我认为很多过程都是为表现较差的人准备的,这在很多情况下会对表现良好/优秀的人产生负面影响。一个好的项目经理需要根据具体情况平衡流程……领导/遵循/让路的方法类型

    这就是ScrumMaster/Lean/Agile教练的价值所在。无论是谁在您的团队中担任该角色,都应该能够发现团队的自律性何时下降,并提醒团队他们对彼此的代码质量所做的承诺

    你可以做的另一件事是调整容器。将代码评审添加到看板上,然后对其进行限制,以确保其完成。更好的是,要求所有代码在几周内成对编写,这样好的习惯就可以重新养成,并且没有人可以声称对代码的各个部分拥有所有权

    最后,考虑一下你离开Scrum的正式过程可能有点过早。Scrum的规则是教你一种完全不同的思维和工作方式。如果精益和敏捷的价值观还没有在你的团队中根深蒂固,那么很容易回到旧习惯。在这里,严格执行Scrum规则可以帮助您,直到您的团队做好准备

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

    “哪些流程不能安全运行 在精益的驱动力中被淘汰 消除浪费“

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


    当您抛弃了没有价值的管理过程时,您需要包括更多的技术实践,比如极限编程中的实践。我谈到过的大多数敏捷教练都把测试驱动的开发、配对编程和持续集成视为敏捷使用的一种方式。有了这些技术,“牛仔编程”就很难逃脱惩罚。如果我担心代码失控,我也会加入一些代码审查。

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

    敏捷的“自组织”经常被滥用,以至于在开发团队运作时,这个术语几乎毫无意义