什么是极限编程,您将如何做?

我与客户进行的多次讨论之一围绕我们今天在工作中做出的决定以及它如何影响未来工作的成本这一话题进行了盘旋。 我们一直在努力避免自己陷入困境。

常识会说这是不可能的,至少是我在编程生涯中一直不了解的常识。 不过,这是极限编程(XP)会偏离我所看到的规范的地方。 XP认为,随着时间的流逝,有可能阻止软件更改的成本上升。

这最初发布在curtismchale.ca上。 订阅《您应该读它》,就可以得到我所有的音频书评

这似乎是一个非常大胆的主张,所以让我们深入了解什么是XP,以及如何使用它更好地开发软件。

全部与软件流程有关

深入了解XP之前最大的想法是,您必须遵循该过程。 简单地将其作为一组您遵循的价值观放在一块板上是没有用的。 您必须执行使其正常工作的过程。

无论您的价值观多么善意,如果不实践您的方法,它们就毫无用处。 推荐大量设计文档的方法是在没有人阅读文档的情况下增加工作量,更不用说更新文档了。

这对您业务中的任何事情都适用。 如果您有客户跟进流程,但从未这样做,那么您可能也没有。

在XP中,有四个项目变量。

  1. 时间
  2. 范围
  3. 资源资源
  4. 质量

XP表示,大多数项目认为它们可以增加范围而不改变时间,如果没有其他方面的权衡,这是不可能的。 XP要求您与客户达成新协议。

XP提出了不同的策略。 作为团队(包括客户)就可接受的质量水平达成一致。 同意考虑时间和资源是固定的。 剩下的唯一问题是范围问题。 将交付什么? 客户将为各个功能设置优先级。 您将依次处理它们。 该软件将始终处于可发布状态。

该协议确实意味着,如果您遇到麻烦,客户必须可以不获得他们最初想要的所有功能。 当发生更改时,客户必须可以将其他东西从列表中删除以支持更改。

XP的核心价值

在项目中的四个变量之后,XP具有四个值。

1.沟通

良好的沟通可以使您轻松地总结一个项目。 错误的沟通会使它陷入困境。

消除客户与开发人员之间的沟通障碍可提高灵活性。 在业务和技术决策之间做出更明智的决策有助于您做出正确的决策。 清晰地就目标,地位和优先事项进行沟通可以使您成功。

我之前已经说过,如果您的客户必须向您发送一封电子邮件,询问关于事物在哪里的问题,那么您作为其开发人员的工作就会失败。 您应该在每个星期一和星期五向他们发送更新。 如果听起来很难,我写了一本书以帮助简化。

在交流中,客户选择哪些任务提供了最大的价值,但他们对如何完成工作没有发言权。 这是开发人员要做出的决定。

2.反馈

与沟通紧密联系的是反馈。 您必须快速迭代并获得客户的反馈。

快速反馈减少了对想法的时间和资源的投资,却几乎没有回报。

通过对项目的快速反馈,您无需构建客户不关心的东西。 您制造了最低限度的可行产品,然后将其发货。 借助从该MVP获得的反馈,您可以构建客户想要的下一个功能。

3.简单性

我说这是一个普遍接受的想法,即以后要花费更多的钱来更改项目,这是我打开这篇评论的起点。 XP的答案很简单。

看,试图构建一些理论上将在未来存在的可扩展系统是不可能的。 您还不知道哪一部分需要扩展,因为您还没有解决即将出现的问题。

今天解决今天的问题。 明天,当您遇到新问题时,您将足够了解该问题。 因此解决它。

4.勇气

最终价值将所有其他价值联系在一起。 告诉您的客户您进度落后,需要勇气,他们需要决定在截止日期之前准备好哪些功能。

沿着路径走一半需要勇气,然后因为不起作用而将代码报废。

根据我的经验,这些艰苦的讨论比以往任何时候都更加艰巨。 当我最终与客户交谈时,我从未遇到过这样的情况,不会导致我的胸部举起巨大的重量。

因此要有勇气,因为这才是出色的企业主的原因。

你找不到时间或找不到时间

您没有时间机器,也找不到像在沙发上找零一样的时间。 您每天有一定数量的生产时间,必须使用它们。 你不能赚更多。

这是我们解决客户截止日期的地方。

可以按照自己的正常速度工作,而不是忙于完成不可能的截止日期。 您可以做的工作量是恒定的-唯一真正的问题是要做哪些工作。

不必急于在软件开发闻名的死亡大游行中按时完成任务,而应按常规进行工作。 漫长的职业生涯以休息为特征,而不是以死亡为最后期限。 如果您“找到”那些时间,则可以确保下次出现问题时,客户会期望得到同样的结果。

死亡行军永远不会结束。

这就结束了极限编程的第一部分。 从这里开始,我们将更具体地介绍您需要做什么,以便从编码实践开始使XP进入您的团队。

极限编程的4种编码实践

1.简单地编码和设计

这可以追溯到我们已经引用的简单性值。 明天解决明天的问题。

几乎没有人能预料到将来的功能足以正确地设计和实现它。 当客户可以描述新功能时,您将足够了解该功能。

2.毫不留情地重构

重构应该一直进行。 再次触摸一段代码时,请查看是否可以在不破坏任何内容的情况下使其变得更好。

通过始终保持重构,您可以在以后停止繁重的任务。 您还可以避免必须将整个过程都扔掉的想法,因为这太糟糕了。

3.制定编码标准

我的一位朋友最讨厌的承诺是“固定空白”。 但是,如果没有编码标准,您将得到很多,它们可以来回切换。

花些时间为您的项目构建它们,然后再坚持下去。 它将减少每个人的挫败感。

4.制定通用词汇

在编码标准之上,我们需要确保我们都表示相同的意思。 当我们说“客户”时,是指为软件付费的人还是付费软件的人?

为确保您不会在程序中犯错误并确保会议有效进行,您需要掌握集中的词汇表。

极限编程的4种开发人员实践

在基于代码的标准之后,我们将深入研究采用XP的开发人员的标准。

1.采用测试驱动开发

要成为受测试驱动的开发工作室,只有在具有完整的测试覆盖范围时,功能才能完成。 遇到错误时,首先编写一个测试以暴露该错误,然后再对其进行修复。

首先编写测试有助于确保将来的更新不会再次出现该错误,因为您现在的测试将失败。

2.配对编程

配对编程意味着您有两个程序员来完成一项任务。 这有助于实施编码标准,因为当有人抬头时,您不太可能采取捷径。

一对应形成一个任务,然后为下一个任务进行重组。 这也有助于在组织中传播知识。

3.集体代码所有权

不,您不拥有自己编写的代码。 您将不是唯一从事特定集成工作的人。 每个人都应有权使用该代码。 这可以阻止孤岛,并防止Sally被公交车撞到,然后再也没人可以触摸她的代码,因为那是一堆等待坠落的木棍。

4.持续整合

不要执行整体更新。 一两个星期完成一组任务,然后部署它们。 出现的任何问题将更容易归因于某些更改。

现在,许多公司每天都会部署多次。 每当我对网站进行任何更改时,我都会进行部署。 我的大多数客户站点也都这样做,一天要进行多次部署。

极限编程的4种业务实践

建立成功的软件项目不仅仅需要编码。 除非它能够满足客户的实际需求,否则,一个美丽,优雅且经过全面测试的项目是没有用的。

1.将客户添加到团队中

如果这是会议室中所有的开发人员,那么您将要讨论代码和许多讨厌的东西。 您需要会议室中的客户来帮助使每个人都专注于教学功能带来的价值。

一旦完成了一段时间,工作就会变小,因为开发人员已经了解了代码背后的业务问题。 他们将做出更好的价值决策。

2.玩计划游戏

规划游戏旨在帮助最大化每个功能所带来的价值。 客户写下故事。 然后,开发人员估计每个故事将花费多长时间。

利用这些信息,客户可以决定哪些故事为他们的业务带来最大的价值。 他们选择要做什么。

3.定期发布

类似于持续集成,定期发布意味着您可以向客户展示很多作品。 我尝试每投入3到6个小时就会有一些新事物向客户展示。

4.以可持续的速度工作

每个人都有自然的生产力水平。 视人而异,但每个人的身体,精神和创造力都有限。 每一小时的工作消耗能量。

我们已经在第一部分中讨论了这一点,因此我将不做详细介绍。 请记住,通宵达旦是失败的标志。

列出了12种实践,如果您采用极限编程方法,我们将介绍发生的不同事件。

XP中的迭代计划

通常,迭代将持续1-4周。 这意味着您的故事最多只需要几天的时间。 保持故事小巧意味着您正在练习简单。

尽管您估计的小时数不会出现中断和编程效果达到顶峰的情况,但这几乎永远不会发生。 快速迭代意味着您可以看到一个周期中完成了多少个实际小时。 有了这些信息,您就可以为下一个周期计划更多或更少的工作。

通常,您需要花费一些时间来反复确定自己可以工作的速度。

在计划迭代时,请确保首先执行风险最大的任务。 摆脱它们,然后继续进行您更确定的事情。 这就像布莱恩·特雷西(Brian Tracy)的想法一样,如果您早晨吃第一只丑陋的青蛙,那么剩下的日子就很容易。

XP还要求每天站起来。 当人们对站立期间出现的问题感兴趣时,这有助于形成和改革对。 这也使每个人都知道发生了什么事。

我们已经讨论过一些事情,例如故事,但是我们还没有确切定义它们是什么,因此让我们看一下极限编程的工件。

故事卡

故事卡回答了该怎么办? 每张卡都以故事形式描述了软件项目的期望功能-从客户角度讲一两个句子。

故事只是一个功能。 如果您在故事中使用“和”,则可能是两项而不是一项。 客户写故事卡。

任务卡

这些是由开发人员为开发人员编写的,回答如何做。 记住,客户在如何做某事上没有发言权。

牛棚

在XP中,Bullpen是如此受欢迎的可怕开放式办公室之一。 尽管越来越多的研究表明,开放式办公室分散了他们的注意力,而不是集中精力。

这些是极限编程中唯一的工件,可以说服您只需要故事和任务卡。 您可以每天站起来,然后成对退到安静的办公室。 您将避免别人分心,并且仍然结对。

XP要求定期进行配对改革,这将有助于保持高水平的协作而不会分散他们的注意力。

极限编程的四个角色

我们已经多次讨论过客户和开发人员的角色,因此在讨论成功项目所需的角色时,我们只会看看XP引入的两个新的补充角色。

追踪器

XP中的跟踪器会密切注意时间表。 确保团队了解他们的前进/后退有多远,并将其传达给客户,以便可以对正在进行的工作做出价值判断,这是一项工作。

教练

教练是一名XP专家,他帮助保持团队在XPness方面的高标准。 我敢肯定,这是一个字……!

主要是自我重复

虽然极限编程已经重复了一些,但第六部分几乎完全重复了。 已兑换,因为它太短了。

第六部分提醒我们解决今天的问题。

最简单的方法,而不仅仅是最快的方法。

“简单”不同于“最快编写”,也不同于“想到的第一个想法”。很难找到最简单的解决方案。

最后,它说XP人员需要编写重复任务的脚本,以便他们不会浪费时间一遍又一遍。

采用极限编程需要什么?

最后一部分是有关在企业中采用XP的具体细节。

首先,您需要一个团队合作。 如果您是自己工作,则无法配对程序,因为没有人可以配对。

确实,这告诉您您已经需要我们已经在XP的12种实践中阅读的所有内容。 本书明确说明了您所需要的东西是很好的,但是如果您已经很好地阅读了本书,那么您几乎不会对它们视而不见。

您应该阅读极限编程吗?

简短的答案是肯定的,但是由于重复率很高,因此随着书中内容的进一步发展,请做好进一步浏览的准备。 即使您没有团队并且做不到一部分,了解XP流程也会对您有所帮助。

仅采用测试驱动开发将帮助您编写更好的代码。 您还将编写不太容易出现随机错误的代码,并且知道更改何时会破坏其他已完成的工作。

在亚马逊上购买极限编程

摄影:kwl