Can anyone steer my in the right direction on what would be the best way to handle such time tables and timeframes if needed in Release Management in an Agile Product Development Environment.
First of all the Scrum Framework guidelines never guides you to not have a Release Plan or Time table ever. What is leading you to have conflicting thoughts? I would like to know the source which is leading you to this conflict.
Best way to create a Release Plan is like this (this may take a week or so depending on the size of your project):
Get the Stakeholders in a room and get a EPIC user story written on the board using their guidance. The EPIC user story should include the end product vision. (ignore if already done)
List out the type of users.(ignore if already done)
Break the Epic user story into smaller and smaller chunks of user stories till they are small enough to be doable in sprints.(ignore if already done)
Ask the Product Owner(s) of the Scrum Team(s) to prioritize the stories in the uncommitted backlog list(s) Also do some form of effort estimation fairly quickly and do not waste a lot of time estimating.
Get the target end date or Go Live date of the project from Stakeholders.
Divide the time frame from now until the end date into Releases. Ask the stakeholders which features need to be delivered by when and include the appropriate user stories in them, and call them Releases. You can also give those Releases themes if needed.
The Release Plan now is conceptualized. After this draw it on a white board or put it in a visible and transparent location where everyone can see it - add user story cards to the appropriate release.
Now your initial release plan should be ready
Ideas for implementation:
Form a Scrum Team specifically for Operations Activities. They could follow Scrum or Kanban would be better.
As and when Development teams get "shippable products" put in the shelf, the Operations Kanaban Team can do the deployment and release branching etc tasks as per the Release Plan.
So this way the development Teams don't really focus on the Release plan or work, just the Operations Team does that. The Development Team just focussed on the Sprint Work, it would be the Product Owners headache to make sure the right user stories are in the right Release and in the right order. The direction would be given by the Stakeholders.
To be honest you really don't have to do anything yourself, it's all in the stakeholders and POs hand, I don't know where is is the fuss??
I usually maintain a release plan for the management that is mainly based on a combination of the estimated & prioritized user stories (I group them to match a main new feature of the product) and velocity.
With a well maintained product backlog it's pretty easy to do your release plan. I usually plan three to four releases a year.
What I like with Scrum is that I can potentially release after each iterations.
If you want to master your release management, you will need more information that few answers of practionners. I highly suggest you this book.
If you currently utilising and agile environment you should check Agile estimating and Planning book for some suggestions. This book also contains small chapter about Release planning.
Some release planning should be always done. Release is a target wich usually covers 3-12 months of development = set of iterations. It something which describes target criteria for project to success. It is usually described as combination of expected features and some date. Features in this case are usually not directly user stories but epics or whole themes because you don't know all user stories several months ahead. Personally, I think release is something that says when the project based on vision can be delivered. It takes high level expectations and constraints from the vision and converts them to some estimation. You can also divide project to several releases.
But remember that three forces works in agile as well. There is direct relation among Feature set, Release date and Resources (+ sometimes also mentioned fourth force: Quality). Pushing one of these forces always move others. It is usually modelled as equilateral triangle (or square).
There are different approaches to plan a release. One is mentioned in the book. It is based on user stories estimation, iteration length selection and velocity estimation but I'm little bit sceptic to this approach because you don't have simple user stories for whole release and estimating epics and themes is inaccurate. On the other hand high level feature definition is exactly what you need for three forces. If you don't have enough time you will implement only basic features from all themes. If you have more time you will implement more advanced features. This is task for product owner to correctly set business priority when dividing epics and themes into small user stories.
The most important part in agile is that you will know more quite soon. After each iteration you will have better knowledge of your velocity and you will also reestimate some planned user stories. For this reason I think the real estimate (accurate) and realease date should be planned after few iterations. As I was told on one training effort should not be estimated, effort should be measured. If anybody complains about it show him Waterfall and ask him when will he get relatively accurate estimate? Hint: Hardly before end of analysis wich should be say after 30% of the project.
It is also important what type of projects do you want to implement using agile / scrum and how long will project be. Some projects are strictly budget or date driven others can be more feature driven. This can affect your release planning. For short projects you usually have small user stories and you can provide much more accurate estimate at the beginning.
正如您正确指出的那样,如果代码始终经过集成和测试,那么为什么您需要时间表并从一个环境转移到另一个环境,除非您不确定功能的实际“完成”状况?我的意思是,并不是您不确定该功能的编码是否正确,而是您担心它会引入其他错误吗?它能与生产中的代码很好地集成吗?从根本上解决问题。不要仅仅因为您认为您应该拥有 X 环境或者测试应该在另一个组中而这样做。也许解决这些问题的办法就是相应地调整“完成”的定义。
This is a very loaded question, and depends on your company to be sure. I first have to ask, why are you using 3 environments and continuous integration (your reason matters)? Are you performing automated tests at all? How are your code branches setup? Do you release for some functionality, or just routine maintenance fixes?
Answering these will give you an idea of why you need a release, and how you should go about it.
For example, if you only have a staging environment for the purpose of integration and perform automated tests, then can't having a separate code branch in which continuous integration tests run be sufficient?
If staging is to perform some sort of user acceptance, does your company have a dedicated testing team or are they members of the agile teams?
As you correctly stated, if the code is always integrated and tested, then why would you need a timetable and moving from environment to environment unless you were unsure about the actual "done" condition of the features? By that, I mean that it's not that you're unsure that the feature was coded correctly, but are you worried it will introduce other bugs? Will it integrate well with code already in production? Address the concerns at the root of the problem. Don't just do it because you think you're supposed to have X environments or testing should be in another group. Maybe the solutions to those problems may be to adjust the definition of "done" accordingly.
As you can see there are many, many factors that will make your organization unique. There is no one right way to answer this, just tradeoffs that you are willing to accept.
I find that having multiple environments with teams of people working at the various layers tends to be anti-agile and counterproductive. The best bet is to analyze your concerns, and try to find ways to solve them (such as expanding the definition of "done", or breaking up the various organizations and putting them on the teams, eliminating as many environments as possible and simplifying the process, etc). That may not be possible in your organization, so you may have to live with tradeoffs.
发布评论
评论(4)
首先,Scrum 框架指南永远不会指导您没有发布计划或时间表。是什么导致你产生矛盾的想法?我想知道导致你们发生这场冲突的根源。
创建发布计划的最佳方法如下(这可能需要一周左右的时间,具体取决于项目的规模):
将利益相关者召集到一个房间,并根据他们的指导在黑板上写下 EPIC 用户故事。 EPIC 用户故事应包括最终产品愿景。 (如果已经完成,请忽略)
列出用户的类型。(如果已经完成,则忽略)
将 Epic 用户故事分成更小的和更小的用户故事块,直到它们小到足以在冲刺中执行。(如果已经完成,请忽略)
要求 Scrum 团队的产品负责人对未提交的待办事项列表中的故事进行优先级排序 还可以相当快地进行某种形式的工作量估算,并且不会浪费太多 时间
从利益相关者处获取项目的目标结束日期或上线日期。
将从现在到结束日期的时间范围划分为发布版本。询问利益相关者哪些功能需要在何时交付,并在其中包含适当的用户故事,并将其称为发布。如果需要,您还可以提供这些发布主题。
发布计划现已概念化。
之后,将其绘制在白板上或将其放在每个人都可以看到的可见且透明的位置 - 将用户故事卡添加到适当的版本中。
现在,您的初始发布计划应该已准备好
实施想法:
专门针对运营活动组建一个 Scrum 团队。他们可以遵循 Scrum,或者看板会更好。
当开发团队获得“可交付产品”时,运营 Kanaba 团队可以根据发布计划执行部署和发布分支等任务。
因此,这样开发团队就不会真正关注发布计划或工作,只有运营团队负责。开发团队只专注于冲刺工作,确保正确的用户故事以正确的顺序出现在正确的版本中将是产品负责人头疼的问题。方向将由利益相关者给出。
说实话你真的什么都不用自己做,一切都在利益相关者和PO的手中,我不知道哪里有什么大惊小怪的?
我希望你能明白这张照片。
First of all the Scrum Framework guidelines never guides you to not have a Release Plan or Time table ever. What is leading you to have conflicting thoughts? I would like to know the source which is leading you to this conflict.
Best way to create a Release Plan is like this (this may take a week or so depending on the size of your project):
Get the Stakeholders in a room and get a EPIC user story written on the board using their guidance. The EPIC user story should include the end product vision. (ignore if already done)
List out the type of users.(ignore if already done)
Break the Epic user story into smaller and smaller chunks of user stories till they are small enough to be doable in sprints.(ignore if already done)
Ask the Product Owner(s) of the Scrum Team(s) to prioritize the stories in the uncommitted backlog list(s) Also do some form of effort estimation fairly quickly and do not waste a lot of time estimating.
Get the target end date or Go Live date of the project from Stakeholders.
Divide the time frame from now until the end date into Releases. Ask the stakeholders which features need to be delivered by when and include the appropriate user stories in them, and call them Releases. You can also give those Releases themes if needed.
The Release Plan now is conceptualized.
After this draw it on a white board or put it in a visible and transparent location where everyone can see it - add user story cards to the appropriate release.
Now your initial release plan should be ready
Ideas for implementation:
Form a Scrum Team specifically for Operations Activities. They could follow Scrum or Kanban would be better.
As and when Development teams get "shippable products" put in the shelf, the Operations Kanaban Team can do the deployment and release branching etc tasks as per the Release Plan.
So this way the development Teams don't really focus on the Release plan or work, just the Operations Team does that. The Development Team just focussed on the Sprint Work, it would be the Product Owners headache to make sure the right user stories are in the right Release and in the right order. The direction would be given by the Stakeholders.
To be honest you really don't have to do anything yourself, it's all in the stakeholders and POs hand, I don't know where is is the fuss??
I hope you get the picture.
我通常为管理层维护一个发布计划,该计划主要基于估计和实际的组合。优先考虑的用户故事(我将它们分组以匹配产品的主要新功能)和速度。
有了维护良好的产品待办事项列表,就可以很容易地制定发布计划。我通常计划每年发布三到四个版本。
我喜欢 Scrum 的一点是,我可以在每次迭代后进行发布。
如果您想掌握发布管理,您将需要更多的信息,而不是实践者的答案。我强烈建议您这本书。
I usually maintain a release plan for the management that is mainly based on a combination of the estimated & prioritized user stories (I group them to match a main new feature of the product) and velocity.
With a well maintained product backlog it's pretty easy to do your release plan. I usually plan three to four releases a year.
What I like with Scrum is that I can potentially release after each iterations.
If you want to master your release management, you will need more information that few answers of practionners. I highly suggest you this book.
如果您当前正在使用敏捷环境,您应该查看敏捷估算和规划书籍一些建议。本书还包含有关发布计划的小章节。
应该始终完成一些发布计划。发布是一个目标,通常涵盖 3-12 个月的开发 = 一组迭代。它描述了项目成功的目标标准。它通常被描述为预期功能和某些日期的组合。这种情况下的功能通常不是直接的用户故事,而是史诗或整个主题,因为您不知道未来几个月的所有用户故事。就我个人而言,我认为发布是指基于愿景的项目何时可以交付。它从愿景中获取高水平的期望和约束,并将其转换为某种估计。您还可以将项目划分为多个版本。
但请记住,敏捷中也存在三种力量。功能集、发布日期和资源之间存在直接关系(+有时还提到第四种力量:质量)。推动这些力量中的一种总是会感动其他力量。它通常被建模为等边三角形(或正方形)。
计划发布有不同的方法。书中提到了一个。它基于用户故事估计、迭代长度选择和速度估计,但我对这种方法有点怀疑,因为你没有整个版本的简单用户故事,并且估计史诗和主题是不准确的。另一方面,高级特征定义正是三种力所需要的。如果您没有足够的时间,您将仅实现所有主题的基本功能。如果您有更多时间,您将实现更高级的功能。这是产品所有者在将史诗和主题划分为小型用户故事时正确设置业务优先级的任务。
敏捷中最重要的部分是你很快就会了解更多。每次迭代之后,您将更好地了解自己的速度,并且还将重新评估一些计划的用户故事。因此,我认为真正的估计(准确的)和发布日期应该在几次迭代后计划。正如我被告知的那样,一项训练的努力不应该被估计,而应该被衡量。如果有人抱怨它给他看瀑布并问他什么时候才能得到相对准确的估计?提示:就在分析结束之前,应该说是在项目完成 30% 之后。
您想要使用敏捷/Scrum 实施什么类型的项目以及项目需要多长时间也很重要。有些项目严格受预算或日期驱动,而另一些项目可能更多地受功能驱动。这可能会影响您的发布计划。对于较短的项目,您通常有较小的用户故事,您可以在一开始就提供更准确的估计。
If you currently utilising and agile environment you should check Agile estimating and Planning book for some suggestions. This book also contains small chapter about Release planning.
Some release planning should be always done. Release is a target wich usually covers 3-12 months of development = set of iterations. It something which describes target criteria for project to success. It is usually described as combination of expected features and some date. Features in this case are usually not directly user stories but epics or whole themes because you don't know all user stories several months ahead. Personally, I think release is something that says when the project based on vision can be delivered. It takes high level expectations and constraints from the vision and converts them to some estimation. You can also divide project to several releases.
But remember that three forces works in agile as well. There is direct relation among Feature set, Release date and Resources (+ sometimes also mentioned fourth force: Quality). Pushing one of these forces always move others. It is usually modelled as equilateral triangle (or square).
There are different approaches to plan a release. One is mentioned in the book. It is based on user stories estimation, iteration length selection and velocity estimation but I'm little bit sceptic to this approach because you don't have simple user stories for whole release and estimating epics and themes is inaccurate. On the other hand high level feature definition is exactly what you need for three forces. If you don't have enough time you will implement only basic features from all themes. If you have more time you will implement more advanced features. This is task for product owner to correctly set business priority when dividing epics and themes into small user stories.
The most important part in agile is that you will know more quite soon. After each iteration you will have better knowledge of your velocity and you will also reestimate some planned user stories. For this reason I think the real estimate (accurate) and realease date should be planned after few iterations. As I was told on one training effort should not be estimated, effort should be measured. If anybody complains about it show him Waterfall and ask him when will he get relatively accurate estimate? Hint: Hardly before end of analysis wich should be say after 30% of the project.
It is also important what type of projects do you want to implement using agile / scrum and how long will project be. Some projects are strictly budget or date driven others can be more feature driven. This can affect your release planning. For short projects you usually have small user stories and you can provide much more accurate estimate at the beginning.
这是一个非常重要的问题,具体取决于您的公司。我首先要问,你为什么使用 3 个环境和持续集成(你的原因很重要)?您是否正在执行自动化测试?你的代码分支是如何设置的?您是否发布某些功能,或只是进行日常维护修复?
回答这些问题将使您了解为什么需要发布以及应该如何进行。
例如,如果您只有一个用于集成和执行自动化测试的暂存环境,那么拥有一个运行持续集成测试的单独代码分支还不够吗?
如果登台是为了执行某种用户验收,您的公司是否有专门的测试团队或者他们是敏捷团队的成员?
正如您正确指出的那样,如果代码始终经过集成和测试,那么为什么您需要时间表并从一个环境转移到另一个环境,除非您不确定功能的实际“完成”状况?我的意思是,并不是您不确定该功能的编码是否正确,而是您担心它会引入其他错误吗?它能与生产中的代码很好地集成吗?从根本上解决问题。不要仅仅因为您认为您应该拥有 X 环境或者测试应该在另一个组中而这样做。也许解决这些问题的办法就是相应地调整“完成”的定义。
正如您所看到的,有很多很多因素可以使您的组织变得独一无二。没有一种正确的方法可以回答这个问题,只有您愿意接受的权衡。
我发现,在多个环境中由不同层次的人员组成的团队往往会反敏捷并适得其反。最好的办法是分析你的担忧,并尝试找到解决它们的方法(例如扩大“完成”的定义,或者分解各种组织并将它们放在团队中,消除尽可能多的环境并简化过程等)。这在您的组织中可能是不可能的,因此您可能必须做出权衡。
This is a very loaded question, and depends on your company to be sure. I first have to ask, why are you using 3 environments and continuous integration (your reason matters)? Are you performing automated tests at all? How are your code branches setup? Do you release for some functionality, or just routine maintenance fixes?
Answering these will give you an idea of why you need a release, and how you should go about it.
For example, if you only have a staging environment for the purpose of integration and perform automated tests, then can't having a separate code branch in which continuous integration tests run be sufficient?
If staging is to perform some sort of user acceptance, does your company have a dedicated testing team or are they members of the agile teams?
As you correctly stated, if the code is always integrated and tested, then why would you need a timetable and moving from environment to environment unless you were unsure about the actual "done" condition of the features? By that, I mean that it's not that you're unsure that the feature was coded correctly, but are you worried it will introduce other bugs? Will it integrate well with code already in production? Address the concerns at the root of the problem. Don't just do it because you think you're supposed to have X environments or testing should be in another group. Maybe the solutions to those problems may be to adjust the definition of "done" accordingly.
As you can see there are many, many factors that will make your organization unique. There is no one right way to answer this, just tradeoffs that you are willing to accept.
I find that having multiple environments with teams of people working at the various layers tends to be anti-agile and counterproductive. The best bet is to analyze your concerns, and try to find ways to solve them (such as expanding the definition of "done", or breaking up the various organizations and putting them on the teams, eliminating as many environments as possible and simplifying the process, etc). That may not be possible in your organization, so you may have to live with tradeoffs.