<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/">
  <channel>
    <title>Teams - All Subjects Matter</title>
    <link>https://www.allsubjectsmatter.nl/tag/teams/</link>
    <description>How Remco Loup, CEO/CTO of 333travel, looks at problems and solves them: with data, with teams, and with whatever technology fits.</description>
    <language>en</language>
    <image><url>https://www.allsubjectsmatter.nl/images/icon.png</url><title>All Subjects Matter</title><link>https://www.allsubjectsmatter.nl/</link></image>
    <lastBuildDate>Tue, 10 Sep 2024 22:03:00 +0200</lastBuildDate>
    <atom:link href="https://www.allsubjectsmatter.nl/tag/teams/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Scrum and the army, a different kind of mission.</title>
      <link>https://www.allsubjectsmatter.nl/scrum-and-the-army-a-different-kind-of-mission/</link>
      <guid isPermaLink="false">66e14bc5aea2140001bf046b</guid>
      <pubDate>Tue, 10 Sep 2024 22:03:00 +0200</pubDate>
      <dc:creator>&lt;![CDATA[Remco Loup.]]></dc:creator>
      <category>&lt;![CDATA[Teams]]></category>
      <description>&lt;![CDATA[Scrum isn’t a quick fix. It’s like planning a mission like the army. A sprint isn’t about speed, it’s about precision, teamwork, and adapting to the unknowns along the way.]]></description>
      <media:content url="https://www.allsubjectsmatter.nl/scrum-and-the-army-a-different-kind-of-mission/feature.jpg" medium="image"/>
      <content:encoded>&lt;![CDATA[<p>A lot is being written about Scrum already. Scrum is dead and so on. Well when you have a vacancy for a &ldquo;Manager&rdquo; a &ldquo;Janitor&rdquo; or some other clearly non Scrum title but decide to call it a vacancy for a Product Owner or a Scrum Master. It&rsquo;s you who are fucking up. just renaming the beast isn&rsquo;t going to make it work like magic.</p>
<p>We’ve all heard it: <strong>&ldquo;Let’s do Scrum, and Poof! We’ll deliver value in no time!&rdquo;</strong> (Spoiler alert) it doesn’t work like that. Scrum isn’t some magic potion that turns chaos into order just by sprinkling a few ceremonies around. It takes a lot more than following the steps in the Scrum guide to get to real results. It’s all about <strong>teamwork, discipline, and having the right people in place</strong>and believe it or not, it’s not that different from how things are trained in the army ;-).</p>
<h2 id="sprint-equals-mission">Sprint equals Mission</h2>
<p>Let’s start once again with the elephant in the room, the word “sprint.” We’re not actually running a race, are we? This term still suggests rushing to me, but in reality, we’re aiming for a <strong>deliberate, well-planned mission</strong>. Like in the army, it’s not about speed it’s about precision and success. A well-executed mission isn’t just thrown together, it is strategically planned and relies on everyone playing their role and pulling their weight to the finish line.</p>
<p>Doing a mission requires adaptation along the way. You are going to encounter unknown&rsquo;s and you need to be prepared to deal with them instead of avoid/ignoring them and fuckup your mission.</p>
<blockquote class="pull-quote"><p>Solving unknowns as a **<u>TEAM</u>**is what&rsquo;s going to make an Agile/Scrum approach work.</p>
</blockquote>
<h2 id="specialized-but-all-round">Specialized, but all-round</h2>
<p>In both Scrum teams and military units, we all have our own specialties and advantages. But here’s the kicker. We deliver value as a team. Just like the army, where soldiers are cross-trained to fill in gaps, <strong>we’re all-rounders too</strong>. If something goes wrong, we don’t just throw our hands up and call it a day. We adapt and get it done, together (as a team!).</p>
<h2 id="scrum-doesnt-work-without-the-right-mindset-scrum-doesne28099t-work-without-the-right-mindset">Scrum doesn’t work without the right mindset {#scrum-doesn%E2%80%99t-work-without-the-right-mindset}</h2>
<p>Scrum doesn’t run itself. Just adopting Scrum won’t suddenly create value. I’ve seen it happen. People think if they run the ceremonies and just follow some Scrum related steps, magic will happen. But without <strong>your team managing the process itself</strong>, it’s like trying to run an army mission with no captain, no briefing, and everyone just winging it. Sure, you might finish, but what have you actually done?</p>
<p>The army knows this well. There’s a structure, leaders who guide, but also a reliance on every team member being proactive. In Scrum, you need the right mix: a <strong>Product Owner with a mandate and an actual vision that backs the company</strong>, a <strong>Scrum Master who keeps the flow</strong> going, and a <strong>team that’s not just doing tasks but thinking about the bigger picture</strong>. You will achieve this mindset only by working together and keep talking as a single team.</p>
<h2 id="a-team-that-talks-about-the-hard-stuff">A team that talks about the hard stuff</h2>
<p>As a team we need to work together, talk openly, and <strong>tackle the hard stuff</strong>. I’m not talking about easy conversations where everyone agrees. I mean <strong>difficult, uncomfortable discussions</strong> about what’s not working or clear, what needs to improve, and how to get there. Only then right kind of delivered value is going to surface.</p>
<blockquote class="pull-quote"><p>Discuss unknowns during your mission and get rid of them. Upholding a &ldquo;daily scrum&rdquo; wont magically teach that by itself.</p>
</blockquote>
<p>How do you think Apple created the iPhone? Jobs and Ive didn’t sit around patting each other on the back. They argued, they iterated, they pushed each other until the product was <strong>right</strong>. And that’s how Scrum teams should operate. You don’t just do what’s easy or what’s fast. You work through the problems, challenge each other, and iterate until you’ve nailed it. You also ask a lot of (WHY) questions so you understand where each person is coming from.</p>
<h2 id="briefings-and-debriefings-are-crucial-but-only-if-you-commit-to-them">Briefings and debriefings are crucial, but only if you commit to them</h2>
<p>In Scrum, we have our <strong>Planning (briefing)</strong> and our <strong>Review and Retrospective (debriefing)</strong>. Sound familiar? You can’t just jump into the mission without a game plan, and you sure as hell can’t improve without looking back at what went wrong or right. But, and here’s the caveat <strong>you have to actually use these sessions</strong> for what they’re intended. Too often, they’re rushed or treated as checkboxes. In the army, a failed briefing or debrief could cost lives, in Scrum, it’ll cost you the ability to iterate and test on things for the better the next mission. Take them seriously, or they’re just empty meetings not delivering any value.</p>
<h2 id="teamwork-is-everything">Teamwork is everything</h2>
<p>At the end of the day, both Scrum and military missions succeed because of <strong>teamwork</strong>. You need people who are committed, who communicate, and who have each other’s backs. Without that, you’re just a bunch of people shouting the are doing Scrum, and that doesn’t deliver any value at all. Scrum’s not about heroes, it’s about the <strong>collective goal</strong>. You win together, you lose together.</p>
<h2 id="scrum-isnt-a-holy-hammer-that-solves-everything">Scrum isn&rsquo;t a holy hammer that solves everything.</h2>
<p>So, here’s the thing. <strong>Scrum is a framework</strong>. It’s a humanly created structure designed to help teams work together efficiently. But just doing Scrum isn’t going to magically produce value for your company. You need the <strong>right people</strong>, the <strong>right mindset</strong>, and a clear <strong>mission</strong> that everyone’s working towards. Otherwise, you’re just doing tasks without any thought behind it—and that’s a recipe for failure.</p>
<p>Another thing: adapt your style of working to the needs of your business. there is a structure set by scrum you can adapt to. But dont be afraid to change some things if it works for the better for your company. The goal is creating a team that likes to work in the created structure and is able to deliver value instead of features.</p>
<p>You as a team or even a Company need to <strong>make it work</strong> by putting the right people (with a vision and mandate) and processes in place, or you’re setting yourself up for a crash landing not delivering anything then frustration.</p>
<p>Dont let solo managers trying to make themself look good take over your thrive for value and actually helping the business. Not hurting the business.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Hotfixing with Docker Artifacts in a Git Flow Strategy</title>
      <link>https://www.allsubjectsmatter.nl/hotfixing-with-docker-artifacts-in-a-single-branch-strategy/</link>
      <guid isPermaLink="false">65d330e818945800013cc243</guid>
      <pubDate>Tue, 20 Feb 2024 09:53:55 +0100</pubDate>
      <dc:creator>&lt;![CDATA[Remco Loup.]]></dc:creator>
      <category>&lt;![CDATA[Teams]]></category><category>&lt;![CDATA[Under the hood]]></category>
      <description>&lt;![CDATA[Master hotfixes in Kubernetes with Docker. Learn to rapidly deploy critical fixes in a CI/CD pipeline focusing on streamlined branching. Perfect for tackling urgent issues without disrupting flow. Dive in now.]]></description>
      <media:content url="https://www.allsubjectsmatter.nl/hotfixing-with-docker-artifacts-in-a-single-branch-strategy/feature.jpg" medium="image"/>
      <content:encoded>&lt;![CDATA[<p>This post is a follow up on GIT deployment strategies within Kubernetes environments. Make sure you read this post first:</p>
<figure class="bookmark"><a class="bookmark__link" href="https://www.allsubjectsmatter.nl/ci-cd-pipeline-with-docker-and-git-branching-strategy/"><span class="bookmark__body"><span class="bookmark__title">CI/CD pipeline with Docker and Git branching strategy</span><span class="bookmark__description">Explore advanced CI/CD with Docker &amp; Git. Master deploying Docker artifacts via Git branching. Dive into strategies for DEV, STAGING, LIVE environments. Perfect your pipeline now!</span><span class="bookmark__meta"><picture><source type="image/avif" sizes="25px"><source type="image/webp" sizes="25px"><img src="https://www.allsubjectsmatter.nl/hotfixing-with-docker-artifacts-in-a-single-branch-strategy/bookmarks/01-icon_hu_9b466dd874965fcb.webp" alt="" class="bookmark__icon" width="50" height="50" loading="lazy" decoding="async">
  </picture><span>All Subjects Matter</span><span>Remco Loup.</span></span></span><span class="bookmark__thumb"><picture><source type="image/avif" media="(max-width: 47.99rem)" sizes="calc(100vw - 2.5rem)"><source type="image/webp" media="(max-width: 47.99rem)" sizes="calc(100vw - 2.5rem)"><source type="image/avif" sizes="250px"><source type="image/webp" sizes="250px"><img src="https://www.allsubjectsmatter.nl/hotfixing-with-docker-artifacts-in-a-single-branch-strategy/bookmarks/01-thumb_hu_4b0a9042ec0e16fc.webp" alt="" width="500" height="435" loading="lazy" decoding="async">
  </picture></span></a></figure>

<p>In a CI/CD pipeline centered around Docker artifacts with the focus on a singular branch, implementing an efficient hotfix strategy requires a small deviation to ensure rapid deployment of critical fixes. Let&rsquo;s work out our approach to hotfixing in this Docker-centric environment, given the explained branching architecture in the above post.</p>
<figure class="figure"><picture><source type="image/avif" sizes="(max-width: 47.99rem) calc(100vw - 2.5rem), 720px"><source type="image/webp" sizes="(max-width: 47.99rem) calc(100vw - 2.5rem), 720px"><img src="https://www.allsubjectsmatter.nl/hotfixing-with-docker-artifacts-in-a-single-branch-strategy/images/Git-branches-and-docker-environments-ci_cd-1_hu_17e1895a357c0fa7.webp" alt="" width="560" height="378" data-zoom-src="https://www.allsubjectsmatter.nl/hotfixing-with-docker-artifacts-in-a-single-branch-strategy/images/Git-branches-and-docker-environments-ci_cd-1_hu_7bd9f2a51f818afa.webp" loading="lazy" decoding="async">
  </picture><figcaption>Graphical reference of our branching and deployment strategy</figcaption></figure>

<h2 id="identifying-the-need-for-a-hotfix">Identifying the need for a Hotfix</h2>
<p>Hotfixes are a critical part of maintaining the stability and reliability of any software in production. They are typically required under specific circumstances that demand immediate attention. Understanding when to implement a hotfix is key to managing your CI/CD pipeline effectively, especially when using Docker artifacts and streamlined branching strategies like focusing primarily on a Single branch. Here are our scenarios where a hotfix can be necessary:</p>
<ol>
<li><strong>Security Vulnerabilities:</strong> One of the most urgent triggers for a hotfix is the discovery of a security vulnerability within your application. Whether it&rsquo;s an exposed data risk, a potential for unauthorized access, or any flaw that could be exploited maliciously, quick action is required to patch the vulnerability and protect your users and data.</li>
<li><strong>Critical Bugs Impacting User Experience:</strong> If a significant bug slips through your testing processes and reaches production, it can severely impact the user experience. This could be anything from a broken core functionality that prevents users from using your application as intended to severe performance issues leading to timeouts or crashes. If the issue significantly affects your user base, a hotfix is warranted.</li>
<li><strong>Compliance Issues:</strong> Certain applications may have legal or regulatory requirements. If a compliance issue is identified that could affect your legal standing or user privacy, addressing it swiftly through a hotfix becomes a priority to avoid penalties or breaches of trust.</li>
<li><strong>Data Loss Risks:</strong> Scenarios where there&rsquo;s a risk of data loss or corruption for users require immediate attention. Whether it&rsquo;s a flaw in how data is saved, updated, or retrieved, a hotfix should be deployed to mitigate any potential loss or corruption of user data.</li>
<li><strong>Payment or Transaction Failures:</strong> For applications dealing with payments or any form of transactions, issues that prevent users from completing transactions or that might lead to financial discrepancies are critical. Such problems not only affect user trust but can also have financial repercussions for both users and the service provider, necessitating a hotfix.</li>
</ol>
<h2 id="deploying-a-hotfix">Deploying a Hotfix</h2>
<p>When a critical issue is identified within the production environment, the immediate goal is to develop, test, and deploy a hotfix as quickly as possible. Given that our primary branch for development is MAIN and that we generate Docker artifacts for deployment, we need a process that allows for rapid intervention without disrupting the ongoing work.</p>
<ol>
<li><strong>Creating a Hotfix Branch</strong>: Instead of branching off from your Production branch (as LIVE is not represented anymore in the Git repository in this strategy), the hotfix branch is created from the commit currently deployed in production. This ensures that the Hotfix is based on the exact state of the version running on the production environment. The specific commit can be identified through tags or Docker image labels that correlate with the production deployment.</li>
<li><strong>Developing and Testing the Hotfix</strong>: The critical fix is developed within this hotfix branch. The urgency of the situation necessitates a focused approach, targeting the problem with minimal changes to expedite the testing and deployment process. Despite the rush, adherence to the Definition of Done (DoD) is crucial to ensure the stability and reliability of the hotfix. This can mean a condensed version of the DoD, prioritizing critical tests and checks that ensure the fix will not introduce new issues.</li>
<li><strong>Creating a Docker Artifact for the Hotfix</strong>: Once the hotfix meets the agreed DoD criteria, an automated process builds a Docker image from the hotfix branch. This Docker artifact is then tagged appropriately, indicating its purpose and urgency.</li>
<li><strong>Deploying the Hotfix</strong>: The newly created Docker artifact is deployed directly into the production environment, bypassing the usual DEV to STAGING to PRODUCTION environment strategy. This deployment is only justified by the critical nature of the fix and the testing it has undergone.</li>
<li><strong>Merging Back and Maintaining Consistency</strong>: After the hotfix is successfully running in production, it&rsquo;s essential to merge the changes back into the MAIN branch and any other relevant branches or tags. Only this step ensures that the fix is incorporated into the ongoing development work and future releases, preventing regression!!</li>
</ol>
<h2 id="ensuring-rapid-deployment-and-minimizing-disruption">Ensuring Rapid Deployment and Minimizing Disruption</h2>
<ul>
<li><strong>Automated Processes</strong>: Automation plays a key role in this strategy, from the creation of the Docker artifact to its deployment. Automated tests, builds, and deployments ensure that the hotfix process is as fast and efficient as possible.</li>
<li><strong>Communication and Monitoring</strong>: Rapid deployment of hotfixes requires clear communication among team members and close monitoring of the production environment post-deployment to ensure the fix is effective and does not introduce new issues.</li>
<li><strong>Documentation and Review</strong>: Documenting the hotfix process and conducting post-mortem reviews help in refining the hotfix strategy, ensuring that the team can respond even more effectively to future issues.</li>
</ul>
<h2 id="conclusion">Conclusion</h2>
<p>In a CI/CD pipeline using Docker and primarily operating through Git Flow, hotfixing requires a streamlined approach that leverages automation and focuses on rapid, targeted fixes. By creating hotfix branches based on the production-deployed commit, developing and testing fixes according to an well defined DoD, and deploying Docker artifacts directly into production, teams can address critical issues swiftly while ensuring the ongoing stability and integrity of their application.</p>
]]></content:encoded>
    </item>
    <item>
      <title>CI/CD pipeline with Docker and Git branching strategy</title>
      <link>https://www.allsubjectsmatter.nl/ci-cd-pipeline-with-docker-and-git-branching-strategy/</link>
      <guid isPermaLink="false">65d3035a18945800013cc216</guid>
      <pubDate>Tue, 20 Feb 2024 09:50:55 +0100</pubDate>
      <dc:creator>&lt;![CDATA[Remco Loup.]]></dc:creator>
      <category>&lt;![CDATA[Teams]]></category><category>&lt;![CDATA[Under the hood]]></category>
      <description>&lt;![CDATA[Exploring CI/CD with Docker &amp; Git. Mastering deploying Docker artifacts via Git branching. Dive into strategies for DEV, STAGING, PROD environments. Perfect your pipeline!]]></description>
      <media:content url="https://www.allsubjectsmatter.nl/ci-cd-pipeline-with-docker-and-git-branching-strategy/feature.jpg" medium="image"/>
      <content:encoded>&lt;![CDATA[<p>Let&rsquo;s dive into managing a CI/CD pipeline using Docker with a focus on Git branching strategy that involves development (DEV), staging (STAGING), and production (LIVE) branches. Our goal is to clarify the role each branch plays in the process, particularly how Docker artifacts are created and managed within this framework.</p>
<h2 id="docker-deployment-using-git-flow-with-multiple-branches">Docker deployment using Git Flow with multiple branches</h2>
<p>The core of our branching strategy involved three branches:</p>
<ol>
<li><strong>DEV</strong>: This is where all development work happens. Every new feature, bug fix, or enhancement starts in a feature branch, branched off from DEV. Once the work on a feature branch is complete, reviewed and meets the Definition of Done (DoD), it&rsquo;s merged back into DEV.</li>
<li><strong>STAGING</strong>: This branch mirrors a pre-production environment. It&rsquo;s where integrated features from DEV get tested as a whole and accepted by stakeholders to ensure they work together seamlessly.</li>
<li><strong>MASTER</strong>: The branch that reflects the current state of our live environment. Only thoroughly tested and stakeholder-approved changes from STAGING make it to Production.</li>
</ol>
<figure class="bookmark"><a class="bookmark__link" href="https://dev.to/preethamsathyamurthy/git-branching-and-branching-strategy-4mci" rel="noopener"><span class="bookmark__body"><span class="bookmark__title">Git Branching and Branching Strategy</span><span class="bookmark__description">In this post, we will go over why branching is required, the difference between development, staging…</span><span class="bookmark__meta"><picture><source type="image/avif" sizes="25px"><source type="image/webp" sizes="25px"><img src="https://www.allsubjectsmatter.nl/ci-cd-pipeline-with-docker-and-git-branching-strategy/bookmarks/01-icon_hu_4e78872e34382e92.webp" alt="" class="bookmark__icon" width="50" height="50" loading="lazy" decoding="async">
  </picture><span>DEV Community</span><span>Preetham</span></span></span></a></figure>

<p>This was our variation of a Git Flow strategy, we used until now. When you start working with Artifacts this all changes back to a normal Git Flow structure. We still have environments running (Dev, Staging and Prod). The real difference is that code commits get done once instead of getting merged into a branch running on Staging or in Production.</p>
<p>Instead we now have one Branch we called it Main. This is where a runnable artifact gets created after a successful code merge using Docker images. Everything deployed into our Staging or Production environment is a specific version of an earlier created Artifact.</p>
<p>The biggest change is that STAGING and PROD aren’t branches anymore where you merge code into. They have instead became environments that run a specific version of a Docker image. This all has its own challenges, especially when you need to Hotfix. Hotfixing has it’s own post which you can read after this post. Lets break down all of this without introducing hotfixing step by step first. It is comprehensive enough already.</p>
<h2 id="what-is-an-artifact">What is an Artifact?</h2>
<p>A Docker artifact, often referred to interchangeably with a Docker image, is a lightweight, standalone, executable package that includes everything needed to run a piece of software, including the code, a runtime, libraries, environment variables, and config files. In simple terms, it&rsquo;s like a snapshot of your application and its environment, bundled together, ready to be deployed and run anywhere Docker is installed, ensuring consistency across different environments.</p>
<h2 id="the-importance-of-dod-when-merging-code">The Importance of DoD When Merging code</h2>
<p>A comprehensive and clear Definition of Done (DoD) plays a pivotal role in this new process, even more when merging changes into a single branch that triggers a Docker image which should be runnable and deployable:</p>
<ul>
<li><strong>Quality Assurance</strong>: The DoD ensures that all changes, including new features, enhancements, and hotfixes merged back into MAIN, meet a consistent quality standard. This includes code quality checks, successful completion of automated tests, and adherence to security best practices.</li>
<li><strong>Preventing Regression</strong>: By applying the DoD to all merges into MAIN, the team can prevent regressions and ensure that new changes do not negatively affect existing functionality. This is crucial for maintaining the integrity and stability of the codebase.</li>
<li><strong>Streamlining Deployments</strong>: A clear and comprehensive DoD facilitates smoother deployments by ensuring that only fully vetted and ready-to-deploy changes are merged into MAIN. This reduces the risk of wasting resources on building Docker images that are bugged or broken, and therefore contributes to more efficient and reliable artifacts.</li>
</ul>
<figure class="figure"><picture><source type="image/avif" sizes="(max-width: 47.99rem) calc(100vw - 2.5rem), 720px"><source type="image/webp" sizes="(max-width: 47.99rem) calc(100vw - 2.5rem), 720px"><img src="https://www.allsubjectsmatter.nl/ci-cd-pipeline-with-docker-and-git-branching-strategy/images/Git-branches-and-docker-environments-ci_cd_hu_17e1895a357c0fa7.webp" alt="" width="560" height="378" data-zoom-src="https://www.allsubjectsmatter.nl/ci-cd-pipeline-with-docker-and-git-branching-strategy/images/Git-branches-and-docker-environments-ci_cd_hu_7bd9f2a51f818afa.webp" loading="lazy" decoding="async">
  </picture><figcaption>Here a graphical presentation of our Git Flow strategy and how this flows trough the different environments we have.</figcaption></figure>

<h2 id="creating-and-managing-artifacts">Creating and Managing Artifacts</h2>
<p>The first thing for this proces to work is when a forked branch is merged back into MAIN, this triggers an automated process in our CI/CD pipeline. Here&rsquo;s what happens:</p>
<ol>
<li><strong>Automated Testing</strong>: First, automated tests run to ensure the new changes meet our quality standards. This is crucial for maintaining a stable branch.</li>
<li><strong>Docker Artifact Creation</strong>: Upon successful running al tests, a Docker image (our Artifact) is created from the MAIN branch. This is because the MAIN branch is the single branch that represents the latest state of every DONE development, This is where we generate our artifacts from that can become “shippable” products.</li>
<li><strong>Why using MAIN for Docker Artifacts?</strong>: Creating artifacts at this stage allows us to catch any integration issue. Since every feature merged into MAIN is going to be considered ready for a release, generating an artifact here ensures that we always have a tested and potentially deployable version of our product at hand.</li>
</ol>
<h2 id="transferring-from-branches-to-environments">Transferring from Branches to Environments</h2>
<p>In traditional Git workflows, branches like STAGING and PROD are used to represent different stages of the development process, from testing to production. However, in a Docker-centric CI/CD pipeline, the focus shifts from using these branches for code integration to using them as references for deployment environments.</p>
<h2 id="deploying-to-staging">Deploying to STAGING</h2>
<ul>
<li><strong>Creating Docker Artifacts</strong>: Once development is complete and merged into the MAIN branch, a Docker artifact is automatically created. This artifact is a snapshot of your application at that point in time, encapsulating all the changes that were merged.</li>
<li><strong>Deployment, Not Merging</strong>: The STAGING environment&rsquo;s role is to test this Docker artifact in conditions that closely mimic the production environment. Instead of merging code from MAIN to a STAGING branch, you deploy the Docker artifact to a STAGING environment. This means the code itself isn&rsquo;t moving between branches; rather, the compiled and containerized version of your application is being tested.</li>
<li><strong>Purpose of STAGING</strong>: The STAGING environment is essential for comprehensive testing, including performance and security assessments. It&rsquo;s a final check to ensure everything works as expected in a production-like setting without directly affecting your actual users.</li>
</ul>
<h2 id="going-to-production">Going to Production</h2>
<ul>
<li><strong>Stakeholder Approval</strong>: Once your Docker artifact has been rigorously tested in STAGING and approved by stakeholders, it&rsquo;s ready to move to production. This step is crucial for ensuring that all features, fixes, and updates meet the necessary standards and expectations.</li>
<li><strong>Deployment to Production</strong>: The transition from STAGING to PROD involves deploying the tested Docker artifact to your production environment. This deployment process ensures consistency, as the exact artifact tested in STAGING is what gets deployed to PROD, eliminating any discrepancies between tested and deployed code.</li>
</ul>
<h2 id="key-takeaways">Key takeaways</h2>
<ul>
<li><strong>No More Branch Merging for Deployment</strong>: In this streamlined workflow, STAGING and PROD branches are no longer used for merging code. Instead, they reference specific deployment environments where Docker artifacts are deployed for testing and production.</li>
<li><strong>Focus on Artifacts</strong>: The emphasis is on creating, testing, and deploying Docker artifacts. These artifacts represent stable versions of your application ready for STAGING and, eventually, PROD deployment.</li>
<li><strong>Consistency and Reliability</strong>: By deploying the same Docker artifact from STAGING to PROD, you ensure that what has been tested is exactly what gets released, increasing the reliability and predictability of your deployments.</li>
</ul>
<p>This approach simplifies the deployment process, reduces the risk of errors, and ensures that every release is thoroughly tested in an environment that mirrors production as closely as possible.</p>
<h2 id="are-multiple-branches-still-needed">Are multiple Branches still needed?</h2>
<p>Given this new workflow, the STAGING and PROD branches in Git branching serve no active purpose anymore and therefore they have became obsolete. They helped track which versions of the code have been deployed to each environment which we have solved by running a specific version of an Artifact.</p>
<h2 id="conclusion">Conclusion</h2>
<p>Incorporating Docker into our Git branching strategy streamlines the development-to-deployment process by ensuring that every merge into MAIN triggers a Docker image with the potential to go to production. The key to this strategy is the creation of Docker artifacts early in the development cycle, allowing for continuous integration and delivery while maintaining high standards of quality and stability.</p>
<p>By understanding the changes to Git branches and the process of creating and deploying Docker artifacts, we can rely on the complexities of CI/CD with confidence, ensuring that all new features and fixes are delivered to users as efficiently and reliably as possible.</p>
<h2 id="hotfixing">Hotfixing</h2>
<p>We havent spoken about hotfixing yet. As i said this deserves its own Post. You can read all about Hotfixing and its caveats here.</p>
<figure class="bookmark"><a class="bookmark__link" href="https://www.allsubjectsmatter.nl/hotfixing-with-docker-artifacts-in-a-single-branch-strategy/"><span class="bookmark__body"><span class="bookmark__title">Hotfixing with Docker Artifacts in a Single Branch Strategy</span><span class="bookmark__description">Master hotfixes in Kubernetes with Docker. Learn to rapidly deploy critical fixes in a CI/CD pipeline focusing on streamlined branching. Perfect for tackling urgent issues without disrupting flow. Dive in now.</span><span class="bookmark__meta"><picture><source type="image/avif" sizes="25px"><source type="image/webp" sizes="25px"><img src="https://www.allsubjectsmatter.nl/ci-cd-pipeline-with-docker-and-git-branching-strategy/bookmarks/02-icon_hu_9b466dd874965fcb.webp" alt="" class="bookmark__icon" width="50" height="50" loading="lazy" decoding="async">
  </picture><span>All Subjects Matter</span><span>Remco Loup.</span></span></span><span class="bookmark__thumb"><picture><source type="image/avif" media="(max-width: 47.99rem)" sizes="calc(100vw - 2.5rem)"><source type="image/webp" media="(max-width: 47.99rem)" sizes="calc(100vw - 2.5rem)"><source type="image/avif" sizes="250px"><source type="image/webp" sizes="250px"><img src="https://www.allsubjectsmatter.nl/ci-cd-pipeline-with-docker-and-git-branching-strategy/bookmarks/02-thumb_hu_31f1067c4e9c7ce6.webp" alt="" width="500" height="435" loading="lazy" decoding="async">
  </picture></span></a></figure>

]]></content:encoded>
    </item>
    <item>
      <title>Sprint Reviews in high performance Scrum</title>
      <link>https://www.allsubjectsmatter.nl/sprint-reviews-in-scrum/</link>
      <guid isPermaLink="false">64d9202a028e350001c7ff45</guid>
      <pubDate>Tue, 29 Aug 2023 08:12:00 +0200</pubDate>
      <dc:creator>&lt;![CDATA[Remco Loup.]]></dc:creator>
      <category>&lt;![CDATA[Teams]]></category>
      <description>&lt;![CDATA[I first learned about Scrum way before the 2020 manifesto update was in place. So when we went to a Scrum master training after this 2020 release we had a nice little discussion about the change that has had the most impact with me since this update to the Scrum guide.]]></description>
      <media:content url="https://www.allsubjectsmatter.nl/sprint-reviews-in-scrum/feature.jpg" medium="image"/>
      <content:encoded>&lt;![CDATA[<h2 id="introduction">Introduction</h2>
<p>I first learned about Scrum way before the 2020 manifesto update was in place. So when we went to a Scrum master training after this 2020 release we had a nice little discussion about the change that has had the most impact with me since this update to the Scrum guide.</p>
<p>The shift from creating one inspectable working artifact at the end of a sprint. Into releasing much more frequently within the sprint itself. This is a real good thing since we live in a CI/CD world and holding something back when its Done is not necessary.</p>
<p>The problem i have with this is that it shifted the focus from my knowledge about what a Sprint Review was. And this got me thinking.</p>
<h2 id="some-more-background">Some more background</h2>
<p>For our team, achieving the &ldquo;Done&rdquo; status means a feature is primed for deployment. This doesn&rsquo;t imply hurried releases; substantial changes are deliberated upon, ensuring they align with user requirements and broader objectives. Each update is meticulously vetted, with our Product Owner playing a pivotal role, aligning the release with business imperatives.</p>
<p>If you have a decent CI/CD implementation your team can forget that this update is released the moment it is deployed in our staging area. When we decide to pull the update trigger and go live is up to the business. The team will need to know when something is fully released since we also keep an eye on the potential issues. But the Developers should not have a stake in the actual release. I understand this needs some more explanation. We save that post for the future.</p>
<p>We do keep the DONE unreleased and DONE released separated in our DONE lane.</p>
<h2 id="our-mini-sprint-reviews">Our mini Sprint Reviews</h2>
<p>To draw a finer point, our feature releases often resemble a series of &ldquo;mini Sprint Reviews&rdquo;</p>
<blockquote>
<p>There&rsquo;s a comprehensive discussion about changes and potential impacts.</p>
</blockquote>
<blockquote>
<p>Deployment timings are strategized.</p>
</blockquote>
<blockquote>
<p>Detailed changelogs are curated.</p>
</blockquote>
<blockquote>
<p>Stakeholders are kept in the loop, their feedback actively sought post-release.</p>
</blockquote>
<blockquote>
<p>This thorough approach often means that by the time our Sprint Review rolls around, the major talking points have been addressed.</p>
</blockquote>
<p>This takes away some topics from the sprint review. Especially when you have a decent CI/CD in place and you work by frequent releases.</p>
<p>When you discuss and go live with updates before the end of the sprint and you got the feedback on the released features. Why bother people again to provide feedback of discuss the release again? Scrum is a framework that facilitates talk. But we do need value in this meetings. And to us the sprint review on this topic has become quite useless.</p>
<h2 id="what-do-we-discuss">What do we discuss?</h2>
<p>One might wonder, with such an exhaustive pre-release evaluation, what remains for the Sprint Review? We&rsquo;re refining our approach, but here&rsquo;s our current structure</p>
<blockquote>
<p>Assessing our adherence to the sprint goal.</p>
</blockquote>
<blockquote>
<p>Analyzing tasks that remain untouched in the sprint.</p>
</blockquote>
<blockquote>
<p>Delving into ongoing development items.</p>
</blockquote>
<blockquote>
<p>Adjusting the backlog to reflect any changes from the last sprint, ensuring upcoming sprints have clear priorities.</p>
</blockquote>
<blockquote>
<p>Proactively identifying new tasks or adjustments based on our recent learnings.</p>
</blockquote>
<blockquote>
<p>Engaging stakeholders for detailed feedback where necessary.</p>
</blockquote>
<p>Working like this offers some distinct advantages for us. Stakeholders are in all departments of our company. A lot of them work hybrid or even 3/4 days in a hybrid combination. By doing frequent releases and planning accordingly we discuss the release when they are in the company which just works best for us. The ability to discuss things face to face is invaluable. It just works better and creates more understanding between each other.</p>
<p>While our reviews traditionally fall on Fridays. This is not an issue since we can just notify the stakeholder any day we are done. Discuss the update. And go live. We dont have to make a whole lot of fuzz about these things. We have short feedback loops! Planning dreadful meetings is for slow moving large companies where everybody thinks they are important and keeps stalling things in bureaucracy.</p>
<p>Most of our Sprint Reviews dont discuss anything related to what we deployed. We dont inspect the increment. The increment is already inspected and we move on quickly to the other topics as discussed above.</p>
<h2 id="conclusion">Conclusion</h2>
<p>A few essential components drive this approach of ours.</p>
<p>A Product Owner with genuine decision-making authority, ensuring alignment with broader business goals.</p>
<p>You need a Scrum team which works tightly together in completing full stories or features. Getting them really DONE. You need FLOW in your team to be able to pull this off.</p>
<p>You need a decent CI/CD framework in which you can deploy automated and frequently. (We are working on that ourselves. We are automated but not enough just yet. We can take out a lot more manual labor.)</p>
<p>As Scrum continues to evolve, so do our practices, always keeping value and efficiency at the forefront.</p>
]]></content:encoded>
    </item>
    <item>
      <title>The misinterpretation of the word “Sprint” within SCRUM</title>
      <link>https://www.allsubjectsmatter.nl/scrum-sprint-misinterpretations-within-scrum/</link>
      <guid isPermaLink="false">64d0fb279ac7d600017e1f8f</guid>
      <pubDate>Mon, 07 Aug 2023 08:20:00 +0200</pubDate>
      <dc:creator>&lt;![CDATA[Remco Loup.]]></dc:creator>
      <category>&lt;![CDATA[Teams]]></category>
      <description>&lt;![CDATA[Changing a word like &#34;Sprint&#34; wont mean anything if you dont foster an environment in which the words rush and haste aren&#39;t words that describe the work ethics. A sprint is just about an x week development cycle everyone understands, it shouldn&#39;t be at all related to haste and rush.]]></description>
      <media:content url="https://www.allsubjectsmatter.nl/scrum-sprint-misinterpretations-within-scrum/feature.jpg" medium="image"/>
      <content:encoded>&lt;![CDATA[<h2 id="introduction">Introduction</h2>
<p>First of all I want to say this.</p>
<blockquote class="pull-quote"><p>Opinions are like assholes. Everybody has one&hellip;</p>
</blockquote>
<p>I wont go any further but there are a lot of spinoffs for this quote. Do read on with a little skepticism.</p>
<h2 id="the-word-sprint">The word &ldquo;Sprint&rdquo;</h2>
<p>I keep having some difficulties using the word Sprint for every 2 week cycle of our product every time i think of what the word means to me. These sprints never stop! The moment a Sprint ends a new sprint starts&hellip;</p>
<p>In real life you at least can catch your breath and do some sleeping before travelling towards a new Sprint. And no a retro isn&rsquo;t good enough. <em>(SCRUM police)</em> A new sprint starts the moment a sprint ends! The retro is also done within a sprint. <em>(/SCRUM police)</em></p>
<p>I am a native Dutch speaker so my interpretation of the word sprint might differ. But to me a sprint instills going as fast as you can to finish first. Of course you obey the rules that wont disqualify you from winning the sprint. But the word rush comes into mind every time I think of a Sprint. Finish it! no matter what. This meaning gives a feeling of haste which isn’t gonna deliver cleaner code or less technical debt.</p>
<p>After finishing a sprint in real life I know i&rsquo;m not physically capable of starting another sprint immediatly. So if you want to get in a flow as a team you have to actually stop rushing and start the discussion by talking to eachother. Take the time to make clear everyone is on the same page and we all see the same goal.</p>
<blockquote class="pull-quote"><p>After all, SCRUM is a talk facilitating framework isnt it?</p>
</blockquote>
<p>The word &ldquo;Sprint&rdquo; also means individuality to me. Which is unwanted considering your are a SCRUM team trying to get in a groove or flow together.</p>
<figure class="bookmark"><a class="bookmark__link" href="https://www.allsubjectsmatter.nl/achieving-flow-with-scrum/"><span class="bookmark__body"><span class="bookmark__title">Achieving FLOW with Scrum.</span><span class="bookmark__description">In this post I share my current journey of implementing Scrum and Kanban principles with my team, this is mainly about emphasizing the importance of real collaborative work and instilling a product vision which helps us to achieve FLOW which translates to high value Scrum for us.</span><span class="bookmark__meta"><picture><source type="image/avif" sizes="25px"><source type="image/webp" sizes="25px"><img src="https://www.allsubjectsmatter.nl/scrum-sprint-misinterpretations-within-scrum/bookmarks/01-icon_hu_9b466dd874965fcb.webp" alt="" class="bookmark__icon" width="50" height="50" loading="lazy" decoding="async">
  </picture><span>All Subjects Matter</span><span>Remco Loup.</span></span></span><span class="bookmark__thumb"><picture><source type="image/avif" media="(max-width: 47.99rem)" sizes="calc(100vw - 2.5rem)"><source type="image/webp" media="(max-width: 47.99rem)" sizes="calc(100vw - 2.5rem)"><source type="image/avif" sizes="250px"><source type="image/webp" sizes="250px"><img src="https://www.allsubjectsmatter.nl/scrum-sprint-misinterpretations-within-scrum/bookmarks/01-thumb_hu_c670a19d35689e3b.webp" alt="" width="500" height="435" loading="lazy" decoding="async">
  </picture></span></a></figure>

<p>Just goofing around, but calling it an relay race (estafette) can be a better name! This also instills handovers and teamwork to be done with each other. The result is the same for the whole team if you compare it to a real life relay race. But still the aspect haste or rush is present here.</p>
<p>You of course don’t have to change this name but discussing this topic with your team is a thing you can do! Discuss this matter together with your, DOD, Acceptance Criteria and Sprint goal. At least make sure everyone understands that you don’t want the rush aspect that comes with the term sprint. Better do it the best you can obeying all defined rules. Instead of cutting corners in some grey area where nobody sees you do it!</p>
<h2 id="change-that-name">Change that name!</h2>
<p>And if we need another name. We can maybe use Development Cycles? This way we can call it Cycles like <a href="https://linear.app/" data-external>Linear</a> does. Or call it Flows. For our 2 week Flow I have this Flow goal in mind.</p>
<p>For a name change to work we have to all agree on using this name. Tools like Jira already define a lot of these names that aren’t changeable. We as the development team are in a lucky position where Jira is only used for our backlog and administration purposes. But our physical Scrum board is our single source of truth of what we are trying to accomplish.</p>
<p>Our sprints only get registered on a higher level in Jira. All daily tasks that flow out of sprint planning arent registered within our Jira.</p>
<figure class="bookmark"><a class="bookmark__link" href="https://www.allsubjectsmatter.nl/our-journey-into-visual-scrum/"><span class="bookmark__body"><span class="bookmark__title">A journey into visual Scrum</span><span class="bookmark__description">In this post, I will share the experiments we conducted during the last three sprints with our physical Scrum board. The focus was about creating a better understandable visual representation of our sprint progress. Sprints are two weeks increments for us at this moment.</span><span class="bookmark__meta"><picture><source type="image/avif" sizes="25px"><source type="image/webp" sizes="25px"><img src="https://www.allsubjectsmatter.nl/scrum-sprint-misinterpretations-within-scrum/bookmarks/02-icon_hu_9b466dd874965fcb.webp" alt="" class="bookmark__icon" width="50" height="50" loading="lazy" decoding="async">
  </picture><span>All Subjects Matter</span><span>Remco Loup.</span></span></span><span class="bookmark__thumb"><picture><source type="image/avif" media="(max-width: 47.99rem)" sizes="calc(100vw - 2.5rem)"><source type="image/webp" media="(max-width: 47.99rem)" sizes="calc(100vw - 2.5rem)"><source type="image/avif" sizes="250px"><source type="image/webp" sizes="250px"><img src="https://www.allsubjectsmatter.nl/scrum-sprint-misinterpretations-within-scrum/bookmarks/02-thumb_hu_876db5afb4ecba2.webp" alt="" width="500" height="435" loading="lazy" decoding="async">
  </picture></span></a></figure>

<h2 id="do-not-change-that-name">Do not change that name!</h2>
<p>The word &ldquo;Sprint&rdquo; itself isn&rsquo;t a problem to me actually. But the word does bring things to my mind I do not like in our Sprints.</p>
<blockquote>
<p>We dont want individuality in our Sprints.</p>
</blockquote>
<blockquote>
<p>We dont want to cut corners in Sprints.</p>
</blockquote>
<blockquote>
<p>We dont want to finish first at the cost of other aspects in Sprints.</p>
</blockquote>
<p>We need to keep a keen eye on refining our DOD and using the right kind of Acceptance Criteria for our issues to keep the quality high. And most important define a proper Sprint goal every sprint and make it physical. Another name for Sprints isn&rsquo;t gonna change that. We as a team will need to make it happen to instill quality over speed.</p>
<blockquote>
<p>Changing a word like &ldquo;Sprint&rdquo; wont mean anything if you dont foster an environment in which the words rush and haste aren&rsquo;t words that describe the work ethics. A sprint is just about an x week development cycle everyone understands, it shouldn&rsquo;t be at all related to haste and rush.</p>
</blockquote>
]]></content:encoded>
    </item>
    <item>
      <title>From Traditional Businesses to DAOs: Opportunities for Product Owners</title>
      <link>https://www.allsubjectsmatter.nl/dao-and-agile-from-traditional-businesses-to-a-dao-creates-opportunities-for-product-owners/</link>
      <guid isPermaLink="false">64c11628505ba00001328b71</guid>
      <pubDate>Tue, 25 Jul 2023 15:37:00 +0200</pubDate>
      <dc:creator>&lt;![CDATA[Remco Loup.]]></dc:creator>
      <category>&lt;![CDATA[Strategy]]></category><category>&lt;![CDATA[Teams]]></category>
      <description>&lt;![CDATA[I am already for a while intrigued by transforming a business into a DAO (Decentralized autonomous organisation). Thinking of my role as a Product Owner i thought of a way that can work very well when transforming a part of our business into a DAO]]></description>
      <media:content url="https://www.allsubjectsmatter.nl/dao-and-agile-from-traditional-businesses-to-a-dao-creates-opportunities-for-product-owners/feature.jpg" medium="image"/>
      <content:encoded>&lt;![CDATA[<h2 id="introduction">Introduction</h2>
<p>I am already for a while intrigued by transforming a business into a DAO (Decentralized autonomous organisation). Thinking of my role as a Product Owner i thought of a way that can work very well when transforming a part of our business into a DAO. We can benefit from Scrum, Agile and leveraging a DAO altogether this way.</p>
<p>In my personal case below, a hybrid approach is preferable, where certain aspects of our business are managed by a DAO, while the rest remains under traditional management for now. My DAO would be used to manage our Front/Mid/Backoffice system called BOSS to make decisions of what to develop next, while the broader business continues to operate in a more conventional manner. This approach allows our business to benefit from the advantages of a DAO, while mitigating some of the risks and challenges.</p>
<p>Our goal is to develop this system into a SaaS product within the travel industry. And use a DAO for example to get our stakeholders involved. But you will read more about my idea if you carry on.</p>
<h2 id="what-is-a-dao">What is a DAO?</h2>
<p>a DAO, or Decentralized Autonomous Organization, is a type of organization represented by rules encoded as a computer program (called a smart contract) that is transparent, controlled by the organization members, and not influenced by a central government.</p>
<p>A DAO&rsquo;s financial transactions and rules are maintained on a blockchain, which is a type of distributed ledger. This makes it completely autonomous and independent from any external or centralized control.</p>
<p>Imagine it like a digital company, where all the rules and regulations are coded into a smart contract. For instance, let&rsquo;s say there is a rule in a DAO that a certain proposal requires 60% of votes to pass. This rule is coded into the smart contract, and the blockchain will ensure that this rule is strictly followed, and can&rsquo;t be manipulated or bypassed by anyone.</p>
<p>Members of a DAO can make decisions about the rules or direction of the organization by proposing and voting on proposals, each having a vote proportional to their stake or shares in the DAO. In this way, a DAO is a bit like a traditional company but managed in a fully democratic and decentralized way.</p>
<p>To sum it up, a DAO leverages blockchain technology to ensure that the organization is governed in a completely transparent, democratic and decentralized way, free from any central or external control.</p>
<h2 id="tokens">Tokens</h2>
<p>Creating a unique token for a Decentralized Autonomous Organization (DAO) can be beneficial, and is a common practice, whether it&rsquo;s the &ldquo;best&rdquo; practice depends on the specific goals and context of the DAO. Here&rsquo;s why DAOs often issue their own tokens:</p>
<ol>
<li><strong>Voting Rights</strong>: Tokens can be used to represent voting power within the DAO. The more tokens a member holds, the more influence they have over the DAO&rsquo;s decisions.</li>
<li><strong>Incentives</strong>: Tokens can be used to incentivize certain behaviors or contributions to the DAO. For example, tokens can be given as rewards for completing tasks that benefit the DAO, such as coding, designing, or managing projects.</li>
<li><strong>Fundraising</strong>: Issuing tokens can be a method of raising funds. Potential participants can purchase tokens, effectively becoming investors in the DAO.</li>
<li><strong>Community Building</strong>: Having a unique token can help to build a sense of community among members. It can foster a feeling of shared ownership and mutual investment in the DAO&rsquo;s success.</li>
</ol>
<p>However, there are also challenges and considerations to keep in mind:</p>
<ol>
<li><strong>Regulatory Issues</strong>: Depending on the jurisdiction, issuing a token might be considered as issuing a security, which can have regulatory implications and legal requirements.</li>
<li><strong>Token Distribution</strong>: Deciding on how to initially distribute the tokens can be challenging and controversial. The distribution method needs to be fair and align with the DAO&rsquo;s goals and values.</li>
<li><strong>Token Value Fluctuation</strong>: If the token is traded on the open market, its value can fluctuate, which can lead to instability and potential manipulation.</li>
<li><strong>Complexity</strong>: Issuing and managing a token adds complexity to running the DAO. Not every DAO might need its own token, especially if its operations are simple or if it can effectively use an existing token.</li>
</ol>
<h2 id="how-to-leverage-a-dao-as-a-product-owner">How to leverage a DAO as a Product Owner</h2>
<p>Imagine running a Decentralized Autonomous Organization (DAO) where your customers or interested parties are able to invest directly in your product. They&rsquo;re granted stakes or tokens, which gives them a voice in your development process which is run in a Scrum/Agile way.</p>
<p>Let&rsquo;s say these potential customers want a specific function, X or Y, added to your product. They can cast votes for that function using their tokens, directly influencing the development priorities. This voting mechanism can draw potential customers closer to your brand and empower existing customers to shape the product they use regularly.</p>
<p>In effect, the features that top their wishlist become the focal point of your development strategy. The beauty of this approach lies in its transparency. By allowing your users to vote on potential additions to your product, you&rsquo;re showing them why certain features are prioritized over others. It&rsquo;s a democracy where voting requires knowing the &ldquo;why&rdquo; behind each decision, leading to a detailed understanding of product evolution.</p>
<p>This approach is a boon not only for Product Owners but also for your business at large. Instead of cloaking your development process in secrecy, you&rsquo;re inviting your users to be part of it. This participative approach can foster faster trust-building among customers and potential users than traditional methods.</p>
<p>As a Product Owner, you&rsquo;re still essential in filtering and interpreting customer wishes, converting them into comprehensible stories that both technical and non-technical folks can grasp.</p>
<p>When it comes time to select top priorities, your roadmap is already outlined by the democratic vote. This interaction allows you to engage and learn from your customer base quicker than relying on personas or other traditional tools to decide what comes next. Majority votes could define your sprint goals, guiding your focus for the next development cycle.</p>
<p>What better way to foster transparency and customer input using Agile/Scrum in this way? This process integrates the principles of adapt, inspect, and learn in a tightly-knit manner. With a DAO-like approach, your product evolution truly becomes a community-driven endeavor.</p>
<h2 id="caveats">Caveats</h2>
<p>There are also caveats of course.</p>
<ol>
<li><strong>Governance Challenges</strong>: Implementing a DAO&rsquo;s governance model can be complex. Balancing the interests of all stakeholders in a fair and equitable manner is a significant challenge. It&rsquo;s not always the case that the majority&rsquo;s decision aligns with the best interest of the project or all the stakeholders.</li>
<li><strong>Smart Contract Security</strong>: DAOs operate on the basis of smart contracts, which are immutable once deployed. If there&rsquo;s a bug or vulnerability in the contract, it can lead to severe issues, including loss of funds. The infamous &ldquo;The DAO&rdquo; hack of 2016, where $50 million was siphoned due to a smart contract loophole, is an example.</li>
<li><strong>Regulatory Uncertainty</strong>: DAOs exist in a legal gray area in many jurisdictions. How they&rsquo;re classified and regulated by law is still uncertain in many parts of the world.</li>
<li><strong>Token Distribution</strong>: How tokens are initially distributed can also be a complex issue. If not done properly, it can lead to centralization or imbalance of power in the DAO.</li>
<li><strong>Low Participation Rates</strong>: DAOs rely on active participation from token holders. However, voter apathy can be a significant issue, leading to decisions being made by a small subset of stakeholders.</li>
<li><strong>Short-Termism</strong>: There&rsquo;s a risk that token holders who are only interested in short-term profit might vote for proposals that yield immediate gains but are detrimental in the long run.</li>
<li><strong>Interface between DAO and the Real World</strong>: DAOs are digital, but their decisions often have implications in the real world, where enforcement can be more complex.</li>
</ol>
<p>Each of these challenges is surmountable, but they do require careful thought and design to address effectively. As with any system, the benefits should always be weighed against the potential risks and drawbacks.</p>
<h2 id="the-role-of-a-product-owner">The role of a Product Owner</h2>
<p>This is where a good Product Owner comes into play and lets people not vote on your whole backlog but on clearly selected items that are already enough refined and ready to be developed to a degree of uncertainty. You are still supposed to know the overall market so you can preselect the items to be worked on and let people vote on them.</p>
<p>You still have stakeholders to keep happy and develop functions the market wants the most. Only by using a DAO and keeping people engaged you can adapt and learn your market way better then in other ways.</p>
<p>Even though a DAO is fundamentally democratic, it needs someone with a comprehensive understanding of the product to guide its development. A PO can offer insight into the feasibility and impact of features, helping to steer decision-making and prioritization.</p>
<h2 id="smart-contracts">Smart Contracts</h2>
<p>A smart contract is a computer protocol that facilitates, verifies, or enforces the negotiation or performance of a digital contract. Smart contracts run on the blockchain, making them transparent, traceable, and irreversible. They&rsquo;re designed to automatically execute transactions or other specific actions when pre-set conditions are met.</p>
<p>Here are some key reasons why it&rsquo;s important to carefully design and implement smart contracts:</p>
<ol>
<li><strong>Immutability</strong>: Once a smart contract is deployed on the blockchain, it cannot be altered or corrected. This immutability makes it crucial that a smart contract is thoroughly tested and reviewed before deployment to ensure that it operates as intended.</li>
<li><strong>Security</strong>: Smart contracts are vulnerable to bugs and exploits if they aren&rsquo;t correctly programmed. Given the value often transacted or managed through smart contracts, security is of the utmost importance. Exploits can lead to substantial losses, as seen in the infamous DAO hack in 2016 where around $50 million was lost due to a bug in the DAO&rsquo;s smart contract.</li>
<li><strong>Financial Implications</strong>: Smart contracts often manage, store, or facilitate the transfer of cryptocurrency, and errors or vulnerabilities in the contract could have significant financial repercussions.</li>
<li><strong>Trust and Reliability</strong>: The trust in a smart contract, and by extension, the entire operation or system it supports, heavily relies on the contract functioning as expected. Issues could compromise the perceived reliability of the system and discourage participation or usage.</li>
<li><strong>Complexity and Interoperability</strong>: Smart contracts often interact with other contracts or systems. It&rsquo;s important to think through these interactions to prevent unexpected behavior. Misunderstanding or neglecting the complexities of such interactions can lead to detrimental consequences.</li>
<li><strong>Regulatory Compliance</strong>: Depending on the jurisdiction and the specific use case, smart contracts need to be designed to comply with relevant laws and regulations, adding another layer of complexity to their design and implementation.</li>
</ol>
<p>Therefore, the design, implementation, and review of smart contracts need to be taken very seriously and conducted with utmost diligence. In many cases, it&rsquo;s advisable to have smart contracts audited by a specialized security firm before they are deployed.</p>
<h2 id="a-written-sample-of-a-smart-contract">A written sample of a Smart Contract</h2>
<p>So you need a good working contract on beforehand. The Product Owner can be the manager of such a smart contract for example. He adds the issues to the system. and the stakeholders can vote on these issues using their tokens.</p>
<p>Each vote raises the importance of the issues to be developed. After which you pick the highest ranked issues to develop on while keeping an eye of what you can work in a single sprint ofcourse.</p>
<p>You can also use two types of tokens for example. Normal tokens for your customers using your product and social tokens for potential customers for example.</p>
<p>Validity of tokens is also something to consider since wishes can become obsolete after time.</p>
<p>This all can become quite complicated and i might post a full sample of a smart contract written in Solidity in a later blog using the conditions above.</p>
<h2 id="conclusion">Conclusion</h2>
<p>This has become a somewhat longer article then usual but it needed a lot of explanation to be able to understand what it means to leverage your role as a PO inside a DAO.</p>
<p>I hope this has helped a bit to clarify and explain what a DAO is and how it can be used especially from a SCRUM/Agile Product Owner point of view where both can really thrive.</p>
<p><a href="https://www.scrum.org/francois-fort" data-external>Francois Fort</a> wrote a article about this on <a href="https://www.scrum.org/resources/blog/are-daos-future-agile-organizations" data-external>scrum.org</a> Are DAOs the future of Agile Organisations.</p>
<p>You need stakeholders to buy in and what is better then to have engaged stakeholders with stakes in your product leveraging a DAO? You get detailed and immediate responses from the market when you have a engaged diversified group of people wanting your product to succeed because they then also succeed .</p>
]]></content:encoded>
    </item>
    <item>
      <title>A understood Subject Matter Expert</title>
      <link>https://www.allsubjectsmatter.nl/scrum-a-understood-subject-matter-expert-sme-misunderstood-stances/</link>
      <guid isPermaLink="false">644ba479bada16003dd15ee3</guid>
      <pubDate>Fri, 28 Apr 2023 13:56:58 +0200</pubDate>
      <dc:creator>&lt;![CDATA[Remco Loup.]]></dc:creator>
      <category>&lt;![CDATA[Teams]]></category>
      <description>&lt;![CDATA[Without a &#34;good&#34; SME (Subject Matter Expert) stance within SCRUM, every product is a lesser product then it can be. That&#39;s why this is one the most interesting misunderstood stances of a Product Owner to me.]]></description>
      <media:content url="https://www.allsubjectsmatter.nl/scrum-a-understood-subject-matter-expert-sme-misunderstood-stances/feature.jpg" medium="image"/>
      <content:encoded>&lt;![CDATA[<h2 id="introduction">Introduction</h2>
<blockquote class="pull-quote"><p>Without a &ldquo;good&rdquo; SME (Subject Matters Expert) stance, Every product is a lesser product then it can be.</p>
</blockquote>
<p>This is the bomb I am am dropping here to start with.</p>
<p>There are off course nuances to this statement. I will explain below why this fact is true in my opinion. When you are a SME you care for your product in my opinion. Why would you know so much about the product otherwise? And also have all this information available? I tend to forget things i dont care about&hellip;. So i must care about our product.</p>
<h2 id="finding-the-nuance-within-a-sme"><strong>Finding the nuance within a SME</strong></h2>
<p>The struggle is that you need to teach yourself how to react when you are uncertain or wrong. Being stubborn because you are afraid to fail is the wrong take on this stance. You also need to give other people the chance to learn what you might already know. Maybe even some new insights come to the surface! Dictating an answer isn&rsquo;t going to help in accepting your answer until they figure it out themselves. And even more importantly it wont make the team smarter if they dont figure things out themself. The whole team needs to benefit, not just you.</p>
<p>This requires tact and the right moment to step in to certain discussions. You dont want to lead such a discussion but steer it in a natural way to the right direction when it occurs. And do remember there is still always the possibility that you are indeed wrong!</p>
<h2 id="a-good-subject-matter-expert">A &ldquo;good&rdquo; Subject Matter Expert</h2>
<p>Being a SME is bloody darn handy when you have the upper hand on the positives a Subject Matter Expert can bring. That&rsquo;s why this is one the most interesting misunderstood stances of a Product Owner to me. You can be totally in the wrong (misunderstood) as a SME or totally in the right. In a positive way without bothering yourself with everything, every time, again. And that is where you need to find your nuance within your role as a Product Owner with a SME mindset. Also if you know the details of something, also explain the WHY to the team. Keep involving them instead of being Mr Smart-ass.</p>
<h2 id="limitations">Limitations</h2>
<p>It is all a matter of knowing your limitations and being honest about it. You know a lot but not everything and the world evolves so things might be different nowadays. For me this involves in keeping my mouth shut when i am not sure. And also sometimes i give my take on why we made a choice in the past but i encourage everyone to seek it out in the present day since the problem back then might not be a problem anymore. And you always learn from these things even though the outcome might be the same.</p>
<blockquote>
<p>It is good practice if there is somebody to give context to the choices made in the past without steering into a certain direction. I think there is a lot of value in explanations this way.</p>
</blockquote>
<h2 id="an-analogy"><strong>An analogy</strong></h2>
<p>The product we developed as a team started as a child of me. The vision came from me. It took us 2 years before we gave labor. And after that 2 year labor we teamed up to raise our child in the best possible way. This gave a lot of headaches but also brought us so much in learning and adapting to each other. We all started to care for this child.</p>
<p>How can i not pretend to be a SME for such a product? I am the one who started the initial idea. I was there when we gave labor after a 2 year period of close development. I was there all the way through its childhood watching it grow up and get mature. And even though it might be mature now our child still needs guidance and help from time to time. It is still my child after all. That more and more people also started to really care for this child changes nothing to the feeling i have towards our product.</p>
<blockquote class="pull-quote"><p>Spread the love for your product across your team. Dont keep it to yourself. Make it better as a team.</p>
</blockquote>
<h2 id="conclusion"><strong>Conclusion</strong></h2>
<p>I cant help it that i still remember almost every choice we made for our product in the past. And also why we made this choice within our development cycles. I dont particular choose to be that wise guy but this is a topic of interest for me and therefore i remember. I do need to give other people room for their own thoughts tho. So yeah i can relate to, and totally find myself within a Subject Matter Expert to a certain extend.</p>
<p>You do need to know/feel WHEN to step into a discussion. Dont get in a discussion being the wise guy all the time. This all might sound cocky or arrogant. But we all want the same and that is delivering a better product then it already was. If we keep talking in a respectful way without acting as the wise guy we are on the right track as a team.</p>
<p>And again! keep explaining the WHY&rsquo;s and speak your mind. involve your team in decisions and explanations of choices made in the past. You are a team together with all people not just as the PO/SME.</p>
<p><em>Disclaimer: despite highlighting one stance of the Scrum master stances here. It is a combination of all stances that make you a better Product Owner. This is just one stance that interests me for being a misunderstood stance (and for a good reason). Without a clear Vision and &ldquo;being&rdquo; all the other stances you are going to have a hard time as a Product Owner.</em></p>
]]></content:encoded>
    </item>
    <item>
      <title>A journey into visual Scrum</title>
      <link>https://www.allsubjectsmatter.nl/our-journey-into-visual-scrum/</link>
      <guid isPermaLink="false">640cd46ae1ed7a003db49145</guid>
      <pubDate>Wed, 29 Mar 2023 17:16:59 +0200</pubDate>
      <dc:creator>&lt;![CDATA[Remco Loup.]]></dc:creator>
      <category>&lt;![CDATA[Teams]]></category>
      <description>&lt;![CDATA[In this post, I will share the experiments we conducted during the last three sprints with our physical Scrum board. The focus was about creating a better understandable visual representation of our sprint progress. Sprints are two weeks increments for us at this moment.]]></description>
      <media:content url="https://www.allsubjectsmatter.nl/our-journey-into-visual-scrum/feature.jpg" medium="image"/>
      <content:encoded>&lt;![CDATA[<h2 id="introduction">Introduction</h2>
<p>In this post, I will share the experiments we conducted during the last three sprints with our physical Scrum board. The focus was about creating a better understandable visual representation of our sprint progress. Sprints are two weeks increments for us at this moment.</p>
<h2 id="our-scrum-board-right-now">Our Scrum board right now.</h2>
<p>The image I will post below displays the board we have been using for almost a year. As we began to take Scrum more seriously we started to notice a lack of transparency with this board.</p>
<p>In this board we already resolved many of the problems we had previously encountered. These improvements are explained in detail in a previous post: <a href="https://www.allsubjectsmatter.nl/sprints-in-real-life/" data-preview>Our sprints in real life</a>.</p>
<p>To gain a better understanding of our journey, &ldquo;<a href="https://www.allsubjectsmatter.nl/achieving-flow-with-scrum/" data-preview>Achieving FLOW with Scrum</a>&rdquo; is also a must-read. It delves into our background and, more importantly, answers the question: Why are we doing this?</p>
<figure class="figure"><picture><source type="image/avif" sizes="(max-width: 47.99rem) calc(100vw - 2.5rem), 720px"><source type="image/webp" sizes="(max-width: 47.99rem) calc(100vw - 2.5rem), 720px"><img src="https://www.allsubjectsmatter.nl/our-journey-into-visual-scrum/images/20230307_125843-2_hu_4a63e1b954b7439e.webp" alt="" width="560" height="632" data-zoom-src="https://www.allsubjectsmatter.nl/our-journey-into-visual-scrum/images/20230307_125843-2_hu_6af505125fa866e7.webp" loading="lazy" decoding="async">
  </picture><figcaption>Stage 1 before starting a new experimentation phase</figcaption></figure>

<p>These are the lanes and setup we use at this moment. We have split up the last two (Testing and Done) to improve transparency within our current CI/CD setup. Below is a list of things we have already tested and therefore are implemented on this board. On these improvements we will continue to incorporate when experimenting with new versions of our board.</p>
<blockquote>
<p>The sprint goal is clearly visible.</p>
</blockquote>
<blockquote>
<p>We use green colored cards for the items contributing to achieving the sprint goal.</p>
</blockquote>
<blockquote>
<p>We mark tasks that are in testing to long with a visual exclamation mark.</p>
</blockquote>
<blockquote>
<p>We use &ldquo;released&rdquo; and &ldquo;not yet released&rdquo; in our Done lane to keep things that are DOD but not yet deployed visible for the Scrum team.</p>
</blockquote>
<blockquote>
<p>Our work order is put on the board in the Todo lane from top to bottom. Top items get worked on first unless there appears a good reason not to work in that order :)</p>
</blockquote>
<blockquote>
<p>Other tasks we committed to for the sprint are marked blue.</p>
</blockquote>
<blockquote>
<p>Random bugfixes and potential hotfixes uncovered during a sprint are marked red. They are put in the bottom of the board. They may be important but they came up during a sprint and are visible in the bottom of the &ldquo;TODO&rdquo; lane therefore.</p>
</blockquote>
<blockquote>
<p>Subtasks are always defined on this board. They are for the developers to do the work to deliver the full story. They may reside in Jira but the physical board is leading.</p>
</blockquote>
<blockquote>
<p>We use name cards to show who is working on what.</p>
</blockquote>
<p>The reason we started experimenting with different board setups you will find below is that we increasingly started breaking stories down into subtask. However, when our developers completed a subtask. We didn&rsquo;t want to remove it from the board immediately for a whole lof ot different reasons.</p>
<blockquote>
<p>Removing a subtask creates less transparency and instilled less talks about done subtasks.</p>
</blockquote>
<blockquote>
<p>It gives developers that were out of the office (free) insight in tasks done when they come into the office the next day.</p>
</blockquote>
<blockquote class="pull-quote"><p>The most important topic was the lack of transparency this board still had on subtasks!</p>
</blockquote>
<p>It also feels more satisfying to move a completed subtask to a designated area on the board. Slap it there, and move on. This provides a sense of closure. A feeling you wont get when you immediately remove, clean, and wipe out what you just accomplished.</p>
<p>In the first version of our board we didn&rsquo;t account for this. Sometimes subtasks would move with the story. While other times a subtask moved to the &ldquo;Done&rdquo; lane. This is wrong! there isn&rsquo;t anything to release or not yet released. It is a completed subtask of a branch probably not even committed yet. This situation created a lot of issues with regards to transparency.</p>
<h2 id="first-iteration-changes">First iteration changes</h2>
<p>We started to experiment with splitting up the &ldquo;Dev&rdquo; lane with a &ldquo;Doing&rdquo; and &ldquo;Done&rdquo;. This way we could keep the completed subtasks in a designated lane. Although we noticed some initial irritation in starting with this setup. It was essential to try it out though to determine its effectiveness!</p>
<figure class="figure"><picture><source type="image/avif" sizes="(max-width: 47.99rem) calc(100vw - 2.5rem), 720px"><source type="image/webp" sizes="(max-width: 47.99rem) calc(100vw - 2.5rem), 720px"><img src="https://www.allsubjectsmatter.nl/our-journey-into-visual-scrum/images/20230314_082856_hu_2559b27601cc5669.webp" alt="" width="560" height="640" data-zoom-src="https://www.allsubjectsmatter.nl/our-journey-into-visual-scrum/images/20230314_082856_hu_d520949d7c9945da.webp" loading="lazy" decoding="async">
  </picture><figcaption>Stage 2. Experimenting with a doing/done lane in Development.</figcaption></figure>

<h2 id="first-iteration-conclusion">First iteration conclusion</h2>
<p>After using this setup for two weeks, our final conclusion is that it&rsquo;s helpful to have a designated area for placing &ldquo;Done&rdquo; subtasks. However, including this area within the current lanes of the board is not ideal. Completed subtasks should no longer be visible like this, they now appear as if they still need to move further to the right.</p>
<p>Subtasks themselves don&rsquo;t move in Testing for example, as they are part of a story that holds the value. It is the story that progresses into Review, Testing, and Done. Thus, this approach is not recommended in our opinion.</p>
<p>We did agree to remove the cards when the developers as a collective felt it was time to remove them. But this method also doesn&rsquo;t provide transparency either since there is no clear rule in place.</p>
<h2 id="second-iteration-changes">Second iteration changes</h2>
<p>Together we came up with another version of the board. This version is again visible in the image below.</p>
<p>We reverted back to the lanes we had in the start of this experiment. Todo, Dev, Review, Testing and Done. We removed the visual representation of Todo and placed the Sprint goal there instead. We all agreed this was a more suitable location for the Sprint Goal.</p>
<figure class="figure"><picture><source type="image/avif" sizes="(max-width: 47.99rem) calc(100vw - 2.5rem), 720px"><source type="image/webp" sizes="(max-width: 47.99rem) calc(100vw - 2.5rem), 720px"><img src="https://www.allsubjectsmatter.nl/our-journey-into-visual-scrum/images/20230329_121747_hu_733fc66d19cc2329.webp" alt="" width="560" height="1093" data-zoom-src="https://www.allsubjectsmatter.nl/our-journey-into-visual-scrum/images/20230329_121747_hu_93038d66e3d24fd1.webp" loading="lazy" decoding="async">
  </picture><figcaption>Stage 3. Bringing down the number of lanes and introduce a "Burn pile" with all done subtasks.</figcaption></figure>

<p>We also decided never to move any work above the items representing the achievement of our sprint goal. For instance, if we start working on a blue or red item. This item moves to &ldquo;Dev&rdquo; while staying on the same horizontal line where it was initially placed. So, from now on, we aim to keep items horizontally aligned as they move through the lanes. The only exception is the Done lane, which is divided into sections for released and unreleased work.</p>
<p>The &ldquo;Burn Pile&rdquo; is a name we came up with for all done subtasks. We wanted to avoid having two &ldquo;Done&rdquo; lanes. It just feels satisfying to place the subtasks you just finished in this designated area! This approach not only provides a sense of closure but also offers insight into everything completed as subtasks.</p>
<h2 id="second-iteration-conclusion">Second iteration conclusion</h2>
<p>This is the first iteration of our &ldquo;Burn Pile&rdquo; version. We have already discussed some other considerations for trying out this version.</p>
<blockquote class="pull-quote"><p>We might need to add a reference to the story for transparency reasons. Or group the same subtasks of a story together for example.</p>
</blockquote>
<p>We will learn from this experience by simply putting it into practice. It&rsquo;s essential not to overcomplicate things immediately when it might not be necessary. As seen in the screenshot, we have already placed some subtasks in the Burn Pile, and we all agree that it feels good to physically do so.</p>
<h2 id="conclusion">Conclusion</h2>
<p>We have decided that this board version is what we will be moving forward with for now. The first iteration did not work well due to having too many lanes, too much space, two Done lanes, and subtasks remaining too visible for too long after completion.</p>
<p>So moving forward from now on we will be using this version. I will keep updating this post every time we find improvements within our work using this board.</p>
]]></content:encoded>
    </item>
    <item>
      <title>Achieving FLOW with Scrum</title>
      <link>https://www.allsubjectsmatter.nl/achieving-flow-with-scrum/</link>
      <guid isPermaLink="false">640701f8c89557003121f450</guid>
      <pubDate>Tue, 07 Mar 2023 10:20:56 +0100</pubDate>
      <dc:creator>&lt;![CDATA[Remco Loup.]]></dc:creator>
      <category>&lt;![CDATA[Teams]]></category>
      <description>&lt;![CDATA[In this post I share our current journey of implementing Scrum and Kanban principles with my team, this is mainly about emphasizing the importance of real collaborative work and instilling a product vision which helps us to achieve FLOW which translates to high value Scrum for us.]]></description>
      <media:content url="https://www.allsubjectsmatter.nl/achieving-flow-with-scrum/feature.jpg" medium="image"/>
      <content:encoded>&lt;![CDATA[<h2 id="introduction">Introduction</h2>
<p>I struggled for a long time with the idea of starting a blog. Not just to have a blog but to be able to share my perspective on certain subjects with anyone who finds it useful. This is my first attempt to explain my way of thinking and working.</p>
<p>The idea to explain how we at 333travel are achieving FLOW triggered me while reading the book <a href="https://www.goodreads.com/book/show/59691869-applying-scrum-with-kanban" data-external>A<em>pplying Scrum with kanban</em></a>. As I started reading, I realized that many of the ideas presented in this book were ones that we were already using. Reading about these ideas gave me the courage to write this from my own perspective.</p>
<p>I am writing this post halfway in the book. Where Katie is exploring positive FLOW with her team where she acts as a Scrum Master. When the book started talking about FLOW, something deep inside of me got triggered.</p>
<p>I got the chills reading this chapter because I just realized that we already implemented a lot of the ideas in the book. Not knowing what Scrum or Kanban was in my early days. Just by trying what felt like a natural and good way to work, back in 2017 using agile methods.</p>
<h2 id="outcomes">Outcomes</h2>
<p>We have made a lot of progress since then. I can already say we are practicing a lot of the outcomes that the book uncovers.</p>
<p>We started working with Jira in 2017 using a modified version of swim lanes.</p>
<blockquote>
<p>Having a board with swimming lanes that cover the topics of issues.</p>
</blockquote>
<blockquote>
<p>Scrapping some swimming lanes since maintenance needs to be controllable and there has to be a use for them.</p>
</blockquote>
<p>During the years that followed and when we really wanted to professionalize our way of working the following subjects entered our workflow. These insights are in no particular order.</p>
<blockquote>
<p>Writing a definition of done (DOD) for each of the swimming lane states.</p>
</blockquote>
<blockquote>
<p>Having the sprint goal represented on our physical whiteboard.</p>
</blockquote>
<blockquote>
<p>Using a physical whiteboard that is the single source of truth over Jira.</p>
</blockquote>
<blockquote>
<p>Having specific colors on the stories we pick up within a sprint, with a special color (green) for the stories that contribute the most to the sprint goal.</p>
</blockquote>
<blockquote>
<p>Using specific colors for other tasks, hotfixes, and such.</p>
</blockquote>
<blockquote>
<p>Blocked issues aren&rsquo;t a state where they can reside. Blocked issues need to get unblocked as soon as possible or rolled back after confirming that we can&rsquo;t work further.</p>
</blockquote>
<blockquote>
<p>Working from a feeling that we need to finish off every task/story that is swimming through the lanes as a collective to the far right before we decide to start new work (stories).</p>
</blockquote>
<p>For an visual insight on our current Scrum board i refer you to the bookmark at the end of this post.</p>
<h2 id="get-a-flow-going">Get a FLOW going!</h2>
<p>Why i got triggered kept me busy for a long time. Thinking about it now, I understand that they were the catalysts to get our flow going. What I saw in my team was that only when people started really working together. (As in working on the same stories and picking up their subtasks within it.) Only then we really opened the way for conversations about the stories we are working on.</p>
<p>But in order to be able to do that we had to create a certain way of working first, covering all of the items listed above to foster transparency and focus.</p>
<blockquote class="pull-quote"><p>Scrum is a talk-facilitating framework. To get a flow going you need to collaborate. Working on the same stories with all developers towards the sprint goal. Ideally, you should finish something before moving on to something new.</p>
</blockquote>
<p>Developers often try to avoid really working together, thinking it creates more work. They often prefer to split stories further so they can work solo on stories. Instead of working on subtasks within the same story. This small change in behavior takes some getting used to for developers. But when they start operating as a team, they can enter a state of positive flow in which everything works.</p>
<p>If you keep doing this solo Scrum within a sprint, you&rsquo;ll lose many of the benefits Scrum can provide. You can of course say you are doing Scrum. But do you want to say you&rsquo;re doing Scrum? Or do you want to get in an epic flow together and forever change the way you work! (who cares what the name is, right)?</p>
<p>It&rsquo;s our standard behavior to start working on tasks we already know best within a sprint (it&rsquo;s quicker to finish that way, right?). I also challenge my developers to work on things they haven&rsquo;t worked on yet within our projects. We need to get better as a Scrum team. This won&rsquo;t happen if we keep working in our own knowledge bubbles. Developers need to be challenged to work together towards the product goal. This will give each developer more autonomy and confidence.</p>
<blockquote class="pull-quote"><p>Scrum isn&rsquo;t about the speed of development. this is merely a benefit when you reach a certain state of flow with your team.</p>
</blockquote>
<h2 id="instill-a-vision">Instill a vision</h2>
<p>Instilling a vision is also crucial for FLOW. Having a idea of why you are building this product is one of the most important things to start with. A product vision or goal and a clear sprint goal to start from are a must. You need to be able to communicate your goal. This way you know what we are working on and what we need to do next to achieve that goal.</p>
<blockquote class="pull-quote"><p>Defining technical debt is heavily relying on your product vision/goal. This enables you to compare your current product state to where you want it to be. And what technical debt we need to solve to get there.</p>
</blockquote>
<p>A product vision isn&rsquo;t concrete, and it doesn&rsquo;t have to be long. It will evolve over time as you discover more about what the product will do and what the market wants. But it all starts with a vision you&rsquo;re working towards. There needs to be something to explain WHY.</p>
<h2 id="conclusion">Conclusion</h2>
<p>I hope i shared some useful insights in how we were able to achieve FLOW in our Scrum team. We are merely scratching the surface in my opinion, and a lot more optimizing still has to be addressed in our team. But we are are for sure on the right track.</p>
<p>Especially since our whole Scrum team has the feeling that we are operating in a FLOW. This is a pretty darn good feeling to work in!</p>
<figure class="bookmark"><a class="bookmark__link" href="https://www.allsubjectsmatter.nl/sprints-in-real-life/"><span class="bookmark__body"><span class="bookmark__title">Our sprints in a real life example</span><span class="bookmark__description">This post explains how we as a team manage our current Board on which we keep our sprints. This board is leading over Jira we love working analog next to our digital work.</span><span class="bookmark__meta"><picture><source type="image/avif" sizes="25px"><source type="image/webp" sizes="25px"><img src="https://www.allsubjectsmatter.nl/achieving-flow-with-scrum/bookmarks/01-icon_hu_9b466dd874965fcb.webp" alt="" class="bookmark__icon" width="50" height="50" loading="lazy" decoding="async">
  </picture><span>All Subjects Matter</span><span>Remco</span></span></span><span class="bookmark__thumb"><picture><source type="image/avif" media="(max-width: 47.99rem)" sizes="calc(100vw - 2.5rem)"><source type="image/webp" media="(max-width: 47.99rem)" sizes="calc(100vw - 2.5rem)"><source type="image/avif" sizes="250px"><source type="image/webp" sizes="250px"><img src="https://www.allsubjectsmatter.nl/achieving-flow-with-scrum/bookmarks/01-thumb_hu_12ce7537b849d91a.webp" alt="" width="500" height="435" loading="lazy" decoding="async">
  </picture></span></a></figure>

]]></content:encoded>
    </item>
    <item>
      <title>Our sprints in real life</title>
      <link>https://www.allsubjectsmatter.nl/sprints-in-real-life/</link>
      <guid isPermaLink="false">640733844159df003d6cc396</guid>
      <pubDate>Wed, 25 Jan 2023 13:53:00 +0100</pubDate>
      <dc:creator>&lt;![CDATA[Remco Loup.]]></dc:creator>
      <category>&lt;![CDATA[Teams]]></category>
      <description>&lt;![CDATA[This post explains how we as a team manage our current Board on which we keep our sprints. This board is leading over Jira we love working analog next to our digital work.]]></description>
      <media:content url="https://www.allsubjectsmatter.nl/sprints-in-real-life/feature.jpg" medium="image"/>
      <content:encoded>&lt;![CDATA[<p>Below, you will find an example of our current visual whiteboard we use. (what&rsquo;s a usable term?). I know that there are still a lot of issues to address to improve our board even further. We already accepted a long time ago that reaching perfection instantly is not possible. Try, Inspect and Adapt..</p>
<blockquote class="pull-quote"><p><em>Mastering neater writing on a whiteboard is a skill everyone wants to own but requires a lot of time and effort. Not everyone is willing or able to commit to this ;)</em></p>
</blockquote>
<figure class="figure figure--wide"><picture><source type="image/avif" sizes="(max-width: 63.99rem) calc(100vw - 2.5rem), (min-width: 90rem) 880px, 1000px"><source type="image/webp" sizes="(max-width: 63.99rem) calc(100vw - 2.5rem), (min-width: 90rem) 880px, 1000px"><img src="https://www.allsubjectsmatter.nl/sprints-in-real-life/images/20230307_125843_hu_953f1002edc794e8.webp" alt="" width="600" height="697" data-zoom-src="https://www.allsubjectsmatter.nl/sprints-in-real-life/images/20230307_125843_hu_792565e64cceba30.webp" loading="lazy" decoding="async">
  </picture></figure>

<h2 id="introduction">Introduction</h2>
<p>I use the words story below to break up something with subtasks. This is mostly a story for us, which also tells us we are open for discussing the how and the what.</p>
<p>A task is something that just needs to be done or is a specific request to run some query to get an export for example. not a lot of creativity in that :). A task is more defined in the what/how mostly. This is the main difference for us between the two.</p>
<p>Bugs and hotfixes are almost the same for us. except a hotfix gets fixed and deployed immediately. And a bug just moves as normal through the system. We both mark them red on the board so that is still something to work on for us also to create a visual difference.</p>
<p>Subtasks are tasks that get broken up from a story and needs to get done to move the story on. To keep it simple you can say we use the term story for tasks that can get broken up. I dont care about subtasks on the board from the DoD perspective. The value to me is in the whole story we committed to. Subtasks are removed after being done at this moment.</p>
<p>We are reviewing other versions to keep subtasks on the board for X time. I will write another post about these findings when we can analyze them.</p>
<h2 id="working-todo-in-dev">Working: TODO &amp; IN DEV</h2>
<p>All subtasks under a story move in the TODO lane only when work on that specific story begins. This visually indicates a commitment to finish it. Once all subtasks are complete, the story moves between the lanes. This is because the value of the story must move as a whole into the DONE lane to deliver value for us.</p>
<p>This approach ensures that the TODO lane remains clean. This also makes sure that the focus remains only on the subtasks within the story that gets worked on. You could also say that the lane to the left of TODO on the board represents the sprint backlog. And we only pull in new work after committing to the part we are going to develop next.</p>
<p>When we are going to work on a task we physically move it to in IN DEV. When the subtask is done we remove it from the board. We also put our name tag at the subtasks we are working on. We may work on more then one task at a time if we see that the work is overlapping to much for example.</p>
<p>In the image above, we are just finishing work on our third story. The developers chose this story over the second priority. This was because it delivered more value at that moment. This decision got made due to sickness of one of our senior developers and a short holiday break of our PO. The morning that this photo got taken, our PO provided us with more details about the second story. This allowed the Developers to break it down into workable items/tasks.</p>
<h2 id="blocked-stories">Blocked stories</h2>
<p>If stories are in the testing lane on the board after completing a new sprint. And this story was not a part of the current sprint we mark it blocked. In this case, we marked the story with an exclamation mark. We still focus work on this story of course. We still strive to move it forward, but sometimes it takes more time to move a story to the right. We may have to call in the help of the PO to move it forward or discuss with the stakeholders about its value.</p>
<p>This blocking state can get caused by an external factor, such as the task/story not getting tested. It can also be a quality issue where bugs keep coming up. And we are not being able to deliver the required quality until this gets fixed.<br>
Every blocking story gets valued again at sprint planning. So we can determine if it is still going to be a part of the new sprint planning.</p>
<p>We can only have blocking stories in test the way we work. That is the moment we thought we delivered the value. This value is then already present in our release cycle cause we found it to meet the DoD.</p>
<p>This is also the part we focus on the most at this moment. Getting more quality before we move something in test. We only need our infrastructure to work along with that. And that is another topic we are working on. We are going to work with Kubernetes and this will solve most of our problems with the release cycle.</p>
<h2 id="finishing-in-rev-in-test">Finishing: IN REV &amp; IN TEST</h2>
<p>After all the subtasks get done and the whole story gets tested local by the developers. Only then the third story may move to the IN REV(iew) lane.</p>
<p>It is then reviewed by two developers after which it can move to the IN TEST lane. only after a positive review of both ofcourse. One exception is also that it may move on after getting reviewed by one developer and being 24 hours later.</p>
<p>This works for us cause we are a team of 4 and not everyone is available always and we also need to get confident and move on.</p>
<blockquote>
<p>We currently have two testing environments, 31test and 32cur.</p>
</blockquote>
<p>As explained already we are working on switching to automated DevOps with Kubernetes. This will make the way we work to the testing lane a much more automated experience. Another benefit is that this is also going to deliver more quality.</p>
<h2 id="finally-done">Finally DONE!</h2>
<p>The DONE lane is split up for reasons i will explain below. Completed increments that are not yet deployed live are on the board in the &ldquo;DONE not yet released&rdquo; lane. This part of the lanes is the only lane that does not get emptied by the end of every sprint.</p>
<p>These items in the &ldquo;DONE not yet released&rdquo; lane need to get released of course. But that doesn&rsquo;t always happen immediately. For example: we need to communicate about the changes before releasing them. Another example is when the specific feature is set to go live on a specific date.</p>
<blockquote class="pull-quote"><p>As Developers, we do need to keep monitoring when these updates go live of course. Bugs may arise so we need to know what is released and what isn&rsquo;t.</p>
</blockquote>
<p>This also keeps a healthy discussion going about development done but not yet released. Having this visible adds to the transparency of what we are doing.</p>
<p>The released section under DONE means of course the item is live and fully deployed. This part of the lane gets cleaned every sprint. The items done here are being versioned after every sprint to keep track of progress.</p>
<h2 id="subtasks-and-visibility">Subtasks and visibility</h2>
<p>We are still struggling with subtasks that are done. We want to keep them for a while for transparency it feels better to move a subtasks first after finishing it. This feels better then immediately removing them from the board.</p>
<p>We are currently discussing different variants of our board. We might create a space under the lanes where all done subtasks will get placed. Until the Developers decide to remove them of course. They are in charge of the readability of the board.</p>
<blockquote class="pull-quote"><p>We are testing three different versions of our whiteboard at this moment. I will come back to these findings later.</p>
</blockquote>
<h2 id="something-about-jira">Something about Jira</h2>
<p>We dont have a rule to add subtasks in Jira. As a matter of fact i rather not see them in Jira. I use that mostly as my backlog and versioning system. Subtasks dont add any value for me in Jira until they get split from a story and become a task themself.</p>
<p>We do track and plan the whole sprint in Jira. But that is on a global level. The work done is mostly visible on our whiteboard. Stories of course move in both places. The board and Jira need to be in sync on the stories to be able to do my versioning and such.</p>
<p>If a Developer wants to add a subtask or needs to have a discussion about it we of course add the subtask to Jira. This way we can manage the discussed outcomes and discuss about them later on. This mostly happens on the parent story of course. But it isn&rsquo;t impossible to have a discussion you want to register at a subtask at some point. We dont encourage it but we also dont forbid it.</p>
<h2 id="conversation">Conversation</h2>
<p>If i want to know where we are in our sprint i really have to walk to this board where the Developers also work. One benefit of this is the conversation that starts between the Developers and me as a PO. The developers see that I am available and I of course carefully choose the moments to walk in.</p>
<blockquote class="pull-quote"><p>You do need to look out for disturbing the Developers to much and trying to track work to often. There is a balance in when you walk up there disturbing the developers with your presence.</p>
</blockquote>
<p>This talk is often about things they were already going to ask today. Because they see I am available to them it is even easier to approach me in that moment and verify that last thing.</p>
<p>You do need to keep in touch with your Developers as a PO during sprints. Preferably even on a daily basis depending on the stories within the sprint. You are not just there to start and end the sprint. That isn&rsquo;t a collaboration.</p>
]]></content:encoded>
    </item>
  </channel>
</rss>
