<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Agile Archives - Ronnie Schaniel</title>
	<atom:link href="https://ronnieschaniel.com/category/agile/feed/" rel="self" type="application/rss+xml" />
	<link></link>
	<description>Blog</description>
	<lastBuildDate>Mon, 06 Nov 2023 08:52:33 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.4</generator>
	<item>
		<title>10 Times Feedback is given in Agile Software Development</title>
		<link>https://ronnieschaniel.com/agile/10-times-feedback-is-given-in-agile-software-development/</link>
		
		<dc:creator><![CDATA[ronnieschaniel@hey.com]]></dc:creator>
		<pubDate>Mon, 06 Nov 2023 08:52:09 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<guid isPermaLink="false">https://ronnieschaniel.com/?p=1868</guid>

					<description><![CDATA[<p>Feedback is everywhere.</p>
<p>The post <a href="https://ronnieschaniel.com/agile/10-times-feedback-is-given-in-agile-software-development/">10 Times Feedback is given in Agile Software Development</a> appeared first on <a href="https://ronnieschaniel.com">Ronnie Schaniel</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large"><img fetchpriority="high" decoding="async" width="1024" height="679" src="https://ronnieschaniel.com/wp-content/uploads/2023/10/traffic_light-1024x679.jpg" alt="" class="wp-image-1869" srcset="https://ronnieschaniel.com/wp-content/uploads/2023/10/traffic_light-1024x679.jpg 1024w, https://ronnieschaniel.com/wp-content/uploads/2023/10/traffic_light-300x199.jpg 300w, https://ronnieschaniel.com/wp-content/uploads/2023/10/traffic_light-768x509.jpg 768w, https://ronnieschaniel.com/wp-content/uploads/2023/10/traffic_light-1536x1019.jpg 1536w, https://ronnieschaniel.com/wp-content/uploads/2023/10/traffic_light-2048x1359.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>The goal of Agile software development is, well, to be agile. This means you should be able to react fast. This requires feedback. In this blog post, we are going to explore various areas where feedback is relevant.</p>



<h2 class="wp-block-heading">Context</h2>



<p>We all know the famous path with deviations:</p>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="207" src="https://ronnieschaniel.com/wp-content/uploads/2023/10/path_with_deviations-1024x207.png" alt="" class="wp-image-1872" srcset="https://ronnieschaniel.com/wp-content/uploads/2023/10/path_with_deviations-1024x207.png 1024w, https://ronnieschaniel.com/wp-content/uploads/2023/10/path_with_deviations-300x61.png 300w, https://ronnieschaniel.com/wp-content/uploads/2023/10/path_with_deviations-768x155.png 768w, https://ronnieschaniel.com/wp-content/uploads/2023/10/path_with_deviations-1536x310.png 1536w, https://ronnieschaniel.com/wp-content/uploads/2023/10/path_with_deviations-2048x413.png 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>Software development can look like that. You would like to hit a target, that is here a functionality offered to the user. There is an ideal path (dotted path) on which you deliver the intended functionality on the first try without problems underway. This is not realistic. There are always deviations from the ideal path, e.g., missed requirements, bugs, bad design that needs rework, etc.<br>The goal is to keep those deviations to a minimum and to detect them early. The earlier they are detected, the cheaper they are to fix.</p>



<h2 class="wp-block-heading">#1 Exploration before going into details</h2>



<p>Depending on the risk, it makes sense to explore certain things before starting an implementation and going into details. Is this API you don&#8217;t really know well, really delivering what it should? Hit it via Postman or any other API client to check. </p>



<h2 class="wp-block-heading">#2 Defining expectations</h2>



<p>If a user story is started, it often makes sense to define the high-level expectations in tests. In this context, you should put each acceptance criteria of the story into the cheapest test to prove that the acceptance criteria are fulfilled. If you have covered that, you basically know, when you are done with your story and have reached the defined goal. <br>It is important to use the cheapest, i.e. simplest, test possible because you want early feedback. It doesn&#8217;t make sense to check acceptance criteria in an expensive and cumbersome UI test if it can just be validated in a simple unit test.</p>



<h2 class="wp-block-heading">#3 Compiler and Linter</h2>



<p>Depending on the technology there is immediate feedback when typing code. Because the compiler and linter in a modern IDE show that red squiggly line underneath code that is not as it should be. This is fast feedback and without it, we would lose a lot of time.</p>



<h2 class="wp-block-heading">#4 While doing TDD</h2>



<p>TDD is all about feedback. The most important aspect is not the feedback about whether your code works. In my opinion, the crucial part is the feedback about the design of your code. Is it easy to use and to test? Do I need to set up a lot for my test? Does someone understand what the code is doing from the tests? This is early feedback within seconds or minutes.</p>



<h2 class="wp-block-heading">#5 Build</h2>



<p>The build is the most obvious one. Building software and running all the tests is usually done anyway. Depending on the project this might already happen locally on the developer&#8217;s machine or only later on an external CI/CD system. It gives you feedback and answers the question if the whole system is still working. This depends also on the scope of the build. You have to make a trade-off. Building the whole system gives you full feedback about any side effects. Building only part of the system is faster.</p>



<h2 class="wp-block-heading">#6 Integrate</h2>



<p>Integrating your code changes with the main branch shows you if your changes still work in a larger context. Also, this might be the version that is usually deployed onto a dev or test system where further tests are conducted. These tests give you additional feedback.<br>Important here, is the feedback the other way around. If I build something, I would like to prevent it from being broken by others. Therefore I have to provide tests around my new code. Those tests should provide other developers (and myself in the future) feedback. This feedback should help others to not break my code.</p>



<h2 class="wp-block-heading">#7 Pair programming</h2>



<p>Pair programming gives you very immediate feedback. It provides a feedback loop possibly as short as the compiler and linter (depending on technology). The scope of the feedback is not only the code&#8217;s functionality but also the design. This makes pair programming valuable. Design errors that are hard to correct can be spotted early in the context they are created.</p>



<h2 class="wp-block-heading">#8 Pull Request</h2>



<p>This is the feedback I do not like, but in some contexts, it might still be a good idea. Pull request comments are added asynchronously, late, and out of context. It is usually hard to spot design errors in pull requests. Other feedback mechanisms are preferable. </p>



<h2 class="wp-block-heading">#9 Users</h2>



<p>A feature is useless if users do not want to use it. Similarly, if a feature does not work as expected by the user its value decreases. Users are one of the most valuable feedback sources in agile software engineering. At the same time, they are usually distant from the developer. It is important to integrate the user in the overall feedback loop to also get early feedback for this case. Spending two weeks on a new feature that is useless for the software&#8217;s user is a lot of waste. Therefore, users should be included in the software development cycle early and often. On the other hand, it can also mean that software should be delivered early and often.</p>



<h2 class="wp-block-heading">#10 Monitoring and analytics</h2>



<p>Finally, data does not lie. While monitoring should provide us with data about the performance and errors of our features, analytics gives us an idea about how our software is used. This can provide us with feedback more objectively.</p>



<p>We see feedback in agile software development is crucial! A Lot of places where we do not really think about feedback are important. It helps us to deliver the right features and the features in the right form.</p>
<p>The post <a href="https://ronnieschaniel.com/agile/10-times-feedback-is-given-in-agile-software-development/">10 Times Feedback is given in Agile Software Development</a> appeared first on <a href="https://ronnieschaniel.com">Ronnie Schaniel</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>User Stories  Defined From a User&#8217;s Perspective</title>
		<link>https://ronnieschaniel.com/agile/user-story-defined-from-a-users-perspective/</link>
		
		<dc:creator><![CDATA[ronnieschaniel@hey.com]]></dc:creator>
		<pubDate>Tue, 25 May 2021 17:14:07 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<guid isPermaLink="false">https://ronnieschaniel.com/?p=509</guid>

					<description><![CDATA[<p>What advantages does it have to take a user's view?</p>
<p>The post <a href="https://ronnieschaniel.com/agile/user-story-defined-from-a-users-perspective/">User Stories  Defined From a User&#8217;s Perspective</a> appeared first on <a href="https://ronnieschaniel.com">Ronnie Schaniel</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>We&#8217;ve got the famous format of user stories: &#8220;As a, I want so that&#8221;. I&#8217;m not too concerned about the actual format. Important is that a user story describes something that solves a problem in the user&#8217;s domain from a user&#8217;s view. In this post we&#8217;re discussing why user stories from a user&#8217;s perspective are important. Generally, I see the following advantages compared to &#8220;stories&#8221; that are written more like traditional requirements, e.g. &#8220;Interface X delivers value Y in format Z&#8221;:</p>



<ul class="list-none wp-block-list"><li>📬 Done means something is realised that probably helps the user</li><li>📌 Definition of details can be postponed</li><li>📁 Clear structure helps to prioritise</li><li><a href="https://apps.timwhitlock.info/emoji/tables/unicode#emoji-modal">📝</a> Stories are understood by users and stakeholders</li><li><a href="https://apps.timwhitlock.info/emoji/tables/unicode#emoji-modal">👩</a> It is clear that a user is the target audience</li></ul>



<p>Next, let&#8217;s deep dive into those advantages and discuss them in detail.</p>



<h2 class="wp-block-heading">Done means something is realised that probably helps the user</h2>



<p>What happens if you have user stories like &#8220;Interface X delivers value Y in format Z&#8221;? You are not sure if something valuable to the user is delivered when the story is done. On the other hand something like &#8220;As a registered user I can go through a &#8216;password forgotten&#8217; process, to ensure I can always log in&#8221; has a clear statement and benefit. As soon as this story is done the user is able to recover when forgetting his password. That makes the user happy and most likely decreases the amount of emails in the support department. </p>



<p>As soon as the story is done value is realised. Given that the story is released to at least a subset of users and actually satisfies those user&#8217;s need.<br>Additionally, if the story is independent from other stories, you are sure you can deliver the story independently and still create something meaningful for the user. So, no need to discuss a lot about dependencies between stories.<br>You can also read our <a href="https://ronnieschaniel.com/agile/the-cost-of-not-releasing-software-frequently/" target="_blank" rel="noreferrer noopener">post</a> about the frequent delivery of value to understand the importance of this point.</p>



<h2 class="wp-block-heading">Definition of details can be postponed</h2>



<p>When you define a user story from a user&#8217;s view, you can omit all the technical and design details. Like that you can postpone those decisions to the last possible point in time. This ensures that you are basing the technical and visual design decisions on the latest information. Furthermore it also means you did not waste time with unnecessary work if a user story is put into the bin.</p>



<h2 class="wp-block-heading">Clear structure helps to prioritise</h2>



<p>When user story descriptions follow a certain pattern it is more likely that they end up having the same abstraction level. Things with the same level of detail are easier to sort and prioritise. Let&#8217;s have a look at the following example. You can decide for yourselves which variant is harder to prioritise:</p>



<div class="wp-block-columns is-layout-flex wp-container-core-columns-is-layout-9d6595d7 wp-block-columns-is-layout-flex">
<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<ul class="wp-block-list"><li>Add a &#8220;Password forgotten&#8221; link to the login form</li><li>Create a button for the order&#8217;s overview on the confirmation page</li></ul>
</div>



<div class="wp-block-column is-layout-flow wp-block-column-is-layout-flow">
<ul class="wp-block-list"><li>As a registered user I can go through a &#8220;password forgotten&#8221; process, to ensure I can always log in</li><li>As a customer I want a direct link to my orders when I land on the confirmation page to have a status overview of all my orders</li></ul>
</div>
</div>



<p>In both cases we just add a link (and a whole &#8220;password forgotten&#8221; process for the first one). In the second variant it becomes clearer what the user (and the company) gains from each story. </p>



<h2 class="wp-block-heading">Stories are understood by users and stakeholders</h2>



<p>Having a story written from a user&#8217;s point of view makes it clearer to understand for all people involved. Users or customers don&#8217;t need to ask what changes if interface X delivers value Y. Instead they know what they are getting. The discussions around a story between developers (and/or PO) and the user can focus on the problem to be solved without having too much technical details that only distract.</p>



<h2 class="wp-block-heading">It is clear that a user is the target audience</h2>



<p>The user is explicitly mentioned. Hence, the solution should always be designed having the user in mind. Compare this to too technical stories where the user doesn&#8217;t find its place. There the user&#8217;s need is neglected and we might implement the &#8220;story&#8221; without really solving the user&#8217;s problem. This only causes rework in the end or unhappy users. A software is not something that is created just to offer some features. A software is a product that helps its users to do some tasks or solve problems. Finally, the target audience focus means that we know from where to get feedback about the implementation. Then we can iterate and improve.</p>



<h2 class="wp-block-heading">Conclusion &#8211; User Stories from a User&#8217;s Perspective</h2>



<p>As always with Agile development, practices should probably differ from team to team. Every team is different and chooses its own best way of working (see also this <a href="https://ronnieschaniel.com/agile/why-agile-teams-should-be-self-organising/" target="_blank" rel="noreferrer noopener">article</a>). Of course teams can always break down work into smaller chunks or tasks that are then more technically formulated. But having the user story as a base gives the developers the right focus to deliver something of value to the users.</p>



<p>Please also be aware of the following points when using the &#8220;As a &#8230; I &#8230; such that &#8230;&#8221; pattern:</p>



<ul class="wp-block-list"><li>Not everything needs to be a user story. Alternative approaches like <a href="https://jtbd.info/replacing-the-user-story-with-the-job-story-af7cdee10c27" target="_blank" rel="noreferrer noopener">job stories</a> could be more fitting in some cases.</li><li>When expressing a certain user story in the pattern doesn&#8217;t feel right, then stop. Try it in another way. But just have in mind that the goal is to deliver value.</li></ul>



<p>That is why I emphasised the user&#8217;s perspective in the introduction rather than the exact format.</p>
<p>The post <a href="https://ronnieschaniel.com/agile/user-story-defined-from-a-users-perspective/">User Stories  Defined From a User&#8217;s Perspective</a> appeared first on <a href="https://ronnieschaniel.com">Ronnie Schaniel</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why Agile Teams Should Be Self-Organising</title>
		<link>https://ronnieschaniel.com/agile/why-agile-teams-should-be-self-organising/</link>
		
		<dc:creator><![CDATA[ronnieschaniel@hey.com]]></dc:creator>
		<pubDate>Wed, 19 May 2021 16:19:06 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<guid isPermaLink="false">https://ronnieschaniel.com/?p=475</guid>

					<description><![CDATA[<p>What actually means self-organisation for an Agile Team? What is behind it?</p>
<p>The post <a href="https://ronnieschaniel.com/agile/why-agile-teams-should-be-self-organising/">Why Agile Teams Should Be Self-Organising</a> appeared first on <a href="https://ronnieschaniel.com">Ronnie Schaniel</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>So often we hear or read that Agile teams should be self-organising. Sometimes I have the impression people do not fully understand what the meaning behind it is. Let&#8217;s elaborate what self-organisation really means for an Agile team.</p>



<h2 class="wp-block-heading">The origins of self-organising Agile teams</h2>



<p>Citing the Agile Manifesto and its principles is always a bit tricky. It&#8217;s more than 20 years since its creation. Hence, in this time we hopefully learnt something while also the environment changed. Nevertheless we can still find value in its statements:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>&#8220;Build projects around motivated individuals. Give them the environment and support they need, and trust them to get the job done.&#8221; <br>(&#8230;)<br>&#8220;The best architectures, requirements, and designs emerge from self-organizing teams.&#8221;</p><cite>From the <a href="https://agilemanifesto.org/iso/en/principles.html" target="_blank" rel="noreferrer noopener">Agile Principles</a></cite></blockquote>



<p>So, the 17 software developers coming together at Snowbird in 2001 mentioned the following:</p>



<ul class="wp-block-list"><li>The <strong>best software emerges</strong> from <strong>self-organising</strong> teams</li><li><strong>Trust the team</strong> to get the job done</li><li>Have <strong>motivated</strong> individuals in the teams</li><li>Give these individuals the <strong>environment and support they need</strong></li></ul>



<p>Surely there must have existed self-organising teams also before the year 2001. But with the creation of the Agile Manifesto it was clearly specified. Next, we have a closer look at those principles and try to give an idea what it implies for our day-to-day work.</p>



<h2 class="wp-block-heading">The best software emerges from self-organising teams</h2>



<p>I put the term software for architectures, requirements, and designs. If you optimise these three parts, you are more likely to also get better software. But why do the best architectures, requirements, and designs emerge from teams that are self-organising? Before explaining that, let&#8217;s have a look what the alternatives are:</p>



<ul class="wp-block-list"><li><strong>Architecture and design </strong>is dictated from outside the team. Teams do not have that much influence on architectural decisions and are left to accept.</li><li><strong>Requirements</strong> likewise come from instances outside the team. The team itself doesn&#8217;t talk directly with the user. </li></ul>



<p>So, let&#8217;s see what improves when the team is in charge. </p>



<h3 class="wp-block-heading">Architecture and Design</h3>



<p>The team that develops a system, knows the system best. Additionally they are nearest to the system&#8217;s development which means that they are able to take and apply decisions quickly. In their day to day work they experience what it means to extend and maintain the system. Therefore the developers should be able to judge what design and architectural directions are most promising. <br>Of course it does not mean that developers should ignore the outside world of architects and other teams. Actually they should take inputs from the outside seriously and evaluate them based on their good knowledge of the software under development.</p>



<h3 class="wp-block-heading">Requirements</h3>



<p>Both, the users and the developers know a software system best. The users obviously are using the system with all its features in the context the system is intended for. The developers know what is possible from a technical perspective. If we bring those two parties together conversations about the software details are very likely to happen. This is actually the point where a user story can be captured (it is not called &#8220;user story&#8221; for no reason). Besides that, the communication path between user and developer is in this case of length 1. No instances in between which could transmit informations in a distorted way (or manipulate and even bring their own view into it). Ultimately, we have short feedback loops. <br>In the end, self organisation also means that a team decides what they work on. Management only gives vision and strategy, no specific work assignments. The team can figure out with users and stakeholders which direction is most promising for value delivery.</p>



<p>People nearest to the work can make the best decisions.</p>



<h2 class="wp-block-heading">Trust the team to get the job done</h2>



<p>Every team is different since they consist of individuals with different skills, backgrounds, and experiences. At the same time every team should strive for continuous improvements within the team. Consequently every team takes different decisions on improvements, e.g. how to approach work, how to interact with stakeholders, and so on. This in turn makes every team look differently from an outside perspective. <br>Nevertheless, managers often try to compare teams, control them, and measure them. But what happens if a team feels they are evaluated based on externally visible KPIs? The team optimises towards those KPIs to look good from an outside perspective. Hence, their improvements take a wrong aim and not anymore try to improve value delivery. The result is a suboptimal way of working.<br>The only thing an Agile team has to guarantee is the ability to continuously deliver value. Stop managing the team and start trusting.</p>



<h2 class="wp-block-heading">Have motivated individuals in the teams</h2>



<p>Usually software developers are very happy about the actual work that comes with their job. They like programming and want to program. A part of us even programs in our spare time. As always there are a few exceptions. People that generally don&#8217;t like developing software should just not develop software and change their job.<br>Anyway, if now these motivated programers can work on their own architecture and are allowed to talk to the user, I&#8217;m convinced they are even more involved and want the software product to succeed. Developers don&#8217;t want an assembly line type of job where they just receive detailed and predefined requirements, implement and ship them. They usually want to be creative and solve problems to create great software products. And, opposite to what some people might think, programmers also like to talk to the user and build a relationship. They are humans in the end, a social species. And developing software is a highly social activity.<br>Finally, despite all the things mentioned above, there could still exist some obstacles in the day-to-day work of a developer. And those obstacles can decrease motivation. This is where the next part of this blog post comes into play.<br>It&#8217;s not only about motivated individuals though. You also need the right skills in the team. Self-organisation becomes easier if the team is cross-functional. If you are too dependent on others, it&#8217;s more difficult.</p>



<h2 class="wp-block-heading">Give the environment and support they need</h2>



<p>How can an Agile team continuously deliver value and excite users? Is it because they work hard, develop fast, and increase their velocity? No, it&#8217;s about continuous improvement and removal of obstacles. It&#8217;s about keeping a sustainable pace. If procurement takes too long, fix that. A team that needs a big screen for mob-programming doesn&#8217;t need it in 2 months, it needs it now. If you&#8217;re a manager don&#8217;t tell the team how to work. Instead, ask the team what they need for working in an ideal way. <br>At the same time, asking critical questions to the team is needed too. Trigger the team to reflect on their way of working with inputs from the outside. But always understand that they are self-organising.</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>Agile teams are not self-organising for no reason. There are thoughts behind this term and specific details why a team should organise themselves. If someone is claiming that his or her team(s) are self-organising, reflect on the above mentioned points. </p>



<p>Finally, I could imagine that self-organisation can also be pushed too far. Especially if you are working next to other teams, it might make sense to find a common ground. Because the goal is that all the teams can continuously deliver value. But if the other Agile teams (and the whole organisation) also understand self-organisation, it will not be too difficult to find a solution. </p>



<p> </p>
<p>The post <a href="https://ronnieschaniel.com/agile/why-agile-teams-should-be-self-organising/">Why Agile Teams Should Be Self-Organising</a> appeared first on <a href="https://ronnieschaniel.com">Ronnie Schaniel</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The Cost of Not Releasing Software Frequently</title>
		<link>https://ronnieschaniel.com/agile/the-cost-of-not-releasing-software-frequently/</link>
		
		<dc:creator><![CDATA[ronnieschaniel@hey.com]]></dc:creator>
		<pubDate>Sun, 14 Feb 2021 16:54:05 +0000</pubDate>
				<category><![CDATA[Agile]]></category>
		<guid isPermaLink="false">http://ronnieschaniel.com/?p=59</guid>

					<description><![CDATA[<p>A comparison of release frequencies and the influence on business value.</p>
<p>The post <a href="https://ronnieschaniel.com/agile/the-cost-of-not-releasing-software-frequently/">The Cost of Not Releasing Software Frequently</a> appeared first on <a href="https://ronnieschaniel.com">Ronnie Schaniel</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>There are still some software companies that release their software to the users only every month.</p>



<figure class="wp-block-image size-large is-style-default mt-6"><img decoding="async" width="1024" height="653" src="http://ronnieschaniel.com/wp-content/uploads/2021/02/the_cost_optimized_of_not_releasing-1-1024x653.jpg" alt="" class="wp-image-66" srcset="https://ronnieschaniel.com/wp-content/uploads/2021/02/the_cost_optimized_of_not_releasing-1-1024x653.jpg 1024w, https://ronnieschaniel.com/wp-content/uploads/2021/02/the_cost_optimized_of_not_releasing-1-300x191.jpg 300w, https://ronnieschaniel.com/wp-content/uploads/2021/02/the_cost_optimized_of_not_releasing-1-768x490.jpg 768w, https://ronnieschaniel.com/wp-content/uploads/2021/02/the_cost_optimized_of_not_releasing-1-1536x980.jpg 1536w, https://ronnieschaniel.com/wp-content/uploads/2021/02/the_cost_optimized_of_not_releasing-1-2048x1307.jpg 2048w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p>In this article we construct a model for business value realisation and demonstrate based on it what such companies actually loose. We focus on this business value realisation and ignore for a moment other disadvantages of not releasing frequently. These would include: larger and therefore more riskier deployments, possible overload with productive defects, or later feedback.</p>



<h2 class="wp-block-heading">The Business Value Realisation Model</h2>



<p>Context: we assume that we’re having a team of 8 developers who are working on User Stories. These User Stories are done within 1 day and could potentially be released to the users. Further assumptions:</p>



<ul class="wp-block-list"><li>A User Story realises a constant benefit of 100$ per day for the business</li><li>The software in our case is only used during working days and the 8 developers work during all the working days</li><li>A single developer finishes 5 User Stories per week</li><li>Once a User Story is completed it could be released in the evening and start to realise the benefits from the next working day on</li></ul>



<p>What exactly is business value here? It’s the monetary benefit resulting from users using our software.</p>



<p>Now we are set and ready to explore different release frequencies.</p>



<h2 class="wp-block-heading">1) Releasing every 4 weeks</h2>



<p>Our 8 developers are completing 8 Stories per day which results in 800$ value ready to deliver. So, after 20 days of implementation there is 20*800$ = 16&#8217;000$ ready to be released. On the evening of the 20th day the release is taking place and from the 21st day on the business now realises a benefit of 16&#8217;000$ per day. On the 41st day the value realised sums up to 352$ (20*16&#8217;000$ + 1*32&#8217;000$). Below table shows the total gained value until a specific day where green cells mark a day after a release:</p>



<figure class="wp-block-image size-large is-style-default"><img decoding="async" width="700" height="1024" src="http://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_20_days-700x1024.png" alt="" class="wp-image-81" srcset="https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_20_days-700x1024.png 700w, https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_20_days-205x300.png 205w, https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_20_days.png 710w" sizes="(max-width: 700px) 100vw, 700px" /></figure>



<h2 class="wp-block-heading">2) Releasing every 10 days</h2>



<p>Every 10 days 8&#8217;000$ more value is ready to be gained if the software ends up in production and is used by the users. In this variant the first release happens on the evening of the 10th day. This means we start to get value on the 11th day. Further deployments happen on the 20th, 30th and 40th day:</p>



<figure class="wp-block-image size-large is-style-default mt-6"><img decoding="async" width="673" height="1024" src="http://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_10_days-673x1024.png" alt="" class="wp-image-84" srcset="https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_10_days-673x1024.png 673w, https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_10_days-197x300.png 197w, https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_10_days.png 744w" sizes="(max-width: 673px) 100vw, 673px" /></figure>



<h2 class="wp-block-heading">3) Releasing every 5 days</h2>



<p>It should be self-explaining at this point:</p>



<figure class="wp-block-image size-large is-style-default mt-6"><img decoding="async" width="598" height="928" src="http://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_5_days.png" alt="" class="wp-image-83" srcset="https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_5_days.png 598w, https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_5_days-193x300.png 193w" sizes="(max-width: 598px) 100vw, 598px" /></figure>



<h2 class="wp-block-heading">4) Releasing every day</h2>



<p>Finally the software is released every day. That means already on the second day the benefit of 800$ is gained:</p>



<figure class="wp-block-image size-large is-style-default mt-6"><img decoding="async" width="774" height="1024" src="http://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_day-774x1024.png" alt="" class="wp-image-82" srcset="https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_day-774x1024.png 774w, https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_day-227x300.png 227w, https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_day-768x1015.png 768w, https://ronnieschaniel.com/wp-content/uploads/2021/02/releasing_every_day.png 838w" sizes="(max-width: 774px) 100vw, 774px" /></figure>



<p>After 41 days we reach 656&#8217;000$. Which is equal to (40² + 40) / 2 * 800$.</p>



<p>On a chart the 4 variants compare as follows:</p>



<figure class="wp-block-image size-large is-style-default mt-6"><img decoding="async" src="http://ronnieschaniel.com/wp-content/uploads/2021/02/release_frequency_comparison-1024x728.png" alt="" class="wp-image-85"/></figure>



<p>The value created after 41 days is almost doubled when releasing everyday instead of only every 20 days ($656&#8217;000 vs. $352&#8217;000).</p>



<h2 class="wp-block-heading">Conclusion</h2>



<p>While this model of course does not correspond exactly to reality, it gives an idea about where value is lost. Or more positively put, it shows how you can increase your value realised.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p>Don’t build for a release. Release what you build.</p></blockquote>



<p>And of course: keep your User Stories small!</p>
<p>The post <a href="https://ronnieschaniel.com/agile/the-cost-of-not-releasing-software-frequently/">The Cost of Not Releasing Software Frequently</a> appeared first on <a href="https://ronnieschaniel.com">Ronnie Schaniel</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
