文档结构  
翻译进度:57%     翻译赏金:0 元 (?)    ¥ 我要打赏

反模式是什么? 这是一种模式,你认为会改善事情,但事实上却相反,它使事情更糟糕了。 本文下面叙述了一些我所观察到的反模式。

待办事项列表

在Scrum中,待办事项的目的是给出了为项目或产品工作的想法并使其成为现实。 从更高层面来讲,它是产品负责人的粗粒度视角。当团队拿到待办事项列表,他们分散了需求并确定哪些事项应该被包含在内。

第 1 段(可获 1.34 积分)

没有定义的待办事项有许多类型。一种类型是产品负责人太忙,来不及在高层角度上定义他们想要的是什么。他们只定义眼前一两个Sprint的工作。这意味着团队成员对于长期愿景没有概念,他们只清楚眼前的目标。这就不能给团队成员带来任务的归属感。

产品待办事项是产品负责人将任务进行分解的清单。再说一次,待办事项将任务与团队归属分离。这也意味着分给开发人员的任务是没有相关性的。

第 2 段(可获 1.34 积分)

The product backlog does not result in a working component. The best method of measuring an Agile project is in the working software. Something needs to be running at the end of each interval (Sprint) and be production ready. That way, everyone along the SDLC is working on getting something done earlier. Developers develop a working instance; no matter how primitive, testers can test that primitive instance (with caveats). Documentation is done, and at the end, there is always something of shippable quality.

The product backlog is not prioritized or is prioritized in multiple streams even if they require the same skill set, i.e., the items in the backlog are assigned to individuals, not the team. This again takes ownership of the development from the team, and the individual especially if the way the task is to be executed is dictated rather than worked out.

第 3 段(可获 1.83 积分)

最后,正如我已经提到的,当任务分解并分配给个人前,团队成员有机会了解任务包含了哪些内容。

计划会议

在Scrum里有两个计划会议: Sprint Planning 1和Sprint Planning 2。Sprint Planning 1是用来和产品负责人一起过一遍待办事项,并决定团队成员在这个Sprint里该接受哪个用户故事或任务?这就给团队成员提供了产品背景,所以他们对一个任务持续多长时间会有第一想法。这能让每个团队成员都有产品主人翁的意识。

第 4 段(可获 1.38 积分)

The second Sprint planning session is where the team deep dives into the stories and does the nitty gritty design. Granular tasks are determined and this is where you get the cards for the Sprint. It also serves the purpose of making sure that everyone on the team is across the details of what is happening. It allows team members to contribute to tasks even if they are not involved directly with the task. This also gives the team a sense of ownership in the execution of the task.

The antipattern lies in when management or the team thinks that they know what they are doing and decide they do not need a planning session or they need minimal planning. This could be to save time, reduce meetings, etc. It is actually pretty rare that this is the case and what ends up happening instead is that team members have no idea what is happening during the Sprint. Time gets wasted explaining the situation and sometimes the situation needs to be explained more than once as one team member may ask the same questions as another.

第 5 段(可获 2.33 积分)

每日站会

每日站会主要是为了显示每日的工作进度。你需要谈论三个问题: 我做了什么? 我准备做什么?什么事情阻碍了我?

当会议成为一种形式上的会议,错误模式就发生了。谈论新闻,话题远离工作进度。这可能导致另一个错误模式是谈论内容和工作进度相距甚远。因为这个原因,我参加过一个每日站会持续了一个多小时。每日站会的目的让成员们感到不舒服,因为会议时间很短(不超过15分钟)。如果会议超过15分钟,成员们就会走神。

第 6 段(可获 1.48 积分)

另一个反模式是给产品负责人或经理进行状态更新。这是一个团队成员的会议。这个会议能让你知道团队成员在做什么,并且如果需要的话提供了给予帮助的机会。

另一个反模式是谈论的任务没有在看板或者任务管理软件中记录。所有的任务应当记录下来。

没有展示

展示是向利益相关联系人毫不掩饰的显示工作增量,它也可以被看做是一个迷你的交接会议。如果没有展示,那就有“机会”跳过工作增量需求

第 7 段(可获 1.34 积分)

回顾会议

回顾会议的目的是为了回顾上一个迭代已经做了什么,并且看看有什么能够提高一下的。这不是空泛的要改进,而是需要衡量的。

一个常见的反模式是当团队成员刚开始参加回顾会议的时候,发现它没什么价值。他们想放弃开这个会议或是延长回顾会议的周期,以节省时间来开展工作。当你这么做的时候,你失去了分析并改进你所做的工作机会。

另一个反模式是改变开展回顾会议的周期。如果你没有进行固定期限的sprints(举个例子,可能是使用看板),那有倾向于推迟回顾会议,直到一个开发阶段结束。这可能是几个月后了。在那几个月中可能会发生很多,不在短期内回顾一下,你会失去改进的机会。

第 8 段(可获 2.06 积分)

当你刚开始进行回顾性会议的时候可能会有点困难。没有敏捷教练或者没有熟知敏捷流程的人很难知道如何提高以及应在哪方面进行提高。那么所产生的情况是回顾性会议只得到一点儿表面上的知识。如果你进行回顾并且没有看到任何问题,那本身就是个问题。敏捷所做的一件事情是试图突出问题。通过解决这些问题,你变得更好了么?如果事情正变得有些肤浅,而且你忽略了问题,那么你不是在进行正确的回顾性会议。

第 9 段(可获 1.23 积分)

最后,没有建立任何可衡量的任务是反模式。 一个好的准则是实现SMART目标。

  • 具体的
  • 可以衡量的
  • 可以达到的
  • 是实实在在的
  • 有截止时间的

SMART目标是从回顾会议的结果中添加任务到待办事项的一个很好的准则。再说一次,这是你可以如何提高的准则。

命令和控制

当第一次实施敏捷或者说Scrum的时候,要让产品负责人或者Scrum Master成为经理、团队领导或是更高职位的人是不寻常的。当这种情况发生的时候,命令和控制的旧习惯会侵入。经理在开发团队将任务分配给个人。任务的分解是基于工作时间,而不是用户故事。在这种情况下,经理将任务的归属权远离团队。通过分配任务,甚至更糟的情况下团队成员自己分配任务,经理保持任务的归属权,而开发团队只是发动机的一个齿轮。

第 10 段(可获 2.06 积分)

This can lead to failure as the team is no longer empowered. They have no say in the solution and thus mindlessly do the work as required. Yes, it is the Scrum Master's role to protect the team from this sort of thing, but if the Scrum Master has no power and all the power is in the Product Owner, the role becomes moot.

Big Bang Improvement

Another antipattern is big bang improvement. A good example is that you need automated deployment. This has been determined part way through a project. Big bang improvement is spending the next three or more months (in my case 12+ months) developing an automated deployment system without iterative or incremental use by the rest of the development team.

第 11 段(可获 1.56 积分)

Part of Agile is getting value as soon as possible, even if it's not full value. Having some value early on, even if it's not directly related to the production system, is better than having nothing short-term and everything much later.

You also run the risk that your efforts in getting the big bang solution in place do not live up to scratch and add only a little value in real life.

Another antipattern is delaying improvements until there is slack in the schedule. Slack rarely happens, and more than likely will never happen if you do not include the improvements early. The reason for this is that your technical debt racks up and you spend more time fixing the issues rather than improving.

第 12 段(可获 1.58 积分)

有一个笑话是这么说的,“你怎么吃掉一头大象?一次咬一口!”...但是如果你连一口也不咬,你永远也不会吃掉大象。

教育

如果你不知道Scrum或者敏捷的要求,你只是按照表面所看到的实施敏捷,那你会失败的。学习敏捷到底是什么,学习敏捷的历史以及在其他行业里是如何实施敏捷的。举个例子来说,敏捷起源于丰田,那就阅读丰田的生产系统。有一本好书是莱克所写的“丰田模式”。

如果你还没有理解,就去实施敏捷,你会冒着做Cargo Cult Agile(只遵循敏捷开发的仪式而不理解敏捷的实际理念)的风险。

第 13 段(可获 1.43 积分)

Quality and Definition of Done

An agile antipattern that tends to be done is missing the definition of done or skipping quality checks during the development process.

Quality checks could take the form of not doing unit tests, code reviews, etc. until after development is complete. This could happen days or weeks later and is usually skipped in the interest of time. Why is this a problem? Well, usually, when problems are found out after development, the developer has to get back into the mindset that they were in while developing the feature. This takes time. Then, they have to do the implementation again and recheck.

第 14 段(可获 1.33 积分)

If the checks are done while development is still in progress, then you save the time that it took the developer to get back into the rhythm. This time saved is usually significantly shorter than the testing task in the first place. There will be a productivity hit initially as you are not used to doing the checks while working, but you will find in the long run that adding the checks actually saves time.

The other antipattern is not defining a definition of done or acceptance criteria. Again, this is left off due to time constraints. But what happens here is that work comes back to the developer because it is incomplete. Why is it incomplete? Well, in this case, the developer didn't know that they had to cater for that situation. Having a definition of done or acceptance criteria gives the developer a perspective on what is required and gives solid checks that they can measure their code by.

第 15 段(可获 2.03 积分)

缺乏长期思考

什么是缺乏长期思考?这就是只看眼前的问题而忽略了整体的解决方案。这可以从立即开展工作的形式表现。你必须为其他环境重复四次同样的任务。你不去思考快速自动化甚至半自动化流程,这样虽然会牺牲短期实现的时间,从长远来看能节约一点时间。而你只是往前踏步,蛮力工作。这意味着当你在其他四个环境里做同样的任务时,需要采取相同的时间。

第 16 段(可获 1.41 积分)

这里有一个例子,比如说你必须从开发到测试做部署。大概需要花费一天时间做部署。这是乏味的工作,但没有那么复杂。

如果你花费2天自动化这个任务,部署可能在一个小时就完成了。然而你没有这个时间。你必须现在部署。你花费了一天从开发到测试进行部署。当你必须部署到预生产环境,它需要花费你一天时间。

所以你花了两天的时间,如果你自动化这项任务,它将花费你两天两个小时。

现在你必须部署到生产环境。如果你土办法,你又会花费一天。这样加起来就三天了。如果进行自动化任务,只需要花费两天及三个小时,节省了5个小时。

第 17 段(可获 1.75 积分)

你越是长期的重复任务(比如说有一个缺陷修复,你必须一遍遍在所有环境重现),你越能节省宝贵时间。

我觉得这问题有一点像贫困陷阱。举个例子,你在超市买不起东西。你没有小汽车或公共交通。你不得不在当地便利店购买价格明显很高的杂货。这不能让你省钱,所以你是可以负担起的去超市的费用,并且能省钱的。

你需要在工作中不断超越。看看长期而非短期的过程改进方法。持续这样的做事情,这就是所谓的改善,是敏捷哲学的一个主要组成部分。

第 18 段(可获 1.65 积分)

In the antipattern, you are stuck in the poverty trap based on time rather than money.

Another antipattern is that of outsourcing. You need a project done. You bring in outsiders to do the project. Once the project is complete, they hand it over to the BAU (Business As Usual) team, which then has the problem of having to understand what has been built. In the meantime, the people that have all the knowledge have long since left.

Another antipattern is buying pretty toys (tools) without knowing what your requirements are just because they look pretty and simple. However, no one ends up using them because they don't meet the use case.

第 19 段(可获 1.41 积分)

缺少沟通

你有没有曾经处在这样一种情况,你不了解某样东西,而其他人都知道。这种谈话可能是“水冷了”或者是如今的咖啡机,这可能会影响到你,只是因为谈话发生时你不在场。

你是否曾经被告知,“你应当知道”,但事实上这是你第一次听到。

或者说,一封电子邮件几个月前就发送给你了。你忽略了这封邮件只是因为当时和你不相关,但是当你讨论起这个话题时,他们告诉你已经给你发过邮件了。你为什么不知道?

第 20 段(可获 1.56 积分)

This antipattern is a big one. Communication can kill an Agile project, especially when you are berated for not knowing something. Morale of the person goes down and so does their productivity.

You need to re-think your communication goals. It is not efficient to send out an email if only half your team takes in the knowledge, or do a hand over for something that won't be used for 6 months. The efficiency isn't in the dissemination of the knowledge, but in making sure that the recipient retains the knowledge.  this can take the form of a one-on-one session, writing details in a wiki page for future reference (Do not use email - it is a horrible interface for knowledge). Write a tutorial.

第 21 段(可获 1.56 积分)

If something is discussed at the water cooler, get everyone else together and re-discuss the topic. Even if you don't think it's relevant to someone, it might actually be.

Make sure that everything needed at some future point is documented in enough detail that it can be picked up at a later date, for example, six months down the track. Make sure it's in an easily searchable format such as a Wiki.

Finally, do pair programming or mob programming. This is an excellent method of getting everyone on the same page. You may think that it isn't efficient as you have two or more people doing one task on one computer, but there is nothing better for handover than doing the work together.

第 22 段(可获 1.59 积分)

Not Making It a Safe Environment

This final lot of antipatterns has to do with not making the environment safe. I don't mean taking care of frayed power leads (although you should take care of those straight away). I mean giving an environment where people can speak their mind without being shut down, where dissent is tolerated or even encouraged if it's relevant to the job.

If you do tell those that have different opinions to shut up, then effectively, they may just do that. Then you lose your most valuable feedback, the check to see if you are doing things correctly or not or if you are going down the wrong route.

These are the antipatterns that I have encountered. If you agree or disagree or have some of your own antipatterns that you have encountered, let me know in the comments.

第 23 段(可获 1.81 积分)

文章评论