敏捷——什么时候有效,什么时候无效?

发布于 2024-09-05 00:43:34 字数 1431 浏览 2 评论 0原文

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

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

发布评论

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

评论(5

叹倦 2024-09-12 00:43:34

Ralph Stacey 的复杂性矩阵通常用于说明敏捷的最佳点:

替代文字
(来源:typepad.com

对于简单项目(要求和技术都众所周知),可预测性很高,因此预测方法(瀑布)效果很好。

对于复杂且复杂的项目(绝大多数 IT 项目都是如此),可预测性较低且预测方法不起作用,应首选自适应方法。这就是敏捷发挥作用的地方。

当需求和技术都未知时,无论采用何种方法,您都接近混乱,失败的可能性非常高。

Ralph Stacey's complexity matrix is commonly used to illustrate the sweet spot for Agile:

alt text
(source: typepad.com)

For simple projects (where both the requirements and the technologies are well known), the predictability is high so a predictive methodology (waterfall) works well.

For complicated and complex projects (and the vast majority of IT projects are), predictability is low and a predictive methodology won't work, an adaptive approach should be preferred. This is where Agile works well.

When both the requirements and the technologies are unknown, you're close to the chaos and the odds of failure are very high, regardless of the methodology.

凉月流沐 2024-09-12 00:43:34

我只是根据经验说的; YMMV。

我的团队未能成功实现敏捷工作。 IMO,这是因为:

  • 开发团队第一次
    会听说一个项目,它在
    需求文件的形式
    和最后期限。
  • 利益相关者往往不愿意
    花时间看看结果
    冲刺的工作,因此,如果他们认为项目朝着错误的方向发展,他们就不会在冲刺之间采取行动。
  • 当我们向利益相关者展示我们的工作时,
    他们一般都同意。他们
    会谈论他们会做什么
    就像,我们会回答“那
    大约可以完成 X 量
    时间,”他们会回答,
    “好吧,没必要超过最后期限
    为此。”
  • 部署过程漫长且
    复杂,令人沮丧的频繁
    部署。所以在实践中我们
    经常部署2个月的东西
    项目已经完成,而不是在某个项目结束时
    短跑。
  • 我们的冲刺计划会议是
    时间长且效率低。
  • 除了 Scrum 布道者之外,似乎每个人都对 Scrum 是什么(以及我们的流程是什么)感到困惑。

所以我很确定我们都做错了。你也不要做错事啊。

我们继续使用的一些东西已经加快了我们的速度:

  • 适用于的自动化构建
    每个人的机器(巨大的帮助!)
  • 我们代码的正式安排
    知识库
  • 学习如何应用应用
    UI 代码
  • 重构
  • 的抽象机制单元和集成测试
  • 持续集成

我想你可能会说我们的代码更敏捷,尽管我们的方法不太敏捷。以前我们无法满足需求,但现在我们可以了。

(我并不是说敏捷不好;我只是报告我的经验。另外,请理解我不选择我们使用什么方法。)

I'm speaking only from experience; YMMV.

My team was unsuccessful at making agile work. IMO, it was because:

  • The very first time the dev team
    would hear about a project, it was in
    the form of a requirements document
    and a deadline.
  • Stakeholders were often reluctant
    to take time to look at the result
    of a sprint's work, thus they would not take action between sprints if they thought the project was headed in the wrong direction.
  • When we showed stakeholders our work,
    they generally just OK'd it. They
    would talk about what they would
    like, to which we would reply "That
    can be done in about X amount of
    time," to which they would reply,
    "Well no need to go over the deadline
    for that."
  • The deployment process was long and
    complicated, discouraging frequent
    deployments. So in practice, we
    often deployed things when a 2-month
    project was done, not at the end of a
    sprint.
  • Our sprint planning meetings were
    long and inefficient.
  • It seems everyone was confused about what scrum is (and about what our process was), except for the scrum evangelists.

So I'm pretty sure we were doing it all wrong. Don't you do it wrong, too.

Some things that have sped us up, which we continue to use:

  • automated builds that work on
    everyone's machine (HUGE help!)
  • a formal arrangement for our code
    repository
  • learning how to apply apply
    abstraction mechanisms to UI code
  • refactoring
  • unit and integration tests
  • continuous integration

I guess you could say that our code is more agile, though our methodology is less agile. Whereas before we could not keep pace with demands, now we can.

(I'm not saying agile is bad; I'm just reporting my experience. Also, please understand that I do not choose what methodology we use.)

沫离伤花 2024-09-12 00:43:34

重新发布 我的相关回答

讨论通常是敏捷与瀑布,对吧?我正在链接一篇文章,但它是葡萄牙语的,所以我会尝试传达它的一些想法:

瀑布就像国际象棋。你思考和计划很多,尝试尽快预见每一个可能出现的问题。有很多计划,但只有在稳定和众所周知的领域才有意义,这些领域预计不会有太多变化。

敏捷就像足球(或许多集体运动):决策是在游戏中做出的,应该快速完成。没有太多时间来分析每一个后果。对于总是期望发生变化的动态和不稳定领域来说,它是“理想的”(例如,Web 应用程序往往属于此类)。还有一点需要注意的是:即使你有最好的球员,如果他们团队表现不佳,你也不会成为胜利者。

恕我直言,Scrum 会很有用,因为:

  • 每两周(或每月,取决于迭代时间)一次,您将能够看到哪些内容有效,哪些无效。这是非常有价值的,特别是作为一个“业余”团队,他们需要不断地学习和发现问题。
  • 作为业余爱好者,您可能无法预见一切(敏捷拥抱这一点)
  • 有更多的空间来分享经验(站立会议、回顾会议,甚至计划会议)。并且您分享真实的经验(您必须每周编写代码而不仅仅是计划)

Reposting a related answer of mine:

The discussion is usually agile vs. waterfall, right? I am linking an article, but it is in Portuguese, so I'll try to transmit some of its ideas:

Waterfall is like chess. You think and plan a lot, try to foresee every possible issue as soon as possible. There's a lot of planning, but makes sense only on stable and well-known domains, where change isn't much expected.

Agile is like soccer (or many collective sports): decisions are made in-game and should be done fast. There's no much time to analyze every consequence. It is "ideal" for dynamic and unstable domains, where change is always expected (web applications, for instance, tend to fall in this category). Another point to note is: even if you have the best players, if they don't do well as a team, you won't be the winner.

IMHO, Scrum would be useful, because:

  • Once every two weeks (or every month, depending on iteration time) you'll be able to see what's working or not. And this is very valuable, specially as an "amateur" team, which is expected to be learning and finding things out much more constantly.
  • As amateurs, you probably won't be able to foresee everything (and that's something agile embraces)
  • There's more space for sharing experience (stand-up meeting, retrospective, and even planning meeting). And you share REAL experience (you must write code every week rather than just plan)
友谊不毕业 2024-09-12 00:43:34

对于敏捷方法或瀑布方法,您的优先级似乎变化得太频繁。由于优先级频繁变化,您可能会不断地投入和退出项目,而其中很多项目都已部分完成。敏捷总是准备好发布可能会有所帮助。根据我的经验,制定适当的方法可以提高生产力。

你的情况让我想起了我做过的一个项目。该项目的开发人员在一开始就问了一个问题:“你希望我正确行事还是做出回应?”我参与这个项目时,六个月的项目已进行了两年。一周内,周一、周三和周五实施了相同的功能。周二和周四的时间是删除该功能。

我建议您开始采用敏捷实践。安排一个短的冲刺期可以帮助改变优先事项。将优先事项维持一两周可能会更容易,并且可能更容易稳定优先事项。您还需要一份待办事项(听起来您已经有一大堆了)。

如果你能在一两周内将新的优先事项安排到冲刺中,管理层可能更愿意推迟它们。您还能够确定优先权衡。如果您在下一个冲刺中添加某些内容,则会删除哪些内容。

考虑让团队的一部分进行敏捷工作,而其他人维持现状。随着经验的积累,每个冲刺轮换一名团队成员。考虑让整个团队参加每日站立状态会议和冲刺后审查。一旦您证明了生产力的提高并为公司带来了回报,您应该能够增加使用您的方法完成的工作量。

敏捷是一种适应性方法。预计在新的一两年里你的方法会发生重大改变。最终,您应该达到微调的阶段。

It appears your priorities are changing far too frequently for either methodology Agile or Waterfall. With priorities changing frequently, you are likely churning in and out of projects leaving a lot of them partly done. The Agile alway be ready to release may help. It has been my experience that getting a methodology in place will improve productivity.

Your situation reminds me of a project I worked on. The developer on the project asked one question at the start, "Do you want me to be do it right or be responsive?" I was on the project when it was two years into a six month project. One week the same functionality was implemented Monday, Wednesday, and Friday. Tuesday and Thursday were spent removing the functionality.

I would suggest you start adopting practices from Agile. Scheduling a short sprint period could help with changing priorites. It may be easier to maintain priorities for a period of a week or two and may make it easier to stabilize priorities. You will also need a backlog (sounds like you have a large one already).

Management may be more willing to hold off new priorities if you can slot them into a sprint in a week or two. You will also be able to identify the priority tradeoffs. If you add something to the next sprint, what will be removed.

Consider having part of the team working Agile while the others maintain the status quo. Rotate one team member each sprint as you are gaining experience. Consider having the whole team participate in a daily stand up status meeting, and the post sprint review. Once you have demonstrated increased productivity and returns to the company you should be able to increase the amount of work being done using your methodology.

Agile is a adaptive methology. Expect to be making major changes to your methodoly for the new year or two. Eventually, you should reach a stage where you are fine tuning.

旧城空念 2024-09-12 00:43:34

根据我的经验,要使敏捷(至少是 XP 或 Scrum)发挥作用,您绝对需要满足以下条件。如果没有这些先决条件,您很可能会失败。难的。

  1. 团队必须稳定并且100%致力于此。
  2. 团队必须位于一个工作区。
  3. 客户/产品负责人必须随时在场。
  4. 管理层的支持。这意味着提供资金和勇气来确保上述几点。

考虑到这些要点,只要坚持价值观,您就可以解决任何问题。

In my experience, you absolutely need the following for agile (XP or Scrum at least) to work. Without these prerequisites you are likely to fail. Hard.

  1. Team must be stable and 100% dedicated to this.
  2. Team must be colocated in one workspace.
  3. Customer/product owner must be available on site at all times.
  4. Support from management. This means providing funds and courage to ensure the points above.

Give these points, you can probably tackle anything as long as you keep to the values.

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