brenobcampos
    • Create new note
    • Create a note from template
      • Sharing URL Link copied
      • /edit
      • View mode
        • Edit mode
        • View mode
        • Book mode
        • Slide mode
        Edit mode View mode Book mode Slide mode
      • Customize slides
      • Note Permission
      • Read
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Write
        • Only me
        • Signed-in users
        • Everyone
        Only me Signed-in users Everyone
      • Engagement control Commenting, Suggest edit, Emoji Reply
    • Invite by email
      Invitee

      This note has no invitees

    • Publish Note

      Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

      Your note will be visible on your profile and discoverable by anyone.
      Your note is now live.
      This note is visible on your profile and discoverable online.
      Everyone on the web can find and read all notes of this public team.
      See published notes
      Unpublish note
      Please check the box to agree to the Community Guidelines.
      View profile
    • Commenting
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
      • Everyone
    • Suggest edit
      Permission
      Disabled Forbidden Owners Signed-in users Everyone
    • Enable
    • Permission
      • Forbidden
      • Owners
      • Signed-in users
    • Emoji Reply
    • Enable
    • Versions and GitHub Sync
    • Note settings
    • Note Insights New
    • Engagement control
    • Make a copy
    • Transfer ownership
    • Delete this note
    • Save as template
    • Insert from template
    • Import from
      • Dropbox
      • Google Drive
      • Gist
      • Clipboard
    • Export to
      • Dropbox
      • Google Drive
      • Gist
    • Download
      • Markdown
      • HTML
      • Raw HTML
Menu Note settings Note Insights Versions and GitHub Sync Sharing URL Create Help
Create Create new note Create a note from template
Menu
Options
Engagement control Make a copy Transfer ownership Delete this note
Import from
Dropbox Google Drive Gist Clipboard
Export to
Dropbox Google Drive Gist
Download
Markdown HTML Raw HTML
Back
Sharing URL Link copied
/edit
View mode
  • Edit mode
  • View mode
  • Book mode
  • Slide mode
Edit mode View mode Book mode Slide mode
Customize slides
Note Permission
Read
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Write
Only me
  • Only me
  • Signed-in users
  • Everyone
Only me Signed-in users Everyone
Engagement control Commenting, Suggest edit, Emoji Reply
  • Invite by email
    Invitee

    This note has no invitees

  • Publish Note

    Share your work with the world Congratulations! 🎉 Your note is out in the world Publish Note

    Your note will be visible on your profile and discoverable by anyone.
    Your note is now live.
    This note is visible on your profile and discoverable online.
    Everyone on the web can find and read all notes of this public team.
    See published notes
    Unpublish note
    Please check the box to agree to the Community Guidelines.
    View profile
    Engagement control
    Commenting
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    • Everyone
    Suggest edit
    Permission
    Disabled Forbidden Owners Signed-in users Everyone
    Enable
    Permission
    • Forbidden
    • Owners
    • Signed-in users
    Emoji Reply
    Enable
    Import from Dropbox Google Drive Gist Clipboard
       Owned this note    Owned this note      
    Published Linked with GitHub
    • Any changes
      Be notified of any changes
    • Mention me
      Be notified of mention me
    • Unsubscribe
    # Things I've learned refining work items in software projects *"I'm responsible about what I write, not about what you understand."* - **No!!!** Everyone is responsable about the effectiveness of the communication. And that's it what about refining is: alignment, clear and objective communication! Frequentily while talking with friends or customers that are about to adopt agile methodologies I realize that are a lot of doubts about refining of work items (or grooming, but it was discontinued and removed from the [Scrum Guide]( "http://www.scrumguides.org/scrum-guide.html?lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3B973ymQSnT12L8S%2BZYU0F%2Bw%3D%3D") since 2013). There are also doubts about the importance of the process: *"Why I have to use it on my team?"*, *"Is that really useful?"*. I belive that the refining process is extremely important to a good and healthy project or process. The main goal is to make work items better described with less uncertain. It's execution aims to create a better alignment of the expectations of all interested parts, so everyone could see what will be constructed. There are a lot of benefits, like: - With better described work items the conclusion forecast it's clearer; - The chance of an unforeseen event appear during the development process that will become a block will be smaller; - Everyone in the development team will be aware of all the steps to finish the work item. The cloudy point for a lot of people is the writing and the understanding of the work item. A good understanding about the subject, and what I believe, is: - If the understanding occur during the same moment, the planning, the replenishment, refining or any other name you may use. And you begin to write the work item, adding doubts, acceptance criterias and everything else at this moment. I believe that your **refining is a meeting** (although all meetings are - or at least should be - a process); - If your understanding about the work item comes before the meeting, a few days earlier you start to look for the impediments, doubts, acceptance criterias, dependencies, integrations and everything else so the work item will be close to ready to dev at the moment of the meeting. I mean, you're doing a **process** of understanding of the work item, so your **refining will became a process**. And why I'm explaining it? 'Cause my intent with this post is to defend and show the advantages to treat the refining process as a process and not as a meeting. But before we start, what is a process? One of the possible meaning is: *["a continuous action, operation, or series of changes taking place in a definite manner"](http://www.dictionary.com/browse/process)*. In that case, **the goal of a refinement process is to generate work items ready to be developed**. OK, so what's the reason to transform the refining into a process, and not a meeting? I believe that are some reasons why the process is better than the meeting, and it creates better described work items as an output. Those reasons disturb less the development team, they occupy more time at the process manager, although flexibilize for all the others. It's very good, right? But how? When you define a refinement process, making clearly all the steps before and after the meeting, you will achieve some crucial points: - You will be better prepared to the meeting: knowing that you will facilitate a meeting you will make a prep (at least, I hope so), right? So, when you define the process correctly, you know all the steps you will take to be prepared to the refining. A good meeting is influenced by those factors: a well definied schedule, it has to be time-boxed, you only call the people that really need to be there, and last but not least a facilitator to make the meeting fluid; - Optimize the team time: when you get prepared to a refining, writing the work items before, making researches and making notes of the possible doubts you are reducing the time that everyone will need to be together doing it. Optimizing the time of all the involved; - Reduce the possibility of daydreams: how many times you were talking about a work item, and suddenly someone starts to daydream during the meeting? Talking about things that are not related to the main goal of the item. Bringing work items better described to the meeting at the moment of the discussions it will reduce the chances of someone starts a deliberation of something that is not at the work item objective. ### Nice! And how to do a refining? A very important thing is to define the process. I usually say that I divided the refining process in two parts. The pre-refining and the refining meeting (or, just refining to be easier). The first part is to understand what will be done, the second one is the meeting with the team so everyone could have the same understanding about the work item. #### Pre-refining Firstly, as the responsible of the process and helping the product person I usually study the business scope so I can understand the goal of the work item, thus to have the minimum knowledge to describe and question acceptance criterias, or implementation ways (talking about business, not code). The acceptance criterias are added to the work item, to make it clear to all the involved what is needed to the item be completed, I mean, the work item be considered done. Making this way, it's already possible to note down doubts of the product inside the work item. And that's the second step, talk with the product manager or owner. Passing the card through the first strainer and noting down doubts that could appear related to the project scope or the work item. Those questions are noted on the item, in a way that the team could see. Then, talk with one of the developers about the work item. Show him or her what you have noted down, this is the second strainer. With that conversation with the developer some technical doubts appears, integration doubts for example. The main idea of that step is to bring the work item minimum written to the discussion, so everyone's time is optimized. You already talked with the business specialist and with one of the technical specialists, in theory the work items now have enough information. #### OK! I already wrote all the doubts, acceptance criterias and everything else! May the developer start the development? Ops! Calm down young padawan, it's not that way! You validate the hypothesis of the work item with only two people. I guess your team probably has more people than that. Now we're ready to the refining meeting! At this moment we have to get the team agreement, that everything that was wrote makes sense and is deliverable. The moment that the product manager gives his word saying "Yeah! That's it what I want as an output for the work item.". That's the moment when the quality analyst and the developers agrees how the work item will be developed and tested. #### How to do a refinining? First of all: bring the right people to the right meeting. As we're talking about development it's very important that some devs are in the room. We'll talk about how it will be tested, so a quality assurance person is desirable. We'll also discuss business evolution, so the product manager or product owner must be there. However, there's no need that all developers participate at the same refining meeting. The work item must be written in a way clear enough that anyone that's not in the meeting could understand and develop what must be done. We have a rule in the team I'm working now: our maximum developer participation is 50% of our developers. See, it's the maximum capacity, we could do the meeting with less. This moment must be synchronous, no email nor wiki. Everyone in the same room, whether face to face or remote. Making this way we rise our chances to align everything faster, and to leave no doubts behind. Talking synchronously people use to understand better and participate more on the discussions. Another two crucial points that must walk side by side: goal and time box! Before the work item discussion, set clearly what's the main goal of the meeting and how much time do you have to do so. Something like: "Folks, we have 3 work items that must be refined. We have twenty minutes to each one!". Thus, the team knows that they will have to optimize the time so the discussion must create outputs inside this time box. Another nice thing to do is, put a clock in a display, with the discussion time box. Just do a ["20 minutes timer"](https://www.google.com.br/search?q=google+20+minutes+timer&oq=google+20+minutes+timer&lipi=urn%3Ali%3Apage%3Ad_flagship3_pulse_read%3BwclIyEZMRASoUky7rC%2Fhcw%3D%3D) in the google search and it will count for you. This way, as the team becomes more mature, they will always take care of the discussions' time box. Remember, this is the team understanding moment. When everyone must be committed with what will be and how it will be delivered. The output must be a good written work item, so they could be pulled to the development cycle. I believe that in the end of the 20 minutes (for example), if the team is not sure about the deliverable or if that's a lot of doubts that won't be answered in 10 more minutes the work item must be pre-refined again (but now you have more information). You don't want an uncertain work item in your development flow, do you? And how about you? How do you understand the work item scope? How do you describe what must be developed? A meeting? An event? A process? Tell me how! I'd love to know how.

    Import from clipboard

    Paste your markdown or webpage here...

    Advanced permission required

    Your current role can only read. Ask the system administrator to acquire write and comment permission.

    This team is disabled

    Sorry, this team is disabled. You can't edit this note.

    This note is locked

    Sorry, only owner can edit this note.

    Reach the limit

    Sorry, you've reached the max length this note can be.
    Please reduce the content or divide it to more notes, thank you!

    Import from Gist

    Import from Snippet

    or

    Export to Snippet

    Are you sure?

    Do you really want to delete this note?
    All users will lose their connection.

    Create a note from template

    Create a note from template

    Oops...
    This template has been removed or transferred.
    Upgrade
    All
    • All
    • Team
    No template.

    Create a template

    Upgrade

    Delete template

    Do you really want to delete this template?
    Turn this template into a regular note and keep its content, versions, and comments.

    This page need refresh

    You have an incompatible client version.
    Refresh to update.
    New version available!
    See releases notes here
    Refresh to enjoy new features.
    Your user state has changed.
    Refresh to load new user state.

    Sign in

    Forgot password

    or

    By clicking below, you agree to our terms of service.

    Sign in via Facebook Sign in via Twitter Sign in via GitHub Sign in via Dropbox Sign in with Wallet
    Wallet ( )
    Connect another wallet

    New to HackMD? Sign up

    Help

    • English
    • 中文
    • Français
    • Deutsch
    • 日本語
    • Español
    • Català
    • Ελληνικά
    • Português
    • italiano
    • Türkçe
    • Русский
    • Nederlands
    • hrvatski jezik
    • język polski
    • Українська
    • हिन्दी
    • svenska
    • Esperanto
    • dansk

    Documents

    Help & Tutorial

    How to use Book mode

    Slide Example

    API Docs

    Edit in VSCode

    Install browser extension

    Contacts

    Feedback

    Discord

    Send us email

    Resources

    Releases

    Pricing

    Blog

    Policy

    Terms

    Privacy

    Cheatsheet

    Syntax Example Reference
    # Header Header 基本排版
    - Unordered List
    • Unordered List
    1. Ordered List
    1. Ordered List
    - [ ] Todo List
    • Todo List
    > Blockquote
    Blockquote
    **Bold font** Bold font
    *Italics font* Italics font
    ~~Strikethrough~~ Strikethrough
    19^th^ 19th
    H~2~O H2O
    ++Inserted text++ Inserted text
    ==Marked text== Marked text
    [link text](https:// "title") Link
    ![image alt](https:// "title") Image
    `Code` Code 在筆記中貼入程式碼
    ```javascript
    var i = 0;
    ```
    var i = 0;
    :smile: :smile: Emoji list
    {%youtube youtube_id %} Externals
    $L^aT_eX$ LaTeX
    :::info
    This is a alert area.
    :::

    This is a alert area.

    Versions and GitHub Sync
    Get Full History Access

    • Edit version name
    • Delete

    revision author avatar     named on  

    More Less

    Note content is identical to the latest version.
    Compare
      Choose a version
      No search result
      Version not found
    Sign in to link this note to GitHub
    Learn more
    This note is not linked with GitHub
     

    Feedback

    Submission failed, please try again

    Thanks for your support.

    On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?

    Please give us some advice and help us improve HackMD.

     

    Thanks for your feedback

    Remove version name

    Do you want to remove this version name and description?

    Transfer ownership

    Transfer to
      Warning: is a public team. If you transfer note to this team, everyone on the web can find and read this note.

        Link with GitHub

        Please authorize HackMD on GitHub
        • Please sign in to GitHub and install the HackMD app on your GitHub repo.
        • HackMD links with GitHub through a GitHub App. You can choose which repo to install our App.
        Learn more  Sign in to GitHub

        Push the note to GitHub Push to GitHub Pull a file from GitHub

          Authorize again
         

        Choose which file to push to

        Select repo
        Refresh Authorize more repos
        Select branch
        Select file
        Select branch
        Choose version(s) to push
        • Save a new version and push
        • Choose from existing versions
        Include title and tags
        Available push count

        Pull from GitHub

         
        File from GitHub
        File from HackMD

        GitHub Link Settings

        File linked

        Linked by
        File path
        Last synced branch
        Available push count

        Danger Zone

        Unlink
        You will no longer receive notification when GitHub file changes after unlink.

        Syncing

        Push failed

        Push successfully