在敏捷的工作场所中我的工作方式应该如何改变?

发布于 2024-09-06 12:36:38 字数 1435 浏览 5 评论 0 原文

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

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

发布评论

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

评论(6

淡淡離愁欲言轉身 2024-09-13 12:36:38

敏捷实际上是一组基于迭代开发的软件开发方法,其中需求和解决方案通过迭代不断发展自组织跨职能团队之间的协作。自己很难做到。

也就是说,您可以做一些事情来让自己更加敏捷,并且您的队友在看到这些优势后可能会选择效仿:

  • 分小块工作。您希望将任务分解为可以在合理的时间内完成的作品。 (我工作过的团队通常以半天为单位来衡量事情。因此,您每天可以完成 2 个工作单元,一周可以完成 10 个工作单元。)
  • 提交功能代​​码。当您“在工作中,您希望经常提交代码,但前提是代码可以编译并且可以在不破坏单元测试的情况下工作。您不想成为提交破坏构建的代码的人。
  • 编写单元测试。您的团队正在为其代码编写单元测试,对吧?如果没有,那么现在就开始吧。编写单元测试将迫使您将代码构建为可测试的,这也将迫使您改进实现和设计。它还将通过检查当有人进行更改时曾经有效的所有内容来检测回归错误。
  • 针对所有错误的单元测试。任何时候您需要修复错误时,首先编写一个单元测试,该测试会导致您的代码以与该错误相同的方式失败。然后修复你的代码。如果修复良好,您的单元测试现在应该通过——并且所有其余的单元测试应该继续通过。
  • 对所有新代码进行单元测试。当您构建新代码时,您应该按照规范进行构建。确保规范良好的最佳方法之一是使用规范为代码编写单元测试。一旦你有了足够的测试来验证你打算编写的代码,就可以开始工作,根据你的测试来测试你的代码。一旦您的代码通过测试,您就可以提交到团队存储库。
  • 使用持续集成。这是团队本身应该做的事情,但是如果你可以使用额外的PC(它不必很快,只要有足够的内存和磁盘空间)构建您的工具并构建您的软件)。加载 CruiseControl.netHudson,将其指向您的存储库,并将其配置为等待新提交、签出您的工作区、构建您的软件并运行您的单元测试。为什么?因为在变更传播到整个团队之前,当有人忽略提交变更的所有部分时,它就会被发现。
  • 自动化构建。在使用持续集成之前,您需要能够在无需人工干预的情况下重复构建软件。如果您使用的是 Visual Studio,请了解如何使用 MSBuild 或 Nant 进行构建。如果您正在使用 Java,请了解如何使用 Ant 或 Maven 进行构建。通过自动构建,您可以避免与手动步骤相关的构建和发布问题。 (我曾经将一个项目的构建过程从需要 2 名专业人员每周才能完成的笔记本减少到一组需要大约一个小时才能运行的脚本 - 您最好相信这提高了版本的质量。)

Agile is really a group of software development methodologies based on iterative development, where requirements and solutions evolve through collaboration between self-organizing cross-functional teams. It's hard to do by yourself.

That said, there are things you can do that will make you more agile, and that your teammates may choose to emulate once they see the advantages:

  • Work in small pieces. You want to break your tasks down into pieces that can be completed in a reasonable amount of time. (The teams I've worked on usually measured things in half-day units. Thus you could complete 2 units of work a day, and 10 units in a week.)
  • Commit functioning code. When you're working, you want to commit your code frequently, but only when the code compiles, and works without breaking your unit tests. You do not want to be the person who commits code that breaks a build.
  • Write Unit Tests. Your team IS writing unit tests for its code, right? If not, then start now. Writing unit tests will force you to structure your code to be testable, which will also force you to improve your implementation and design. It will also detect regression errors, by checking everything that used to work when someone makes a change.
  • Unit Tests for all bugs. Any time you need to fix a bug, first write a unit test that causes your code to fail in the same manner as the bug. Then fix your code. If the fix is good, your unit test should now pass -- and all of the rest of your unit tests should continue to pass.
  • Unit Tests for all new code. When you're building new code, you should be building to a spec. One of the best ways to ensure that the spec is good, is to use the spec to write unit tests for your code. Once you've got enough tests to validate the code you intend to write, go to work, testing your code against your tests. Once your code passes the tests, you can commit to the team repository.
  • Use Continuous Integration. This is something that the team itself should be doing, but if you can get the use of an extra PC (it doesn't have to be fast, just have enough memory and disk space to build your tools and build your software). Load CruiseControl.net or Hudson on it, point it at your repository, and configure it to wait for new commits, checkout your workspace, build your software, and run your unit tests. Why? Because it will catch when someone has neglected to commit all of the pieces of their change, before the change propagates to the whole team.
  • Automate your builds. Before you can use Continuous Integration you need to be able to build your software repeatedly without human intervention. If you're using Visual Studio, learn how to build using MSBuild or Nant. If you're doing Java, learn how to build with Ant or Maven. By building automatically, you avoid build and release problems associated with manual steps. (I once reduced the build process for a project from a notebook that took 2 professionals a week to complete, to a set of scripts that would take about an hour to run -- you better believe that improved the quality of releases.)
半暖夏伤 2024-09-13 12:36:38

这听起来就像每日会议的瀑布。实施敏捷是一个巨大的差异,你不能自己从瀑布式转变为敏捷,你需要其他人效仿才能使其发挥作用。

我认为最大的变化将是停止在“项目”范围内思考,并开始以非常小的工作增量进行思考。例如,当项目“创建网站 X”出现时,您需要逐页分解该项目。确定需要做什么,我们到底如何获取、存储、更新、显示数据。编写执行此操作所需的不同代码需要多长时间?一旦安排好(根据我的经验,敏捷涉及更多的计划),然后你可以开始说“到星期三,我将能够向你们展示我可以在第 X 页上保存,并且我将显示Y 页上的数据”。

通常有一个“计划”会议。这可能需要一个小时,也可能需要 6 个小时,这取决于您的标准传达得如何、团队中有多少成员以及您正在处理的冲刺时间有多长。每个人都选择他们将要做的工作,并对其进行估计。在冲刺(大多数人建议一到两周)之后,还有另一次会议。理想情况下,在这次会议中,每个人都将演示他们过去几周所做的事情,并且它将完美地发挥作用。后来反思一下,什么效果好?我们是否严重错误地估计了某些事情?

这是一个“循环”,重复大约 50 次,网站 X 就完成了! :)

That sounds like waterfall with daily meetings. Implementing agile is quite a vast difference and you can't just change from waterfall to agile yourself, you need others to follow suit for it to work.

I think the largest change will be to stop thinking in "project" scope, and start thinking in very small increments of work. For example, when the project "Create website X" comes up, you'll need to break that down on a page by page basis. Determine what needs to be done, how exactly are we fetching, storing, updating, displaying the data. How long will it take to write the different pieces of code required to do that? Once that is laid out (there is much more planning involved in agile, from my experience) then you can start saying "By Wednesday, I'll be able to show you guys that I can save on page X and I'll display the data on page Y".

Usually there is a "planning" meeting. This can take an hour or it can take 6, this depends on how well your criteria is conveyed, how many members are on the team, and how long of a sprint you're working with. Everyone selects work that they will do, and puts estimates on it. After your sprint (which most people recommend to be one or two weeks) there is another meeting. Ideally in this meeting everyone will demo what they have been doing the past week(s), and it will work perfectly. Afterward there is some reflection, what worked well? Did we mis-estimate something terribly?

That is one "cycle", do that ~50 times and website X is complete! :)

月隐月明月朦胧 2024-09-13 12:36:38

首先,不存在“敏捷方法论”之类的东西,敏捷是一个涵盖性术语,描述了几种敏捷方法论,如果您的工作场所所做的只是站立会议,我已经可以告诉你,这并不能让工作场所变得敏捷。

其次,虽然您可以在个人层面采用一些“敏捷实践”(尤其是工程实践),但这永远不足以让您变得敏捷: 1. 在我看来,敏捷更多的是关于驱动产品开发的方式,而不是工程实践 2敏捷是一种集体团队游戏。

因此,我的建议是深入研究 Scrum 和 XP from the Trenches 并抓住给你的同事、老板或潜在赞助商一些副本。

To start with, there is no such thing like "the agile methodology", agile is an umbrella term that describes several agile methodologies and if all your workplace is doing is standups, I can already tell you that this doesn't make a workplace agile.

Second, while you can adopt some "agile practices" (especially engineering practices) at an individual level, this will never be enough to make you agile: 1. agile is in my opinion more about the way to drive product development than engineering practices 2. agile is a collective team game.

So, my recommendation would be to dive into for example Scrum and XP from the Trenches and to grab some copies for your coworkers, your boss or potential sponsors.

岛歌少女 2024-09-13 12:36:38

恭喜你完成了站立表演。这是一个很好的第一个改变。

您所问的问题表明您或团队希望在这方面做得更好。在这种情况下,你可以采取以下两种方式之一:

  • 巨大的改变,或
  • 渐进式的改进

如果你决定你想要一个巨大的改变,你可能需要一些书籍、培训,也许还需要一个教练或经验丰富的从业者。如果组织中的高层人员也投资于变革,那么这通常会成功。

如果您决定要逐步改进,那么值得阅读有关敏捷的内容,以获得一些想法。我推荐《XP 解释》。那里也有很多博客,以及这里的帖子。您需要做的两件事是:

  • 尝试交付一些软件,或者至少从利益相关者那里获得反馈
  • 弄清楚为什么这很困难,以及您可以采取哪些措施来使其变得更容易。

我们通常会进行第一次展示,第二次进行回顾。我建议至少每两周进行一次回顾,即使很难展示工作代码。

我经常看到的事情很快就会被标记为问题,包括:

  • 团队不在同一地点(“团队”包括 BA 和 QA)
  • 环境不适合
  • 缺乏正在进行的工作或总体目标的可见性
  • 正在进行的工作过多 - 事情已开始但尚未完成
  • 项目正在进行中,没有人真正关心
  • 项目进度显然不值得做
  • 代码库真的很难改变
  • 归咎于文化阻碍了协作。

无论你发现什么,你都不会是第一个。

请注意,无论您使用哪个版本,敏捷都是一种透明的方法。很多人对透明度感到害怕。这是正常的。有时,高层管理者出于既得利益而不愿意让事情变得透明。这也很常见,此时您可能需要外部帮助。不过,提供可用的软件可能非常有说服力。

祝你好运!

Congratulations on doing stand-ups. It's a good first change.

That you're asking suggests that you or the team would like to be better at this. In that case, you can go one of two ways:

  • Huge change, or
  • Incremental improvement

If you decide you'd like a huge change, you'll probably need some books, training and maybe a coach or experienced practitioner around. This is often successful if people higher up in the organisation are invested in the change too.

If you decide you'd like to improve incrementally, it's worth reading around Agile just to get some ideas. I recommend "XP Explained". There are a lot of blogs out there, too, as well as posts here. The two things you'll need to do are:

  • Try to deliver some software, or at least get feedback from the stakeholders
  • Work out why that was hard and what you can do to make it easier.

We normally do the first with showcases and the second with retrospectives. I recommend having retrospectives at least every two weeks, even if it's really hard to showcase working code.

Things I often see flagged up quickly as problems include:

  • Team not co-located ("Team" includes BAs and QAs)
  • Environment not suited
  • Lack of visibility of work in progress or overall goals
  • Too much work in progress - things started but not finished
  • Projects in progress that nobody really cares about
  • Project progress makes it obvious that it's not worth doing
  • Codebase is really hard to change
  • Blame culture discourages collaboration.

Whatever you find out, you won't be the first.

Note that Agile is a transparent methodology, whichever version you use. A lot of people get scared by transparency. This is normal. Sometimes managers higher up have a vested interest in not allowing things to be transparent. This is also common, and at that point you might need external help. Delivering working software can be very persuasive, though.

Good luck!

抱着落日 2024-09-13 12:36:38

如果您想从头开始做到这一点,那么您所需要的只是敏捷宣言和每周定期回顾。但我想这还不够,所以这是我的启动列表:

  1. 将现有的项目任务/点/待办事项转换为
  2. 所有内容的用户故事配对计划。经常交换对!
  3. 使用测试驱动开发。争取100%覆盖!
  4. 使用一周迭代。重复就是学习!
  5. 在每次迭代中向客户交付有价值的软件。

If you want do to this from the ground up, then all you need is the agile manifesto and recurring retrospectives each week. But I guess that is not enough, so here is my start-up-list:

  1. Convert your existing project tasks/points/todos into User Stories
  2. Pair program on everything. Switch pairs often!
  3. Use Test Driven Development. Strive for 100% coverage!
  4. Use one week iterations. Repetition is learning!
  5. Deliver valuable software to the customer in each iteration.
旧伤慢歌 2024-09-13 12:36:38

即使整个团队没有以敏捷的方式工作,作为开发人员可以采用的实践也很少。您可以从 CI、TDD、自动化部署开始。作为一个团队,你可以尝试回顾会议。

Even if entire team doesn't work in an agile way there are few practices that you can adopt as Developer. You can begin with CI, TDD, automated deploy. As a team you can try out retrospective session.

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