极限编程

发布于 2024-07-05 12:35:24 字数 1448 浏览 9 评论 0原文

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

朕就是辣么酷 2024-07-12 12:35:28

除了小版本之外,我们已经完成了所有工作,效果非常棒。 我无法想象以任何其他方式工作。 根据我的经验,我最看重的原则是:

  • 持续集成(使用可靠的测试套件)。
  • 集体代码所有权。
  • TDD
  • 团队授权和决策。
  • 编码标准。
  • 重构。
  • 可持续的步伐。

其余的也很好,但我发现只要我们有 TDD、集体所有权和重构,我就可以在没有结对的情况下生活。

We've done everything except small releases and it's been great. I can't imagine working any other way. From my experience, the tenets I value most are:

  • Continuous integration (with a solid test suite).
  • Collective code ownership.
  • TDD
  • Team empowerment and decision making.
  • Coding standards.
  • Refactoring.
  • Sustainable pace.

The rest are very nice to have too, but I've found that I can live w/o pairing so long as we have TDD, collective ownership, and refactoring.

水晶透心 2024-07-12 12:35:28
  • 结对编程[5]

在这方面很难说服管理层。 但我发现,当工程师陷入困境或者我们的工程师对一项技术或工作不熟悉时,这是可行的。

  • 规划游戏

是的。

  • 测试驱动开发

易于销售给管理层。 然而,一些管理的困难部分是增加更多的时间。 许多经理相信极限和敏捷编程可以节省他们的时间。 他们不会节省时间来给你送东西。 事实上,测试不断的需求收集会增加工作量。 它的作用是更快地为客户提供他们想要的东西。

  • 整个团队(被授权交付)

当然,这对 Xtreme 来说是一个令人惊奇的方面。

  • 持续集成

在每次迭代(冲刺)结束时都会发生完全集成。 日常完全整合不会发生。

  • 重构或设计改进

您的第一次努力很少是最好的。 所以,是的,我发现 Xtreme 不断产生越来越好的解决方案。

  • 我发现,考虑到基础设施和资源,小版本

可以将建议的迭代时间延长 1 到 2 周。 这很大程度上取决于您要部署到的位置。 如果您的系统正在部署到生产环境,正式的系统和压力测试可能会增加大量开销。 所以在这种环境下,我们会进行持续一个月甚至两个月的迭代。 如果系统正在部署到开发区域并且尚未部署到生产环境,那么即使是像持续 1 天的迭代这样严格的事情也是可行的。

  • 编码标准

对新团队成员的结对编程可以促进这一点。 代码审查在这里也能有所帮助。 这在很大程度上取决于你们彼此合作的时间有多长。

  • 集体代码所有权

我还没有发现 Xtreme 在这里真的有帮助。 每个人都会自然地陷入代码库的某些区域。 因此,人们对他们花费大量时间处理的事物拥有所有权。 这实际上可以是一个很好的驱动程序,因为优秀的软件工程师会对他们以这种方式编写的内容感到自豪。

  • 简单的设计

短的迭代周期实际上确实促进了简单的设计。 对于短期版本来说,它需要可维护。

  • 系统隐喻

不确定这里的意思是什么?

  • 可持续的步伐

团队的速度是一项只能通过适当的指标来准确估计的任务。 需要保留任务估计和任务完成持续时间的指标。

  • Pair programming[5]

It is hard to convince management of this aspect. But I have found this is doable when an engineer gets stuck or we have an engineer who is new to a technology or effort.

  • Planning game

Yes.

  • Test driven development

Easy sell to management. However the hard part of some management is adding in more time. A lot of managers believe that Extreme and Agile programming will save them time. They don't save time to deliver you something. In fact, the testing constant requirements gathering adds effort. What it does do, is it gets the customer what they want faster.

  • Whole team (being empowered to deliver)

Definitely, this is an amazing facet to Xtreme.

  • Continuous integration

At the end of each iteration (sprint) full integration occurs. Daily full integration does not occur.

  • Refactoring or design improvement

Your first effort is rarely the best. So yes, I find Xtreme constantly yields better and better solutions.

  • Small releases

I find that given the infrastructure and resources that can lengthen the suggested length of an iteration of 1 or 2 weeks. A lot of this depends on where you are deploying to. If you system is being deployed to a production environment, formal systems and stress testing can add a lot of overhead. So in this environment, we go with iterations lasting a month or even 2 months. If the system is being deployed to a development area and has not been deployed to production, even something as tight as an iteration lasting 1 day can be doable.

  • Coding standards

Pair programming for new team members can promote this. Code reviews also can help here. A lot of this depends on how long you have been working with each other.

  • Collective code ownership

I haven't found that Xtreme really helps here. Everyone naturally falls into certain areas of the code base. So people get ownership of things they spend a lot of time with. This can actually be a good driver as good software engineers will take pride in what ever they write this way.

  • Simple design

Short iteration cycles do in fact promote a simple design. It needs to be maintainable for the short releases.

  • System metaphor

Not sure what is meant here?

  • Sustainable pace

Velocity of a team is a task that can only be acutely estimated with proper metrics. Metrics need to be kept on task estimates and task completions durations.

东京女 2024-07-12 12:35:27
  • 整个团队(被授权交付)
  • 小版本
  • 编码标准
  • 集体代码所有权

但是,我确实在一个相当保守的关键任务开发团队中工作。 我并不一定认为 XP 是一种好的开发方式,您必须找到一种适合您的方式并忽略教条。

  • Whole team (being empowered to deliver)
  • Small releases
  • Coding standards
  • Collective code ownership

But then, I do work in a mission-critical development team that's quite conservative. I don't necessarily thing XP is a good way to develop, you must find a way that's right for you and ignore the dogma.

芸娘子的小脾气 2024-07-12 12:35:26

我们正在遵循您提到的这些实践:

  • 规划游戏
  • 测试驱动开发
  • 整个团队(被授权
  • 持续集成
  • 重构或设计改进
  • 小版本
  • 编码标准
  • 集体代码所有权
  • 简单设计

我必须说,一年后我无法想象工作方式会有所不同

至于结对编程,我必须说它在某些领域是有意义的,在这些领域中存在非常高的难度或最初的良好设计是必不可少的(例如设计界面)。 但我不认为这非常有效。 在我看来,最好对较小的部件进行代码和设计审查,这样结对编程才有意义。

至于“整个团队”的做法,我必须承认,随着我们团队的成长,它已经受到了影响。 当每个人都可以提出个人意见时,这只会使计划会议变得太长。 目前,核心团队正在通过一些初步的粗略规划来准备规划游戏。

We are following these practices you've mentioned:

  • Planning game
  • Test driven development
  • Whole team (being empowered to
    deliver)
  • Continuous integration
  • Refactoring or design improvement
  • Small releases
  • Coding standards
  • Collective code ownership
  • Simple design

And I must say that after one year I can't imagine working differently.

As for Pair programming I must say that it makes sense in certain areas, where there is a very high difficult area or where an initial good design is essential (e.g. designing interfaces). However I don't consider this as very effective. In my opinion it is better to perform code and design reviews of smaller parts, where Pair programming would have made sense.

As for the 'Whole team' practice I must admit that it has suffered as our team grew. It simply made the planning sessions too long, when everybody can give his personal inputs. Currently a core team is preparing the planning game by doing some initial, rough planning.

雅心素梦 2024-07-12 12:35:26

我认为自己很幸运,除了“结对编程”之外,我们都可以做到,但只能解决大问题,而不是日常工作。 “集体代码所有权”也很难实现,如果不进行结对编程,我们往往会在迭代之间保留逻辑上的下一个用户故事。

I consider myself lucky, all except "Pair programming" we can do it, but only to solve big issues not on a day-to-day basis. "Collective code ownership" is hard to achieve as well, not doing pair programming we tend to keep the logical next user stories from iteration to iteration.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文