<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">



<title type="text">Capgemini Software Engineering</title>
<generator uri="https://github.com/mojombo/jekyll">Jekyll</generator>
<link rel="self" type="application/atom+xml" href="https://capgemini.github.io/feed.java.xml" />
<link rel="alternate" type="text/html" href="https://capgemini.github.io/" />
<updated>2026-03-26T08:01:08+00:00</updated>
<id>https://capgemini.github.io/</id>
<author>
  <name>Capgemini</name>
  <uri>https://capgemini.github.io/</uri>
</author>

    <entry>
  <title type="html"><![CDATA[The bigger picture and the smaller details]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/bigger-picture-smaller-details/"/>
  <id>https://capgemini.github.io/agile/bigger-picture-smaller-details</id>
  <published>2019-04-18T00:00:00+01:00</published>
  <updated>2019-04-18T00:00:00+01:00</updated>
  
  
  
  
  
  <author>
      <name>Malcolm Young</name>
      <uri>https://capgemini.github.io/authors#author-malcolm-young</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Ways%20Of%20Working" term="Ways Of Working" /><category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" />
  <content type="html">
    
    &lt;p&gt;Many people, myself included, say that &lt;a href=&quot;https://www.infoq.com/news/2008/11/sprint-misnomer&quot;&gt;sprints are the wrong metaphor&lt;/a&gt; for software development. When we think about the need to maintain a steady, sustainable pace, and the importance of &lt;a href=&quot;http://rgalen.com/agile-training-news/2013/9/16/the-agile-project-manager-can-agile-teams-get-burned-out&quot;&gt;avoiding burnout&lt;/a&gt;, the idea of &lt;a href=&quot;https://gojko.net/2018/08/30/sprints-marathons-root-canals.html&quot;&gt;the sprint can give us the wrong idea&lt;/a&gt;. But maybe it makes more sense if we think about how real sprints work, and about all of Scrum’s ceremonies, not just the cargo cult of the stand-up.&lt;/p&gt;

&lt;p&gt;When Usain Bolt finishes a race, he doesn’t just start again straight away. He does his victory pose, smiles for the cameras, does some warming down, and has a few days rest. When it’s time for the next race, he spends time preparing himself, both mentally and physically, for the challenge ahead. He does everything he can to ensure that he’s in the best possible state before his next sprint starts, so that he’s able to function at maximum capacity to achieve a good result.&lt;/p&gt;

&lt;p&gt;As software development teams, all too often we ignore the importance of these activities between sprints. In particular, the retrospective is frequently undervalued. It’s easy for managers to see the retrospective as a time-consuming navel-gazing session, where the team doesn’t deliver any business value or burn any story points. If the team is under pressure to deliver faster, it’s probably the first thing that gets cancelled.&lt;/p&gt;

&lt;p&gt;In our &lt;a href=&quot;https://capgemini.github.io/development/how-we-work/&quot;&gt;software engineering team manifesto&lt;/a&gt;, we laid out some points for how a team should operate, including the idea that we “focus on the details, and on the bigger picture”. Maintaining a healthy balance between these two ways of seeing can be a challenge, and it’s one of the things that people often find difficult when moving from an individual contributor role to &lt;a href=&quot;https://www.youtube.com/watch?v=PFk9yhEqcN4&amp;amp;list=PLBzScQzZ83I_VX8zgmLqIfma_kJs3RRmu&amp;amp;index=15&amp;amp;t=0s&quot;&gt;take on leadership responsibilities&lt;/a&gt;. As developers we’re used to getting deep down into the details of an issue, but as leaders, shaping the direction of a product, we need to take more of an overview. If you’re a technical lead it can be very difficult to switch between these two contexts, especially if you don’t take time to reflect. If the team is working flat-out, it’s easy to fall into the trap of focusing solely on the small details - things like burndown rates or technical implementation challenges - at the expense of considering the bigger picture of the project’s direction of travel. It’s important to schedule time for both modes of thinking, and retrospectives are an ideal opportunity for thinking about the bigger picture.&lt;/p&gt;

&lt;p&gt;Another analogy sometimes used for software development is &lt;a href=&quot;https://m.signalvnoise.com/new-in-basecamp-see-where-projects-really-stand-with-the-hill-chart/&quot;&gt;climbing a mountain&lt;/a&gt;. When you’re climbing uphill, you have to keep looking at your feet, watching out for uneven ground to make sure you don’t trip up. It’s only when you stop and look around that you get a chance to enjoy the view, and understand the whole point of the endeavour. If you keep plodding on without taking a break, it’s very easy to get disheartened.&lt;/p&gt;

&lt;p&gt;That’s what retrospectives are for: a chance to take stock of where we are and how we got there. They offer a moment to pause, take a breath and think about where we’re going next, and whether we’re going the right way. They’re an important opportunity to &lt;a href=&quot;http://rgalen.com/agile-training-news/2012/4/28/the-agile-project-managerthe-secret-sauce-team-appreciation.html&quot;&gt;celebrate what we’ve achieved, and recognise the hard work we’ve put in&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;So let’s remember to take a break from time to time, appreciate our colleagues, understand our achievements and our challenges, and think about where we go from here.&lt;/p&gt;


    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/bigger-picture-smaller-details/&quot;&gt;The bigger picture and the smaller details&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on April 18, 2019.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Project Management Methodology  – Probably a necessary evil for large Agile IT Projects]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/project-management-methodology-agile-projects/"/>
  <id>https://capgemini.github.io/agile/project-management-methodology-agile-projects</id>
  <published>2019-01-24T00:00:00+00:00</published>
  <updated>2019-01-24T00:00:00+00:00</updated>
  
  
  
  
  
  <author>
      <name>Imran Khan</name>
      <uri>https://capgemini.github.io/alumni#author-imran-khan</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" /><category scheme="https://capgemini.github.io/tags/#Methodology" term="Methodology" /><category scheme="https://capgemini.github.io/tags/#Ways%20Of%20Working" term="Ways Of Working" /><category scheme="https://capgemini.github.io/tags/#Scrum" term="Scrum" /><category scheme="https://capgemini.github.io/tags/#Productivity" term="Productivity" /><category scheme="https://capgemini.github.io/tags/#Learning" term="Learning" />
  <content type="html">
    
    &lt;p&gt;For me, who has been practicing the &lt;a href=&quot;https://www.agilealliance.org/agile101/&quot;&gt;Agile&lt;/a&gt; in the IT industry for much of my career, earlier project management methodologies appeared as a big evil monster which try to control everything. After recently being certified as a &lt;a href=&quot;https://www.qa.com/training-courses/project-and-programme-management-training/prince2-training/prince2-foundation-and-practitioner-inc-exams&quot;&gt;PRINCE2 Practitioner&lt;/a&gt;, I felt like sharing current understanding and experience in a light read with the engineering community which may benefit large enterprise level Agile IT projects.&lt;/p&gt;

&lt;p&gt;When looking into PRINCE2, the very first challenge was that it all appeared like geared towards &lt;a href=&quot;https://www.lucidchart.com/blog/waterfall-project-management-methodology&quot;&gt;Waterfall&lt;/a&gt; and a lot focused on control, for example its principle about &lt;a href=&quot;http://prince2.wiki/Manage_by_exception&quot;&gt;Manage by Exception&lt;/a&gt;. The other challenge was, some really confusing terms like &lt;a href=&quot;http://prince2.wiki/Configuration_Item_Record_Template&quot;&gt;Configuration Item&lt;/a&gt; which can easily be termed as an artefact, basically anything (document, software etc which requires a version and status). Another example of confusing term was &lt;a href=&quot;http://prince2.wiki/Management_products&quot;&gt;Product&lt;/a&gt;. In PRINCE2, Product can be of two types i.e. &lt;a href=&quot;http://prince2.wiki/Management_products&quot;&gt;Management&lt;/a&gt; or &lt;a href=&quot;http://prince2.wiki/Management_products&quot;&gt;Specialist&lt;/a&gt;. In essence &lt;a href=&quot;http://prince2.wiki/Management_products&quot;&gt;Management Products&lt;/a&gt; are really documents created to support project like &lt;a href=&quot;https://www.prince2.com/uk/how-plan-project&quot;&gt;Project Plan&lt;/a&gt; and &lt;a href=&quot;http://prince2.wiki/Management_products&quot;&gt;Specialist Products&lt;/a&gt; are parts of the final Product and would be handed over to the customer like software etc, though it can be documents as well.&lt;/p&gt;

&lt;p&gt;Initially, there was a time when the dominant thought was that PRINCE2 may not be suitable for an Agile IT project. However, after much experience and analysing its potential application to some previous experiences, a light bulb was lit up that a tailored version &lt;a href=&quot;http://prince2.wiki/Tailor_to_suit_the_project_environment&quot;&gt;(Tailor to the Environment)&lt;/a&gt; of PRINCE2 may be a necessary evil for the large enterprise Agile IT projects.&lt;/p&gt;

&lt;p&gt;Let’s start with some of my experiences about what a typical large Agile IT projects lacks, for example lacking a coherent structure for the whole of the project. It is not to say that projects have no structure at all but more to say that it misses the coherent element and an end to end view of the project. Following are some specific areas:&lt;/p&gt;

&lt;p&gt;i.	When talking about enterprise level IT projects, Agile does not really discuss all the roles and responsibilities needed for a project. While &lt;a href=&quot;https://www.scrum.org/resources/what-is-scrum&quot;&gt;Scrum&lt;/a&gt; is a good approach to structure a delivery team, it discusses less about large enterprise project team. For example, if the &lt;a href=&quot;https://www.scrum.org/resources/what-is-a-scrum-master&quot;&gt;Scrum Master&lt;/a&gt; is not really responsible for the delivery then who is really responsible for the delivery of the artefact? Who to go to when there is an issue?&lt;/p&gt;

&lt;p&gt;ii.	On some projects, teams appear a bit distracted and appear disjointed towards the main product and end up spending time on less valuable artefacts or trying to &lt;a href=&quot;http://community.uservoice.com/blog/why-products-fail/&quot;&gt;fix a non-existent problem&lt;/a&gt;. Sometimes it leads to duplication of efforts or other times creating some unnecessary artefacts which are considered reusable, but &lt;a href=&quot;http://udidahan.com/2009/06/07/the-fallacy-of-reuse/&quot;&gt;no one really reuses them&lt;/a&gt;. In some cases, it leads to release nightmare as dependencies are less understood at an earlier stage. A number of companies and projects try to use the mechanism of Scrum of Scrums or something similar, but does it really work?&lt;/p&gt;

&lt;p&gt;iii.	While inherently Agile is supposed to deliver software as needed by the business but occasionally on long-running Agile projects, the technical delivery may be very good, but business may appear less interested in using it. One of the examples is of a large public sector project which was delivered on time and budget but never went live.&lt;/p&gt;

&lt;p&gt;iv.	Agile also seems to miss some other cool bits related to project management. For example, there is a principle about reflecting at regular intervals to become more effective which is typically done as &lt;a href=&quot;https://www.atlassian.com/agile/scrum/ceremonies&quot;&gt;retrospective ceremony&lt;/a&gt; but there is little or no attention to the lessons from previous projects and how learning can be applied to the future projects.&lt;/p&gt;

&lt;p&gt;v.	Documentation and reporting progress are also challenging on an Agile project. Agile is heavily influenced with the &lt;a href=&quot;http://www.extremeprogramming.org/&quot;&gt;XP-Extreme Programming&lt;/a&gt;. I am an advocate of XP but probably not at the cost of the project or post project life cycle of the application. No documentation may appear very compelling to some during the project but may not look so compelling when looking at the end to end life cycle of the product. There can be situations where you have just code with a sea of fragmented wiki pages. For example, on one project we just had compiled Java code with even no source. Did it really help the next project or was it used more as a kind of mechanism to lock the client so no one else knows how it works and let the client suffer should they decide to go with a different provider?&lt;/p&gt;

&lt;p&gt;PRINCE2 seems to appear as a good methodology to manage above mentioned gaps in on a large Agile IT project. For example, it provides a solid structure for the end to end life cycle of a project which helps not only the management team, but it can also help the development and delivery teams to see the relationship with other components and see the non-technical bigger picture. I think PRINCE2 can nicely fill above mentioned gaps:&lt;/p&gt;

&lt;p&gt;i.	&lt;a href=&quot;http://prince2.wiki/Roles_and_responsibilities&quot;&gt;Define Roles and Responsibilities&lt;/a&gt; and &lt;a href=&quot;http://prince2.wiki/Manage_by_exception&quot;&gt;Manage by Exception&lt;/a&gt; principles and related concepts offers well-defined roles and responsibilities which can help to structure project teams relatively better. For example, for a large Agile IT project, a Scrum Master can facilitate a delivery team and a &lt;a href=&quot;http://prince2.wiki/Roles_and_responsibilities&quot;&gt;Project Manager&lt;/a&gt; can act as a &lt;a href=&quot;http://prince2.wiki/Roles_and_responsibilities&quot;&gt;Team Manager&lt;/a&gt;. It would allow, the team to focus on the development, a Scrum Master to facilitate them, a Project Manager to take the responsibility of delivery and an &lt;a href=&quot;http://prince2.wiki/Roles_and_responsibilities&quot;&gt;Executive&lt;/a&gt; to take the responsibility of the overall &lt;a href=&quot;http://prince2.wiki/Business_Case&quot;&gt;Business Case&lt;/a&gt;. It would put less strain on the Project Manager to facilitate technical aspects as one may not be technical at all. On the other hand, less strain on the Scrum Master as one does not have to be responsible for the delivery but purely facilitation (A true Scrum Master which I have rarely seen in the practical life).
This also nicely address the challenge of whom to go to when there is a problem. Please note these are roles and not the person. One person may fill different roles, though some roles cannot be combined.&lt;/p&gt;

&lt;p&gt;ii.	 The &lt;a href=&quot;http://prince2.wiki/Focus_on_products&quot;&gt;Focus on the Product&lt;/a&gt; principle and related concepts like &lt;a href=&quot;https://www.prince2.com/uk/blog/product-description-differences&quot;&gt;Project Product Description, Product Breakdown Structure, Product Description and Product Flow&lt;/a&gt; allows keeping team focused on what is needed. It also allows seeing how these teams contribute to the overall Business Case for the project. Even an Executive can see the need of any team and how long it is needed for from a very high level. There is absolutely no harm in using &lt;a href=&quot;https://www.atlassian.com/software/jira&quot;&gt;Jira&lt;/a&gt; or similar tools to create the same structure but in this instance links are clearer, priorities are more organized, and team has more structured view of the end &lt;a href=&quot;https://www.prince2.com/uk/blog/the-7-principles-themes-and-processes-of-prince2&quot;&gt;Product&lt;/a&gt; and its link to the Business Case. By all means, it does not suggest that you should describe all details up front before beginning of the project as it would just kill Agile, however you have an earlier structure in place and a &lt;a href=&quot;https://www.prince2.com/uk/blog/product-description-differences&quot;&gt;Product Description&lt;/a&gt; can be matured at even the &lt;a href=&quot;http://prince2.wiki/Work_Package&quot;&gt;Work Package&lt;/a&gt; level.
This also helps to map Product for the release cycle and see what is needed for what stage.&lt;/p&gt;

&lt;p&gt;iii.	&lt;a href=&quot;http://prince2.wiki/Continued_business_justification&quot;&gt;Continued Business Justification&lt;/a&gt; and &lt;a href=&quot;https://www.prince2.com/uk/blog/the-7-principles-themes-and-processes-of-prince2&quot;&gt;Manage by Stages&lt;/a&gt; principles can really help with the projects like large public sector project mentioned above which never went live. While teams Focus on Product and delivery, at a higher level management keep evaluating the business justification at each stage. Should a Product fail to justify its value to the business at any stage, it is relatively easier to identify associated risk and allocated people and resources. It helps management to justify its continuity or premature termination. In other words, Products are only continued when it makes sense to continue not only at the micro (team level) but also at the macro (corporate management level).&lt;/p&gt;

&lt;p&gt;iv.	&lt;a href=&quot;http://prince2.wiki/Learn_from_experience&quot;&gt;Learn from Experience&lt;/a&gt; is a core principle of PRINCE2. It mandates and encourages to not only actively capture lesson in the &lt;a href=&quot;http://prince2.wiki/Lessons_Log_Template&quot;&gt;Lesson Log&lt;/a&gt; and reflect or refer them in the &lt;a href=&quot;http://prince2.wiki/End_Project_Report_Template&quot;&gt;End of Project Report&lt;/a&gt; but also apply lessons from previous projects at early stages of the project during the &lt;a href=&quot;http://prince2.wiki/Starting_Up_a_Project&quot;&gt;Starting Up a Project&lt;/a&gt; process.&lt;/p&gt;

&lt;p&gt;v.	PRINCE2 allows mature structure around mandatory documentations like &lt;a href=&quot;http://prince2.wiki/Risk_Register_Template&quot;&gt;Risk Register&lt;/a&gt;, &lt;a href=&quot;http://prince2.wiki/Quality_Register_Template&quot;&gt;Quality Register&lt;/a&gt;, &lt;a href=&quot;http://prince2.wiki/Checkpoint_Report_Template&quot;&gt;Check Point Reports&lt;/a&gt; and in some cases provides a template to start with. It would also help to sort out pain of management reporting. The structure of Project Product Description, Product Breakdown Structure, Product Description and Product Flow, their related Work Package structure and stages allows management to assess the project progress more rigorously. As mentioned earlier, there is absolutely no harm to use tools like Jira for such structure. It is more about structure and reporting rather than what tool you use. Jira can be configured in a way which produces the statistics and reports needed by the management like Check Point Reports. It would allow Project Manager and teams to focus on the delivery rather than wasting much precious time on reporting.&lt;/p&gt;

&lt;p&gt;In summary, I see project structure is a necessary evil for the large enterprise Agile IT projects. PRINCE2 appears as a good methodology to provide such structure, though it should be tailored (Tailor to the Environment) to suit the project as needed while maintaining the integrity using its 7 core principles.&lt;/p&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/project-management-methodology-agile-projects/&quot;&gt;Project Management Methodology  – Probably a necessary evil for large Agile IT Projects&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on January 24, 2019.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[It's OK Not to be Agile]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/ok-not-to-be-agile/"/>
  <id>https://capgemini.github.io/agile/ok-not-to-be-agile</id>
  <published>2018-10-22T00:00:00+01:00</published>
  <updated>2018-10-22T00:00:00+01:00</updated>
  
  
  
  
  
  <author>
      <name>Sarah Saunders</name>
      <uri>https://capgemini.github.io/alumni#author-sarah-saunders</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" /><category scheme="https://capgemini.github.io/tags/#SAFe" term="SAFe" /><category scheme="https://capgemini.github.io/tags/#Learning" term="Learning" /><category scheme="https://capgemini.github.io/tags/#Teams" term="Teams" /><category scheme="https://capgemini.github.io/tags/#Leadership" term="Leadership" />
  <content type="html">
    
    &lt;p&gt;I love messaging platforms. &lt;a href=&quot;https://slack.com/&quot;&gt;Slack&lt;/a&gt; has made a real difference to the way we can work with remote teams and keep our disparate engineers sharing thoughts and mindsets. We’re also experimenting with &lt;a href=&quot;https://en.wikipedia.org/wiki/Microsoft_Teams&quot;&gt;Teams&lt;/a&gt;, which is proving great, but all these tools sure do make it easy to become distracted from the day job!&lt;/p&gt;

&lt;p&gt;This week’s distraction at Capgemini Engineering HQ revolves around a number of &lt;a href=&quot;https://www.zdnet.com/google-amp/article/mckinsey-time-to-rethink-agile-in-complex-digital-environments&quot;&gt;new takes on Agile&lt;/a&gt; which are being posted to explain why “Agile does not Scale”, and how this or that new and exciting version of Agile can change things. The big beef for me with these articles is that they do not define the problem domain before launching into a solution. So let’s start with the problem!&lt;/p&gt;

&lt;h2 id=&quot;what-is-agile&quot;&gt;What is Agile?&lt;/h2&gt;

&lt;p&gt;I know we do this a lot, but no harm in going back to basics and redefining what we mean by Agile first of all. At Capgemini, when we say “Agile”, we refer to ways of working and methodologies including Scrum, XP, Kanban, DSDM, Lean, possibly including DevOps - which are facilitators to us adhering to the &lt;a href=&quot;http://agilemanifesto.org/&quot;&gt;Agile Manifesto&lt;/a&gt;. These ways of working enable our customers to better understand how technology can help them, and, in a timely way, produce and improve useful business applications.&lt;/p&gt;

&lt;h2 id=&quot;what-doesnt-scale&quot;&gt;What Doesn’t Scale?&lt;/h2&gt;

&lt;h3 id=&quot;autonomy&quot;&gt;Autonomy&lt;/h3&gt;

&lt;p&gt;Drilling down to what it means to be Agile according to the Manifesto, a big part of this is to enable a team to be autonomous, so that they can deliver software iterations faster. These iterations can then be evaluated and improved. Why faster? Well, they don’t need to wait for some other team / person to approve their decisions. So much time is spent waiting for various forms of signoff; if you can get the decision-maker in your agile team you can move forward so much quicker. This is great for small business units or small companies, where you can easily identify this decision-maker and get their commitment to a project. It is, however, something which does not scale easily. Imagine if the project is something along the lines of: “bring new technology and modern ways of working to the justice system”. This spins out across multiple projects, sites, funding streams, technologies, and may or may not involve software development - how on earth can you maintain autonomy in that kind of environment? And, in fact, should you even be trying?
It seems to me that in some scenarios, talking about the project as Agile is really not the right approach. This doesn’t mean in any way that I’m changing my stance as an Agile Evangelist, but more that we should use it in the right place. Agile is a software development methodology; if you’re not developing software - ie you’re not that far along the digital reform path, or you’re installing a custom software package which needs configuring rather than developing, then maybe an agile methodology is not right for you. And redefining your approach as “new Agile” whilst moving away from the Agile manifesto is certainly not helpful.&lt;/p&gt;

&lt;h3 id=&quot;dependencies&quot;&gt;Dependencies&lt;/h3&gt;

&lt;p&gt;There are a couple of project types to discuss here:&lt;/p&gt;

&lt;h4 id=&quot;integration-projects&quot;&gt;Integration projects&lt;/h4&gt;

&lt;p&gt;This is an area I’ve been working in for the last couple of years. Agile doesn’t really provide benefit here for very interesting reasons - the development phase is really tiny, basically a few minutes linking bits of “pipe” together if you’re using a product such as &lt;a href=&quot;https://www.mulesoft.com/&quot;&gt;MuleSoft&lt;/a&gt;, &lt;a href=&quot;https://developer.ibm.com/apiconnect/&quot;&gt;IBM API Connect&lt;/a&gt;, or even Camel (especially the exciting new &lt;a href=&quot;https://github.com/apache/camel-k/&quot;&gt;Camel K&lt;/a&gt;). With these platforms, it can take significantly longer to write your Jira task than to actually complete the development phase!&lt;/p&gt;

&lt;p&gt;Secondly, there is the fact that an integration project has at least two extra parties (if not more) involved, the source (API caller(s)) and the target(s). These parties are very often different companies, or at least very separate divisions within a company. So again, the decision making process is more complex than the build process and a specific stakeholder / product owner is hard to identify. What if an API caller wants a certain field to be present in their response, which does exist in the target system but is only provided in a convoluted way? Or if it exists in another system? Does the integration layer accommodate this change? Does the target system change for it? Who decides? Who provides the test data / test cases? This multi-party uncertainty often results in the formation of a RACI matrix - cue Agile purists berating the death of their &lt;a href=&quot;https://skepticalagile.com/stop-racism-a4d0539964e/&quot;&gt;creativity&lt;/a&gt;, possibly rightly so - for here, what benefit does the integration team have in being Agile? We are always going to need at least two product owners (source, target) and then of course some kind of mediator when they inevitably disagree… and hence we are unlikely to be able to have all three decision-makers in our sprint team.&lt;/p&gt;

&lt;p&gt;Our recent project’s take on Agile for Integration involved, again, going back to the manifesto, and taking the pieces that really helped. In this case, “Individuals and Interactions over Processes and Tools”, “Customer Collaboration over Contract Negotiation”. Despite being split-site and multi-party, we strove to build up a relationship across the integration by getting people together and talking. We were open and honest about the speed at which we could develop on our integration platform, we were open to building disposable pieces. We didn’t wait for requirements documents to be signed off before we built an integration, we were iterative; we built a best-effort flow and then we tested it with the end systems to see whether it provided what they needed. We had standups and also scrum-of-scrum style meetings. This flushed out issues much quicker than if we’d have worked in a more waterfall pattern and forced our parties to try and fully document their API requirements. So yes, we had a RACI matrix and no, we weren’t autonomous; no, I wouldn’t call it Agile, but I feel we were still being true to our roots!&lt;/p&gt;

&lt;h4 id=&quot;company-wide-software-installations&quot;&gt;Company-wide Software Installations&lt;/h4&gt;

&lt;p&gt;Here is a second scenario where Agile is misused, and one with which you are probably familiar:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programme director:&lt;/strong&gt; Where is the project plan?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project manager:&lt;/strong&gt; We don’t have one, we’re Agile.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programme director:&lt;/strong&gt; What is this team doing?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project manager:&lt;/strong&gt; They’re configuring the Employee Benefits system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programme director:&lt;/strong&gt; And when will that be live?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project manager:&lt;/strong&gt; When we get the data feed from the new payroll system.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programme director:&lt;/strong&gt; Well, when do the employees start using the new payroll system?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project manager:&lt;/strong&gt; We’ll train them two weeks before the system goes live&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Programme director:&lt;/strong&gt; And when is that?&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Project manager:&lt;/strong&gt; I can’t tell you, as we only plan 2 weeks ahead&lt;/p&gt;

&lt;p&gt;The point here is that in large-scale technology programmes, in particular &lt;a href=&quot;https://en.wikipedia.org/wiki/Enterprise_resource_planning&quot;&gt;ERP&lt;/a&gt; system installations or similar, there is tight coupling between disparate workstreams. The teams can only be autonomous to a certain extent, and can only move so far, before they are blocked by other workstreams. These dependencies are built in to the software package being installed, and the development team have little flexibility to adjust them. Without a long-term project plan forecasting and mapping interdependencies, (which implies rigid requirements), this kind of project can’t succeed. Frameworks like &lt;a href=&quot;https://www.scaledagileframework.com/&quot;&gt;SAFe&lt;/a&gt; are designed to give programmes the courage to call themselves Agile, to use an Agile methodology; but how far from the manifesto are they moving? Too far to call themselves Agile? Probably.&lt;/p&gt;

&lt;h2 id=&quot;what-do-we-do-about-it&quot;&gt;What Do We Do About It?&lt;/h2&gt;

&lt;p&gt;Our take on Agile at Scale within Capgemini Engineering is manifold. We endorse and promote SAFe, partly as a way to reassure our clients that (a) Agile at Scale is possible and (b) a lot of scholarly thinking went into creating the SAFe framework. When we are on the ground, there are a couple of proven foundations that we would encourage. We love the Scrum of Scrums whereby a daily standup, containing a member of each sprint team, is held to communicate important updates. Then there are some architectural paradigms which really help:&lt;/p&gt;

&lt;h3 id=&quot;domain-driven-design&quot;&gt;Domain Driven Design&lt;/h3&gt;

&lt;p&gt;We have long been &lt;a href=&quot;https://capgemini.github.io/presentations/devoxx-domain-driven-distributed-systems/&quot;&gt;advocates of DDD&lt;/a&gt; and it really does help to allow autonomy at a sprint team level if you have put in the effort to identify and reduce dependencies earlier on. How does DDD help? Well, by encouraging a team to define bounded contexts, to get the development and architecture teams closely involved with the business so that they get a proper understanding of the business domains, and getting a focus on continuous integration so that conflicts are identified and resolved constantly - rather than in a big, painful bang at irregular intervals. The focus on defining a Ubiquitous Language; a common, business-wide dictionary of terms, is also essential for cross-communication when developing at scale.&lt;/p&gt;

&lt;h3 id=&quot;microservices&quot;&gt;Microservices&lt;/h3&gt;

&lt;p&gt;A microservice architecture also helps to grant autonomy to the teams building those service(s). It’s a great way to divide up development ito pieces that are, as our blogger &lt;a href=&quot;https://capgemini.github.io/authors#author-gayathri-thiyagarajan&quot;&gt;Gayathri&lt;/a&gt; puts it beautifully, “people-sized”. Using interfaces as the contracts between microservices, and understanding &lt;em&gt;who owns the interface definition&lt;/em&gt; (clue: it’s not the implementor) can help get the right product owner, able to make the right decisions, in place to autonomise the microservice dev teams. And microservices should also by definition be independently deployable, so you won’t tread on any toes at a platform/environment level either.&lt;/p&gt;

&lt;h3 id=&quot;devops-tooling&quot;&gt;DevOps Tooling&lt;/h3&gt;

&lt;p&gt;We always advocate an early focus on code deployment mechanisms when working at scale. For a start, it’s often where big bottlenecks can be found. You can streamline deployment down to minutes, but if you have to wait 2 months for a heavy CAB process to grind out a release date, is there any point?! This is often something that gets overlooked by companies who wish to be agile and work at scale, so we point it out as early as possible. And again, it’s fine if you wish to stick to your CAB schedule, but don’t label your project as agile.&lt;/p&gt;

&lt;p&gt;Having a standard continuous delivery process across a large-scale project can really help disparate teams to undestand how each other works. A single Jira instance can easily scale, although it may well require a dedicated and skilled resource to make sure it remains legible! And it’s OK to have multiple source control systems, repositories, dashboards and build automation tools, as long as they follow the same basic rules (branching techniques, scheduling i.e. “build on commit”, number and purpose of environments, red dashboard = bad etc).&lt;/p&gt;

&lt;h2 id=&quot;in-conclusion&quot;&gt;In Conclusion&lt;/h2&gt;

&lt;p&gt;It’s easy to struggle to work in an agile way when working at scale. And it’s great to find ways to get large-scale projects moving forwards successfully, but we need to be careful with our use of language and terms. If “Agile” simply comes to mean “Software Development with Sticky Notes”, we will start to lose the understanding of why we wanted to change the way we develop software in the first place. So, it’s fine not to be agile, it’s great to shout about your ways of working, but just don’t feel the need to say that you are, don’t use the term.&lt;/p&gt;

&lt;p&gt;Agile is a recognition that, in software development, &lt;em&gt;things will change&lt;/em&gt;. We won’t get it right first time because nobody knows what “right” is at the start, and we need to develop ways of working to embrace and absorb that change by granting development teams the freedom to decide how to cope with it. Any references to “fully define”, “controlled schedule” cannot by definition be agile ways of working. Be wary!&lt;/p&gt;


    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/ok-not-to-be-agile/&quot;&gt;It's OK Not to be Agile&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on October 22, 2018.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Devoxx UK 2017 Giveaway!]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/devoxx-givaway/"/>
  <id>https://capgemini.github.io/agile/devoxx-givaway</id>
  <published>2017-03-31T00:00:00+01:00</published>
  <updated>2017-03-31T00:00:00+01:00</updated>
  
  
  
  
  
  <author>
      <name>Shana Dacres</name>
      <uri>https://capgemini.github.io/alumni#author-shana-dacres</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Conferences" term="Conferences" /><category scheme="https://capgemini.github.io/tags/#Java" term="Java" /><category scheme="https://capgemini.github.io/tags/#Open%20source" term="Open source" /><category scheme="https://capgemini.github.io/tags/#Devoxx" term="Devoxx" /><category scheme="https://capgemini.github.io/tags/#Voxxed" term="Voxxed" />
  <content type="html">
    
    &lt;p&gt;Enjoy a free ticket to one of the most sought after developer’s conference of the year, Devoxx UK 2017, courtesy of Capgemini Engineering.&lt;/p&gt;

&lt;p&gt;Following a hugely successful 2016 which saw us as &lt;a href=&quot;https://capgemini.github.io/agile/were-heading-to-devoxx/&quot;&gt;Gold level sponsors of Devoxx UK&lt;/a&gt; and delivered two brilliant sessions on &lt;a href=&quot;https://youtu.be/j5tFNT55kmM&quot;&gt;Harnessing Domain Driven Design for Distributed Systems&lt;/a&gt; and &lt;a href=&quot;https://youtu.be/SgM-ZRs-CyY&quot;&gt;NFR Testing and Tuning - A Scientific Approach&lt;/a&gt;, we’ve decided to do it again. But this time &lt;strong&gt;&lt;em&gt;we’re platinum baby!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Capgemini is set to return to Devoxx UK for a very special conference experience. &lt;a href=&quot;https://twitter.com/gaythu_rajan&quot;&gt;@Gayathri&lt;/a&gt; will be speaking again, this time discussing &lt;a href=&quot;http://cfp.devoxx.co.uk/2017/talk/FSQ-8848/Distributing_Memory_in_Distributed_Systems&quot;&gt;Distributing Memory in Distributed Systems&lt;/a&gt;, and exploring the potential pitfalls and solutions to distributing memory across distributed systems.&lt;/p&gt;

&lt;h2 id=&quot;where&quot;&gt;Where?&lt;/h2&gt;

&lt;p&gt;Taking place at The Business Design Centre on the 11th and 12th of May 2017, your only way (apart from buying a late bird ticket) into the ultimate developer’s conference is to win a ticket!&lt;/p&gt;

&lt;p&gt;With a ticket you will be able to wonder into sessions such as &lt;a href=&quot;http://cfp.devoxx.co.uk/2017/talk/RUN-7398/Microservices_for_the_Masses_with_Spring_Boot,_JHipster,_and_JWT&quot;&gt;Microservices for the Masses with Spring Boot, JHipster, and JWT&lt;/a&gt;, &lt;a href=&quot;http://cfp.devoxx.co.uk/2017/talk/QFA-7776/The_Anatomy_of_Java_Vulnerabilities&quot;&gt;The Anatomy of Java Vulnerabilities&lt;/a&gt;, &lt;a href=&quot;http://cfp.devoxx.co.uk/2017/talk/OMW-8636/The_reactive_landscape&quot;&gt;The reactive landscape&lt;/a&gt;, and &lt;a href=&quot;http://cfp.devoxx.co.uk/2017/talk/IBN-5679/The_DevOps_Superpattern&quot;&gt;The DevOps Superpattern&lt;/a&gt;. It’s an immersive, not to be missed, multi-disciplinary experience inspired by developers for developers.&lt;/p&gt;

&lt;h2 id=&quot;get-me-in-now&quot;&gt;Get me in Now:&lt;/h2&gt;

&lt;p&gt;Our major theme this year is role models. So we would like to know who your role model is and why. Here is an example:&lt;/p&gt;

&lt;blockquote class=&quot;twitter-tweet tw-align-center&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Happy #IWD2017. Every woman who breaks through the stereo type and proves #yeswecan is #MyRoleModel. My mum, dad, hubs and my boss #heforshe.&lt;/p&gt;&amp;mdash; Gayathri (@gaythu_rajan) &lt;a href=&quot;https://twitter.com/gaythu_rajan/status/839400328088911875&quot;&gt;March 8, 2017&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;All you have to do to bag yourself a ticket is&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Follow the &lt;a href=&quot;https://twitter.com/CapgeminiUKppl&quot;&gt;@CapgeminiUKppl&lt;/a&gt; handle on twitter.&lt;/li&gt;
  &lt;li&gt;Tweet us &lt;a href=&quot;https://twitter.com/CapgeminiUKppl&quot;&gt;@CapgeminiUKppl&lt;/a&gt; who your role model is and way using the hashtag &lt;strong&gt;#BeYourOwnRoleModel&lt;/strong&gt;&lt;/li&gt;
  &lt;li&gt;Not on Twitter? You can always send an email with your full name to &lt;a href=&quot;mailto:technologyconferences.uk@capgemini.com&quot;&gt;technologyconferences.uk@capgemini.com&lt;/a&gt; with the subject “Devoxx UK 2017” and tell us who your role model is and why.&lt;br /&gt;
Yep, it’s that easy!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You can find out more about Devoxx and take a peek at the vast range of &lt;a href=&quot;http://www.devoxx.co.uk/&quot;&gt;content being delivered here&lt;/a&gt;. Final tickets are currently on sale at £510 (inc. VAT).
But if you fancy saving the cash and bagging yourself a FREE ticket, enter our competition and tweet us by &lt;del&gt;23:59 on the 1st&lt;/del&gt; 09:00 on the 8th of May 2017.&lt;br /&gt;
Just keep your eyes peeled in case you win and we get in touch… 
&lt;strong&gt;&lt;em&gt;Good luck!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h2 id=&quot;terms-and-conditions&quot;&gt;Terms and conditions:&lt;/h2&gt;

&lt;ol&gt;
  &lt;li&gt;Capgemini reserves the right to amend the competition end date at any time.&lt;/li&gt;
  &lt;li&gt;If you are the lucky winner we will notify you via your twitter handle or the e-mail address supplied shortly after the competition end date.&lt;/li&gt;
  &lt;li&gt;The prize will not be transferable to another person.&lt;/li&gt;
  &lt;li&gt;No part of a prize is exchangeable for cash or any other prize.&lt;/li&gt;
  &lt;li&gt;Travel and accommodation is not included.&lt;/li&gt;
  &lt;li&gt;Competition ends &lt;del&gt;23:59 on the 1st of&lt;/del&gt; 09:00 on the 8th of May 2017.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;join-us&quot;&gt;Join us?&lt;/h2&gt;

&lt;p&gt;We’re involved in tons of conferences / meet-ups and our people attended, speak and help organise them too (&lt;a href=&quot;https://capgemini.github.io/learning/women-in-tech-conf&quot;&gt;Women of Silicon Roundabout&lt;/a&gt;, &lt;a href=&quot;https://capgemini.github.io/learning/lead-developer/&quot;&gt;Lead Developer Conference&lt;/a&gt;, &lt;a href=&quot;https://capgemini.github.io/devops/sponsoring-containersched/&quot;&gt;ContainerSched&lt;/a&gt;, &lt;a href=&quot;https://capgemini.github.io/blog/capgemini-hiring-fatjil/&quot;&gt;FATJIL&lt;/a&gt; –just to show off a bit). 
We’re really keen on developing and expanding the knowledge of our people, it’s part of our culture and it’s who we are. If your interested in joining us &lt;a href=&quot;https://www.capgemini.com/gb-en/careers&quot;&gt;our eyes are always open for the best talent on the block&lt;/a&gt;.&lt;/p&gt;


    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/devoxx-givaway/&quot;&gt;Devoxx UK 2017 Giveaway!&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on March 31, 2017.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[INVEST in User Stories]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/invest-in-user-stories/"/>
  <id>https://capgemini.github.io/agile/invest-in-user-stories</id>
  <published>2016-08-12T00:00:00+01:00</published>
  <updated>2016-08-12T00:00:00+01:00</updated>
  
  
  
  
  
  <author>
      <name>Abhilash Nair</name>
      <uri>https://capgemini.github.io/alumni#author-abhilash-nair</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" /><category scheme="https://capgemini.github.io/tags/#Scrum" term="Scrum" /><category scheme="https://capgemini.github.io/tags/#Development" term="Development" /><category scheme="https://capgemini.github.io/tags/#User%20Story" term="User Story" /><category scheme="https://capgemini.github.io/tags/#INVEST" term="INVEST" />
  <content type="html">
    
    &lt;p&gt;An INVEST-able User Story evolves through the journey of a Sprint. Let us follow this journey through the eyes of an Agile Team Member.&lt;/p&gt;

&lt;p&gt;This post is directed at Team Members in companies planning on adopting an Agile methodology, especially for those coming from a background of a traditional Waterfall model.&lt;/p&gt;

&lt;p&gt;After having implemented Agile in a couple of companies that adapted from a traditional Waterfall model to an Agile Scrum approach as well as initiating the methodology from scratch, I hope the following helps you to channel your time and master the art of investing in User Stories. To elucidate this further, I would like to take inspiration from a real-life scenario and track the evolution of a User Story during the journey of a Sprint and present it from the perspective of an Agile Team Member.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The website of Business XYZ processes huge amounts of payments daily through their checkout process. The business user from the Marketing department requires an urgent “One-click Payment” feature to be implemented within the check-out process that would immensely simplify the experience of the customers to complete their order faster, thereby increasing customer delight and reducing the overall cart abandonment rate.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;User summarises, “We need to urgently integrate a ‘One-click Payment’ facility within our Checkout process!”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;A User Story must aim to have the following facets:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;User Story Template&lt;/li&gt;
  &lt;li&gt;Acceptance Criteria&lt;/li&gt;
  &lt;li&gt;Conversation&lt;/li&gt;
  &lt;li&gt;Sub-tasks&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;1-user-story-template&quot;&gt;1. User Story Template&lt;/h2&gt;

&lt;p&gt;A User Story is a short and simple description of a feature (the “what”) told from the perspective of the person who desires the new capability (the “who”), usually the customer of the system (hereinafter referred to as the “customer”) [Reference: &lt;a href=&quot;https://www.mountaingoatsoftware.com/agile/user-stories&quot;&gt;User Stories and User Story Examples by Mike Cohn&lt;/a&gt;].&lt;/p&gt;

&lt;p&gt;If the feature is an internal requirement, the User Story must be told from the perspective of the area of the business that is responsible for managing the efficiency and effectiveness of the customer-facing business of the system (hereinafter referred to as the “user” or “business user”).&lt;/p&gt;

&lt;p&gt;Additionally, a User Story must clearly list the direct “benefit” or “value” that the customer or the user will enjoy (the “why”), once the User Story is successfully delivered.&lt;/p&gt;

&lt;p&gt;Finally and most importantly, a well-written User Story must always answer the question: “Is the User Story INVEST-able?”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I&lt;/strong&gt;ndependent&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;N&lt;/strong&gt;egotiable&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;V&lt;/strong&gt;aluable&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;E&lt;/strong&gt;stimable&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;S&lt;/strong&gt;mall&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;T&lt;/strong&gt;estable&lt;/p&gt;

&lt;p&gt;This INVEST mnemonic for agile software projects was created by Bill Wake in his original article, &lt;a href=&quot;http://xp123.com/articles/invest-in-good-stories-and-smart-tasks&quot;&gt;INVEST in Good Stories, and SMART Tasks&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Based on my experience, with tools like JIRA available to keep track and record details for every User Story, the more time you spend in getting your user stories INVEST-able, the better your understanding of the requirements become and the lesser time you spend in the actual coding and testing of those stories. It avoids the team going off course and acts as a guide to help steer the team towards getting their User Story “done” or to take appropriate corrective measures early on, in the journey of the team’s Sprint.&lt;/p&gt;

&lt;p&gt;Example template of a User Story:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;As a… &amp;lt;”CUSTOMER” or “USER” who directly benefits from the successful delivery of this User Story&amp;gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I want to… &amp;lt;perform a “FEATURE” specified in the User Story&amp;gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;So that… &amp;lt;”BENEFIT” / “VALUE” that the customer or user will enjoy on the successful delivery of this User Story&amp;gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Let us write the aforementioned user requirement, following the template of a User Story:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;As an XYZ customer ordering using the website, I want to be able to use the One-click Payment option, so that I can skip the payment pages and complete my order faster&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Is the above User Story INVEST-able? The simple answer: NO!&lt;/p&gt;

&lt;p&gt;This User Story leaves a number of questions unanswered:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Type of Customers:&lt;/strong&gt; Is this feature available to all new and existing customers?&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;New Customers:&lt;/strong&gt; What should be the workflow for a new customer after the One-click Payment option has gone live?&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;First Visit of Existing Customers without saved card details:&lt;/strong&gt; What should be the workflow of an existing customer who has not saved any card details and visits for the first time after the One-click Payment option has gone live?&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;First Visit of Existing Customers with saved card details:&lt;/strong&gt; What should be the workflow of an existing customer who has already saved their card details and visits for the first time after the One-click Payment option has gone live?&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Existing Customers not opted for One-click Payment:&lt;/strong&gt; What should be the workflow of an existing customer who has not opted to register for the One-click Payment in their previous visit after the feature has gone live?&lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Existing One-click Payment Customers:&lt;/strong&gt; What should be the workflow of an existing customer who has successfully registered their card for the One-click Payment in their previous visit?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let us assume that the &lt;strong&gt;Existing One-click Payment Customers&lt;/strong&gt; use-case received the below answers from the user:&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Customers must be presented with a “Buy Now with 1-click” button on the Checkout Screen (where the Checkout Screen is any section that can act as the start of a checkout process).&lt;/li&gt;
  &lt;li&gt;Clicking on the button must skip the Payment screens and the customer must be presented with the Order Confirmation screen directly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Based on the above answers, let us rewrite the User Story:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;As an EXISTING ONE-CLICK PAYMENT XYZ CUSTOMER ordering from the website, I want to be able to CLICK ON THE ONE-CLICK PAYMENT OPTION so that I can skip the payment pages and complete my order faster&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The above User Story is &lt;strong&gt;Independent&lt;/strong&gt; as this feature can be developed and delivered independently &lt;em&gt;after&lt;/em&gt; the &lt;strong&gt;First Visit of Existing Customers&lt;/strong&gt; use cases have been done.&lt;/p&gt;

&lt;p&gt;The above User Story is &lt;strong&gt;Negotiable&lt;/strong&gt; as this feature can incorporate changes if required.&lt;/p&gt;

&lt;p&gt;Let us look at this scenario in our case study:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;As always, the business user comes to our Product Owner (PO) once the Sprint has commenced and says, “Whoops! I just got the numbers in from my market research teams and it highlights the fact that 55% of our customers are using their mobiles and tablets (30% of those are Apple device users). Since we are already adding the feature for our web users, could we increase the scope of the delivery of this feature just a teeny-weeny bit so that this is available not only to our web but also to our Apple and Android tablet and mobile apps users as a priority? Later maybe we could make this facility available to our Windows app users since that’s not much of a priority as of right now!”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In such a scenario, is the above User Story Negotiable? Yes! I would negotiate the User Story by breaking it down further as below:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;As an EXISTING ONE-CLICK PAYMENT XYZ CUSTOMER ordering from the &lt;strong&gt;WEB&lt;/strong&gt; using a &lt;strong&gt;DESKTOP OR LAPTOP&lt;/strong&gt;, I want to be able to CLICK ON THE ONE-CLICK PAYMENT OPTION so that I can skip the payment pages and complete my order faster&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;As an EXISTING ONE-CLICK PAYMENT XYZ CUSTOMER ordering from the &lt;strong&gt;WEB&lt;/strong&gt; using an &lt;strong&gt;APPLE TABLET OR MOBILE&lt;/strong&gt;, I want to be able to CLICK ON THE ONE-CLICK PAYMENT OPTION so that I can skip the payment pages and complete my order faster&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;As an EXISTING ONE-CLICK PAYMENT XYZ CUSTOMER ordering from the &lt;strong&gt;WEB&lt;/strong&gt; using an &lt;strong&gt;ANDROID TABLET OR MOBILE&lt;/strong&gt;, I want to be able to CLICK ON THE ONE-CLICK PAYMENT OPTION so that I can skip the payment pages and complete my order faster&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;As an EXISTING ONE-CLICK PAYMENT XYZ CUSTOMER ordering from the &lt;strong&gt;MOBILE APP&lt;/strong&gt; using an &lt;strong&gt;APPLE TABLET OR MOBILE&lt;/strong&gt;, I want to be able to CLICK ON THE ONE-CLICK PAYMENT OPTION so that I can skip the payment pages and complete my order faster&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;&lt;em&gt;As an EXISTING ONE-CLICK PAYMENT XYZ CUSTOMER ordering from the &lt;strong&gt;MOBILE APP&lt;/strong&gt; using an &lt;strong&gt;ANDROID TABLET OR MOBILE&lt;/strong&gt;, I want to be able to CLICK ON THE ONE-CLICK PAYMENT OPTION so that I can skip the payment pages and complete my order faster&lt;/em&gt;&lt;/p&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The priority of which deliverables need to be included in the current Sprint and which can be excluded can then be negotiated with the business user by the PO as a “Minimum Viable Product” (MVP).&lt;/p&gt;

&lt;p&gt;The above User Story is obviously &lt;strong&gt;Valuable&lt;/strong&gt; as the value / benefit has been clearly stated.&lt;/p&gt;

&lt;p&gt;Each of the above User Story is easily &lt;strong&gt;Estimable&lt;/strong&gt; as we have now broken it down to an independent, negotiable, valuable, small and testable MVP.&lt;/p&gt;

&lt;p&gt;The User Story is &lt;strong&gt;Small&lt;/strong&gt; enough to be “done” within a Sprint.&lt;/p&gt;

&lt;p&gt;The User Story is &lt;strong&gt;Testable&lt;/strong&gt; as it is small enough to be developed and tested within a Sprint.&lt;/p&gt;

&lt;h2 id=&quot;2-acceptance-criteria&quot;&gt;2. Acceptance Criteria&lt;/h2&gt;

&lt;p&gt;I would use this section of a User Story in conjunction with the PO and a team member who has specialised in Quality Assurance (QA) and / or a team member with a QA mindset. I have seen the quality of deliverables increase immensely, when all Acceptance Criteria is written in a combination of Given-When-Then and checklist formats.&lt;/p&gt;

&lt;p&gt;A Behaviour-Driven Development (BDD) approach follows a “Given-When-Then” format to help break the behaviour of the system down to an agreed and specific flow. According to &lt;a href=&quot;http://behaviourdriven.org&quot;&gt;behaviourdriven.org&lt;/a&gt;, BDD relies on the use of a very specific (and small) vocabulary to minimise miscommunication and to ensure that everyone – the business, developers, testers, analysts and managers – are not only on the same page but using the same words.&lt;/p&gt;

&lt;p&gt;Hence, using the BDD approach ensures that everyone involved with the User Story has a consistent understanding of what is expected to be delivered of the new functionality that would be built from tests that satisfy the Acceptance Criteria.&lt;/p&gt;

&lt;p&gt;Use a Given-When-Then format for a one-to-one mapping of acceptance tests that must be met and tested against.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Given:&lt;/strong&gt; An existing scenario&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;When:&lt;/strong&gt; I perform some action&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Then:&lt;/strong&gt; I expect a specific result&lt;/p&gt;

&lt;p&gt;Use a checklist format for a scenario where an acceptance test satisfies multiple Acceptance Criteria checklist items.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;After discussions with the Team Members, our PO has now negotiated with the business user that in this Sprint, the team would commit to deliver the web version of the User Story.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;So let us write Acceptance Criteria specifically for those user stories.&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;As an EXISTING ONE-CLICK PAYMENT XYZ CUSTOMER ordering from the &lt;strong&gt;WEB&lt;/strong&gt; using a &lt;strong&gt;DESKTOP or a LAPTOP&lt;/strong&gt;, I want to be able to CLICK ON THE ONE-CLICK PAYMENT OPTION so that I can skip the payment pages and complete my order faster&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Acceptance Criteria:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Given:&lt;/strong&gt; An EXISTING ONE-CLICK PAYMENT WEB XYZ Customer, &lt;strong&gt;When:&lt;/strong&gt; The Customer orders through the website and clicks on Checkout using a desktop or a laptop, &lt;strong&gt;Then:&lt;/strong&gt; The Customer must be presented with a One-click Payment button
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Checklists:&lt;/strong&gt; This test must pass when tested on:
        &lt;ul&gt;
          &lt;li&gt;Approved versions of IE browsers&lt;/li&gt;
          &lt;li&gt;Approved versions of Chrome browsers&lt;/li&gt;
          &lt;li&gt;Approved versions of Firefox browsers&lt;/li&gt;
          &lt;li&gt;Approved versions of Safari browsers&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Given:&lt;/strong&gt; An EXISTING ONE-CLICK PAYMENT WEB XYZ Customer, &lt;strong&gt;When:&lt;/strong&gt; The Customer clicks on the One-click Payment button using a desktop or a laptop, &lt;strong&gt;Then:&lt;/strong&gt; The Customer must directly be presented the Order Confirmation screen
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Checklists:&lt;/strong&gt; This test must pass on:
        &lt;ul&gt;
          &lt;li&gt;Approved versions of IE browsers&lt;/li&gt;
          &lt;li&gt;Approved versions of Chrome browsers&lt;/li&gt;
          &lt;li&gt;Approved versions of Firefox browsers&lt;/li&gt;
          &lt;li&gt;Approved versions of Safari browsers&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;As an EXISTING ONE-CLICK PAYMENT XYZ CUSTOMER ordering from the &lt;strong&gt;WEB&lt;/strong&gt; using an &lt;strong&gt;APPLE TABLET OR MOBILE&lt;/strong&gt;, I want to be able to CLICK ON THE ONE-CLICK PAYMENT OPTION so that I can skip the payment pages and complete my order faster&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Acceptance Criteria:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Given:&lt;/strong&gt; An EXISTING ONE-CLICK PAYMENT WEB XYZ Customer, &lt;strong&gt;When:&lt;/strong&gt; The Customer orders through the website and clicks on Checkout using an Apple device, &lt;strong&gt;Then:&lt;/strong&gt; The Customer must be presented with a One-click Payment button
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Checklists:&lt;/strong&gt; This test must pass on:
        &lt;ul&gt;
          &lt;li&gt;Approved list of Apple mobiles&lt;/li&gt;
          &lt;li&gt;Approved list of Apple tablets&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Given:&lt;/strong&gt; An EXISTING ONE-CLICK PAYMENT WEB XYZ Customer, &lt;strong&gt;When:&lt;/strong&gt; The Customer clicks on the One-click Payment button using an Apple device, &lt;strong&gt;Then:&lt;/strong&gt; The Customer must directly be presented the Order Confirmation screen
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Checklists:&lt;/strong&gt; This test must pass on:
        &lt;ul&gt;
          &lt;li&gt;Approved list of Apple mobiles&lt;/li&gt;
          &lt;li&gt;Approved list of Apple tablets&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
  &lt;p&gt;&lt;em&gt;As an EXISTING ONE-CLICK PAYMENT XYZ CUSTOMER ordering from the &lt;strong&gt;WEB&lt;/strong&gt; using an &lt;strong&gt;ANDROID TABLET OR MOBILE&lt;/strong&gt;, I want to be able to CLICK ON THE ONE-CLICK PAYMENT OPTION so that I can skip the payment pages and complete my order faster&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Acceptance Criteria:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;strong&gt;Given:&lt;/strong&gt; An EXISTING ONE-CLICK PAYMENT WEB XYZ Customer, &lt;strong&gt;When:&lt;/strong&gt; The Customer orders through the website and clicks on Checkout using an Android device, &lt;strong&gt;Then:&lt;/strong&gt; The Customer must be presented with a One-click Payment button
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Checklists:&lt;/strong&gt; This test must pass when tested on:
        &lt;ul&gt;
          &lt;li&gt;Approved list of Android mobiles&lt;/li&gt;
          &lt;li&gt;Approved list of Android tablets&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;strong&gt;Given:&lt;/strong&gt; An EXISTING ONE-CLICK PAYMENT WEB XYZ Customer, &lt;strong&gt;When:&lt;/strong&gt; The Customer clicks on the One-click Payment button using an Android device, &lt;strong&gt;Then:&lt;/strong&gt; The Customer must directly be presented the Order Confirmation screen
    &lt;ul&gt;
      &lt;li&gt;&lt;strong&gt;Checklists:&lt;/strong&gt; This test must pass when tested on:
        &lt;ul&gt;
          &lt;li&gt;Approved list of Android mobiles&lt;/li&gt;
          &lt;li&gt;Approved list of Android tablets&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;3-conversation&quot;&gt;3. Conversation&lt;/h2&gt;

&lt;p&gt;This section of the User Story summarises all important and relevant email discussions, code discussions, visual representations / diagrams, screen grabs, test results, et al. that have occurred during the uncovering of the User Story and recorded either as comments and / or attachments.&lt;/p&gt;

&lt;p&gt;I use this section to record a summary of what discussions and actions have occurred on this User Story during its journey through the Sprint.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Continuing on with our case study, after the delivery of the User Story in the Sprint, it is time for the team’s Retrospective. Let us refer to the “Conversation” of the User Story to record the team’s Retrospective points:&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Conversation:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Created this User Story as a part of a change agreed by the PO with the business user after the Sprint had commenced. Team had to spend a time-boxed amount of time in re-planning and re-estimating the story. Work on this story commenced 3 days into the Sprint and delivery has been agreed to the Web platforms only.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Why invest precious time on a Conversation?&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;To decipher the actual “complexity” of the User Story&lt;/li&gt;
  &lt;li&gt;To empower the team or any other team working on a similar User Story to make better and more accurate estimations&lt;/li&gt;
  &lt;li&gt;To save any time that might be spent on potential rework&lt;/li&gt;
  &lt;li&gt;To act as documentation on the feature delivered&lt;/li&gt;
  &lt;li&gt;To act as a tool to take corrective measures mid-Sprint rather than render the story as not done at the end of the Sprint&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;4-sub-tasks&quot;&gt;4. Sub-tasks&lt;/h2&gt;

&lt;p&gt;One has the capability of adding sub-tasks to one’s User Story but this can easily be misused unfortunately. From my perspective, the smaller a User Story, the easier it is for the story to be INVEST-able, thereby rendering sub-tasks as unimportant in most cases! I have only used sub-tasks as a mere logical set of one-liner reminders of tasks that need to be completed for the User Story to be marked as “done”. Usually, I try and avoid sub-tasks as much as possible as it masks the complexity of the task listed and managing them within an already INVEST-able User Story ends up becoming an additional overhead. Moreover, since they are not monitored as closely as a User Story, sub-tasks tend to become complex and quite as often, root to a cascade of problems in the following sprints. I have encountered sub-tasks that should have been user stories in itself (if not “Epics”).&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Consequences:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;Noticeable long and stagnant parallel lines in the team’s Sprint Burn-up / Burn-down charts&lt;/li&gt;
  &lt;li&gt;Same user stories carried over across several Sprints&lt;/li&gt;
  &lt;li&gt;Frustration amongst the Team Members due to failure of meeting commitments Sprint after Sprint&lt;/li&gt;
  &lt;li&gt;Team losing credibility amongst stakeholders&lt;/li&gt;
  &lt;li&gt;Nervousness to commit&lt;/li&gt;
  &lt;li&gt;Unable to calculate the Velocity of the team&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;em&gt;Continuing on with our case study, no sub-tasks are required for this story as all potential tasks are already well-covered in the other sections of the story.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;user-story-antipattern-horror-story&quot;&gt;User Story AntiPattern: Horror Story&lt;/h2&gt;

&lt;p&gt;Can you see why the below are “Horror” (user) stories?&lt;/p&gt;

&lt;ol&gt;
  &lt;li&gt;&lt;em&gt;“Finish coding for microservice”&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;“Deploy code to QA”&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;“We need 3 additional codes to be added to the Shipping module”&lt;/em&gt;&lt;/li&gt;
  &lt;li&gt;&lt;em&gt;“This is an easy JSP change - Integrate a new option in an existing dropdown”&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Successfully adopting Agile requires implementing a change in the organisation’s “culture” and this is only as successful as the overall collaborative effort of every member in the organisation investing into this change. Composing INVEST-able user stories form a strong foundation towards paving the way for a successful journey. Implementing this change and Bill Wake’s INVEST mnemonic will help remind you of the mandatory characteristics required for writing good user stories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are YOUR user stories INVEST-able?&lt;/strong&gt;&lt;/p&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/invest-in-user-stories/&quot;&gt;INVEST in User Stories&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on August 12, 2016.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Win Tickets to Devoxx UK 2016!]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/win-tickets-to-devoxx/"/>
  <id>https://capgemini.github.io/agile/win-tickets-to-devoxx</id>
  <published>2016-05-26T00:00:00+01:00</published>
  <updated>2016-05-26T00:00:00+01:00</updated>
  
  
  
  
  
  <author>
      <name>Shana Dacres</name>
      <uri>https://capgemini.github.io/alumni#author-shana-dacres</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Conferences" term="Conferences" /><category scheme="https://capgemini.github.io/tags/#Java" term="Java" /><category scheme="https://capgemini.github.io/tags/#Open%20source" term="Open source" /><category scheme="https://capgemini.github.io/tags/#Devoxx" term="Devoxx" /><category scheme="https://capgemini.github.io/tags/#Voxxed" term="Voxxed" />
  <content type="html">
    
    &lt;h2 id=&quot;capgemini-uk-is-proud-to-announce-another-fantastic-giveaway-for-the-dev-community-tickets-to-devoxx-uk-2016-worth-474&quot;&gt;Capgemini UK is proud to announce another fantastic giveaway for the dev community… Tickets to Devoxx UK 2016 worth £474!&lt;/h2&gt;

&lt;p&gt;We recently announced that &lt;a href=&quot;https://capgemini.github.io/agile/were-heading-to-devoxx/&quot;&gt;we are sponsoring Devoxx UK 2016&lt;/a&gt;, and so we are giving away all-inclusive 2-day passes to the conference on the 8th and 9th of June. This includes your choice of conference talks, access to all video content produced, and a chance to get insights into ground breaking new technology and tools that will inevitably make you a better developer!&lt;/p&gt;

&lt;h2 id=&quot;what-is-devoxx&quot;&gt;What is Devoxx?&lt;/h2&gt;
&lt;p&gt;Devoxx is the leading European non-profit developers conference focusing on the full spectrum of open source concerns.  Showcasing the best in technology and talent from the local development community. Its an unrivalled experience, in which developers from across the tech ecosystem come together for content, networking and inspiration. The conference provides a snapshot on future trends and technical innovation with 2000+ attendees immersed in the knowledge of over 50 tech talks and Meetups covering a series of topics including Architecture &amp;amp; Security, Cloud, Containers &amp;amp; Infrastructure and Mobile, IoT &amp;amp; Embedded.&lt;/p&gt;

&lt;p&gt;You can find out more about Devoxx and take a peek at the vast range of &lt;a href=&quot;http://www.devoxx.co.uk/&quot;&gt;content being delivered here&lt;/a&gt;.&lt;/p&gt;

&lt;h2 id=&quot;how-to-win-a-ticket&quot;&gt;How to win a ticket:&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;Enter the contest by sending your full name to &lt;a href=&quot;mailto:technologyconferences.uk@capgemini.com&quot;&gt;technologyconferences.uk@capgemini.com&lt;/a&gt; with the subject “Devoxx UK 2016”&lt;/li&gt;
  &lt;li&gt;Winners will be selected at random.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;deadline&quot;&gt;Deadline:&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;The entry deadline is 11am Wednesday June 1st 2016 and the winners will be announced shortly thereafter.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;what-you-need-to-know&quot;&gt;What you need to know:&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;No purchase necessary to win.&lt;/li&gt;
  &lt;li&gt;One entry per email.&lt;/li&gt;
  &lt;li&gt;If you’ve already purchased a ticket, no worries - if you win, you can give your spare ticket to someone you really like. &lt;/li&gt;
  &lt;li&gt;Winners will receive a tickets to attend Devoxx UK 2016 on the 8th and 9th June at the Business Design Centre in London.&lt;/li&gt;
  &lt;li&gt;We will contact the winners by email, so be sure to use your real email address!&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Good luck!&lt;/p&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/win-tickets-to-devoxx/&quot;&gt;Win Tickets to Devoxx UK 2016!&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on May 26, 2016.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[We're Sponsoring Devoxx]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/were-heading-to-devoxx/"/>
  <id>https://capgemini.github.io/agile/were-heading-to-devoxx</id>
  <published>2016-05-09T00:00:00+01:00</published>
  <updated>2016-05-09T00:00:00+01:00</updated>
  
  
  
  
  
  <author>
      <name>Matt Davidson</name>
      <uri>https://capgemini.github.io/alumni#author-matt-davidson</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Conferences" term="Conferences" /><category scheme="https://capgemini.github.io/tags/#Java" term="Java" /><category scheme="https://capgemini.github.io/tags/#Open%20source" term="Open source" /><category scheme="https://capgemini.github.io/tags/#Devoxx" term="Devoxx" /><category scheme="https://capgemini.github.io/tags/#Voxxed" term="Voxxed" />
  <content type="html">
    
    &lt;h2 id=&quot;were-sponsoring-devoxx-london-8-10-june&quot;&gt;We’re Sponsoring Devoxx! (London 8-10 June)&lt;/h2&gt;

&lt;p&gt;Following on from our sponsorship of &lt;a href=&quot;https://voxxeddays.com/bristol16/&quot;&gt;Voxxed Days Bristol 2016&lt;/a&gt; and &lt;a href=&quot;http://www.women-in-technology.com/&quot;&gt;Women of Silicon Roundabout&lt;/a&gt;, we’re continuing to put our money where our mouth is and sponsoring yet another major UK tech conference. In the UK JVM team, we care about open source, so much so that we’re taking loads of our team to &lt;a href=&quot;http://www.devoxx.co.uk/&quot;&gt;Devoxx UK&lt;/a&gt;; and it’s only one month away!&lt;/p&gt;

&lt;p&gt;Devoxx UK is the London flavour of the largest Java Community conference series. It features world class speakers keynoting in such topics as cutting edge JVM development, cloud based systems, and which JavaScript framework might last until Devoxx 2017. This year Devoxx UK is on the 8th to 10th of June, hosted at the Business Design Centre in Islington, London. Over the course of the three days, attendees can choose from five parallel conference sessions, the Hackergarten, open-table Birds of a Feather sessions and rapid lunchtime talks.  Oh, and on the Friday there are in-depth Hands-On Labs.&lt;/p&gt;

&lt;p&gt;On top of all this however, it’s perhaps the impromptu conversations which are the best part of these events.  We’re hoping to have loads of them.  The crowd at Devoxx is always incredibly diverse – diverse in background and diverse in opinion - and that is its strength.  We know that software is built by people, for people, and by widening the circle of influences and influencers, everyone benefits.&lt;/p&gt;

&lt;p&gt;Consequently we, the Capgemini JVM team will be running a trade stand, manned with some of our cheeriest 1x developers. We’ll be showing off some of our latest work (we’re always keen to share what we’ve been up to), answering questions such as “what’s it like to work for the largest SI no-one has ever heard of?” but also listening to you and what you have to share with us. Rumour has it we’ll even be giving out free pick and mix to anyone taking the time out to come visit! (Bring your own breadcrumbs if you want to find your way back to the talks.)&lt;/p&gt;

&lt;p&gt;In addition to the stall, a number of our team members are also taking part as speakers. &lt;a href=&quot;https://twitter.com/gaythu_rajan&quot;&gt;Gayathri Thiyagarajan&lt;/a&gt; and &lt;a href=&quot;http://twitter.com/al94781&quot;&gt;Andrew Harmel-Law&lt;/a&gt; will be presenting &lt;a href=&quot;http://cfp.devoxx.co.uk/2016/talk/JTS-9279/Harnessing_Domain_Driven_Design_for_Distributed_Systems&quot;&gt;“Harnessing Domain Driven Design for Distributed Systems”&lt;/a&gt;. &lt;a href=&quot;https://twitter.com/kevinrudland&quot;&gt;Kevin Rudland&lt;/a&gt; and Andrew (again) will be sharing their experiences on &lt;a href=&quot;http://cfp.devoxx.co.uk/2016/talk/LSP-1318/Performance_Testing_Distributed_Systems_for_the_Masses_-_Two_Years_Worth_of_Lessons_Learned&quot;&gt;“Performance Testing Distributed Systems for the Masses – A Scientific Approach”&lt;/a&gt;. I think I’m beginning to spot a trend…&lt;/p&gt;

&lt;p&gt;Personally, this is my first major UK conference. I’m really looking forward to catching some of the keynotes in person, rather than on YouTube. I’m also relishing the chance to catch up with friends and colleagues. In Capgemini, we work in distributed teams (mostly) throughout the UK, I’m looking forward to putting names to slack aliases, but also meeting loads of new people throughout the three days.&lt;/p&gt;

&lt;p&gt;Don’t forget we’re hiring (see the ad below this post). Here are just a few of the perks:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Surrounded by a growing set of talented and inspiring individuals.&lt;/li&gt;
  &lt;li&gt;Flexible working time and environment.&lt;/li&gt;
  &lt;li&gt;Two weeks of training and conference attendance a year. We love sending people to SkillsMatter’s CodeNode in London.&lt;/li&gt;
  &lt;li&gt;The best tools - we let developers choose Windows, OSX (and in the future Ubuntu – we’re working hard on it) for their corporate machine. We provide tricked out MacBook Pros to our developers if you want one.  We also provide IntelliJ IDEA licences for everyone who’s broken away from Eclipse.&lt;/li&gt;
&lt;/ul&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/were-heading-to-devoxx/&quot;&gt;We're Sponsoring Devoxx&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on May 09, 2016.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Musings on estimation]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/on-estimating/"/>
  <id>https://capgemini.github.io/agile/on-estimating</id>
  <published>2016-05-06T00:00:00+01:00</published>
  <updated>2016-05-06T00:00:00+01:00</updated>
  
  
  
  
  
  <author>
      <name>Tom Phethean</name>
      <uri>https://capgemini.github.io/authors#author-tom-phethean</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Estimation" term="Estimation" /><category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" />
  <content type="html">
    
    &lt;blockquote class=&quot;twitter-tweet tw-align-center&quot; data-lang=&quot;en&quot;&gt;&lt;p lang=&quot;en&quot; dir=&quot;ltr&quot;&gt;Thinking about writing a blog post about estimating but not sure how long it will take.&lt;/p&gt;&amp;mdash; Tom Phethean (@tsphethean) &lt;a href=&quot;https://twitter.com/tsphethean/status/702920932508246016&quot;&gt;February 25, 2016&lt;/a&gt;&lt;/blockquote&gt;
&lt;script async=&quot;&quot; src=&quot;//platform.twitter.com/widgets.js&quot; charset=&quot;utf-8&quot;&gt;&lt;/script&gt;

&lt;p&gt;I knew when I posted that tweet that I wanted to write a blog post about estimating. After all, I’ve &lt;a href=&quot;https://capgemini.github.io/agile/estimation/&quot;&gt;written on the topic before&lt;/a&gt;, but wasn’t sure exactly what form the post would take or what message I really wanted to get across. What I did know was that estimation is an important theme, and that I could create some value for both myself and others by putting my thoughts on a page.&lt;/p&gt;

&lt;h2 id=&quot;blast-from-the-past&quot;&gt;Blast from the past&lt;/h2&gt;

&lt;p&gt;Seeking inspiration, I looked back at a sample of past blog posts I’ve written, measuring word count of posts and looking at time from first commit to when the pull request to publish was opened:&lt;/p&gt;

&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;Blog post&lt;/th&gt;
      &lt;th&gt;Number of Words&lt;/th&gt;
      &lt;th&gt;Days taken to write&lt;/th&gt;
      &lt;th&gt;Words/Day&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://capgemini.github.io/open%20source/symfony-live/&quot;&gt;Reflections of Symfony Live London&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;860&lt;/td&gt;
      &lt;td&gt;7&lt;/td&gt;
      &lt;td&gt;122&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://capgemini.github.io/drupal/securing-drupal/&quot;&gt;Keeping Drupal Secure&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;1303&lt;/td&gt;
      &lt;td&gt;7&lt;/td&gt;
      &lt;td&gt;186&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://capgemini.github.io/drupal/drupal-integration-patterns/&quot;&gt;Drupal Integration Patterns&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;1409&lt;/td&gt;
      &lt;td&gt;25&lt;/td&gt;
      &lt;td&gt;56&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://capgemini.github.io/learning/lead-developer/&quot;&gt;The Lead Developer Conference&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;1129&lt;/td&gt;
      &lt;td&gt;2&lt;/td&gt;
      &lt;td&gt;564&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;a href=&quot;https://capgemini.github.io/blog/capgemini-hiring-fatjil/&quot;&gt;New Year, New Career&lt;/a&gt;&lt;/td&gt;
      &lt;td&gt;230&lt;/td&gt;
      &lt;td&gt;1&lt;/td&gt;
      &lt;td&gt;230&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;td&gt;&lt;strong&gt;Average:&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;&lt;strong&gt;986&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;&lt;strong&gt;8.4&lt;/strong&gt;&lt;/td&gt;
      &lt;td&gt;&lt;strong&gt;231&lt;/strong&gt;&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;h2 id=&quot;come-back-in-a-week&quot;&gt;Come back in a week&lt;/h2&gt;

&lt;p&gt;Looking at the data, it appears I can write a couple of hundred words a day. I am likely to turn out a blog post in just over a week. In other words, if you asked me to write a blog post, I could think about blog posts I’ve written before and tell you I’ll take about a week to do it. I’ll mostly meet expectations, but will disappoint you 20% of the time.&lt;/p&gt;

&lt;p&gt;Simple, right? If you come back in a week’s time, there should be a fully formed blog post ready for your reading pleasure.&lt;/p&gt;

&lt;p&gt;Well… not exactly. There’s some pretty big variances in the details of even that small data set. Let’s explore.&lt;/p&gt;

&lt;h2 id=&quot;productivity-factors&quot;&gt;Productivity factors&lt;/h2&gt;

&lt;p&gt;The data includes one post, written in a day, which was very short and was heavily influenced by a press release which we’d released through another channel. This meant that the amount of thought that had to go into the content was limited because someone else had already done the hard work for me. I could just tweak it a little bit for my intended audience and away we go. Excluding that post lifts the averages to over 10 days for a post, and raises the average word count to about 1200.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This means I’m reducing my average effort by about 20% if I incorporate re-use of work that’s done before.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Let’s look at the other end of the scale. My post on &lt;a href=&quot;https://capgemini.github.io/drupal/drupal-integration-patterns/&quot;&gt;Drupal Integration Patterns&lt;/a&gt; was longest in both word count and duration to write. That’s because it was a topic I was wrestling with, and I wasn’t sure how I wanted to get the message across. In writing it, I was referring to a lot of other content and inputs. It was also (relatively) original thought. My perspective on something. &lt;span class=&quot;pullquote&quot;&gt;I needed to stop and consider what I really did think about the topic, which obviously adds to the effort.&lt;/span&gt; It was also written at a time I had a lot of other things going on. Excluding this post drops my days per post to about 5, without substantially altering the average word count.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This means I’m roughly 60% less efficient if I’m not focused on the task, or if I’m creating something I’ve not done before.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Even looking at two posts that should be very similar, “&lt;a href=&quot;https://capgemini.github.io/open%20source/symfony-live/&quot;&gt;Reflections of Symfony Live London&lt;/a&gt;” and “&lt;a href=&quot;https://capgemini.github.io/learning/lead-developer/&quot;&gt;The Lead Developer Conference&lt;/a&gt;”, both about experiences at conferences, we can see quite significant differences in productivity. I’ll be honest:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;I have no idea why one took longer than the other - or why I was 460% more efficient writing one post than the other.&lt;/em&gt;&lt;/p&gt;

&lt;h2 id=&quot;writing-is-only-half-the-job&quot;&gt;Writing is only half the job&lt;/h2&gt;

&lt;p&gt;Of course, the other factor in all of this is that I’m only estimating the things that I’m in control of. I can control the topic I’m writing about. I can decide when it’s done. I’m responsible for organising my time and focusing on getting it done.&lt;/p&gt;

&lt;p&gt;What I’m not looking at is the uncontrollable factors. Our publishing process is to open a pull request on our blog GitHub repository. Other authors then review the posts, make suggestions, ask for clarifications, highlight grammatical errors or places the content doesn’t flow. We go through this cycle of review and amend until the post is in a publishable state, agreed by at least two of the reviewers. This keeps quality high (and shout out time - they all do an amazing job) but does mean that the review cycle can vary from a couple of hours to… longer… depending on who is around and available to provide feedback.&lt;/p&gt;

&lt;p&gt;Then we have to wait for a publishing spot. We try not to overload our readers with too many posts in a short space of time, and will often have a small queue of posts ready to go just to give us a buffer in case we have a period of low inspiration (touch wood, not so far!). This can mean there’s a few items ahead waiting to be published. For time critical posts, we might jump the queue - if something is related to a specific event or hot topic.&lt;/p&gt;

&lt;p&gt;Finally, there’s the act of publishing. Fortunately, we use &lt;a href=&quot;https://jekyllrb.com/&quot;&gt;Jekyll&lt;/a&gt; and &lt;a href=&quot;https://pages.github.com/&quot;&gt;GitHub Pages&lt;/a&gt;, which means our publishing process is very simple. Carry out a final preview of the branch locally, merge the pull request and wait a minute or so whilst the magic happens. However, this isn’t a zero time activity, and we have a smaller number of people with permissions to publish new posts, so this is another factor that could influence how long the new blog post is ready.&lt;/p&gt;

&lt;p&gt;So, back to the original question - did you want to know how long it would take to get my post in draft form, or how long it would take to be published?&lt;/p&gt;

&lt;h2 id=&quot;whats-your-point&quot;&gt;What’s your point?&lt;/h2&gt;

&lt;p&gt;I imagine a number of people will be wondering what I’m waffling on about. Fortunately, I do have a point. Everything we have looked at so far has direct parallels to the question we all get on a regular basis - “How long is this piece of work likely to take?”. Hopefully, we can draw some lessons from this:&lt;/p&gt;

&lt;h3 id=&quot;did-you-want-to-know-how-long-it-would-take-to-get-my-post-in-draft-form-or-how-long-it-would-take-to-be-published&quot;&gt;“did you want to know how long it would take to get my post in draft form, or how long it would take to be published?”&lt;/h3&gt;

&lt;p&gt;In agile practices, this would be your definition of done. What exactly are you being asked to estimate, and what will it look like when it is done? The time to produce some working code in your local development environment can be vastly different to the time taken to get through code review, testing cycles, user acceptance and deployment. Make sure you know what it is you’re being asked to estimate and what the person asking is expecting.&lt;/p&gt;

&lt;h3 id=&quot;im-only-estimating-the-things-that-im-in-control-of&quot;&gt;“I’m only estimating the things that I’m in control of”&lt;/h3&gt;

&lt;p&gt;We talked about cycles outside your control - like getting peers to look at your code, arranging users to test it. Even once these are in place, you’re losing control of the duration. At best you can time box the activity, but you can’t guarantee what is going to be found. Testing might uncover one bug or one hundred, just like I’ve had blog posts published with an “all OK” as often as I’ve written terribly and had loads of comments to address.&lt;/p&gt;

&lt;p&gt;In reality, your best bet for predictability is &lt;a href=&quot;https://en.wikipedia.org/wiki/Subitizing&quot;&gt;keeping items small&lt;/a&gt; and automating as much as possible. Why wait for someone to point out ten spelling mistakes when you could run a spell-checker? In the same way, automate your code checks - whether through unit tests, code style checks or test environment deployments. &lt;span class=&quot;pullquote&quot;&gt;The smaller the item under inspection, the less likely something will crop up that will delay things&lt;/span&gt;, but if it does then the queue of other things can carry on past it in a steady flow.&lt;/p&gt;

&lt;p&gt;The other factor is that developers tend to only estimate for the bit that they think of as “actual dev work” and forget about including time for meetings, documentation, testing, and all the general bits and pieces around the project. The pieces that tend to turn “it’ll take 2 hours” into a full day task, or longer. All of these are &lt;a href=&quot;https://capgemini.github.io/agile/understanding-and-addressing-our-waste/&quot;&gt;forms of waste&lt;/a&gt;, all of which can extend the duration of our work, and influence the time to get to “done”.&lt;/p&gt;

&lt;p&gt;Remember to think in terms of both effort (or time spent on the activity) and elapsed time that it’s likely to take to complete that effort.&lt;/p&gt;

&lt;h3 id=&quot;i-have-no-idea-why-one-took-longer-than-the-other&quot;&gt;I have no idea why one took longer than the other&lt;/h3&gt;

&lt;p&gt;We saw, in the blog post examples, evidence of being quicker at things where “prior art” already exists, or things we’ve done before. We also saw that doing something for the first time takes longer. Finally, we observed that &lt;span class=&quot;pullquote&quot;&gt;sometimes there is no explaining why some things take longer than others even when they appear similar.&lt;/span&gt; We’ve all had that bug that crops up in the middle of something routine that sends us down a rabbit hole and expends valuable time.&lt;/p&gt;

&lt;p&gt;In software engineering, we often come across all three scenarios and think we can get a feel for how long things can take. However, don’t get too comfortable with this, as focusing on the high level “it’s just another blog post” can quickly make us over confident. Focus on the details, the nuances of this particular scenario, to make sure you challenge yourself to think about how long it will take.&lt;/p&gt;

&lt;h3 id=&quot;past-performance-is-not-a-guarantee-of-future-success&quot;&gt;Past performance is not a guarantee of future success.&lt;/h3&gt;

&lt;p&gt;Finally, we see that looking back at past projects to feed your estimates can be misleading. It only takes one hugely successful project (or one truly disastrous one) to skew your numbers. The numbers alone also don’t take into account the circumstances around them. Did the project take place over a holiday season? Were the team working on multiple things at once? Was the problem domain completely new to the team?&lt;/p&gt;

&lt;p&gt;Every blog post, like every project, every feature, every block of code is different. There are similarities, and opportunities for us to learn from what we’ve done before, but making sure we focus on what we’re doing now can we build an accurate picture of what we need to do, and create an appropriate estimate.&lt;/p&gt;

&lt;p&gt;Of course, that leads on to the question of &lt;a href=&quot;http://neilkillick.com/2012/04/12/do-not-estimate-software-projects-at-all/&quot;&gt;whether we should even bother to estimate at all&lt;/a&gt;, but I’ll leave that for another time…&lt;/p&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/on-estimating/&quot;&gt;Musings on estimation&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on May 06, 2016.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Understanding and Addressing our Waste]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/understanding-and-addressing-our-waste/"/>
  <id>https://capgemini.github.io/agile/understanding-and-addressing-our-waste</id>
  <published>2016-03-04T00:00:00+00:00</published>
  <updated>2016-03-04T00:00:00+00:00</updated>
  
  
  
  
  
  <author>
      <name>Satvinder Hullait</name>
      <uri>https://capgemini.github.io/alumni#author-satvinder-hullait</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Development" term="Development" /><category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" />
  <content type="html">
    
    &lt;p&gt;How often do you find yourself having to wait for an event to happen so you can progress what you are trying to do?&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;Waiting for your application to build?&lt;/li&gt;
  &lt;li&gt;Waiting for someone to code review so you can commit?&lt;/li&gt;
  &lt;li&gt;Waiting for a new deployment in the test environment so you can test new functionality?&lt;/li&gt;
  &lt;li&gt;Awaiting a response from a client?&lt;/li&gt;
  &lt;li&gt;People cancelling attendance to workshops so you need to reschedule?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are all types of waste, why should we suffer from them?&lt;/p&gt;

&lt;h2 id=&quot;understanding-our-waste&quot;&gt;Understanding our Waste&lt;/h2&gt;

&lt;p&gt;What I mean when talking about waste is the time we are taken away from being fully focused on a task. When we give full attention to a task we start to get in to &lt;a href=&quot;http://psygrammer.com/2011/02/10/the-flow-programming-in-ecstasy/&quot;&gt;the flow&lt;/a&gt;, being focused becomes difficult if for example you are constantly being pulled into lots of meetings or your computer keeps crashing and your waiting for it to catch up.&lt;/p&gt;

&lt;p&gt;Now I’m not saying this is the case all of the time but normally there are areas of waste in most projects in some way, shape or form. Off the top of my head some examples of waste:&lt;/p&gt;

&lt;h3 id=&quot;a-problem-that-is-out-of-our-hands-even-though-we-might-have-a-solution&quot;&gt;A problem that is out of our hands (Even though we might have a solution):&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;The client desktops we need to use are slow and crash frequently, inhibiting our ability to work efficiently.&lt;/li&gt;
  &lt;li&gt;Restrictions on what tools we can use to communicate with our team (this problem is more prevalent in a distributed team)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;a-problem-that-may-be-within-our-control&quot;&gt;A problem that may be within our control:&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;It takes 4 hours to deploy to an environment so testers can start testing newer functionality (which means either you stop all testers for 4 hours during the working day or make one wait until the next day to test), possible solutions are;
    &lt;ul&gt;
      &lt;li&gt;Set up a CI environment with a streamlined deployment process&lt;/li&gt;
      &lt;li&gt;Analyse why your deployment takes so long and start working on a fix for it.&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
  &lt;li&gt;Stand ups are too long or not focused enough, possible solutions are;
    &lt;ul&gt;
      &lt;li&gt;Have the right number of people who are relevant to the stand up&lt;/li&gt;
      &lt;li&gt;Ensure people turn up on time&lt;/li&gt;
      &lt;li&gt;Try to keep it time boxed so each speaker must be succinct&lt;/li&gt;
      &lt;li&gt;Take things offline&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are just a few possible areas of waste on a project, each project is different and  will have its own set of challenges and external influences. However for the most part there is always something we can do to improve our projects, thus improving our working day, by reducing waste. People who are familiar with Lean may have heard of the 7 types of waste or Muda (if you haven’t heard of it before, here are a few links for reading: &lt;a href=&quot;http://leangenie.com/7-wastes/&quot;&gt;the 7 types of waste&lt;/a&gt;, &lt;a href=&quot;http://en.wikipedia.org/wiki/Muda_(Japanese_term)&quot;&gt;Muda&lt;/a&gt;, &lt;a href=&quot;http://agile.dzone.com/articles/seven-wastes-software&quot;&gt;Seven Wastes Software&lt;/a&gt;. I’m keen not to cover it here as I believe it’s deserving of a separate post.)&lt;/p&gt;

&lt;h2 id=&quot;how-do-we-address-our-waste&quot;&gt;How do we address our Waste?&lt;/h2&gt;

&lt;h3 id=&quot;working-out-what-the-waste-is&quot;&gt;Working out what the Waste is&lt;/h3&gt;

&lt;p&gt;Firstly before we start trying to address our waste we need to work out what exactly it is, for the most part we all love a good moan, so it’s not difficult to get the ball rolling in this area. The important part is to have a team environment where we have a willingness to change and adapt our processes (be ‘Agile’) and create a safe collaborative environment so people aren’t scared to suggest improvements to process.&lt;/p&gt;

&lt;p&gt;Trying to work out what our waste is can be a struggle if we don’t have the right focus; luckily most projects that we work on these days tend to be some flavour of Agile. So we have the ability as a team to ask ourselves in a retrospective, what has been inhibiting our productivity or causing us to be frustrated during our work day.&lt;/p&gt;

&lt;p&gt;Ultimately it is the project team who know what the areas of waste are; this is due to the fact the team has to face it, day in day out. We tend to know what the solution is but we are a little hazy on how we go about implementing it, hence why it’s beneficial having the time in retrospectives to discuss.&lt;/p&gt;

&lt;h3 id=&quot;how-do-we-deal-with-it&quot;&gt;How do we deal with it?&lt;/h3&gt;

&lt;p&gt;Talking about waste can kick start the thought process on how we could deal with it. Writing down our issues is good practice, as we start to get visibility of them, it’s important to make sure we commit to actually addressing them. There is no point in having a wiki page with 100 issues on and just adding to them each retrospective without tackling any of them.&lt;/p&gt;

&lt;p&gt;A key part of looking at a solution is to ensure the action we decide to take, is achievable and measureable. By getting feedback quickly and frequently we can make several small adjustments (but that is also dependent on what the problem is). We need to set a timescale in which we can say if our experiment has been a success, we need more time to judge or we need a different solution (I believe one 2 week iteration is an ideal timeframe). We don’t always have to fix something in one iteration either, it may take a few to mitigate an issue. That is because dealing with waste can be the team adopting a slightly different way of working and that doesn’t happen overnight. We should look to always look to break down the solution we come up with into small, achievable and measureable tasks.&lt;/p&gt;

&lt;p&gt;Just because we deal with some of our waste it does not mean we will all start working at 100% all of the time every day, we still need that level of slack in a team where people are not being overworked. An analogy I once read was &lt;em&gt;“you wouldn’t want your CPU working at 100% so why would you want your team doing that?”&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;When thinking about an area of waste we need to run it through a thought process, see below for an example workflow:&lt;/p&gt;

&lt;h4 id=&quot;1-what-is-the-real-problem&quot;&gt;1.) What is the “real” problem?&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;Identifying what the problem actually is before we think about how to solve it&lt;/li&gt;
  &lt;li&gt;This is probably the most difficult part of the process as a lot of the time we tend to see symptoms of a problem and not the root cause.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;2-is-the-problem-within-our-remitinterest-to-fix&quot;&gt;2.) Is the problem within our remit/interest to fix?&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;There are times when our areas of waste are caused by external influences. Our first port of call should be to attempt to resolve things by speaking to the right people about this issue, however communication channels aren’t always in place to allow these discussions to happen. There will also be situations in which our hands are tied, so we instead capture metrics and attempt to create a well reasoned case.&lt;/li&gt;
  &lt;li&gt;It is normally in our interest to fix these problems, but the timescale in which they are done can vary. Sometimes it could be better to leave and monitor an issue over a longer period of time, due to the fact it can expose wider issues, again this is normally caused by external influences.&lt;/li&gt;
  &lt;li&gt;If we can fix a problem and it adds value to the team we should always try to do it, provided it’s not to the detriment of a successful delivery or cost too much.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;3-what-is-the-driver-for-doing-this&quot;&gt;3.) What is the driver for doing this?&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;What value will we get out doing this, why do we want to do it? This is perhaps the most important question. We always strive to ‘add value’ in terms of technical stories, it’s the same for improving the way in which we work.&lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;4-how-feasible-is-this-to-tackle&quot;&gt;4.) How feasible is this to tackle?&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;What is the solution to this problem?
    &lt;ul&gt;
      &lt;li&gt;Cost versus benefit (If cost is too high, alternate workflow?)&lt;/li&gt;
      &lt;li&gt;Have we got the people to do it?&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h4 id=&quot;5-is-there-any-risk-to-implementing-the-solution&quot;&gt;5.) Is there any risk to implementing the solution?&lt;/h4&gt;

&lt;ul&gt;
  &lt;li&gt;We need to understand the effects of what we do, if fixing one thing breaks several others is it worthwhile? For instance, if we are updating a class that effects the way a web page works, have we got a comprehensive set of both unit and automated regression tests we can run, to ensure we have not caused any unwanted side effects?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s also a good idea but not always practical to run a root-cause analysis on why these problems have occurred as well. (If you are unfamiliar: &lt;a href=&quot;https://en.wikipedia.org/wiki/5_Whys&quot;&gt;5 whys wiki&lt;/a&gt;, &lt;a href=&quot;https://www.mindtools.com/pages/article/newTMC_5W.htm&quot;&gt;5 whys&lt;/a&gt;)&lt;/p&gt;

&lt;h3 id=&quot;scenario&quot;&gt;Scenario:&lt;/h3&gt;
&lt;p&gt;An application takes 20 minutes to build and deploy locally and you need to do this to see any change you make (even if it’s a HTML change - bit of a dramatisation as there are normally workarounds).&lt;/p&gt;

&lt;h4 id=&quot;what-is-the-real-problem&quot;&gt;What is the “real” problem?&lt;/h4&gt;
&lt;p&gt;The problem may feel like a number of things e.g. a redesign of our system is needed (this may be our root cause), the symptom we see is that when a developers makes a change, it takes 20 minutes to see if it renders as expected on the UI. However the real problem here is that the developer keeps getting disrupted, so they are likely to get frustrated if this happens constantly as it’s delaying them completing a task.&lt;/p&gt;

&lt;h4 id=&quot;is-the-problem-within-our-remitinterest-to-fix&quot;&gt;Is the problem within our remit/interest to fix?&lt;/h4&gt;
&lt;p&gt;Yes, both within in our remit and interest to fix.&lt;/p&gt;

&lt;h4 id=&quot;what-is-the-driver-for-doing-this&quot;&gt;What is the driver for doing this?&lt;/h4&gt;
&lt;p&gt;Reduce the turnaround time for developers to be able to complete the coding for a story and allow developers to get into a flow for a longer period of time, without constant breaks, whilst waiting to redeploy. By reducing this turnaround time it means our testers can get started quicker, meaning we get closer to delivering value quicker.&lt;/p&gt;

&lt;h4 id=&quot;how-feasible-is-this-to-tackle&quot;&gt;How feasible is this to tackle?&lt;/h4&gt;
&lt;p&gt;A solution is to upgrade a core part of the system.
However the cost of doing this whilst implementing business critical stories is just not feasible, despite the time we could save.
So an alternative solution is to use a tool like &lt;a href=&quot;http://zeroturnaround.com/software/jrebel/&quot;&gt;JRebel&lt;/a&gt; which reloads changes instantly. Whilst this doesn’t actually fix the problem with the application, it does mitigate needing to redeploy for every change. However there are some changes that will require a redeploy and rebuild but this won’t be as frequent. The cost here is a need for licenses and a slight learning curve on how to use the tool, but the benefit outweighs the cost of a license. Also the cost of a license is less than the cost of upgrading the system.
We only need one person to understand the tool and then transfer knowledge to the rest of the team.&lt;/p&gt;

&lt;h4 id=&quot;is-there-any-risk-to-implementing-the-solution&quot;&gt;Is there any risk to implementing the solution?&lt;/h4&gt;
&lt;p&gt;Little risk, only a bit of a learning curve and knowledge sharing is required for how to use it.&lt;/p&gt;

&lt;h3 id=&quot;how-do-we-measure-the-success-of-our-solution&quot;&gt;How do we measure the success of our solution?&lt;/h3&gt;

&lt;p&gt;So, once we’ve worked out what our waste is and we’ve started to address it, the next step is to track our progress. It’s important we capture metrics on this. There are a few ways in which this can be done:&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;An opinion poll in the stand up ‘How are you feeling about issue X’ and get a rating off each person - this can be a little to repetitive though.&lt;/li&gt;
  &lt;li&gt;Capture it in the retrospective say, ‘Since our last retrospective has issue X become less of an issue?’ and dedicate sometime in the retrospective to for this issue.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Too often we get bogged down into the “what went well, what didn’t go so well, what can be done better” style of retrospective, I feel like it isn’t always the best format as  it is difficult to get the valuable feedback we need from it. Especially when we have a focus on improving our productivity.&lt;/p&gt;

&lt;p&gt;It’s also a good idea to keep sight of the issue, even if we feel it has been mitigated, as sometimes it’s easy to fall back into old habits unless we remind ourselves why we made a change.
We need to be able to define a state of done for improving our process and addressing the waste. This can be done in a similar fashion to how we create a Definition of Done for our software tasks; it just requires us to think about what our desired outcome should be when we are addressing something, by keeping our tasks small and measurable it becomes easier for us to say when we’ve achieved something.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Ultimately time is a valuable commodity, which we can’t get back, so why should we waste it? Time is money, time that we spend waiting for stuff to happen so that we can be productive is wasting the clients money and our time. This also applies to our own personal lives and processes, even stuff as simple as how we commute to work and making some small, incremental changes can add great benefit.&lt;/p&gt;

&lt;p&gt;I believe that we have lots of examples of waste around us in our day to day lives; it’s about being able to identify them and trying to fix them in order to increase the quality of our day. Personally I feel good about a day’s work when I’ve been able to crack on and be productive, however when I’ve just been caught up and not been able to deliver value I find that I leave work feeling frustrated.&lt;/p&gt;

&lt;p&gt;At the very least we need to be able to identify our areas of waste, as a result of doing that we can start to work on fixing them iteratively and measuring our progress as our iterations go by. We don’t always need to focus on the big issues either, sometimes it’s just as good getting several small wins. Whilst writing this blog, I was put on to the concept of &lt;a href=&quot;http://www.bbc.co.uk/sport/olympics/19174302&quot;&gt;‘marginal gains’&lt;/a&gt;, which was a major factor in the success of the 2012 British Olympic Cycling Team: “The whole principle came from the idea that if you broke down everything you could think of that goes into riding a bike, and then improved it by 1%, you will get a significant increase when you put them all together”&lt;/p&gt;

&lt;p&gt;We should be able to apply this concept to developing our software, everything from gathering requirements, writing code, system testing functionality through to our deployment process (each of these area’s comprise of several smaller things but just for a high level example). If we improved each area by just 1% we would be well on our way to getting rid of some of our waste, delivering value to our customer quicker and improving our working day.&lt;/p&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/understanding-and-addressing-our-waste/&quot;&gt;Understanding and Addressing our Waste&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on March 04, 2016.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Specialism Constrains Throughput]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/specialism-constrains-throughput/"/>
  <id>https://capgemini.github.io/agile/specialism-constrains-throughput</id>
  <published>2016-01-22T00:00:00+00:00</published>
  <updated>2016-01-22T00:00:00+00:00</updated>
  
  
  
  
  
  <author>
      <name>John Shaw</name>
      <uri>https://capgemini.github.io/alumni#author-john-shaw</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" /><category scheme="https://capgemini.github.io/tags/#Engineering" term="Engineering" />
  <content type="html">
    
    &lt;h3 id=&quot;why-specialisms-within-a-team-leads-to-constraints-on-productivity&quot;&gt;Why Specialisms Within a Team Leads to Constraints on Productivity&lt;/h3&gt;

&lt;p&gt;Tim, a good developer, has been working on a story. “Fred, I need the build configuration changed to pick up the new component I’ve added.”&lt;/p&gt;

&lt;p&gt;Fred responds, “okay, I can fit that in next week.”&lt;/p&gt;

&lt;p&gt;“Oh, it’s the demo on Tuesday and we need to deploy to test it before then.”&lt;/p&gt;

&lt;p&gt;“Well I’m busy with other tasks at the moment, perhaps you should have planned ahead.”&lt;/p&gt;

&lt;p&gt;–&lt;/p&gt;

&lt;p&gt;This sounds reasonable on behalf of Fred, the Build Engineer. He has limited availability and needs his work planned out.&lt;/p&gt;

&lt;p&gt;But that is &lt;em&gt;exactly&lt;/em&gt; the sort of behaviour agile practices are trying to move away from. We want to move towards shorter cycles and faster feedback. We want to be able to do things now. This is the kind of problem the DevOps mentality is &lt;em&gt;supposed&lt;/em&gt; to resolve.&lt;/p&gt;

&lt;h3 id=&quot;staff-liquidity&quot;&gt;Staff Liquidity&lt;/h3&gt;

&lt;p&gt;I had the privilege to hear &lt;a href=&quot;http://agilecambridge.net/ac2013/sessions/index.php?session=75&quot;&gt;Chris Matts speak at Agile Cambridge&lt;/a&gt; a couple of years ago. He was talking about options and availability of people. How do we make people available? Get them to do &lt;em&gt;less&lt;/em&gt;. This is counter-intuitive - how do we get more done by doing less? Surely we want to give our best people (our specialists) the &lt;em&gt;most&lt;/em&gt; work?&lt;/p&gt;

&lt;p&gt;It turns out high utilisation doesn’t necessarily lead to high productivity. Plans are fragile as estimates are a guess; plans are fragile as unexpected work arises; plans are fragile as people aren’t always available. Delays lead to blocked work.&lt;/p&gt;

&lt;p&gt;Chris’s suggestion was to resolve this by &lt;em&gt;not&lt;/em&gt; assigning work to the specialist. Better to get them to mentor and guide others to raise their skill level and to leave the specialist free to tackle emergency issues when they arise. Over time this resolves the dependency on key individuals and, overall, makes them available for high value work.&lt;/p&gt;

&lt;h3 id=&quot;expert-level&quot;&gt;Expert Level&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://en.wikipedia.org/wiki/Dreyfus_model_of_skill_acquisition %22Dreyfus Model of Skill Acquisition%22&quot;&gt;The Dreyfus Model of Skill Acquisition&lt;/a&gt; describes a few levels of skill, with “expert” being the top level.&lt;/p&gt;

&lt;p&gt;It is these experts that are in short-supply. It is these experts we want to work on the critical aspects of our work. But it is also these experts that we build dependencies on.&lt;/p&gt;

&lt;p&gt;A better model is to raise the level of the team, over time, and only consult “the expert” when needed. Of course this doesn’t mean the expert cannot help out day-to-day, they can even take on some important but lower-priority work. They can also add a lot of value by reviewing work output of others and helping improve quality and technique.&lt;/p&gt;

&lt;p&gt;Generally speaking, I’ve found that experts “go their own way” anyway. It’s very difficult to tie-down an expert to a rigid plan. They are best off deciding for themselves where best they can add value.&lt;/p&gt;

&lt;h3 id=&quot;skills-matrix&quot;&gt;Skills Matrix&lt;/h3&gt;

&lt;p&gt;There may of course be a few areas of specialist knowledge. Chris’s suggestion was to have a skills matrix and try to bring everyone up to a certain level. This won’t necessarily be even across the team as people have different interests and skills, but the idea is for everyone to have a broad level of competency and one or two stronger areas.&lt;/p&gt;

&lt;p&gt;Let’s say each skill for each person is ranked 1 (novice) to 5 (expert). We probably want to bring everyone up to level 2 for all skills and have a few team members at level 4 for all skills. I haven’t heard the term “generalising specialist” used for a while now (some people thought it an oxymoron!), but I like the term and I think this is what it meant. Not quite “Jack of all trades, master of none”, more good at everything, but great at some.&lt;/p&gt;

&lt;p&gt;But note I didn’t suggest anyone at level 5, expert. I think such people are rarely good across the board (how would they have time?) and are in so much demand that it’s difficult to tie them into a team. Better to treat them as an advisor or a consultant.&lt;/p&gt;

&lt;p&gt;I do know one person who is actually a specialist-generalist. By this I mean he specialises in being able to pick things up quickly, being flexible, being adaptable, being approachable and most of all a great problem solver. It is this broad range of skills mixed with great soft-skills (which are underrated in his case, even by himself) which mean he is always in demand.&lt;/p&gt;

&lt;h3 id=&quot;trust&quot;&gt;Trust&lt;/h3&gt;

&lt;p&gt;Part of the problem described in my fictional (!) conversation above is a lack of trust between the build engineer and the developer.&lt;/p&gt;

&lt;p&gt;Of course there needs to be a certain level of control, but better to trust people to do the right thing and address the occasional problem rather than never do the task and never learn.&lt;/p&gt;

&lt;h3 id=&quot;restarting-the-conversation&quot;&gt;Restarting the Conversation&lt;/h3&gt;

&lt;p&gt;So how might that conversation go? Perhaps something like:&lt;/p&gt;

&lt;p&gt;Tim, a good developer, has picked up a story. “Fred, I’ve changed the build configuration to pick up the new component I’ve added. It’s built and deployed to the test environment so it looks okay.”&lt;/p&gt;

&lt;p&gt;Fred responds, “ah, I had noticed the build was taking a little longer than usual, I’ll see if I can do something to speed it up.”&lt;/p&gt;

&lt;p&gt;“It’s the demo on Tuesday so we need some stability around then.”&lt;/p&gt;

&lt;p&gt;“I’m busy with other tasks at the moment, the build should run okay for now but if there’s a problem give me a shout.”&lt;/p&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/specialism-constrains-throughput/&quot;&gt;Specialism Constrains Throughput&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on January 22, 2016.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Agile Cambridge 2015]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/agile-cambridge-2015/"/>
  <id>https://capgemini.github.io/agile/agile-cambridge-2015</id>
  <published>2015-09-25T00:00:00+01:00</published>
  <updated>2015-09-25T00:00:00+01:00</updated>
  
  
  
  
  
  <author>
      <name>John Shaw</name>
      <uri>https://capgemini.github.io/alumni#author-john-shaw</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" /><category scheme="https://capgemini.github.io/tags/#Learning" term="Learning" /><category scheme="https://capgemini.github.io/tags/#Conferences" term="Conferences" />
  <content type="html">
    
    &lt;h2 id=&quot;failing-fast---an-autopsy-of-a-failed-release&quot;&gt;Failing Fast - An Autopsy of a Failed Release&lt;/h2&gt;

&lt;p&gt;I’ve been lucky enough to be selected to speak at &lt;a href=&quot;http://agilecambridge.net/2015/&quot;&gt;Agile Cambridge 2015&lt;/a&gt;. My talk is titled “Failing Fast - An Autopsy of a Failed Release”, please &lt;a href=&quot;http://agilecambridge.net/2015/sessions/index.php?session=43&quot;&gt;read more about this talk on the conference site&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;I attended the same conference in 2013. I very much enjoyed the conference and I was inspired enough to submit a proposal the following year. Fortunately this was accepted and I enjoyed the pleasure of speaking about DevOps in the Fellows Dining Room at Churchill College, Cambridge. (A dining room? It’s an impressive room with no doubt an invaluable collection of artwork on the walls, including some very eye-catching Andy Warhol pieces on the walls!)&lt;/p&gt;

&lt;p&gt;Speaking about DevOps proved to be a little controversial, but it did prompt some good discussion - kind of my aim for the talk. Essentially I was saying DevOps is a way of thinking, not a separate team. I wanted to define the title “DevOps Engineer”, something I found very difficult to do because of the wide skill-set and level of experience required.&lt;/p&gt;

&lt;p&gt;This year I decided to be a little “safer” in my proposal so I decided a case study was the way to go. But then I used the word “Failed” in my title and I seemed to stir-up a few emotions! I can understand that “failure” has negative connotations, but surely &lt;em&gt;not&lt;/em&gt; admitting failure early is even worse! “Failing fast” is seen as a benefit of agile practices and adopting such practices is supposed to make catastrophic project failure a thing of the past.&lt;/p&gt;

&lt;p&gt;I’ve written a few blog posts now, loosely around agile practices (of course!). Please see my section on the &lt;a href=&quot;https://capgemini.github.io/authors/&quot;&gt;Capgemini Engineering blog&lt;/a&gt; to find out more, or indeed to find other posts from my fellow bloggers.&lt;/p&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/agile-cambridge-2015/&quot;&gt;Agile Cambridge 2015&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on September 25, 2015.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Risk Burndown]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/risk-burndown/"/>
  <id>https://capgemini.github.io/agile/risk-burndown</id>
  <published>2015-03-12T00:00:00+00:00</published>
  <updated>2015-03-12T00:00:00+00:00</updated>
  
  
  
  
  
  <author>
      <name>John Shaw</name>
      <uri>https://capgemini.github.io/alumni#author-john-shaw</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" /><category scheme="https://capgemini.github.io/tags/#Risk" term="Risk" />
  <content type="html">
    
    &lt;p&gt;Few Agile approaches actively manage risk. There are some tools to help with risk, such as sprints, Definition of Done, etc. but there are few tools that are &lt;em&gt;explicit&lt;/em&gt; about risk.&lt;/p&gt;

&lt;p&gt;Risk burndown is an approach I have used to visualise risk.&lt;/p&gt;

&lt;h2 id=&quot;risk-value-lifecycle&quot;&gt;Risk Value Lifecycle&lt;/h2&gt;

&lt;p&gt;A key part of Rational Unified Process (and other similar unified processes) is the concept of risk-value lifecycle. It’s not a tool as such, more a thought process alluding to how project engagements should discover and analyse risk.&lt;/p&gt;

&lt;p&gt;In RUP, this is an overlay to the phases, especially Inception and Elaboration.&lt;/p&gt;

&lt;p&gt;Inception deals with discovery of requirements, or exploring the problem space. The end of the Inception phase is when it is agreed that risks have been discovered and evaluated.&lt;/p&gt;

&lt;p&gt;Elaboration deals with the mitigation of risks, or exploring the solution space. The end of the Elaboration phase is when the risks have been mitigated. This is usually when a candidate architecture has been agreed and proven through working software.&lt;/p&gt;

&lt;p&gt;To relate this to the risk-value lifecycle, the end of Inception is when all the risks have been discovered and the end of Elaboration is when all risks have been mitigated.&lt;/p&gt;

&lt;p&gt;(Of course this is an &lt;em&gt;ideal&lt;/em&gt; view. Further risks may be identified after the end of Inception and risks may not be completely mitigated at the end of Elaboration. These are guidelines and are not to be taken too rigidly - it just has to be a consensus view that the project can proceed &lt;em&gt;knowing&lt;/em&gt; the level of risk.)&lt;/p&gt;

&lt;p&gt;The phase after Elaboration is Construction. By actively discovering risks and mitigating them the project team have built a good foundation for the remainder of the project. This phase deals with scaling and the team can now concentrate much more on delivering value.&lt;/p&gt;

&lt;h2 id=&quot;types-of-risk&quot;&gt;Types of Risk&lt;/h2&gt;

&lt;p&gt;Donald Rumsfeld gave a famous &lt;a href=&quot;http://en.wikipedia.org/wiki/There_are_known_knowns&quot;&gt;known knowns speech&lt;/a&gt; a few years ago. This was largely derided as incomprehensible rhetoric, but he actually made a good point. There are risks out there that we know about, but there are risks out there that we do not know about. Projects must take deliberate action to discover these risks. This action must not be based solely on discussion, it must be based on trying out aspects of the solution.&lt;/p&gt;

&lt;p&gt;That said, how does one know the problem space has been explored? Unfortunately I do not have a definitive answer to this, but some pointers are:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Define the boundary of scope. This will determine the space to be explored. (Anything outside the boundary is waste!)&lt;/li&gt;
  &lt;li&gt;Define the entire space within the boundary. This is likely to be in high level stories (or themes, epics) on the backlog.&lt;/li&gt;
  &lt;li&gt;Be precise about the boundary of each of these stories to prevent items slipping between the gaps.&lt;/li&gt;
  &lt;li&gt;Estimate the stories. This is likely to be imprecise for high-level stories, but should drive out some risks. E.g. t-shirt sizing may be good enough.&lt;/li&gt;
  &lt;li&gt;Assign a risk to all stories. This should be a number, very much in the way stories points are used. The higher the number, the higher the risk. It might be enough to use the estimate itself and a flag to indicate the story carries risk. A risk-matrix approach of balanced severity/likelihood could be used too.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Until this space is explored thoroughly, the project might be carrying a large &lt;em&gt;unidentified&lt;/em&gt; risk.&lt;/p&gt;

&lt;p&gt;Of course that only identifies risk. The next step is to mitigate risk. In traditional project management this means assigning some sort of action to reduce the impact or a pointer to some other action that will lower that impact. In the Product Backlog risk is lowered by delivering that story, or more likely, extracting the risky parts of the high level story into a smaller story to be delivered high up in the backlog. In some cases this may be a spike or an experiment of some sort. (RUP aims to mitigate features that are identified as &lt;em&gt;architecturally significant&lt;/em&gt; - again by taking an action to deliver part or all of that feature.)&lt;/p&gt;

&lt;h2 id=&quot;risk-burndown&quot;&gt;Risk Burndown&lt;/h2&gt;

&lt;p&gt;Applying the method described above would result in a backlog with stories broken down with risky elements extracted into smaller stories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Warning: Product Owners like to order the backlog by business priority.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Fair enough, let’s deliver the most important features first. Of course what I’m driving at is that business priority isn’t the only important factor, especially early on in the development. Early on we need to perform experiments to prove the architecture. Equally we may explore user experience and other important aspects - but these are usually more obvious than the abstract concepts of architecture and non-functional requirements. Product Owners need assistance here; the Architect is an obvious source of help but a visualisation may help too.&lt;/p&gt;

&lt;p&gt;The Risk Burndown is simply a plot of the sum of the risk in the Product Backlog. It is analogous to the Product Burndown, a plot of the sum of story points remaining in the backlog (which &lt;em&gt;might&lt;/em&gt; equate to value???).&lt;/p&gt;

&lt;p&gt;This gives the Product Owner a visualisation of the risk, an important tool for discussion with the Architect and engineers. Of course the Product Owner may have good reason to prioritise on factors other than technical risk - but at least they are armed to make an informed decision.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2015-03-12-risk-burndown/Risk-burndown.png&quot; alt=&quot;Risk burndown&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The chart above is an example I used on a previous engagement. The vertical scale was number of stories (but could easily have been story points). Risk was marked as count of stories carrying significant risk (in this case marked as “architecturally significant” in the backlog) multiplied by 10 (weighted so the plot line would show up as significant compared to the other lines). (Applying the 80:20 rule, a factor of 5 would be expected: as a rule of thumb about 20% of the backlog carries risk. In our case a factor of 10 seemed to work.)&lt;/p&gt;

&lt;p&gt;The risk-value crossover was somewhere around the 10th April, though don’t read too much into this. It’s not a milestone in itself (especially as an arbitrary weighting of 10 was applied to risk in this case!) it just indicates a good time to hold conversations around mitigation of risk vs speed of delivering value.&lt;/p&gt;

&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;

&lt;p&gt;Lightweight frameworks (e.g. Scrum) are not explicit about managing risk. Backlogs and project management techniques may not cover the detail that the delivery teams themselves require.&lt;/p&gt;

&lt;p&gt;The Risk Burndown approach described in this article is one such technique, allowing the current risk level to be visualised. This allows the right questions to be asked during the lifecycle of the project. Very early in the project the trend would be for risk to increase as the risks are uncovered. As the development starts to gain pace the risks should plateau and start to drop.&lt;/p&gt;

&lt;p&gt;As always, transparency allows us to inspect. Inspection allows up to adapt.&lt;/p&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/risk-burndown/&quot;&gt;Risk Burndown&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on March 12, 2015.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Little's Law and KanBan]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/Littles-Law-and-KanBan/"/>
  <id>https://capgemini.github.io/agile/Littles-Law-and-KanBan</id>
  <published>2014-12-12T00:00:00+00:00</published>
  <updated>2014-12-12T00:00:00+00:00</updated>
  
  
  
  
  
  <author>
      <name>John Shaw</name>
      <uri>https://capgemini.github.io/alumni#author-john-shaw</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" /><category scheme="https://capgemini.github.io/tags/#Lean" term="Lean" /><category scheme="https://capgemini.github.io/tags/#Scrum" term="Scrum" /><category scheme="https://capgemini.github.io/tags/#Kanban" term="Kanban" />
  <content type="html">
    
    &lt;p&gt;This post delves into Little’s Law and how it relates to KanBan for software development. Understanding these concepts and their relationship will help agile practitioners improve the delivery pipeline, in particular by knowing what to measure and inspect. (Software engineers will also spot the parallels with scaling a solution: capacity, response latency and throughput.)&lt;/p&gt;

&lt;h3 id=&quot;littles-law&quot;&gt;Little’s Law&lt;/h3&gt;

&lt;p&gt;Little’s Law is often quoted in the context of KanBan. &lt;a href=&quot;http://en.wikipedia.org/wiki/Little&apos;s_law&quot;&gt;Little’s Law&lt;/a&gt; is a mathematical theory of probability in the context of queueing theory:&lt;/p&gt;
&lt;blockquote&gt;
  &lt;p&gt;L = λW.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;L = number in the system&lt;br /&gt;
λ = throughput&lt;br /&gt;
W = response time&lt;/p&gt;

&lt;p&gt;In practical terms this means:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;response time can be calculated from number in the system and throughput (W = L/λ)&lt;/li&gt;
  &lt;li&gt;number in the system can be calculated from throughput and response time (L = λW)&lt;/li&gt;
  &lt;li&gt;throughput can be calculated from number in the system and response time (λ = L/W)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;steady-state&quot;&gt;Steady State&lt;/h3&gt;

&lt;p&gt;The relationships described by Little’s Law only work in a steady state. Steady state is achieved when the arrival rate is the same as the departure rate on average over the long-term.&lt;/p&gt;

&lt;p&gt;This means that throughput, arrival rate and departure rate &lt;strong&gt;are the same metric&lt;/strong&gt;.&lt;/p&gt;

&lt;h3 id=&quot;wip&quot;&gt;WIP&lt;/h3&gt;

&lt;p&gt;Guides to KanBan discussing Little’s Law will introduce the concept of WIP (work in process or work in progress), or more to the point, &lt;strong&gt;WIP limits&lt;/strong&gt;. In order to maintain steady state, a WIP limit is defined before the bottleneck. This ensures the “system” (a particular step in the process) is protected from overload by limiting the arrival rate.&lt;/p&gt;

&lt;p&gt;If we take a commonly-used example - a supermarket store - the throughput is the same as number of customers entering the store and is the same as the number of customers leaving the store. Minor disruptions to this flow are okay as Little’s Law holds over the long-term.&lt;/p&gt;

&lt;p&gt;But what happens if too many customers enter the store? First, the number of customers in the store will increase. This will lead to a greater demand on the checkouts. More checkouts may need to be opened. Once the capacity of the checkouts is reached, the queues at the checkout will get longer. Eventually these queues will get long enough to fill the capacity of the store and block customers trying to enter the store. This may even block the exit to the store and so customers can no longer leave the store: chaos. Log jam. A broken system no longer in steady-state.&lt;/p&gt;

&lt;p&gt;In other words, the arrival rate exceeded the departure rate and the throughput couldn’t be maintained: Little’s Law no longer held.&lt;/p&gt;

&lt;p&gt;A WIP limit would have prevented the problem. A example WIP limit would be periodically closing the doors to restrict the number of customers entering the store.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2014-12-12-Littles-Law-and-KanBan/Littles-Law-Blog-Post-diagram-1.png&quot; alt=&quot;Graph showing Little&apos;s Law being obeyed&quot; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2014-12-12-Littles-Law-and-KanBan/Littles-Law-Blog-Post-diagram-2.png&quot; alt=&quot;Graph showing Little&apos;s Law at risk of breach&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;queue-time&quot;&gt;Queue Time&lt;/h3&gt;

&lt;p&gt;Of course closing the doors only prevents the problem of blocking the entrance. Ultimately this would have led to another problem: queues outside the store or, worse still, turning customers away.&lt;/p&gt;

&lt;p&gt;So what else could have been done? In the example the service rate was increased - more checkouts were opened - in an attempt to match the increased arrival rate. To enhance this option further even more checkouts could be installed. Perhaps the capacity of the store could be increased: building work to increase the size of the shop floor.&lt;/p&gt;

&lt;p&gt;Queues are a form of waste within Lean. This is because queues are considered a form of inventory - potential value sitting on the shelf. In the example, customers waiting at the checkout are finished shopping (the trolley contains the potential value), the value will only be realised when they have paid for the goods. And of course, nobody likes queueing!&lt;/p&gt;

&lt;p&gt;So a better approach might be to improve the efficiency of the checkouts - better training of staff or more efficient checkout systems.&lt;/p&gt;

&lt;h3 id=&quot;improvement&quot;&gt;Improvement&lt;/h3&gt;

&lt;p&gt;The mere presence of the WIP limit tells us there is a weakness in the system. Regularly hitting the WIP limit (or even breaching it) should tell us we have a problem that needs attention. Lean (or rather the &lt;a href=&quot;http://en.wikipedia.org/wiki/Toyota_Production_System&quot;&gt;Toyota Production System&lt;/a&gt;) might refer to this as an “Andon” - a warning lantern of some sort to indicate there is a problem.&lt;/p&gt;

&lt;p&gt;Conversely, never getting anywhere near the WIP limit might indicate our system is under-utilised, essentially another form of waste. To much resource has been allocated to the system to match the demand. Perhaps improvement work could be done to release this spare capacity and allocate it elsewhere.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2014-12-12-Littles-Law-and-KanBan/Littles-Law-Blog-Post-diagram-3.png&quot; alt=&quot;Graph showing Little&apos;s Law obeyed, seriously over capacity&quot; /&gt;&lt;/p&gt;

&lt;h3 id=&quot;bottlenecks-and-throughput&quot;&gt;Bottlenecks and Throughput&lt;/h3&gt;

&lt;p&gt;These constrained systems are often referred to as bottlenecks. However there is actually only &lt;strong&gt;one&lt;/strong&gt; bottleneck step in a steady process. The bottleneck step is the step that determines the overall throughput, that is the throughput of the overall process &lt;strong&gt;is equal to&lt;/strong&gt; the throughput of the bottleneck step - the step with the lowest throughput. This is because the upstream steps are feeding the bottleneck at a rate equal to or higher than it can handle; downstream steps are being fed at the rate of the bottleneck as so cannot achieve a higher throughput.&lt;/p&gt;

&lt;p&gt;Addressing any other step in the overall process will have &lt;strong&gt;absolutely no effect whatsoever&lt;/strong&gt; on the overall throughput. There is &lt;strong&gt;no point&lt;/strong&gt; increasing the efficiency of any step other than the bottleneck step in trying to increase throughput.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2014-12-12-Littles-Law-and-KanBan/Littles-Law-Blog-Post-diagram-4.png&quot; alt=&quot;Graphs showing the bottleneck step&quot; /&gt;&lt;/p&gt;

&lt;h2 id=&quot;kanban-and-software-development&quot;&gt;KanBan and Software Development&lt;/h2&gt;

&lt;p&gt;One of the challenges software development faces is that the process is rarely steady state: it is notoriously difficult to estimate accurately and it’s unpredictable when problems will occur. The arrival rate into the process is often very variable - feast or famine. Add to that pressures to deliver rapidly and competing priorities it’s easy to see why software delivery is an unpredictable art rather than a nice predictable science.&lt;/p&gt;

&lt;p&gt;So what can KanBan and Little’s Law offer to software development?&lt;/p&gt;

&lt;p&gt;Firstly, we need to know what our process actually &lt;em&gt;is&lt;/em&gt;. How often does the delivery pipeline get mapped out end to end? This is worth doing, even the steps outside our influence. Even if all this achieves is to visualise the process, this is a valuable in itself.&lt;/p&gt;

&lt;p&gt;Then we can start to analyse the steps. Collecting metrics will help us do this. Referring to Little’s Law, for each step we need to know any two of:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;L = number in the system&lt;/li&gt;
  &lt;li&gt;λ = throughput&lt;/li&gt;
  &lt;li&gt;W = response time&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…then the third can be calculated &lt;em&gt;assuming a steady state&lt;/em&gt;. (On that basis it may be worth tracking overall throughput to check how steady the overall process is.)&lt;/p&gt;

&lt;p&gt;High numbers in any of these for a particular step (compared to other steps in the process) will indicate a problem / potential bottleneck.&lt;/p&gt;

&lt;p&gt;Assigning WIP limits to steps will also tell us how often desirable throughput rate is breached. If a low-WIP is set then this can also tell us if the step is under-utilised.&lt;/p&gt;

&lt;p&gt;For over-utilised steps either make the step more efficient, assign more resource or increase the storage capacity &lt;em&gt;within&lt;/em&gt; the step.&lt;/p&gt;

&lt;p&gt;Since L is proportional to W, increasing the number in the system is a trade-off that will increase the response time. i.e. increase lead-time.&lt;/p&gt;

&lt;h3 id=&quot;achieving-steady-state&quot;&gt;Achieving Steady State&lt;/h3&gt;

&lt;p&gt;Given that the demand is fluctuating, estimates are inaccurate at best and problems can occur any time, it is difficult to maintain a steady state. There are two ways to achieve this:&lt;/p&gt;
&lt;ul&gt;
  &lt;li&gt;Reduce the demand to a throughput level that will never breach &lt;em&gt;any&lt;/em&gt; step in the process.&lt;/li&gt;
  &lt;li&gt;Increase the throughput level of &lt;em&gt;every&lt;/em&gt; step in the system to match the maximum demand.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first option gives the ultimate control. The process is streamlined, there is little waste in the system. The cost is that throughput is decreased.&lt;/p&gt;

&lt;p&gt;The second option gives the best performance. Any level of demand can be met. A good deal of redundancy has been introduced to the system to cope with a sharp increase in demand. The cost is that it may require a great deal of investment to achieve such a system and it may take a significant period of time to get there.&lt;/p&gt;

&lt;p&gt;Of course reality is somewhere between the two. Rarely can we afford ultimate performance, but rarely can we constrain the system to a low-level of serviceable demand. The economic version of this is turning customers away - rarely good business sense.&lt;/p&gt;

&lt;h3 id=&quot;flexible-system&quot;&gt;Flexible System&lt;/h3&gt;

&lt;p&gt;A blockage of some sort is usually a pinch point in software development (e.g. a defect or a failed build). Ideally people will “swarm” to the problem - but this depends on availability of people to be able to swarm. If the system is overloaded people are not available - thus it’s better to build in some spare capacity to free people up should such a situation arise.&lt;/p&gt;

&lt;p&gt;Out of software development, motorways are an example. When the system is running at full capacity, it only takes a minor disruption in flow to create a traffic jam. The incident may have been as simple as a driver changing lanes causing the car behind to apply the brakes. This causes other drivers to brake causing a disruption - chaos ensues. (See also &lt;a href=&quot;http://en.wikipedia.org/wiki/Traffic_wave&quot;&gt;traffic compression wave&lt;/a&gt;.)&lt;/p&gt;

&lt;p&gt;Traffic management has improved with the relatively recent use of variable speed limits. This works in two ways: a slower speed limit is introduced (effectively a WIP limit) but also the hard shoulder is opened up as another traffic lane (capacity is increased). I’m not sure how this is achieved technically - I presume there’s some traffic control centre monitoring traffic flow and throughput - but it will be down to some measure of this metric, plus number in the system and response time. Perhaps if the number of cars passing junction 4 is greater than the number of cars passing junction 5 this indicates a problem between junction 4 and 5? Response: activate variable speed limit traffic control.&lt;/p&gt;

&lt;p&gt;Closer to software development, elastic computing works in a similar way. Demand increases, more CPU is added. Demand decreases, CPU is taken away.&lt;/p&gt;

&lt;p&gt;Could this be achievable in software development? Detect (or predict) an increase in demand, so increase the available resource? Maybe, it will depend on the lead-time to react. If by resources we mean people then it often takes a while to get more people in, familiarise them and re-establish the team (forming, storming, norming, performing; see also &lt;a href=&quot;http://en.wikipedia.org/wiki/Brooks%27s_law&quot;&gt;Brooke’s Law&lt;/a&gt;). If by resources we mean computing power (e.g. for an automated pipeline) then elastic computing is desirable - so long as it has been designed for.&lt;/p&gt;

&lt;h3 id=&quot;measure-it&quot;&gt;Measure It!&lt;/h3&gt;

&lt;p&gt;Of course we cannot make any informed decisions if we don’t have the information. To get the information we need to measure things.&lt;/p&gt;

&lt;p&gt;Recommendation is to: start at a high level and map the process end to end; measure enough to find out where the hot-spots are, then delve deeper into those steps.&lt;/p&gt;

&lt;p&gt;Automated measurements are better than manual (rapid, repeatable, reliable). Automation is essential if used as an indication for immediate attention.&lt;/p&gt;

&lt;p&gt;A high-threshold mark will tell us when the demand on the system is too high. A low-threshold mark will tell us when the demand on the system is too low. Plotting these measures on a time-line would be very useful for analysis - perhaps as input to a retrospective.&lt;/p&gt;

&lt;p&gt;Simply providing the metrics may well be enough to grab attention.&lt;/p&gt;

&lt;h2 id=&quot;about-this-post&quot;&gt;About This Post&lt;/h2&gt;

&lt;p&gt;My motivation for creating this post was not to explain Little’s Law, rather to show how it relates to KanBan. I had struggled for some time relating the concepts as Little’s Law is all about steady state and software development is very rarely steady state. I had understood this related to WIP and WIP limits, but had not appreciated how.&lt;/p&gt;

&lt;p&gt;In this post I believe I’ve also introduced a new concept, that of the low-utilisation threshold. Tracking such indicators over time could be very useful for elimination of waste or re-deployment of resources.&lt;/p&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/Littles-Law-and-KanBan/&quot;&gt;Little's Law and KanBan&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on December 12, 2014.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Agile Analogies for Software Development]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/agile-analogies/"/>
  <id>https://capgemini.github.io/agile/agile-analogies</id>
  <published>2014-11-18T00:00:00+00:00</published>
  <updated>2014-11-18T00:00:00+00:00</updated>
  
  
  
  
  
  <author>
      <name>Sarah Saunders</name>
      <uri>https://capgemini.github.io/alumni#author-sarah-saunders</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" /><category scheme="https://capgemini.github.io/tags/#Methodology" term="Methodology" /><category scheme="https://capgemini.github.io/tags/#Analogy" term="Analogy" />
  <content type="html">
    
    &lt;p&gt;I’ve recently been working in a training role, with people who have never been exposed to the software engineering lifecycle before. I was drawn to considering analogies to try and explain to them what we were trying to do. It occurred to me that a bad analogy can be as destructive as a good analogy can be helpful, and with software engineering a lot of the analogies that immediately spring to mind are not necessarily conducive to understanding how a software development project should work.&lt;/p&gt;

&lt;p&gt;Other engineering disciplines (mechanical engineering, building construction) often require a waterfall construction method - it’s rare to be able to deliver subcomponents before the whole build is complete. You can’t address the riskiest area of a tower block construction project first if the riskiest area happens to be the roof or the windows. Change is harder and more costly - if you want to move a door, or (heaven forbid) the whole building, you’re looking at huge deconstruction/replan/reconstruction costs. The design documents are not fluid. When would you ever start construction without a detailed, low level plan covering the position of every door and window? It’s just not done.&lt;/p&gt;

&lt;p&gt;So, if not the other engineering disciplines, where do we look for a suitable analogy? How about the world of television and film production? Even the end product itself fits better to this analogy. Yes you have a finished product, but it’s ethereal. It can be expanded upon, there can be another “series”, it can be cloned or reworked for different scenarios.
Let’s consider the methodology now.&lt;/p&gt;

&lt;p&gt;How would the analogy of creating a TV series fit with an agile way of working? Well, you can focus on risk first. Get those scenes with the old bloke / pregnant woman under wraps! You can build a disposable prototype and trial it on a user group; then you can adapt your requirements based on their feedback. You can work iteratively and deliver production-ready output in each iteration; you can go live with a subset of the total (think, for example, of a pilot episode from a series which airs before the entire series has been made). As for documentation, a TV script is a fluid document. We don’t &lt;em&gt;write&lt;/em&gt; that we are &lt;em&gt;writing&lt;/em&gt; the script, we just &lt;em&gt;write&lt;/em&gt; it. You can think of code, or the Software Architecture document, in this way. I think that the analogy of the product owner as the director can also assist in explaining to a non-techy client what will be expected of them in this role. It’s not project management, it’s not technical details (the director doesn’t need to know about lighting rigs).&lt;/p&gt;

&lt;p&gt;In my opinion, this explanation would put naive or new-to-software clients in just the right frame of mind to begin an agile project. Do we have a timeline? Well, yes, we know when we’re wanting to go live but we don’t yet know for certain how many “scenes” (think how many user stories) we are going to be able to build by then. Do we have a requirements document? We have our overall outline; we will drill into the detail of each one during its iteration. That way, we can easily incorporate a little change as we understand our product better. Let’s go!&lt;/p&gt;

&lt;p&gt;There are certainly a few places where the analogy breaks down. A television programme is seldom interactive or reactive, yet a computer system will be. And a computer system doesn’t often have the requirement for historical consistency - if you kill off a character in a TV series it’s tough to bring them back in later, whereas with programs the whole thing is disposable and can be replaced with version 2.0. But let’s not get carried away with the details, that’s not the point of this exercise.&lt;/p&gt;

&lt;p&gt;In summary, if you have a new client who is struggling with the concepts of agile software development, give this analogy a spin and see if it helps with clarity and understanding.&lt;/p&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/agile-analogies/&quot;&gt;Agile Analogies for Software Development&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on November 18, 2014.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Agile and Lean]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/agile-v-lean/"/>
  <id>https://capgemini.github.io/agile/agile-v-lean</id>
  <published>2014-10-22T00:00:00+01:00</published>
  <updated>2014-10-22T00:00:00+01:00</updated>
  
  
  
  
  
  <author>
      <name>John Shaw</name>
      <uri>https://capgemini.github.io/alumni#author-john-shaw</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" /><category scheme="https://capgemini.github.io/tags/#Lean" term="Lean" /><category scheme="https://capgemini.github.io/tags/#Scrum" term="Scrum" /><category scheme="https://capgemini.github.io/tags/#Kanban" term="Kanban" />
  <content type="html">
    
    &lt;p&gt;&lt;strong&gt;Or should that be Scrum and Kanban?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I was in a short conversation a few days ago around whether we, in the business of software development, want to raise the profile of Lean. Perhaps even create some formal training materials.&lt;/p&gt;

&lt;p&gt;The message I was getting was that Agile doesn’t need Lean. This is because Agile practices are built on Lean - especially Scrum!&lt;/p&gt;

&lt;p&gt;This is true. Scrum especially is not really a software engineering practice at all. It’s an approach to organising people to deliver something that initially is not very well defined.&lt;/p&gt;

&lt;p&gt;I think the fear is that Lean is a process improvement technique for processes that are already reasonably steady state. Software development is NOT steady state. It is unstable all through the lifecycle, especially during the beginning when there are many risks, possibly many unmitigated risks. Lean doesn’t really address risks. Lean is focussed on improvement of an established process.&lt;/p&gt;

&lt;h3 id=&quot;what-does-lean-bring&quot;&gt;What Does Lean Bring?&lt;/h3&gt;

&lt;p&gt;Having reflected on the conversation, this view misses the point somewhat. Often the barriers we face are not in the software development portion of the delivery: rather gathering timely requirements, planning &amp;amp; estimation, testing/QA and cut-over present the challenges. Often these are not addressed as they’re not in our immediate field of view, snowball and present even bigger challenges.&lt;/p&gt;

&lt;p&gt;Lean can help here. Lean can map this “process” end to end. It can then help establish metrics to demonstrate where the problems lie.&lt;/p&gt;

&lt;p&gt;Lean can also help by bringing a meeting structure to all levels and promote the idea of &lt;a href=&quot;https://greenleaf.org/what-is-servant-leadership/&quot;&gt;servant leadership&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;A conflict, or perhaps even a paradox, is that the customer is often the supplier too! Maybe we need to redefine this: the customer must set clear parameters for performance (the goal), then the project need to convert these into requirements themselves by consulting the stakeholders on the changes that will bring about positive impacts.&lt;/p&gt;

&lt;p&gt;For example, an analysis I performed a while ago on a series of project releases is shown in the charts in the image.&lt;/p&gt;

&lt;p&gt;&lt;img src=&quot;/images/2014-10-22-agile-v-lean/CFD.png&quot; alt=&quot;Example of a Cumulative Flow Diagram&quot; /&gt;&lt;/p&gt;

&lt;p&gt;The top image is a &lt;a href=&quot;http://www.slideshare.net/yyeret/explaining-cumulative-flow-diagrams-cfd&quot;&gt;Cumulative Flow Diagram&lt;/a&gt; (CFD) for a number of releases into production of a product. Each band shows the user stories that were queued or in in-progress at that time. The large steps are where the process was outside of the project team’s direct control. The thinner red stripe was where the team were working in an incremental way to develop and test the software within sprints. The green band after the red stripe shows the software “sitting on the shelf” for the next phase.&lt;/p&gt;

&lt;p&gt;Retrospectives would centre on the “red stripe”. Blockers, knowledge transfer, skills, planning, estimates, etc, etc.&lt;/p&gt;

&lt;h3 id=&quot;wider-improvement&quot;&gt;Wider Improvement&lt;/h3&gt;

&lt;p&gt;Perhaps we should have been looking at the larger steps.&lt;/p&gt;

&lt;p&gt;At the time there was some thinking around improving the process. The driver was the desire for automated testing, but I had a look a little wider. I speculated what the same delivery might have looked like by addressing the larger steps, resulting in the second chart shown.&lt;/p&gt;

&lt;p&gt;There is a clear difference. Immediately there is a noticeable change in the amount of “green” on the chart. This is because the software is not sat on the shelf for so long: it is “released” quicker!&lt;/p&gt;

&lt;p&gt;Because the releases are more frequent, less goes into them. This reduces the demand in requirements coming through. Instead of having to define a good proportion of the stories for a large release up front, the number of stories needed is much lower and therefore with a lower lead-time. This is reflected in the thinning of the first dark blue band.&lt;/p&gt;

&lt;p&gt;The example demonstrates the potential for using Lean tools, KanBan and CFD, to inspect and analyse the pipeline. Embracing Lean further may well reveal further opportunities for improvement.&lt;/p&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/agile-v-lean/&quot;&gt;Agile and Lean&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on October 22, 2014.&lt;/p&gt;</content>
</entry>

    <entry>
  <title type="html"><![CDATA[Answering: How long will it take?]]></title>
  <link rel="alternate" type="text/html" href="https://capgemini.github.io/agile/estimation/"/>
  <id>https://capgemini.github.io/agile/estimation</id>
  <published>2014-10-06T00:00:00+01:00</published>
  <updated>2014-10-06T00:00:00+01:00</updated>
  
  
  
  
  
  <author>
      <name>Tom Phethean</name>
      <uri>https://capgemini.github.io/authors#author-tom-phethean</uri>
    </author>
  
  <category scheme="https://capgemini.github.io/tags/#Development" term="Development" /><category scheme="https://capgemini.github.io/tags/#Agile" term="Agile" /><category scheme="https://capgemini.github.io/tags/#Estimation" term="Estimation" />
  <content type="html">
    
    &lt;blockquote&gt;
  &lt;p&gt;“How long will it take to build my [thing]?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A seemingly simple question that can strike fear into the heart of many developers,
estimation is both essential and thankless at the same time. As a developer, you might
feel you can never win - always asked to do things quicker - whilst a project manager
usually wonders why developers estimates are inaccurate. In this post I hope to share
some techniques that have helped me along the way, and might help reduce the pressure 
on justifying your estimates!&lt;/p&gt;

&lt;h4 id=&quot;its-only-an-estimate&quot;&gt;It’s only an estimate&lt;/h4&gt;

&lt;p&gt;The first thing to remember, is that an estimate is:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“an approximate calculation or judgement of the value, number, quantity, or extent of something…
Synonyms: approximation, evaluation, &lt;strong&gt;guess&lt;/strong&gt;”
&lt;a href=&quot;http://www.oxforddictionaries.com/definition/english/estimate&quot;&gt;The Oxford Dictionary&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;So, estimate equals guess. Done properly, it should be at lease be an educated guess but your estimate
is always going to be
flawed in some way, something will change, be discovered, or interfere and mean you’re not going to
be 100% correct. In fact, we can go further and say: you’ll almost always be wrong.&lt;/p&gt;

&lt;p&gt;Getting it wrong doesn’t matter, it’s part of the learning process and feeds back into making future
estimates better.&lt;/p&gt;

&lt;p&gt;Simply take note of why your estimate was wrong, and make sure that the next time you are coming up with
an estimate you consider whether the factors that de-railed your previous ones will apply in your new scenario.
The aim should to be “less wrong” next time.&lt;/p&gt;

&lt;!-- break --&gt;

&lt;h4 id=&quot;never-answer-right-away&quot;&gt;Never answer right away&lt;/h4&gt;

&lt;p&gt;How many times have you been asked how long something would take, maybe
in your daily stand-up, and quickly responded “by the end of the day” or “end of the week”,
without really thinking the estimate through? Sometimes you might get lucky and things pan out ok,
but many times these instinctive estimates don’t think through the problem properly and
often take longer than first given.&lt;/p&gt;

&lt;p&gt;Now that’s fine, it was only an estimate after all, but you’ve set an expectation and in all likelihood
you’re going to end up working extra hours to make it happen to avoid disappointing someone.&lt;/p&gt;

&lt;p&gt;The best tip I ever read, came from reading &lt;a href=&quot;http://pragprog.com/the-pragmatic-programmer&quot;&gt;The Pragmatic Programmer&lt;/a&gt;,
and went something like:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;“You almost always get better results if you slow the process down… Estimates given at the coffee
machine will come back to haunt you.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Step away from the discussion, ask for time to analyse the problem, even if its half an hour to organise your thoughts,
before giving an estimate and ensuring it’s an answer you believe in.&lt;/p&gt;

&lt;h4 id=&quot;break-down-the-task&quot;&gt;Break down the task&lt;/h4&gt;

&lt;p&gt;For small tasks, arriving at an estimate can be pretty straightforward, but usually we’re not being asked for small
task estimates. People want to know how long adding a new feature, or building a new website, will take. The trouble with
this is that seemingly simple high level tasks can hide a multitude of traps that could inflate (or deflate) your estimate.&lt;/p&gt;

&lt;p&gt;When faced with problems like this, the only way we can process enough information to give anything like an accurate
estimate is by breaking the task down into as many constituent sub-tasks as necessary until each sub-task can easily be
envisaged and estimated.&lt;/p&gt;

&lt;p&gt;Break down the feature into components you’re comfortable estimating. As a hint, if the estimate for any one sub-task
is longer than 3 or 4 days, you probably need to break it down further. But having said that, don’t make any task smaller than
half a day in your estimates - even that trivial one line code change will need regression testing, unit tests tweaking,
functional tests updating, and code review performing, so it’s never “just a 10 minute change”.&lt;/p&gt;

&lt;p&gt;One word of warning though - you’re not trying to do a detailed design here, just trying to get tasks or stories at a
level granular enough for you to know roughly what you’re going to need to do.&lt;/p&gt;

&lt;h4 id=&quot;list-your-assumptions&quot;&gt;List your assumptions&lt;/h4&gt;

&lt;p&gt;Every estimate is based on some assumptions you’ve made, so make sure you share these when presenting your
estimate back to whoever asked for it. If you think there are no assumptions, then have a look through the list
below and see if any would apply:&lt;/p&gt;

&lt;p&gt;My estimate is accurate as long as …&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;…I get uninterrupted time to focus on it&lt;/li&gt;
  &lt;li&gt;…the environments are configured correctly&lt;/li&gt;
  &lt;li&gt;…I can re-use component X that we built last time, without significant refactoring&lt;/li&gt;
  &lt;li&gt;…the interface specification is accurate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, make sure you define “done”. Will done mean that you’ve committed the code and run some tests locally, or that
you’ll have followed the change through various environments and its ready to be pushed into the next Production release?
Regardless of how you define “done”, this is one of your key assumptions, so make sure you and the person you’re
giving the estimate to have the same definition of done and therefore share the assumptions.&lt;/p&gt;

&lt;h4 id=&quot;add-inflation&quot;&gt;Add inflation&lt;/h4&gt;

&lt;p&gt;We’ve covered this a little bit when saying not to estimate any sub-task at less than half a day, in order to factor in
all the things we forget about when estimating. However, even when you add up all your sub-tasks (or put them into groups for
adding up) we should pad our larger estimates to reflect the inherent uncertainty in the longer term estimate.&lt;/p&gt;

&lt;p&gt;For example, if your estimate is around 3-4 days, call it a week. If it’s 3 weeks, then its a month, and so on. Using
larger values of time helps set expectations with your stakeholders and also lets you have contingency for the
inevitable unforseen delays that will arise. The longer the road, the more likely you’ll find a pot-hole.&lt;/p&gt;

&lt;p&gt;The other way to approach uncertainty in your estimates is to provide a timescale range rather than a fixed number,
with the size of the range depending on your confidence. For example, if you’re very confident you could answer “6-8 days”
but if you’re not certain of your estimate you could say “20-30 days”.&lt;/p&gt;

&lt;h4 id=&quot;offer-to-re-estimate&quot;&gt;Offer to re-estimate&lt;/h4&gt;

&lt;p&gt;Often the estimates we give, even when following the guidance above, will be padded out to reflect our uncertainty and
unknown complexities. There might be new technologies or approaches, uncertainty over the level work that will be required
 to meet a performance target, or anything else that you have little experience in on which to base your estimate.&lt;/p&gt;

&lt;p&gt;In these cases, and to reflect the uncertainty, you could offer to re-estimate your tasks once you’ve completed a portion
of the work. This could be at the end of a first iteration, or initial exploratory phase, during which you’re likely (again,
if following good agile practices) to have started to tackle the things which had the highest risk, uncertainty or potential complexity.&lt;/p&gt;

&lt;p&gt;Taking this approach allows you to give an estimate, and then use new found experience to re-baseline after a short period
in order to adjust your estimates (up or down!) based on what you’ve learnt. It also demonstrates to a project manager
that you are mindful of trying to reign in estimates to as much accuracy as possible, but also gives an opportunity to
flag areas which turn out more complex that first thought.&lt;/p&gt;

&lt;p&gt;Even better would be regular backlog grooming of as much of the backlog as is practical, re-visiting estimates and updating
them as you progress through your project and factor in lessons learnt as you go along.&lt;/p&gt;

&lt;h4 id=&quot;look-back&quot;&gt;Look back&lt;/h4&gt;

&lt;p&gt;The number one criticisms of developer estimation is that we never learn from our bad estimates,
and so never improve our accuracy. In many ways, this is a false accusation because as we’ve
seen no estimate is created equal and the things that trip us up this time might not arise in future tasks,
however there is definite value in looking back and comparing your estimate with your actual,
making note of the reasons you either missed or achieved your estimate.&lt;/p&gt;

&lt;p&gt;If nothing else, this kind of retrospective helps you identify some more assumptions that you made without
realising, and will give you a useful tool for future tasks.&lt;/p&gt;

&lt;h4 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h4&gt;

&lt;p&gt;Estimates are unfortunately a necessary part of being a developer, and being able to give confident, accurate
estimates breeds confidence from the rest of your project team.&lt;/p&gt;

&lt;p&gt;If at all possible, never estimate alone - make it part of a team activity. If you’re following good agile
practices then you should be doing team planning at the start of each iteration. This can be a great opportunity to
try out the principles in this post, and learn from the things other people in your team consider for their
estimates.&lt;/p&gt;

&lt;p&gt;I hope these suggestions are useful, if you’ve got more tips to share please post in the comments.&lt;/p&gt;

&lt;h5 id=&quot;further-reading&quot;&gt;Further reading&lt;/h5&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;http://pragprog.com/the-pragmatic-programmer&quot;&gt;The Pragmatic Programmer&lt;/a&gt; by Andrew Hunt and David Thomas - particularly Chapter 13: Estimating.&lt;/li&gt;
&lt;/ul&gt;

    
    &lt;p&gt;&lt;a href=&quot;https://capgemini.github.io/agile/estimation/&quot;&gt;Answering: How long will it take?&lt;/a&gt; was originally published by Capgemini at &lt;a href=&quot;https://capgemini.github.io&quot;&gt;Capgemini Software Engineering&lt;/a&gt; on October 06, 2014.&lt;/p&gt;</content>
</entry>

</feed>
