tag:blogger.com,1999:blog-11261517674026183642024-03-05T21:36:19.321-08:00Alexis Hui - Improving Software Delivery and IT Organizational MaturityA blog based on my experiences and thoughts on helping software delivery organizations change from good to great by pragmatically applying agile, lean and other modern day approaches.Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.comBlogger18125tag:blogger.com,1999:blog-1126151767402618364.post-78214710107850013832015-03-08T10:03:00.000-07:002015-03-08T10:03:55.479-07:00Agile@Scale, 1000+ ppl, Global FSI, 50 TeamsIt's been awhile since I blogged, wanted to share a talk a colleague (Raj Mudhar) and myself gave on a case study of making agile@scale work for a global financial services organization across 50 agile teams. Hope this is interesting for folks and the community.<br />
<br />
<a href="http://www.infoq.com/presentations/large-scale-agile-50-teams">http://www.infoq.com/presentations/large-scale-agile-50-teams</a>Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com2tag:blogger.com,1999:blog-1126151767402618364.post-11760652636288675982012-07-30T23:14:00.001-07:002012-07-30T23:15:27.515-07:00Throughput Planning - Why Project Managers Should Like Lean and Agile<br />
Project managers in IT have a tough job. I've been there myself, and I have also coached a large number of project managers (PM) throughout my travels consulting for a number of organizations around the world. One of the biggest challenges a PM faces is managing the iron triangle of time, cost and scope while wrestling with never ending waves of change and uncertainty as they sheppard the team and project to completion. The typical tool most PMs have been trained on is the work break down structure (WBS) and being schooled by institutions such as PMI, that the best way to manage change and gain predictability is to track at the task and resource level. Unfortunately this approach tends to fail as project complexity increases and most experienced PMs that have the battle scars of large complex projects learn quickly that detailed planning and tracking doesn't help manage change or gain predictability. Trying to keep up with a large rapidly changing project is like playing Tetris on level 20, good luck.<br />
<div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-1WJ7IKN-ga2ZYOwWinvqzpAgeDFut3bbrRiwWy6RL689v-9mInuoR9quEKnURzXx8eMNnT4Yz0DvQxEiJ2RTVh9RH12BEpbOXx1lvSuQ1yFTostwJVlkHhLObxpaeFC2S01JnFPgIuk/s1600/563804851_a4e070fd62.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" height="240" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh-1WJ7IKN-ga2ZYOwWinvqzpAgeDFut3bbrRiwWy6RL689v-9mInuoR9quEKnURzXx8eMNnT4Yz0DvQxEiJ2RTVh9RH12BEpbOXx1lvSuQ1yFTostwJVlkHhLObxpaeFC2S01JnFPgIuk/s320/563804851_a4e070fd62.jpg" width="320" /></a></td></tr>
<tr><td class="tr-caption" style="font-size: 13px;">Game Over - Trying to keep up with a complex project plan</td></tr>
</tbody></table>
<br />
At this stage of their career, the tendency is to move from detailed task and resource tracking to focus on milestones and deliverables tracking to reduce the detailed planning that doesn't justify the cost vs value of keeping it up to date. While this lighter weight approach is better as it frees up the PMs time from updating project plans and chasing people for status and allows them to spend more time on managing the client, leading the team and resolving issues, it has also has flaws. At some point in the large hairy project, the client or someone else will launch a large number of changes at the project. Change is inevitable in projects for knowledge work. During this time, the PM is struggling to answer the questions of "what is the impact of these changes?", "will we be on time?", and "what can we do to get on track again?". Tracking milestones and deliverables fails miserably at answering those questions. The PM desperate for answers and in need to "show progress" tends to fall back to detailed plan in an attempt to resume control forgetting why they avoided doing this in the first place. It's a vicious cycle and leaves the project at risk.<br />
<br /></div>
<div>
<h3>
Lean and Agile to the Rescue</h3>
<div>
<br /></div>
Lean and agile methods provide an incredibly easy to use technique that provides the visibility into progress without the overhead of managing the details. It's called "Throughput Planning" or "Velocity Planning" depending on what agile circle your part of (Kanban or Scrum). In Throughput Planning, all the PM has to do is make sure that the project is decomposed into a set of business valued increments (features, user stories, agile use cases, etc.) that can be worked on fairly independently of each other, are similar in size and provide business or end user functionality. To simplify this example, I'll call them features. Once the PM has the features, the last piece of information they need is the expected average monthly throughput the team can commit to. Once you have those two pieces of information, number of features and expected throughput you can then forecast the end date with some simple math. 20 features, 5 features / month means you will be done in approximately 4 months.<br />
<br /></div>
<div>
<h3>
Benefits of Throughput Planning</h3>
<div>
<br /></div>
With this tracking system, you have an accurate measure progress that doesn't lie easily. 5 features done in this scenario represents ~25% completion rate for the project and is a much more accurate measure of progress than tracking at the task level. It also provides an easy way to assess impact of changes to the timeline. If we add 10 new features we know this pushes the timeline back 2 months. If we want to bring the timeline back on track, the question is now what can we do to increase throughput over 4 months by 10 features (~2.5 features/month)? If we want to know if we are falling behind simply look at how many features have been completed. The final benefit of this approach is it also forces the team to deliver completed work often to prove progress, every month the team should deliver 5 features. Want to de-risk your project? Nothing reduces risk like seeing incremental returns rather than waiting for the big bang return at the end.</div>
<div>
<br /></div>
<div>
If your a project manager that is struggling to manage the chaos and complexity in your projects, I encourage you to take a look at Throughput Planning and look at how to make your project more lean and agile. It reduces your workload in tracking, simplifies impact assessments, and reduces risk.</div>Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com2tag:blogger.com,1999:blog-1126151767402618364.post-53414560790993938032012-02-23T16:31:00.001-08:002012-02-23T16:31:09.682-08:00Lean Thinking Tools for Improving Your Portfolio Planning and Prioritization ProcessWe just started an IT Transformation for a new client that is looking to fundamentally change the way they deliver IT services and application development. As part of the transformation we are helping the organization improve their portfolio planning and prioritization process to provide greater transparency, flexibility and control (yes control and agile does go together). Whenever we work with clients in this area, the first step we take is help them break down their old mental model of portfolio management and take a fresh perspective. To do this we introduce<b> four thinking tools</b> to help them wrap their heads around the new concepts. The goal of the four thinking tools is to help organizations look at planning and prioritization as an economic bargaining system.<br />
<div><br />
</div><div><b>Thinking Tool 1:</b> <span style="font-family: Arial; font-weight: bold;">Three level planning approach controlled by cadences</span></div><div><span style="font-family: Arial; font-weight: bold;"><br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJBOJ6JXSWc_cQy5-NnUIRzoBxVjG9vEpw3515us-s0PRKykdpZbyQyo8AkmcZTtZv7vkGg7KlTeX_z9IhDwmuFYB8eEyEn-o7YOSqLSKdvt7V10DXwdNFaXIOTLQr4JHYDHNK1tDohOw/s1600/Three+level+planning.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="232" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjJBOJ6JXSWc_cQy5-NnUIRzoBxVjG9vEpw3515us-s0PRKykdpZbyQyo8AkmcZTtZv7vkGg7KlTeX_z9IhDwmuFYB8eEyEn-o7YOSqLSKdvt7V10DXwdNFaXIOTLQr4JHYDHNK1tDohOw/s320/Three+level+planning.png" width="320" /></a></div><div><br />
</div><div>The first tool is to stop looking at portfolio planning and prioritization as a one time annual budgeting process and instead move towards a frequent multi-level planning system for portfolio management. Each level of planning should have well-defined <b>units of work, cadence, and a form of currency</b> (more on that later). The specific goals of each level are:</div><div><br />
</div><div>Strategic Planning:</div><div><div style="direction: ltr; line-height: 16px; margin-bottom: 0pt; margin-top: 7.2pt; text-align: left; unicode-bidi: embed; vertical-align: baseline;"><ul><li><span style="font-family: Times, 'Times New Roman', serif;">Identify ideas to realize strategic business objectives</span></li>
<li><span style="font-family: Times, 'Times New Roman', serif;">Set allocation based on LOB / Program / Work Type</span></li>
<li><span style="font-family: Times, 'Times New Roman', serif;">Longer Cadence, example quarterly</span></li>
</ul><div><span style="font-family: Times, 'Times New Roman', serif;">Project Planning: </span></div><div><div style="direction: ltr; margin-bottom: 0pt; margin-top: 7.2pt; unicode-bidi: embed; vertical-align: baseline;"><ul><li><span style="font-size: 12pt;"><span style="font-family: Times, 'Times New Roman', serif;">Idea analysis and project planning</span></span></li>
<li><span style="font-size: 12pt;"><span style="font-family: Times, 'Times New Roman', serif;">Define projects in terms of business valued features based on a high-level solution</span></span></li>
<li><span style="font-size: 12pt;"><span style="font-family: Times, 'Times New Roman', serif;">Medium Cadence, example monthly</span></span></li>
</ul><div><span style="font-family: Times, 'Times New Roman', serif;">Operational Planning:</span></div><div><div style="direction: ltr; margin-bottom: 0pt; margin-top: 7.2pt; unicode-bidi: embed; vertical-align: baseline;"><ul><li><span style="font-size: 12pt;"><span style="font-family: Times, 'Times New Roman', serif;">Project work intake with frequent work replenishment for solution delivery</span></span></li>
<li><span style="font-size: 12pt;"><span style="font-family: Times, 'Times New Roman', serif;">Dedicated intake channel for emergencies, small enhancements and bug fixes</span></span></li>
<li><span style="font-size: 12pt;"><span style="font-family: Times, 'Times New Roman', serif;">Short Cadence, example bi-weekly</span></span></li>
</ul><div><b style="line-height: normal; text-align: -webkit-auto;">Thinking Tool 2:</b><span style="line-height: normal; text-align: -webkit-auto;"> </span><span style="font-family: Arial; font-weight: bold;">Breaking projects into minimal releases and business valued features</span></div><div><span style="font-family: Arial; font-weight: bold;"><br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0Dx6T5lkuN0ozFvSAwQBAYBcm83uQdWX6Epud0QntMpoymDt8vv7w0vv38cTUsz5rwQyYB2O6aU8kG8wtzPLN562x6ytLmYCKhLt2s03OodjdkRzpBsv7IgSq2TPEHOZ0arGEFbSKylY/s1600/MRF+Decomp.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="372" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg0Dx6T5lkuN0ozFvSAwQBAYBcm83uQdWX6Epud0QntMpoymDt8vv7w0vv38cTUsz5rwQyYB2O6aU8kG8wtzPLN562x6ytLmYCKhLt2s03OodjdkRzpBsv7IgSq2TPEHOZ0arGEFbSKylY/s640/MRF+Decomp.png" width="640" /></a></div><div><span style="font-family: Arial; font-weight: bold;"><br />
</span></div><div><span style="font-family: Times, 'Times New Roman', serif;">Based on Thinking Tool 1, if the organization is able to establish more frequent strategic planning cycles (e.g. quarterly) than this encourages projects to be broken down into smaller chunks that can fit into those cycles. This allows IT to work more frequently with the business to understand what the high value features are and get to quick wins faster. At the same time this also provides greater transparency of progress into budget spent vs budget realized in terms of real value (i.e. a potentially shippable system).</span></div><div><span style="font-family: Times, 'Times New Roman', serif;"><br />
</span></div><div><b style="line-height: normal; text-align: -webkit-auto;">Thinking Tool 3:</b><span style="line-height: normal; text-align: -webkit-auto;"> </span><span style="font-family: Arial; font-weight: bold;">Planning informed by capacity in terms of throughput to level demand</span></div><div><span style="font-family: Arial; font-weight: bold;"><br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeH7FwT3cZNpf_RHJAqi8N6Xf8XoQLvqSFRVgw-g-7YdJDipm_usT0VZ2MDOl_b6dvtNqhtmQ7y4i2LBhATYYH5YSGsw5cDWUSU7HnmWmocjDqzTzm778yOeMrOk54sYmt0fWhp-On2qU/s1600/throughput+based+planning.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="425" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeH7FwT3cZNpf_RHJAqi8N6Xf8XoQLvqSFRVgw-g-7YdJDipm_usT0VZ2MDOl_b6dvtNqhtmQ7y4i2LBhATYYH5YSGsw5cDWUSU7HnmWmocjDqzTzm778yOeMrOk54sYmt0fWhp-On2qU/s640/throughput+based+planning.png" width="640" /></a></div><div><span style="font-family: Times, 'Times New Roman', serif;">One of the challenges with traditional planning approaches is that capacity is not used to inform the planning process. To build an effective planning and prioritization process the organization needs to understand capacity in terms of throughput (how much value can I deliver within x amount of time) and level demand based on available capacity. What we often see broken with traditional processes is budget being the only input into the planning process and that is typically not the "bottleneck" or scare resource in the organization. Money is abundant, time is not which leads to the end of year madness many organizations fire fight their way through.</span></div><div><span style="font-family: Times, 'Times New Roman', serif;"><br />
</span></div><div><b style="line-height: normal; text-align: -webkit-auto;">Thinking Tool 4:</b><span style="line-height: normal; text-align: -webkit-auto;"> </span><span style="font-family: Arial; font-weight: bold;">Establishing currency to represent scarce resources provides a mechanism to facilitate exchange of value to promote liquidity and flexibility</span></div><div><span style="font-family: Arial; font-weight: bold;"><br />
</span></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw52Y6VAVOqMtCzWkQHf2fHfw9a69lPc1ueUmSPGrxfZYagq5O5ElCFaehwU_4xugIkwoDzgiX94mwcCrxrffg2LNLAhB5gIV0QQpxCHRo0tG3mmYr-6gDoYUJtygWHdRf470XA3-__1E/s1600/currency+and+throughput.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="420" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiw52Y6VAVOqMtCzWkQHf2fHfw9a69lPc1ueUmSPGrxfZYagq5O5ElCFaehwU_4xugIkwoDzgiX94mwcCrxrffg2LNLAhB5gIV0QQpxCHRo0tG3mmYr-6gDoYUJtygWHdRf470XA3-__1E/s640/currency+and+throughput.png" width="640" /></a></div><div><span style="font-family: Times, 'Times New Roman', serif;">The final piece to the puzzle is establishing a common unit of currency based on scarcity. Instead of throwing money at the problem, the organization starts looking at their delivery capabilities as system of work that has real constraints (i.e. time). The unit of currency we alluded to earlier in Thinking Tool 3, is throughput which represents work/value in terms of time. The currency is then limited based on scarcity which is represented as work-in-progress (WIP) limit that controls the backlog and queues that work fits into.</span></div><div><span style="font-family: Times, 'Times New Roman', serif;"><br />
</span></div><div><span style="font-family: Times, 'Times New Roman', serif;">By understanding these four thinking tools they provide an organization with the foundations for establishing a fast feedback portfolio system managed by multi-level planning with cadences, defining projects into smaller increments of value, balancing demand based on throughput, and planning and prioritizing based on a common unit of currency that represents scarcity.</span></div><div><span style="font-family: Times, 'Times New Roman', serif;"><br />
</span></div><div><span style="font-family: Times, 'Times New Roman', serif;">In a later post, I'll share a set of planning and prioritization patterns we use to implement these concepts.</span></div></div></div></div></div></div></div>Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com0tag:blogger.com,1999:blog-1126151767402618364.post-57410011570016254212012-01-26T19:40:00.001-08:002012-01-26T19:40:56.400-08:00Adopting Retrospectives? Start by learning to learnRetrospectives is a great practice that is widely adopted by agile teams. I've worked with a large number of teams across different organizations and one of the first lessons you learn after you coached a number of teams is that while improving team performance to deliver faster and better is important, what's even more important is the team<b> learning to learn</b>. Continuous improvement is a big commitment, and not easy to do especially for knowledge work. That's why I tend to take a different approach for teams new to retrospectives and instead of setting improvement as the goal for them, I focus them into learning how to discuss problems in a <b>structured </b>way and coming up with <b>simple </b>tactical fixes that can be implemented <b>fast. </b><br />
<div><br />
</div><div><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV0GXQ0R4T7sdgSpG6C09VRWdvlkGp0myBBWcBfSSk9qwyI0-PUOEJSOLYZuf0MDkFH5dytE_VwiAhphDKlopiceY5Yc6NfO177N5-C9ctpQ5pFFx0-t3DcaF84XUjIszHH20bQgkdJvA/s1600/Picture1.png" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" height="226" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjV0GXQ0R4T7sdgSpG6C09VRWdvlkGp0myBBWcBfSSk9qwyI0-PUOEJSOLYZuf0MDkFH5dytE_VwiAhphDKlopiceY5Yc6NfO177N5-C9ctpQ5pFFx0-t3DcaF84XUjIszHH20bQgkdJvA/s320/Picture1.png" width="320" /></a><b>Structured </b>- many teams struggle to discuss problems effectively, the first goal is to find a simple framework to structure the problem discussion. A simple one I use often is setting a simple matrix on a big whiteboard, the top row I place the discussion topics, divide them with vertical lines and then divide the verticals horizontally into 4 buckets, challenges, causes ("why"), easy fix, harder fix. This is a simplified 5 whys approach to root case analysis. I then get the team to brainstorm and start mapping stickies into these buckets. This provides a simple structure to the conversation.</div><div><br />
</div><div><b>Simple and Fast - </b>Once the team identifies a number of improvements or fixes they believe can improve their problems, I encourage them to start by selecting the simple ones. Within their span of control, limited analysis needed, and easy to implement. Finally, the fixes should be fast to do, 1-2 days max in effort and duration.</div><div><br />
</div><div>It's not initially important whether the fixes actually provide sustainable improvement or not. That will come with time once the team learns how to learn by tackling smaller changes often. This approach allows them to move at their own pace, is sustainable and will likely provide a positive reinforcement as they can finish what they started. Stop starting and start finishing also applies to continuous improvement.</div>Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com0tag:blogger.com,1999:blog-1126151767402618364.post-78437076600031724102011-12-08T23:56:00.001-08:002011-12-08T23:56:37.829-08:00Five Step Illustrated Guide to Setup a Kanban System in an Enterprise OrganizationWe've been through a significant number of Kanban implementations and our approach has largely been based on the approach outlined in David J. Andersons <a href="http://www.amazon.com/Kanban-Successful-Evolutionary-Technology-Business/dp/0984521402">Kanban book</a>. During our travels, we find that we sometimes need to make certain adjustments to the standard steps and during our recent work with a large-scale organizational transformation where we are applying Kanban across the entire organization of 200+ people we have encountered some situations that you only run into when you are in a larger enterprise setting. I thought it would be useful to others for me to provide a real-world step by step illustration of how we have been approaching the problem. If your about to kick-off a Kanban adoption in an enterprise IT organization or in the midst of one and struggling, you may find this useful. It's a simple 5 step approach that has always produced good outcomes for us while respecting the pace of change a typical IT organization can absorb.<br />
<br />
<b>Step 1) Identify the various upstream and downstream groups with a special emphasis on external "support groups" for the group adopting Kanban</b><br />
<br />
In our scenario, we were helping an <b>IT Development Group</b> adopt Kanban. To start, we need to first identify who are upstream parties that give us work, in this it's the clients/business themselves that have a PM/BA function and there are 5 of them. There is one downstream group, the<b> Release Support Group </b>that is responsible for packaging, and pushing code into staging and production. The final group to look at is other support groups which tends to be a key consideration in enterprise settings since most IT organizations have moved towards functional consolidation. For this particular group, they rely on a <b>DBA Support Group</b>, and a <b>Testing Support Group </b>in order for them to complete their work and pass it to the release group.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr0a_TX3ZSzHHiPuCCyxCQgeqhn5NtzHh3TAMw0kl_Gbp6klrnpkd68fdg1rVJ3upJSzhBojDupngS_abBWpxuNRcisopfTOsmEzIySME9E_Q5QuNJZBvoJYC5_XvdRrvx9YmjIwKjZmI/s1600/kanban-step1.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="443" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjr0a_TX3ZSzHHiPuCCyxCQgeqhn5NtzHh3TAMw0kl_Gbp6klrnpkd68fdg1rVJ3upJSzhBojDupngS_abBWpxuNRcisopfTOsmEzIySME9E_Q5QuNJZBvoJYC5_XvdRrvx9YmjIwKjZmI/s640/kanban-step1.png" width="640" /></a></div><br />
<br />
<b>Step 2) Identify the work types that come in from the upstream provider and work with the IT Development Group to agree on a set of standard work types to setup a "Work Type Filter"</b><br />
<b><br />
</b><br />
One of the lessons we learned during our work with a number of teams is the importance to treat the work type analysis as a capability and not a one-time event. Work type requests evolve over time and the team needs to develop the capability to conduct this activity and evolve a standard set of work types. I find thinking of this as implementing a <b>Work Type Filter</b> for the team helpful so they understand it's a capability and mechanism they need to operationalize. Work type analysis tends to be always be an interesting conversation with the <b>IT Development Group</b> in enterprise IT settings since the development teams will have other "responsibilities" besides writing code. They are often called upon by the client or other groups to provide two types of non-development services, <b>Consulting</b>, and <b>Vendor Support / Management</b>. Since functional consolidation tends to exist in most IT organizations I have seen, some type of centralized PM/BA function is often responsible for gathering requirements and providing estimates and plans. These groups lack the technical knowledge to complete these activities and as a result seek out the development groups for help. The second type of non-development request is often <b>Vendor Support / Management</b>. Business demand for solutions often tends to be non-stable and peaks near the end of the annual budgeting cycle as they feel the pressure to spend their budget which causes demand to exceed internal development capacity which in turn leads to the organization running to scale up with external vendors to take on the extra work. This will generate some work for the development group as the PMs will often ask the group to provide technical oversight or support to guide design, coding and help with code integration and promotions. I find it extremely helpful to separate these non-development requests from development work types since they often cause noise in the system and impact capacity in a different way. Turning back to our real-world example, here's what we ended up with:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjheouiQHAkFw7WwLwdDeU-Qoo9VVQW68vAylHl2LR2aImepnNq3FykagdM6X6cs-sRQRzK_t7IXhnc2RfzQkgBzKaeLnRr_x12x0Jl87LVahochNci8uOgHleaC0pd0LZtMTrjXVMS7CI/s1600/kanban-step2.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjheouiQHAkFw7WwLwdDeU-Qoo9VVQW68vAylHl2LR2aImepnNq3FykagdM6X6cs-sRQRzK_t7IXhnc2RfzQkgBzKaeLnRr_x12x0Jl87LVahochNci8uOgHleaC0pd0LZtMTrjXVMS7CI/s640/kanban-step2.png" width="640" /></a></div><br />
<b>Step 3) Map out the internal value stream, and identify where hand-offs and coordination with support groups occur in the process</b><br />
<b><br />
</b><br />
Now that we understand the boundaries of our Kanban system we can start digging into the internal workings and understand how everything connects. Value stream mapping is often a useful tool for this, but I find keeping it simple works best. The important part of this step is to explicitly map out where the "interface" to the team is with other support groups and understand what information / value / artifacts is traded (i.e. what the interface contract should look like).<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM5qcD8HQOP9DGeJd67OxzNej0Xgkp77fJ4ZekpgdwfgpI73YMBcSoI9a_JxB-sAkRBOn24ZjeAG9_0D0TtvTxiVQ9s9zdIOku11KRwuCloJiWUwjNP0VqCB4Z_F4aAQJd40bbuCrlRO4/s1600/kanban-step3.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjM5qcD8HQOP9DGeJd67OxzNej0Xgkp77fJ4ZekpgdwfgpI73YMBcSoI9a_JxB-sAkRBOn24ZjeAG9_0D0TtvTxiVQ9s9zdIOku11KRwuCloJiWUwjNP0VqCB4Z_F4aAQJd40bbuCrlRO4/s640/kanban-step3.png" width="640" /></a></div><br />
<b>Step 4) Visualize all work in terms of the standard work types, let the system run to understand throughput and then set WIP limits with an emphasis on the input queue and external support group columns</b><br />
<b><br />
</b><br />
At the end of step 3, we should have a kanban board and we can start onboarding all the work the <b>IT Development Group</b> is currently working on in terms of the standard work types we defined for the <b>Work Type Filter</b>. I find many teams struggle with setting WIP limits right away, and they need to use the Kanban system for 2-4 weeks before they have the right comfort level to have this discussion. At that point, the <b>throughput</b> metric should be tracked as this will provide a helpful frame of reference to set the initial guesstimate for the WIP limits. The key columns I focus on with the group is the<b> input queue </b>and <b>external hand-off columns</b>. The rationale behind focusing on these columns is they are the interfaces to the outside world and we want to start setting some expectations and commitments around these as the <b>IT Development Group</b> needs their help to deliver work. The input queue keeps them fed and the hand-off columns keep them running. I often leverage the throughput metric to orient the team around a WIP limit for the input queue based on the simple guideline of only take in what you can finish.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2wcKGHBdXXg8WWxpgRVk9VMk6BFYhkrG8IyPirXjylj4xzTXRkxJBHIybIKIA6SdH13bp-jmjogUIfXSGLN1Dpldbr2Ey86wfGVun0s5n2HVVyQpo8htJWrMsDIPD-Pe01cZzYdOAHCE/s1600/kanban-step4.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="444" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg2wcKGHBdXXg8WWxpgRVk9VMk6BFYhkrG8IyPirXjylj4xzTXRkxJBHIybIKIA6SdH13bp-jmjogUIfXSGLN1Dpldbr2Ey86wfGVun0s5n2HVVyQpo8htJWrMsDIPD-Pe01cZzYdOAHCE/s640/kanban-step4.png" width="640" /></a></div><br />
<b>Step 5) Expose the queues to the clients and help setup and operationalize a prioritization framework as a Prioritization Filter</b><br />
<br />
At this point, we expose the queues to the <b>clients</b> and start pushing prioritization of work to the customer. We also find in enterprise IT settings, providing only a next/this month queue is insufficient for their planning process. As a result we often provide a prioritized backlog mechanism with two replenishment cadences, an annual/quarterly one for strategic/budget planning a monthly one for just-in-time decisions. This is where we often see the most churn and is typically the most challenging part of the Kanban process. Many IT organizations are great at prioritizing within one group, but across organizational groups is a struggle despite attempts at elaborate and agonizing prioritization committees/boards. To help with this problem, the Kanban system arms us with two pieces of information, a<b> common unit of currency</b> (the standard work types) and delivery <b>throughput</b>. Leveraging these two pieces of information, we recommend working with the clients to analyze all their known demand, break it down using the <b>Work Type Filter</b> into our standard work types, and then calculating the gap between demand vs capacity in terms of throughput. Once the gap is known, there are two options, scaling up with more external vendors or prioritizing the work. In this scenario, scaling up was not an option due to the tight deadlines and the ramp up time needed to onboard new resources so we had to go with the prioritization option. To help with the prioritization problem, we recommend holding a workshop to align the requests with strategic priorities for the organization and then applying a FIFO policy to these requests while considering true fixed date items. This provides a workable interim solution as it forces the clients to focus on today with FIFO. The goal is to get to a set of demand channels based on what's ready to go now or soon and set % allocation against these channels. We then provide the client an opportunity to adjust the % allocation during the monthly replenishment meetings.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMHG1sG_oHOEjhn7s2gvmiaoSsV_UHTP8kGQk06XJuTgTOBRsA1npTzYmkZyR7h06Aii7u2zexbXnauY1YLw9gao8GGHXUT3ojdnKX8YWcgoEkfgAsaBZh6bnXIa9nZGSNmaiBuMrAisw/s1600/kanban-step5.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="440" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhMHG1sG_oHOEjhn7s2gvmiaoSsV_UHTP8kGQk06XJuTgTOBRsA1npTzYmkZyR7h06Aii7u2zexbXnauY1YLw9gao8GGHXUT3ojdnKX8YWcgoEkfgAsaBZh6bnXIa9nZGSNmaiBuMrAisw/s640/kanban-step5.png" width="640" /></a></div><br />
After this step, you should have a fully operational Kanban system. Now the hard but fun part remains which is evolving it and optimizing it for performance.Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com0tag:blogger.com,1999:blog-1126151767402618364.post-46042972033867564922011-08-01T14:58:00.000-07:002011-08-01T14:58:18.024-07:00Maximizing the Benefits of Kanban as an Accelerator for Lean/Agile TransformationsOne of the common approaches to many Lean/Agile Transformations is to start off with a set of "pilots". Typically these are selected based on the likelihood of success, priority and business risk. Often six months or so down the line after a few successful pilots the organization is eager to accelerate the process and attempts a larger scaling initiative to spread adoption. At this point the organization typically hits a wall as they run into a new set of challenges with the new teams/units being "transformed":<br />
<ul><li>These teams/units are typically less enthusiastic about the change - pilots are typically "cherry-picked" and are often the most capable and enthusiastic of the change while the rest of the organization is not</li>
<li>Larger and more legacy systems/teams bring about different challenges the pilots did not face</li>
<li>Limited capacity and budget within the organization to support the larger scale adoption resulting in less time spent with the team/units</li>
<li>Executive deadline for the transformation looms closer, typically organizations are looking for organization wide results within a year or two</li>
</ul>As a result, the transformation typically starts switching to a "big-bang" type of change as patience starts running out and new challenges to the transformation starts slowing down progress. This where organizations often get into trouble.<br />
<br />
As an alternative to the piloting approach is a Kanban change management approach to transformations. The great thing about Kanban is that it allows an organization going through a transformation to adjust the pace of change from fast to slow depending on the tolerance of change within the organization. The only requirement is to ask each team/unit to follow a subset of the Kanban properties:<br />
<ol><li> Visualize what you do today</li>
<li>Limit the amount of work in progress</li>
<li>Improve flow</li>
</ol>With the Kanban approach to transformations, the organization can start "transforming" the entire organization on Day 1 without significantly disrupting business as usual while gaining the benefits of scaling out change to a larger group of teams/units. Another way to look at this is from the J-Curve model:<br />
<br />
<img alt="" height="364" src="data:image/png;base64,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" width="640" /><br />
<br />
The J-Curve is the amount of disruption/pain an organization goes through when change happens. If you are starting/going through a Lean/Agile Transformation today, this approach is worth considering if you are facing a few of the challenges I discussed.<br />
<br />
I'll blog more about the specifics for how we are applying the Kanban change approach in a current large-scale transformation in a later blog post.Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com0tag:blogger.com,1999:blog-1126151767402618364.post-16103898151022910262011-03-23T17:07:00.001-07:002011-04-11T11:51:21.739-07:00Why co-located team rooms are important<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">One of the most valuable aspects of co-locating a team in a common area is that it eliminates a lot of the "us vs them" mentality that tends to happen when team members are working in different locations. I have observed that it is a fairly natural occurrence in teams that are distributed to be less collaborative and helpful to each other if they are separated by distance.</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">For example, here's an interesting email conversation trail from a previous project between two distributed teams (in the same building but different floors and opposite ends of the building):</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><u><br />
</u></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><u>Email 1 from Debugging Developer:</u></b></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div class="MsoNormal" style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">Hi Developer B,<o:p></o:p></span></div></div><div class="MsoNormal" style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div class="MsoNormal" style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">I was wondering if processing transaction A is supposed to work for ActionTest. I’m using the following data with an error of “failed to execute called process”, can you advise, thanks.<o:p></o:p></span></div></div><div class="MsoNormal" style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div class="MsoNormal" style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div class="MsoNormal" style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">Data used:<o:p></o:p></span></div></div><div class="MsoNormal" style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div class="MsoNormal" style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: 13px;">Some complex XML message </span></div></div><div class="MsoNormal" style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"> </span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><b><u>Response email from Developer A:</u></b></span></span></div></div><div class="MsoNormal" style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 0in;"></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><br />
</span></div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">You sent a transaction per below. The changes were not deployed on the tActionTest. I will have to rebuild that deployable. (It was deployed for the end-to-end process, not the test webservice.)<o:p></o:p></span></div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">I can't find your request in the logs to check the error.<o:p></o:p></span></div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"></div><div style="text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 13px;">Thanks,</span></div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"></span></div><div style="text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">Developer A</span></div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><o:p></o:p></span></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><br />
</span></div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><b><u>Email 2 from Debugging Developer:</u></b></span></span></div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium; margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><br />
</span></span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">Ok so I guess it shouldn’t work until its been rebuilt right?<o:p></o:p></span></div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"><br />
</span></div></div><div class="MsoNormal" style="text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><b><u>Response email from Developer A:</u></b></span></span></div></div><div class="MsoNormal" style="text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><br />
</span></span></div></div><div class="MsoNormal"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"></span></span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">Yes, I forgot about deploying the test service because I was focusing on the integration model. <o:p></o:p></span></span></div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"></span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><br />
</span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">Developer X just deployed the most recent ProcessingComponent changes on the test service, and this included my code updates, so the service should work now. <o:p></o:p></span></span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><br />
</span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><br />
</span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">ProcessTransactionService fails this sample request as per below:<o:p></o:p></span></span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><br />
</span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><br />
</span></div></div><div class="MsoNormal" style="margin-bottom: 0in; margin-left: 0in; margin-right: 0in; margin-top: 0in;"></div><div style="text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span class="Apple-style-span" style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 13px;"> <returnstatus success="false"></returnstatus></span></span></div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"></span></span></div><div style="text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"> < <errormessage>Failed OrderDetail(s) : 9084694735 ErrServiceQueryFail</errormessage></span></span></div></div><div style="text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"> <errorcode>updateSubscriber_ERROR-1553</errorcode></span></span></div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><o:p></o:p></span></span></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;">and more complex XML/></span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><br />
</span></div></div><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"></span></span><br />
<div style="text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">Thanks,</span></span></div></div><div style="text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">Developer A</span></span></div></div><br />
<div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"></div><div class="MsoNormal"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><b><u>Email 3 from Debugging Developer:</u></b></span></span></span></span></div></div><div class="MsoNormal"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><br />
</span></span></span></span></div></div><div class="MsoNormal"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">Great, yeah I see that error now, middleware integration admin logs for ActionTest still times out. I’m not sure why the error occurs, is there any way that I can dig deeper?</span><span style="font-family: Arial, sans-serif; font-size: 10pt;"> </span></span></span></span></span></div></div><div class="MsoNormal"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"><br />
</span></span></span></span></span></div></div><div class="MsoNormal"></div><div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><b><u>Response email from Developer A:</u></b></span></div></div><div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><br />
</span></div></div><div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">Look at the ProcessTransactionService.</span></span></div></div><div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><br />
</span></span></div></div><div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><b><u>Email 4 from Debugging Developer:</u></b></span></span></span></div></div><div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><br />
</span></span></span></div></div><div class="MsoNormal" style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">Any idea what “Failed Tranasaction(s) : 1234567 (error=-65608)” means? I understand that transactions with FDR of 232 and IBC of 456 must be used, so I specified the following request:<o:p></o:p></span></div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div class="MsoNormal" style="margin-bottom: 5pt; margin-left: 3pt; margin-right: 3pt; margin-top: 5pt;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif; font-size: x-small;">Some complex XML...</span></div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><b><u>Response email from Developer A:</u></b></span></span></div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"></span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><br />
</span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">Did you intend to address this to me? I don't know this. AquaLogicBus is calling the ProcessTransactionService (java). This error is returned from the ProcessTransactionService.<o:p></o:p></span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"></span></div><div style="text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">Thanks,</span></div></div><div style="text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;">Developer A</span></div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div class="MsoNormal"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: x-small;"><br />
</span></div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><b><u>Email 5 from Debugging Developer:</u></b></span></span></span></div></div><div class="MsoNormal" style="font-family: 'Times New Roman'; font-size: medium;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"><span style="font-family: 'Microsoft Sans Serif', sans-serif; font-size: 10pt;"><br />
</span></span></div></div><div class="MsoNormal" style="font-size: medium;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-size: 10pt;"><span style="font-size: 10pt;"></span></span></div></div><div class="MsoNormal" style="font-family: 'Microsoft Sans Serif', sans-serif;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">Yeah, I just thought you might know, Developer B might have a better idea.<o:p></o:p></span></div></div><div class="MsoNormal" style="font-family: 'Microsoft Sans Serif', sans-serif;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div class="MsoNormal" style="font-family: 'Microsoft Sans Serif', sans-serif;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">Developer B, I’m sending the request below to AquaLogicBus and get the error: “Failed Tranasaction(s) : 1234567 (error=-65608)”, tn I used is: <tn line="1022" npa="631" nxx="555">,<o:p></o:p></tn></span></div></div><div class="MsoNormal" style="font-family: 'Microsoft Sans Serif', sans-serif;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">What rules are there for Transaction A?<o:p></o:p></span></div></div><div class="MsoNormal" style="font-family: 'Microsoft Sans Serif', sans-serif;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div class="MsoNormal" style="font-family: 'Microsoft Sans Serif', sans-serif;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">Thanks.<o:p></o:p></span></div></div><div class="MsoNormal"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span class="Apple-style-span" style="font-family: Arial, sans-serif;"><br />
</span></div></div><div class="MsoNormal" style="font-family: 'Microsoft Sans Serif', sans-serif; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><b><u>Response email from Developer B:</u></b></span></span></div></div><div class="MsoNormal" style="font-family: 'Microsoft Sans Serif', sans-serif;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"><br />
</span></span></div></div><div class="MsoNormal" style="font-family: 'Microsoft Sans Serif', sans-serif;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;"><span class="Apple-style-span" style="font-family: 'Times New Roman'; font-size: small;"></span></span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in; text-align: right;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Tahoma, sans-serif; font-size: 10pt;">But the error is self descriptive...the transaction is not unqiue i.e. processed...you cannot process the transaction twice/more in ProcessTransactionService.<o:p></o:p></span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Tahoma, sans-serif; font-size: 10pt;"><br />
</span></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><b><u>Email 6 from Debugging Developer:</u></b></div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div class="MsoNormal" style="margin-bottom: 0.0001pt; margin-left: 0in; margin-right: 0in; margin-top: 0in;"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Tahoma, sans-serif; font-size: 10pt;"></span></div></div><div class="MsoNormal"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">I have yet to trained myself to understand (error=-65608)<o:p></o:p></span></div></div><div class="MsoNormal"><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><span style="font-family: Arial, sans-serif; font-size: 10pt;">I’ll try more numbers even though numbers such as 1234567 and more also do not work for Transaction A, these numbers have not been processed since they were verified by GetStatus of the ProcessTransactionService returning ErrGetStatus.<o:p></o:p></span></div></div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;">After a bit more back and forth, finally the Debugging Developer discovered the root cause of the problem. In total, this took 6 hours and ~10 emails. Think this is a good example of the communication effectiveness Alistair Cockburn talks about:</div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div><div><div style="margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px;"><br />
</div></div><div class="separator" style="clear: both; margin-bottom: 0px; margin-left: 0px; margin-right: 0px; margin-top: 0px; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjKNZAyLxGQgw-i9WSrmkGkI4hWRI6ciOyc-Mc8D4-0RI-pOSD4FhckGdoWjZHjPSzV8Yzn8cRuNka6vbkiktbN1dhSiaq3GMaWLebTF1rXVGzzppwGEy4oy2NBs9M0_t2dq2dyHOLwu4/s1600/communicationModes.gif" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="552" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhjKNZAyLxGQgw-i9WSrmkGkI4hWRI6ciOyc-Mc8D4-0RI-pOSD4FhckGdoWjZHjPSzV8Yzn8cRuNka6vbkiktbN1dhSiaq3GMaWLebTF1rXVGzzppwGEy4oy2NBs9M0_t2dq2dyHOLwu4/s640/communicationModes.gif" style="cursor: move;" width="640" /></a></div><div><br />
</div><div></div><br />
<div></div></div><div></div>Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com0tag:blogger.com,1999:blog-1126151767402618364.post-76292703615794393062011-03-11T12:25:00.000-08:002011-04-11T11:21:56.564-07:00Kanban - Add colour to your work to help the team focusOne of the aspects I find valuable with Kanban, is the work visualization. However, sometimes I find that the work is so chaotic/iterative and collaborative in some portions of the process that the standard columns and rows in the kanban board don't provide enough flexibility. You'll see this when you have one work item that requires separate but related work from multiple team members due to their specialization.<br />
<br />
In these situations, I avoid trying to fit the highly iterative work into columns and rows, and collapse them together into a single step on the board. The problem I run into when I do that, is it becomes hard for the team to figure out who is working on what and what work remains to be done on the work item.<br />
<br />
To solve this problem, I apply colour to the work using coloured stickies that I "tag" on work items to denote what's be done on each particular work item.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><br />
</div><div class="separator" style="clear: both; text-align: left;">In this example, the team pulls a work item (user story) into the "Create FitNesse Template and Automate" column of the board. To move an item through this part of the delivery process, requires the team to define detailed acceptance criteria in the language of the domain model, get it into a FitNesse page, and then automate the tests. This requires at least three specialized skillsets, a business analyst who understands the requirements that can help define the acceptance criteria, a developer that can verify that the acceptance criteria can be automated and develop the automation code if needed (fixtures etc.) and an architect/product owner that can review the acceptance criteria. Also, the work is not necessarily sequential and may be done in parallel or require multiple iterations.</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;">To help visualize the work for the team, we applied coloured stickies that are tagged to each work item once something has been completed on it. For example, if the FitNesse template is done and data is defined than we tag it with a red sticky. If automation is completed / not required than it is tagged with a blue sticky and upon review from the architect/product owner we tag it as yellow.</div><div class="separator" style="clear: both; text-align: left;"><br />
</div><div class="separator" style="clear: both; text-align: left;">A neat result of this process, is that each team member can immediately tell what item they should be working on. The business analyst just needs to look for work items that are missing red tags, which is a signal for them work. Similarly, blue for developers and yellow for the architects/product owners. </div>Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com1tag:blogger.com,1999:blog-1126151767402618364.post-22263938609244038862010-09-02T15:18:00.000-07:002011-04-11T11:19:40.975-07:00Setting up an agile team roomIt's Week 2 of our agile project and thought it would be neat to share an agile team room that we have put together for our current project. There is always a bit of thought that needs to go into making the workspace "effective". The room needs to support a project of ~20 resources by facilitating a daily stand-up of "walking the board", parallel analysis and design sessions of small groups 3 - 6 people and provide instant visibility into key project artifacts. We have decided not to co-locate the developers into this room and instead looking to bring in 1 - 2 desktops with environment access for pairing, spiking and design collaboration sessions. Still waiting for the desktops right now.<br />
<br />
Here's a play by play of the room during Week 0: <br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div>We just threw everything up against a large wall and we didn't have much artifacts at that time, just a system context, story map, CRC cards, and a high-level value stream (on the right).<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Shortly after, we moved into a dedicated room and we put some effort into thinking about the 5s from lean to help optimize the workspace.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div><div style="text-align: left;">Our full end-to-end Kanban board is operational and running now with an issue escalation board to the far right.</div><div class="separator" style="clear: both; text-align: center;"></div>Rapidly growing story map with system metaphor diagrams (state machine, process flow) below it for easy accessibility during analysis and design sessions.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div>Low-fidelity system context mapping exercise, planning to soft copy this into something more elegant once it stabilizes.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div>Similar set-up for the CRC card modeling. Again we are sticking to low-fidelity design. Notice the handy bin of cards, stickies and other physical items that are easily accessible during modeling sessions.<br />
<br />
<div class="separator" style="clear: both; text-align: center;"></div>Finally, a table with all the current "big upfront requirements documents" provided by the business. Unfortunately, this is a necessary evil as we have yet to transition the business into the agile/lean culture of doing requirements. Notice the difference in "information radiation" between these docs and the rest of our "agile artifacts" around the room.<br />
<br />
Overall, looking forward to seeing how this room continues to evolve.Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com3tag:blogger.com,1999:blog-1126151767402618364.post-54794116549734758552010-06-07T20:28:00.000-07:002010-06-07T21:15:24.123-07:00Meeting Unique Challenges for Delivering Faster and Smaller in ITOne of the first principles in lean is delivering faster and in smaller batches of work. Delivering faster means we learn quicker (more information) and releasing in smaller batches helps us get more predictable and minimizes a lot of complexity. More information, more control and less risk. All good things.<br />
<br />
However, despite these benefits I often encounter clients that are skeptical whether this is realistic with the real world challenges they have to deal with. The domain my clients (IT) tend to live in are often large enterprise organizations that spend most of their energy maintaining legacy systems or modernizing them to newer platforms. Enabling the business is their purpose. Unlike product vendors that focus on pushing out new products for others to instantiate, IT has to transform and integrate products into solutions that work with their business (people, process, technology). This tends to bring out a set of unique challenges specific to IT that is often not discussed in detail in the agile and lean communities. Some of their typical key challenges when trying to deliver fast and release in smaller batches are:<br />
<ul><li>Data Dependencies - enterprises tend to deal with large amounts of data (often with strict regulations), need to guarantee integrity and carry data with them as they evolve (data conversion is a big task and cut-over planning is essential)</li>
<li>Integration Dependencies - systems don't sit in isolation within enteprises and often there is a large sprawl of integration between systems with inflexible interfaces (often point to point with legacy techniques and not documented) resulting in a complex network of dependencies</li>
<li> Enterprise Governance - running a large enterprise is complex and CIOs often want to instill some sense of order in how things are implemented and governance is one way of doing that which often becomes a significant transactional cost when running through the SDLC process for every small release</li>
<li>Infrastructure Provisioning - often the infrastructure group is detached from the delivery teams resulting in a silo-effect where the request process for environments is long, inefficient and error-prone (project start-up and iterative scaling is hard in this environment)</li>
<li> Change Management and Training - fast system releases means the business users need to deal with frequent changes in their business process and this results in the training teams needing to deal with an increased workload and a business culture that needs to integrate changes into their BAU (business as usual)</li>
</ul>While these are all tough problems to solve and are largely dependent on context and environment, I think there are some good potential solutions out there. Too often the first response is to give into the challenges above when the answer should be "yes we recognize the real-world is ugly" and "let's figure out how to better manage our dependencies and be more efficient and streamlined in how we work". Reduce dependencies and reduce transactional costs. Based on some of my real-world experiences, readings and thoughts here are some potential solutions I have cobbled together from various sources:<br />
<ul><li> <a href="http://www.markhneedham.com/blog/2009/03/30/ddd-recognising-relationships-between-bounded-contexts/">Domain Driven Design Team Patterns</a> - this is probably one of the most powerful ideas in <a href="http://domaindrivendesign.org/">Eric Evans </a>book that still hasn't penetrated into the general IT vocabulary and is one of the first tools I use when dealing with integration dependencies</li>
<li>Lean Governance - one way of removing the bottleneck of enterprise governance is to focus on "enablement" and "flow" vs "command and control"/"endorse, review, approve" and "policing", some folks like <a href="http://www.infoq.com/vendorcontent/show.action?vcr=968">Scott Ambler</a> have written some articles on this topic but additional effort in this area aligning agility and lean with some of the other more traditional groups (e.g. <a href="http://www.opengroup.org/architecture/togaf8-doc/arch/chap26.html">TOGAF</a>) out there would be interesting</li>
<li>Platform as a service (PAAS) - one easy way to move infrastructure provisioning along is to move away from providing "boxes" and "wires" to offering end-to-end dev/test/prod application environment stacks to delivery teams using shared environments, some organizations are offering this externally as a business (e.g. Amazon) and internal IT shops should look at how they can bring their own variant of this into their infrastructure groups (my current public sector client is doing this today)</li>
<li>DevOps - another common problem is the silos between operations and development and there is an active community looking to solve this by pushing the DevOps paradigm (development + operations) and making it work in their environments, some organizations (e.g. <a href="http://www.infoq.com/presentations/Facebook-Moving-Fast-at-Scale">Facebook</a>) have really pushed the boundaries here and merged the roles into one with "developers" actually implementing patterns in their code (e.g. <a href="http://www.blogger.com/">Gatekeeper </a>pattern) to help solve release management challenges</li>
<li>Change Management and Training - there is an increased awareness today that usability experts need to be engaged in the delivery process early on and getting them to work in an agile and lean way is something that is starting to be discussed but good usability can only go so far and there has been little discussion about how to embed change management and training resources in the team and getting them engaged in the iterative release process, new releases without users doesn't deliver much value to the business at the end of the day</li>
</ul><ul></ul>Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com0tag:blogger.com,1999:blog-1126151767402618364.post-72537809315959736082010-05-28T12:54:00.001-07:002010-05-28T12:54:02.620-07:00Agile Adoption in the Banking IndustryI was organizing my email today (large backlog as usual, need to put in a policy where I purge things after 6 mths) and came across a summary I had from an agile adoption survey a few of my colleagues conducted with several large banks. This is by no means a scientific survey, just one that was conducted with senior leaders from several different banks. Thought it was interesting to share. Here are the key findings:<br />
<div class="MsoListParagraph" style="margin-right: 24pt;"><br />
1) Banks are using agile in tactical ways <br />
<br />
2) Their usage is largely limited to applying two practices “iterative development” and “co-located teams” <br />
<br />
3) Architecture is not interested <br />
<br />
4) Business and development are interested with QA on the fence <br />
<br />
5) Compelling reason is reduce time to market <br />
<br />
6) Main barrier is cultural, looks like there is a strong culture factor against it <br />
<br />
7) Key challenge is estimation, they are unable to apply it within their current budgeting model <br />
<br />
8) Key success factors are executive sponsorship with appropriate coaching<br />
<br />
This aligns with a general observation that I have noticed as well. The movement is largely developer driven with business wanting to get in but challenged by their budgeting model. Architecture and QA are largely not bought in. <br />
</div><div class="MsoListParagraph" style="margin-right: 24pt; text-indent: -0.25in;"><span style="color: #1f497d; font-family: "Arial","sans-serif"; font-size: 10pt;"><o:p><br />
</o:p></span></div>Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com0tag:blogger.com,1999:blog-1126151767402618364.post-83299911725669850332010-05-21T09:28:00.000-07:002010-05-21T09:33:58.897-07:00Value Stream Mapping Session Gone AwryDuring one of our lean client engagements, we conducted half a dozen value stream mapping sessions with various groups and project teams from the client organization and this session was an interesting exercise. The session involved a large cross-functional team responsible for maintaining a very large-scale system and we wanted to get representatives involved from each stream / discipline (PM, BA, Dev, Test, Training, Architecture, Service Management, Infrastructure) to get the holistic picture. We ended up with a group of ~20 people and one of our facilitators (i.e. <a href="http://www.blogger.com/profile/17502868241692630528">Jeff Anderson</a>) decided to facilitate using a decentralized approach and handed out stickies to everyone and asked everyone to come to the wall and map out their specific processes in the value stream. This is what we ended up with:<br />
<br />
<div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3WZlFXEV8yb-2Z0_flo6828xJsmg7g97o-3bCKiymOp24F-ZKpNAw0IyObgfwsoMSgHKN_CoCJS_kmedn8c8igwgJ1lPmUAVtRetaxgMuLaia62bHUDx6BSW_IShvLZ0tW5k6Ftv_5O8/s1600/april-2010+083.JPG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg3WZlFXEV8yb-2Z0_flo6828xJsmg7g97o-3bCKiymOp24F-ZKpNAw0IyObgfwsoMSgHKN_CoCJS_kmedn8c8igwgJ1lPmUAVtRetaxgMuLaia62bHUDx6BSW_IShvLZ0tW5k6Ftv_5O8/s640/april-2010+083.JPG" width="640" /></a></div><br />
Needless to say, I am having a "fun" time transcribing this into a visio diagram (we promised the client we would capture the value stream and give it back to them as a deliverable). Next time we have such a large group, I think I will use a different approach (lesson learned).Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com0tag:blogger.com,1999:blog-1126151767402618364.post-91009865941056096112010-05-09T22:22:00.000-07:002010-05-09T22:23:41.023-07:00How-to Conduct a Remote Agile Daily Stand-upPhysical objects tend to help teams perform, communicate and operate more effectively. We've seen this trend with iteration planning boards, kanbans, continuous integration orbs etc. So, we thought how we can make daily stand-ups with a distributed team more effective? Here's our answer.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZKLTuqypPEy3fKlLY_fhZIoCKMHEzVWNtDJe8L-yk0g113eokCRpy2StUezEB4MNoJSxFXdnw0mvGSK5jZVegK15b3SRgps8oZGz2tHTmYf-djwRODifxKi0Mh3etF_xta3cnXyD_adU/s1600/4594588634_5381347e14.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 300px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZKLTuqypPEy3fKlLY_fhZIoCKMHEzVWNtDJe8L-yk0g113eokCRpy2StUezEB4MNoJSxFXdnw0mvGSK5jZVegK15b3SRgps8oZGz2tHTmYf-djwRODifxKi0Mh3etF_xta3cnXyD_adU/s400/4594588634_5381347e14.jpg" alt="" id="BLOGGER_PHOTO_ID_5469506804443795090" border="0" /></a>Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com1tag:blogger.com,1999:blog-1126151767402618364.post-39394174756442522342010-04-20T19:49:00.000-07:002010-05-19T19:32:12.044-07:00Architect Police vs Architect LeadsA classic problem I encounter in various IT organizations is the massive divide between Architecture and Project Delivery. Most organizations today have recognized that architecture is important to the organization and as a result have established some form of Enterprise Architecture Governance (Architecture Review Boards, Advisory, etc). This is a good first step, as having a central body that can provide holistic and strategic oversight and advice can help consolidate the maze of systems and designs that has been inherited from past bad behaviours and move organizations towards a rationalized portfolio.<br /><br />However, in an effort to provide "independence"<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr0bb69ae2RIGrD57hTRJDKnCD1bZQwZh3TuJ8RPREYlGkbwBQaUOmcBqZUkvYlnZaa7dt6JKgXm5nrB01a95A6MTPkGBAzG7ZVF77E8xXbYN5cFdu-bO4gOJpA3WbRta8unuj6eRNIXc/s1600/3435380297_d9af6286fd.jpg"><img style="float: right; margin: 0pt 0pt 10px 10px; cursor: pointer; width: 208px; height: 138px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgr0bb69ae2RIGrD57hTRJDKnCD1bZQwZh3TuJ8RPREYlGkbwBQaUOmcBqZUkvYlnZaa7dt6JKgXm5nrB01a95A6MTPkGBAzG7ZVF77E8xXbYN5cFdu-bO4gOJpA3WbRta8unuj6eRNIXc/s400/3435380297_d9af6286fd.jpg" alt="" id="BLOGGER_PHOTO_ID_5473173586303519042" border="0" /></a> these governing bodies often suffer from the classic ivory tower syndrome and have evolved themselves into a "policing" role. As a result, project delivery teams looking to deliver cheaper, faster and better for their clients find themselves at odds with Architecture which they look at as a speed bump to their work.<br /><br />This "architecture policing" anti-pattern tends to produce the following results:<br /><ul><li>directing scarce and valuable experienced resources into producing conceptual and logical architectures that provide little value to delivery teams</li><li>emphasizing "policing" over "advising" and "leading" resulting in architects that are out of touch with the client requirements, project context and implementation decisions</li><li>mandating high ceremony checkpoints with heavy documentation and review that slows down project delivery while adding little value to the team and clients<br /></li></ul><br />Instead of playing the role of police, architects can provide much more value to an organization by decentralizing themselves back into project delivery roles and taking ownership of delivering solutions to clients. During my attendance at the IBM Impact Conference 2010, there was a great success story with a Leading Canadian Bank that delivered an enterprise wide service bus architecture and framework with working code led and owned by their architects. The organization established Framework Architects that were responsible for designing and evolving their ESB framework and assigned responsibility to channel and business facing Solution Architects to extend the framework for their specific client needs.<br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzJbxTprn35ooCeTLUMx99NiLMpyaWv3x3J0_Ss0CqeuMMbZe18HHxCG0COUBMJiZ88GWtQ7BFnzzqF0M1Hog3SM9BcnizCh2dK-va-3eB1zB8l5XZ8mN8Eh2kPXaVHD2hgFHQF98uHAQ/s1600/architect+leads.jpg"><img style="display: block; margin: 0px auto 10px; text-align: center; cursor: pointer; width: 400px; height: 169px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgzJbxTprn35ooCeTLUMx99NiLMpyaWv3x3J0_Ss0CqeuMMbZe18HHxCG0COUBMJiZ88GWtQ7BFnzzqF0M1Hog3SM9BcnizCh2dK-va-3eB1zB8l5XZ8mN8Eh2kPXaVHD2hgFHQF98uHAQ/s400/architect+leads.jpg" alt="" id="BLOGGER_PHOTO_ID_5473171897423733394" border="0" /></a>I am hoping to see more organizations continue to follow the approach of embedding architects in delivery and leading the development of core frameworks and assets for reuse / extension by the organization. Architects leading by "doing" is always a good thing.Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com0tag:blogger.com,1999:blog-1126151767402618364.post-69626678820017476232009-12-28T21:41:00.000-08:002010-01-27T23:13:54.697-08:00Agile DocumentationAs a new theme to my blog, each week I will be pulling out one of the <a href="http://agileconsulting.blogspot.com/2009/10/deloitte-lean-overview.html">LEAN practice cards</a> to talk about and discuss some of the concepts behind it as well as add in any colour commentary I may have based on my own individual project experiences.<br /><br />The first card I thought would be interesting to look at is a Management Practice titled <span style="font-weight: bold;">"Agile Documentation"</span>. Documentation is often overemphasized by some project teams or ignored by others depending on whether they subscribe to a waterfall or iterative based process. There is no clear cut answer on exactly "how much" documentation should be done as it is dependent on a variety of <a href="https://www.ibm.com/developerworks/mydeveloperworks/blogs/ambler/entry/agile_scaling_factors">scaling factors</a>.<br /><br />Regardless of which development process your team may subscribe to, if we go back to the "why" behind documentation, I think applying Agile Documentation will help any team minimize documentation waste while also providing the benefits of documentation (yes, documentation is a good thing and even agile teams need to document as going agile is not an excuse to avoid documentation).<br /><br />The LEAN Agile Documentation card states:<br /><br /><br /><br /><span style="font-weight: bold;">Document...</span><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxh_gHMmP2sGQYAPYa9Lakr1R4acJdxcuVstvZrmjx8725Q_FoZt56Og6NyuI938sWfCuUmc8MsKci09PlFUU1DgHDsoRXW3yJnPa2uZdXguegmHE_3raXmoJHtfJi4XCq-FCvfwi7j7c/s1600-h/agile-doc-lean-card-1.PNG"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 214px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgxh_gHMmP2sGQYAPYa9Lakr1R4acJdxcuVstvZrmjx8725Q_FoZt56Og6NyuI938sWfCuUmc8MsKci09PlFUU1DgHDsoRXW3yJnPa2uZdXguegmHE_3raXmoJHtfJi4XCq-FCvfwi7j7c/s320/agile-doc-lean-card-1.PNG" alt="" id="BLOGGER_PHOTO_ID_5431684956761344002" border="0" /></a><br />- When the business asks you to<br />- For clarity across teams working in different locations<br />- To establish appropriate business and technical context for the solution<br />- To define interfaces across systems<br />- To enable your next effort<br />- Informally<br />- To understand<br />- To communicate<br /><br /><span style="font-weight: bold;">Don't Document...</span><br />- To specify<br />- Because your process says so<a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTUaZ1ahj0ZmjQrxCFR96ViDvH6ofw8SZqjybtS_dj5wg08d323FiU9YgLeFUO3moDaWtDGEpgjgYz5giA0cBfAPlTxTKpT45vRPQGKuzIEBY0Rqrionsba6Pi8bUNfN1cFaqzcY5It1I/s1600-h/agile-doc-lean-card-2.PNG"><img style="margin: 0pt 0pt 10px 10px; float: right; cursor: pointer; width: 320px; height: 214px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjTUaZ1ahj0ZmjQrxCFR96ViDvH6ofw8SZqjybtS_dj5wg08d323FiU9YgLeFUO3moDaWtDGEpgjgYz5giA0cBfAPlTxTKpT45vRPQGKuzIEBY0Rqrionsba6Pi8bUNfN1cFaqzcY5It1I/s320/agile-doc-lean-card-2.PNG" alt="" id="BLOGGER_PHOTO_ID_5431685364411175186" border="0" /></a><br />- Unproven ideas (prototype it first)<br />- Without obtaining the structure from your intended audience<br />- Without considering maintenance and cost of ownership<br />- Implementation and design details that can be just as easily expressed in the solution itself<br /><br />There are three main themes I want to pull out from this card that I think are worthwhile to discuss.<br /><br />1) Document for an audience - Documentation requires time and effort and the business is paying for this just like they are paying for each feature built into the solution. Every project should contain estimates for time/effort (i.e. cost) towards documentation and this is something the business is paying for. If you look at many organizations and their development processes you will notice that there is often a large set of documentation that needs to be completed as part of the project. However, it's worth questioning does the business really need each one of these documents? Does the technology teams building and supporting the solution need these documents? If the team is documenting...<br /><br />- Because your process says so<br />- Without obtaining the structure from your intended audience<br /><br />Then it's likely the team is not documenting for the business. Generally the type of documentation I find invaluable to the business and the technology teams supporting the solution are operations and support manuals (e.g. run books), developer setup and build manuals, end user manuals and the delivery or release plan. This set may need to be expanded depending on the project.<br /><br />2) Avoid documenting things that will change - Just like code and test cases, documentation is impacted by changes. To avoid paying the "rework" cost, hold off on documenting until a steady state is achieved (document at the last responsible moment) and stay away from implementation and detailed design details that will require frequent changes to the documentation.<br /><br />3) Document to understand, communicate and establish contracts - It's important to recognize when the scaling factors impact your project and documentation is a great way to mitigate these risks and challenges. When your team is:<br /><br />- Geographically distributed<br />- Large and difficult to manage<br />- Working in a complex business domain<br /><br />Then documentation helps everyone understand the same language, communicate decisions and changes, and establishes contracts that helps each member understand how their work interacts with everyone else. The type of documentation I find myself often using to help the team navigate through these challenges are the high-level requirements (e.g. use case hierarchy) produced from the initial requirements envisioning sessions, ubiquitous language dictionary and high-level domain model, system context diagrams and bounded contexts, and system interfaces. An extremely effective practice that I often apply to documenting system interfaces or complex business domains is to use <a href="http://alexishui.blogspot.com/2009/03/dsls-and-new-analyst-tester.html">"executable requirements"</a>. Writing test cases as a form of documentation is a great way to precisely capture the details while also validating for correctness.<br /><br />I have found these three themes combined with the bullet point checklists in the Agile Documentation practice card to be incredibly helpful in deciding what and when to document.Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com0tag:blogger.com,1999:blog-1126151767402618364.post-37848634346945459582009-03-04T21:48:00.001-08:002009-03-04T21:48:31.183-08:00DSLs and the new Analyst tester<p>Domain specific languages (DSLs) are quickly gaining momentum and there is definite interest in how the industry can adopt DSLs in the requirements world. I think DSLs can act as a bridge to help cross the divide between an "analyst" and a "tester". While, I don't think the industry is ready to adopt DSL's in the large, there are several easy wins here that I think can be easily gained by the industry if we start small. </p><p>1) Get the analysts involved with delivery -it's time to accept that the old fashioned approach of making up requirements and throwing it over the wall has failed. Instead, embed the analysts with the developers and testers. Make them work with the team, jointly capturing requirements together and creating tests that validate that the system. </p><p>2) Executable Requirements - start writing automated acceptance tests. These acceptance tests are described one level up from "code" and can start looking like a natural language. Wikis like FitNesse (http://fitnesse.org/) are an excellent example </p><p>3) Behaviour Driven Development - the next step up from executable requirements is to embrace a DSL-like mindset to drive the design, development and testing. There are emerging frameworks that allow a tester or developer to write test cases in code that mirror the language of the business. See, http://behaviour-driven.org/</p>If we can get these three practices right, then I think we are half way up the hill towards understanding and using DSLs. Already there are many organizations and teams that are pushing the frontier with these practices. As these practices get adopted, the "analyst" will evolve into a capital A - "Analyst", lower case t - "tester" and the two roles will be merged into one.Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com1tag:blogger.com,1999:blog-1126151767402618364.post-22328840972276596162009-02-01T21:38:00.000-08:002009-02-02T20:00:32.833-08:00You know you are not doing Agile ifA common misconception I find many people are falling into when they are learning agile or using it for the first couple times is that they think <span style="font-weight: bold;">Agile = Waterfall + Iterations</span>. I'll call the second approach "<span style="font-weight: bold;">Iterative Waterfall</span>" for the purposes of this discussion.<br /><br />While both models appear may similar (both are iterative and consist of requirements, design, coding ,and testing activities) there are significant differences that make them completely different animals. If we were to simply follow a waterfall based approach with small iterations then the flow of activities within an iteration would like look this:<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvWXeiojSuP3GxwIEhcH3gyP5DgOmnJaZlz4iLNhHsJnpvZOhfA0p7GcsneSdZrYPZmp-YOMAY1c-aCxFPGG9nQuuknBvyRpwMn5qGj7Z8qP-PJNDWqEQF0wuk5BgyBOCpjmiv8V86nOU/s1600-h/iterative-waterfall-model.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 400px; height: 353px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgvWXeiojSuP3GxwIEhcH3gyP5DgOmnJaZlz4iLNhHsJnpvZOhfA0p7GcsneSdZrYPZmp-YOMAY1c-aCxFPGG9nQuuknBvyRpwMn5qGj7Z8qP-PJNDWqEQF0wuk5BgyBOCpjmiv8V86nOU/s400/iterative-waterfall-model.PNG" alt="" id="BLOGGER_PHOTO_ID_5298077196629445970" border="0" /></a>As everyone is probably familiar with, this is the mini-waterfall (waterfalls within an iteration). The developers and customers follow a sequential set of activites as prescribed by the waterfall model. The flow of work is predictive and follows a set path. <span style="font-weight: bold;">While this model is iterative it is not agile</span>. Why? The reason is because an agile model will support continuous learning and refinement not only <span style="font-weight: bold;">between iterations</span> but also <span style="font-weight: bold;">within iterations</span>. It does this by intertwining the requirements, designing, coding, and testing together into an unpredictable flow of work.<br /><br /><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtpHkKMVHVmEzCiZfbuR-e_NBUFSMd_poSBzB6KtX0Lq_1Aia5M-Gz6Uutv6ky2r_GFVS-iSaHRA-OZPbcOrTmAnAOeXPbLq0vs_ts3MFXYQviiQsYhJiFdhveovOkR4K6udzTK2lFXUg/s1600-h/agile-model.PNG"><img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 383px; height: 400px;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjtpHkKMVHVmEzCiZfbuR-e_NBUFSMd_poSBzB6KtX0Lq_1Aia5M-Gz6Uutv6ky2r_GFVS-iSaHRA-OZPbcOrTmAnAOeXPbLq0vs_ts3MFXYQviiQsYhJiFdhveovOkR4K6udzTK2lFXUg/s400/agile-model.PNG" alt="" id="BLOGGER_PHOTO_ID_5298079058185429538" border="0" /></a><br />The developers and customers jump back and forth from one activity to another in an unpredictable manner. There is no set path. Instead, as they start implementing a user story or use case, they may discover new insights that require them to revisit and redefine their initial set of requirements which require them to redesign the solution, create or rewrite tests and code. Iterative learning and change is enabled within each iteration. This allows the developers and customers to quickly and easily react to change and stay agile.<br /><br />So, if you are doing agile right now ask yourself which model your using and if you are not doing the second model then I strongly urge you to try it out. You will find that the agile practices fit better and allows your team to fluidly move from one activity to another. Remember, you are not doing agile if your team isn't continuously learning and able to react to the new knowledge.Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com1tag:blogger.com,1999:blog-1126151767402618364.post-13263484362672396092008-06-13T18:29:00.000-07:002008-07-12T09:09:01.431-07:00A small agile success storyI recently wrapped up a small development project where our client engaged us to design and build a customized claims administration application.<br /><br />It was a high priority tactical solution driven by legal and accounting requirements that kick-started a claims process that was rolling out in three weeks. The custom claims administration application needed to be delivered within this three week timeframe to administer the process. It was high risk since the application needed to be accurate, stable and responsive since claim administers interacted with it in real-time while conversing with claimants.<br /><br />In order to deliver against this aggressive timeline we needed the following:<br /><br />- lightweight process that could respond to rapid changes (requirements definition was in-scope)<br />- a process that was easy to track progress against the goal<br />- a process that enabled frequent and reliable estimation for planning (we needed to know right away if we were falling behind)<br />- a process that would allow us to communicate to management and stakeholders on our progress and get their buy-in when we push back on features to control scope (it's amazing sometimes how non-technical resources underestimate effort, and how difficult it is to communicate realistic effort)<br /><br />We rolled out a flyweight agile process driven by user stories and 1 week iterations. This would allow us to:<br /><br />- capture requirements in terms of user goals and value (user stories are great for this, and easy for non-technical resources to understand)<br />- prioritize stories with management and stakeholders<br />- estimate each user story (we used ideal days)<br />- create a release plan and iteration plan based on user stories (functionality and value instead of tasks)<br /><br />Our first goal was to prioritize the absolutely must have user stories which would make up the first release. This release consisted of three rapid iterations targeted to launch on the three week deadline. Lower priority user stories would be rolled out in a subsequent release. Our release and estimation plan was updated weekly which allowed us to easily track and communicate progress. We also tracked our velocity and noticed after two iterations we needed another resource to meet our plan. It also allowed us to re-prioritize weekly and we evolved our release plan to break out user stories into two staggered release. <br /><br />User stories were great since they were low ceremony, light on documentation and less susceptible to change since details are captured at the last moment via conversations. It really enabled agility since we were not afraid to throw away or change requirements since we placed so little investment into them (high value for low cost).<br /><br />As a result we delivered on time and the project was a success.<br /><br />Overall, I think an agile based approach enabled our success. Rapid feedback, frequent communication, and lightweight artifacts allowed us to respond to change and adapt to succeed.Alexis Huihttp://www.blogger.com/profile/08037705536011128597noreply@blogger.com0