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

<channel>
	<title>kanban &#8211; Software, Fitness, and Gaming &#8211; Jesse Warden</title>
	<atom:link href="https://jessewarden.com/tag/kanban/feed" rel="self" type="application/rss+xml" />
	<link>https://jessewarden.com</link>
	<description>Software &#124; Fitness &#124; Gaming</description>
	<lastBuildDate>Fri, 29 Apr 2016 22:35:32 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://jessewarden.com/wp-content/uploads/2016/08/cropped-Lambda2-32x32.png</url>
	<title>kanban &#8211; Software, Fitness, and Gaming &#8211; Jesse Warden</title>
	<link>https://jessewarden.com</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Experiences in Managing Software Development Through Kanban &#038; Trello</title>
		<link>https://jessewarden.com/2016/04/experiences-in-managing-software-development-through-kanban-trello.html</link>
		
		<dc:creator><![CDATA[JesterXL]]></dc:creator>
		<pubDate>Sat, 16 Apr 2016 20:02:57 +0000</pubDate>
				<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[angular]]></category>
		<category><![CDATA[bdd]]></category>
		<category><![CDATA[behaviordrivendevelopment]]></category>
		<category><![CDATA[cucumber]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[gherkin]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[leadership]]></category>
		<category><![CDATA[management]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[protractor]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[tdd]]></category>
		<category><![CDATA[testdrivendevelopment]]></category>
		<category><![CDATA[trello]]></category>
		<category><![CDATA[unitests]]></category>
		<guid isPermaLink="false">http://jessewarden.com/?p=5112</guid>

					<description><![CDATA[Introduction On my last project, I managed a team developing an application to manage hospitality locations. Given our requirements were constantly in flux, the contracts were on a short cycle, and the team was generally new to enterprise software development, I chose a Kanban style approach to managing and delivering it. I wanted to share [&#8230;]]]></description>
										<content:encoded><![CDATA[<h1>Introduction</h1>
<p>On my last project, I managed a team developing an application to manage hospitality locations. Given our requirements were constantly in flux, the contracts were on a short cycle, and the team was generally new to enterprise software development, I chose a Kanban style approach to managing and delivering it. I wanted to share with you the rationale, methodology, challenges, and the surprising change to my role while on the project.<br />
<span id="more-5112"></span></p>
<h1>Why Kanban vs Scrum?</h1>
<p>Scrum has too many meetings, requires a well groomed backlog, and assumes senior developers so that they canÂ accurately task &amp; plan their stories.</p>
<h2>Junior to Mid-Level Team</h2>
<p>Given I was running my mid-level team in an Enterprise setting, I knew others would be more than happy to sabotage our teams productivity with meetings of their own. Part of the solution, not part of the problem. New team members, both onshore and offshore, who I expected to be reasonably cross functional whether they liked it or not, needed all the time they could to focus and learn quickly.</p>
<h2>No Solid Requirements</h2>
<p>Given staffing wasÂ changing bi-weekly with an my on-going effort to teach the Subject Matter Experts (SME&#8217;s) turned Business Analysts (BA&#8217;s) how to create properly groomed stories, there wasn&#8217;t anything the team could commit to within a reasonable timeframe. For example, it took us 8Â <a href="http://programmers.stackexchange.com/questions/176063/how-to-be-successful-at-bdd-specifications-workshops">workshops</a>Â over 3 weeks to get to a solid understanding of what we thought we were building.</p>
<h2>No CICD</h2>
<p>We also had no buildÂ nor <a href="https://en.wikipedia.org/wiki/DevOps">DevOps</a>Â in place to facilitate <a href="https://www.thoughtworks.com/continuous-integration">ContinuousÂ Integration</a> and <a href="https://www.thoughtworks.com/continuous-delivery">Continuous Delivery</a>.Â Thus we had no ability for weeks to deliver a working, high quality feature because there was no build to allow Developers &amp; Quality Assurance toÂ verify quality, nor server to deploy it to.</p>
<h2>No Roles, Just Fullstack / Cross Functional</h2>
<p>Having a <a href="https://www.mountaingoatsoftware.com/agile/scrum/product-owner">Product Owner</a> assumes you have someone either in Business, or who represents them, that knows what to build. The client asked us to use our expertise to help them out in true Consulting style.Â Thus there was no Product Owner.</p>
<p>There was no need for a <a href="http://whatis.techtarget.com/definition/scrum-master">Scrum Master</a>. <a href="https://www.mountaingoatsoftware.com/agile/scrum/sprint-planning-meeting">Sprint Planning</a>Â was pointless because we couldn&#8217;t plan 1 to 2 weeks in advanced since high level Epic&#8217;s were still beingÂ both defined, priced, and architecturally validated. ForÂ months. I already knew what the team was working on, and so did they, by their small Trello cards. If people had blockers, they asked me or the team over <a href="https://slack.com/">Slack</a> andÂ we collectively resolved it. There was no need for <a href="https://www.mountaingoatsoftware.com/agile/scrum/sprint-retrospective">Retrospectives</a> because there were no Sprints since things changed daily so you couldn&#8217;t effectively reflect on what happened the past week because it was ever changing.Â There were no roles beyond everyone coding the client, server, and some of the DevOps together.</p>
<p>Scrum would of beenÂ lot of ceremony with noÂ value.</p>
<h1>EnterÂ Kanban</h1>
<p>What <a href="https://www.atlassian.com/agile/kanban">Kanban</a> does well is allow you to change quickly, allow the team to be productive despite the chaos, with a continuous flow of delivering working software that&#8217;s in sharp contrast to the insanity outside their productive world. Unlike <a href="https://www.scrumalliance.org/community/articles/2014/july/scrum-vs-kanban">Scrum</a>, you much more quickly visualize the work going on &#8220;today&#8221; and identify problems sooner than later. Since the work in progress tends to be smaller, you can flush out bottlenecks in the process sooner. You can create <a href="http://leankit.com/learn/kanban/kanban-board-examples-for-development-and-operations/">swimlanes</a> and also identify which ones have bottlenecks.</p>
<h2>Flexible to Ever Changing Direction</h2>
<p>As each new day brought in new or modified requirements, role changes, and improved DevOps and API offerings, I wouldÂ changeÂ the Backlog to match &#8220;today&#8221;. Given we had no build, nor DevOps starting from scratch, I had a lot of flexibility to inject more build specific tasks so as to keep away from <a href="http://martinfowler.com/bliki/Yagni.html">Yagni</a>Â until we got a solid enough user story. &#8220;No user stories, nor API? No problem, get <a href="https://mochajs.org/">Mocha</a> working with our <a href="https://nodejs.org/en/">Node</a> code.&#8221; I&#8217;d attempt to stay 1 to 4 days ahead of my team. This was to ensure they were working on what I knew at the time to be real and providing client &amp; user value.</p>
<h2>Productive Despite Chaos</h2>
<p>Politically, it helped ensure we were being productive and thus visually showing we&#8217;re using the client&#8217;s money effectively with the fast ability to change course if they wanted something changed faster than aÂ Scrum Sprint would typically allow. This happened often.</p>
<h2>Learning the Team&#8217;s Strengths, Weaknesses, and Desires</h2>
<p>I had a new, junior to mid-level Development team and QA team, on a greenfieldÂ client (meaning no existing infrastructure or code), with ever changingÂ requirements, staffing, and contract lengths. Since the team was new and learning the entire <a href="https://en.wikipedia.org/wiki/Systems_development_life_cycle">Software Development Lifecycle</a> whilst me doing my best to shield them from politics, lack of a CICD process,Â lack of requirements, and nothing pre-built for them via <a href="http://yeoman.io/">Yeoman</a> generators / starter projects&#8230; I knew things would be slow and unpredictable at first.</p>
<p>What I didn&#8217;t know was the team. I didn&#8217;tÂ know their strengths, weaknesses, and most importantly, desires. Happy developers are productive developers. A lot of people say they are <a href="http://andyshora.com/full-stack-developers.html">fullstack</a> to ensure they are employable or because they are insecure that their speciality skill set cannot stand on it&#8217;s own. That or they like working in smaller, more cross functional groups.</p>
<p>As much as I expected the team to touch all parts of the development stack, including myself, you always have people who naturally gravitate somewhere, or like to be pushed to a particular area like API&#8217;s, services, components, or build level tasks. This should be encouraged just as much as being cross functional to get the most out of them, and the team. Additionally, as the project matures, you have less of a need to be cross functional as often, and tend to see people dive deep over time.</p>
<h1>Creating Tasks in Trello</h1>
<p>I also didn&#8217;t know the team&#8217;s ability to estimate their own tasks. It didn&#8217;t matter since the user stories weren&#8217;t defined enough for them to do so. Thus, I broke all tasks down for the team and included additional DevOpsÂ and QAÂ tasks as well into small units. We used <a href="https://trello.com/">Trello</a>, a real-time collaborative project board full of cards, to keep track of the work.</p>
<p>We had 6 columns in our Trello board, from left to right:</p>
<ol>
<li><strong>Bulletin Board</strong>: All the documents &amp; images for our project</li>
<li><strong>Undefined</strong>: Stories &amp; Tasks I didn&#8217;t have enough clarity on for the team to work on.</li>
<li><strong>Defined</strong>: Tasks I fleshed out enough toÂ ensure anyone on the team could work on with clearly defined success criteria, easily merged into a <a href="https://github.com/">Github</a> <a href="https://help.github.com/articles/using-pull-requests/">Pull Request</a>, and colored with the swimlane it belonged to: Testing, Client UI, Node API, DevOps, and <a href="https://en.wikipedia.org/wiki/User_experience_design">UX</a>.</li>
<li><strong>Working On It</strong>: What tasks were being actively worked on in the team. I ensured only 1 card per developer</li>
<li><strong>Done</strong>: For tasks that were done and developer tested, but not QA approved via them manually testing the Card&#8217;s associated PR.</li>
<li><strong>Approved</strong>: QA approved PR&#8217;s that merged into the dev branch and deployed via <a href="https://jenkins.io/">Jenkins</a> <a href="https://www.docker.com/">Docker</a> build.</li>
</ol>
<p><img fetchpriority="high" decoding="async" class="alignnone size-full wp-image-5113" src="http://jessewarden.com/wp-content/uploads/2016/04/trello-board.png" alt="trello-board" width="720" height="456" srcset="https://jessewarden.com/wp-content/uploads/2016/04/trello-board.png 720w, https://jessewarden.com/wp-content/uploads/2016/04/trello-board-300x190.png 300w" sizes="(max-width: 720px) 100vw, 720px" /></p>
<h2>Observe the Flow of Development&#8230;</h2>
<p>What happened next sold me on one of the key strengths of Kanban.</p>
<p>Every day I could immediately see problems. Instantly. It happened just like <a href="https://www.linkedin.com/in/andrea-ross-csm-sa-0a056b3b">Andrea Ross</a> <a href="http://jessewarden.com/2013/08/kanban-paper-airplane-factory.html">said it would</a>, and I&#8217;d see where bottlenecks were in the process. Each column in Trello would suddenly get overflowed with cards. You could be near blind, simply squint at the board so you couldn&#8217;t actually read anything and STILL SEE IT. The size of the columns told all: you have a bottleneck somewhere here.</p>
<p>It&#8217;s called <a href="https://stefanroock.wordpress.com/2010/03/02/kanban-definition-of-lead-time-and-cycle-time/">Cycle Time</a>: how long a piece of work goes from left to right. You want toÂ ensure once cards are created, they speed from Undefined to Accepted (left to right, start to finish) as quickly as possible. Typically that process isn&#8217;t linear; SOMEWHERE in the journey there is always a bottleneck.</p>
<h2>&#8230; Adjust as Necessary</h2>
<h3>How do I know I&#8217;m done?</h3>
<p>The first one was the success criteria I gave wasn&#8217;t clear enough. 90% ofÂ my created cards in Defined were moved back to Undefined by the team. Once I gave better success criteria, the development team started to chew through them. I wouldn&#8217;t hear from them for hours, then cards would suddenly start piling up in the Done column w/PR&#8217;s to boot.</p>
<h3>What does the UI look like?</h3>
<p>The second one was lack of good <a href="https://en.wikipedia.org/wiki/Website_wireframe">wireframes</a> and <a href="http://graphicdesign.stackexchange.com/questions/30860/what-is-the-difference-between-wireframes-and-mockups">designs</a> to illustrate both the layout and interactions of how the UI worked. We didn&#8217;t yet have budget for a UX resource, so I spent the time myselfÂ building low fidelity wireframes that were as accurate as possible and then creating design comps matching our <a href="https://www.google.com/design/spec/material-design/introduction.html">Material Design</a>Â style guide. I ensured all new cards had relevant design artifacts attached. If the wireframe/design comp changed, I&#8217;d move the card from Defined back to Undefined to ensure the team didn&#8217;t touch it. If it was too late, I&#8217;d create an iteration card to modify an existing piece of work with the updated UI/functionality change.</p>
<h3>How do I test itÂ works?</h3>
<p>The third one was the inability for QA to test functionality as cards started piling up in the Done column. QA didn&#8217;t yet have the build running locally, nor a QA environment to test on, nor a set of tools to help them automate it, nor a lead to help mentor them towards this.</p>
<p>So I picked up the torch, implemented <a href="http://www.protractortest.org">Angular&#8217;s Protractor</a> with theÂ <a href="https://github.com/mattfritz/protractor-cucumber-framework">Cucumber</a> version, then had a team member get an actual working feature through <a href="http://gulpjs.com/">Gulp</a>. I then worked with the QA team and BA&#8217;s to help define better Cucumber features through workshops so they were easier to test. I attached these as additional artifacts to each card where applicable.</p>
<p>Finally, we started Dockerizing our build to use throughÂ <a href="https://kitematic.com/">Kitematic</a> &amp; <a href="https://hub.docker.com/">DockerHub</a>.Â Given how hard it was to get <a href="http://redis.io/">Redis</a> + Node working the same between the Developer&#8217;s Macs and the QA&#8217;sÂ Windows machines with various lack of admin rights, this helped ensure things actually worked, quickly, without debugging install or configuration issues.</p>
<h3>Continually Improve</h3>
<p>This process never stopped. Sometimes it was smallÂ bottlenecks or even just blockers and we&#8217;d do our best to improve the process.Â Despite the politics, climate of unknowing, and constant readjustment of requirements &amp; processes&#8230; it felt good to be making both progress and improving the process.</p>
<p>Developers got to zone out by donningÂ headphonesÂ toÂ jam on code all day. Working codeÂ continually emerged as long as I fed this process.</p>
<p>We almost got to the point where the developers had no clue about the ever changing conditions on the ground with the client, ignored it when I brought it up, and focused strictly on questions about specific tasks. I&#8217;d call that a process win.</p>
<h1>Challenges</h1>
<p>It wasn&#8217;t all rose colored glasses.</p>
<h2>The Importance of Good, Upfront DevOps</h2>
<p>The main pain point throughout the entire process was our DevOps starting late in the cycle. Without a good CICD process, Scrum and Kanban don&#8217;t really seem to work all that well in tracking &#8220;actual work&#8221; because no actual work&#8230; works. Now, the CIÂ portion we knocked out of the park ourselves and quickly while waiting for confirmed requirements using Github and Jenkins in Docker + <a href="https://aws.amazon.com/">AWS</a>. Mostly. The CD, however, took awhile.</p>
<p>What we wanted at first was once a PR was approved, the code would, after a successful Jenkins build, deploy a Docker container of our code to a publicly accessible Amazon Web Service (AWS) instance. It took us about 3 months to get that going given our resource constraints &amp; timing. In the interim, we did a lot of <a href="https://en.wikipedia.org/wiki/Mock_object">mocks</a> and testing on localhost with <a href="https://ngrok.com/">ngrok</a> for demos.</p>
<p>Once our Docker deployment was working we started having code be deployed without our knowledge in a good way; the development teamÂ just focused on completing cards, and eventually the QA would focus on verifying manually what made it through the automated QA process to the server matched up.</p>
<p>The latter took forever simply because I was stretched too thin running the Development team, helping the DevOps team, doing my own wireframes and design comps, mentoring the BA&#8217;s to writeÂ awesome user stories via <a href="https://dannorth.net/introducing-bdd/">Behavioral Driven Development</a> to minimize our story grooming sessions, and keeping Senior Management in the loop.</p>
<p>Even with Analysts starting the DevOps, it&#8217;s clear having them full time on that endeavor payed off big time. In the future, I&#8217;m curious if I&#8217;d rather focus on that full time myself since it seems to have the largest, cross team impact regardless of whether the requirements, UX, and CIÂ are in a good or bad spot.</p>
<h2>Wireframing &amp; Designing at the Same Time vs. Staggered</h2>
<p>While me being the same person to do the wireframes made it easier to build design comps around them, it simnifically reduced the time I could spend with other teams.Â When the Undefined column would get too full, I&#8217;d have to spend the early part of the week ensuring I had enough information to wireframe. I&#8217;d then spend the weekend onÂ the design comps and then break them down into easily tackled, small PR tasks in Trello. This wasn&#8217;t sustainable and I knew it, but was banking on getting budget for UX resources.</p>
<p>While I was helping the BA&#8217;s, Development Team, and QA by ensuring the stories had a visual component toÂ help ensure we&#8217;re all on the same page of what theÂ user story looked like, I&#8217;d end up neglecting other things like refining those very stories, not unblocking the development team when they&#8217;d get stuck on build or architecture issues, nor helping push the DevOps team to help the QA do their job.</p>
<p>Rather than complain, I made a daily tactical call on what to focus on based on what Trello was telling me. Once we got the UX resourceÂ onboard, he worked aside the BA&#8217;s and that helped a ton; at that point I could just match the design comps to his wireframes, cutting my work in half + his were of insanely higher quality for talent &amp; focus reasons.</p>
<p>What this tells me is that unless I have a huge backlog of build and DevOps work in the pipeline, I&#8217;ll be hard pressed in the future to keep my development team busy with those tasks for a long timeÂ without quickly needing a proper UX team member(s).</p>
<h2>QA in Lean Engineering</h2>
<p>I didn&#8217;t have enough seniors to delegate management tasks to, and coupled with my CD problems, IÂ struggled to keep QA productive. While our developers were using <a href="http://eslint.org/">linting</a> <a href="https://www.typescriptlang.org/">compilers</a>, <a href="https://github.com/vigetlabs/grunt-complexity">complexity metrics</a>, unit and integration testing with <a href="https://www.youtube.com/watch?v=o6KSOs-N75o">end to end testing</a>, no one was laser focused on improving the latter part of the QA CD pipeline. I&#8217;d made some headway in getting QA involved in the beginning to help contribute to ensuring good user stories came out of our workshops. Where I struggledÂ was giving them enough of my time to teach them basic JavaScript coding, DevOps, and helping them walk through their testing plans on what we did have to start to develop a cadence.</p>
<p>A lot of this was we just didn&#8217;t have that much to test yet and the other was&#8230; well, nothing. I did the best I could working insane hours. If I were to do it again, I&#8217;d assign a senior dev interested in furthering their testing &amp; DevOps chops to work with them on owning the CD process, and ensuring a good quality pipeline.</p>
<p>In Lean Engineering, QA is no longer thrown code to test weeks or months later. Instead, they are brought into the beginning of the process and the end to improve the entire pipeline. You can&#8217;t do that if you don&#8217;t have a DevOps pipeline.</p>
<h2>User Feedback</h2>
<p>The same problem I had with QA I had with user feedback. Part ofÂ Lean engineering with Kanban is continuously improve not just the process, but the software. You do this by giving the working build to a user, testing it, and taking their feedback BACK into the process. While doing wireframes, I did informal and adhoc user interviews, created basic <a href="https://www.smashingmagazine.com/2014/08/a-closer-look-at-personas-part-1/">Persona&#8217;s</a> to differentiate who we were targeting, but did not get to validate this with released software until late in the cycle.</p>
<p>This actually wasn&#8217;t much of a bad thing, but rather, a challenge because a working build didn&#8217;t emerge until much later in the cycle, so we just did localhost demo&#8217;s &amp; testing vs. &#8220;use whatever device you have on your person or will use in your job&#8221;. I had already had extensive, informal discussions with the target users and really liked them as people. It just came up when I&#8217;d look at swimlanes via colors in Trello cards, the features had a huge cycle time in knowing if they were valid or not from user testing.</p>
<h1>Role Changes</h1>
<p>Traditionally in Agile, I&#8217;ve found I do most of my management efforts on Sprint Planning and post Retrospective. I ensure the requirements are rock solid and follow up on loose ends, and take action items seriously during retrospectives where new things need to be implemented or changed. The rest of the time I architect, pair program, and code.</p>
<p>In Kanban, it was very different. My role, daily, was to manage away problems for the team. Instead of a weekly or bi-weekly discovery, this was daily to hourly. I&#8217;d adjust based on what Trello was telling me. It gave me a greater insight into how my management efforts positively and negatively affected the team.</p>
<p>I also liked continually working with the team to improve our process. I&#8217;ve done that before in teams with Scrum, but process improvement usually fell behind &#8220;getting my story done&#8221; in terms of priority. In Kanban, fixing the bottleneck and improvingÂ the process is the priority.</p>
<p>I&#8217;ve found I really like Kanban. The consulting world is full of extremely hard software problems surrounded by politics and chaos. I love thoseÂ aspectsÂ and Kanban is now my tool of choice for managing teams within it.</p>
<h1>Citations</h1>
<p>I wanted to thank <a href="http://joelhooks.com/">Joel Hooks</a> forÂ telling me about Kanban being an alternative to ScrumÂ years ago. If Joel likes something, I typically trust his judgement that it must be good.</p>
<p>Also thanks to my manager, <a href="https://www.linkedin.com/in/mlancast">Matt Lancaster</a>, for teaching me about Lean engineering processes. You can see him speak about the processÂ below.</p>
<p><iframe src="https://www.youtube.com/embed/q2eyhFVWuKY" width="640" height="360" frameborder="0" allowfullscreen="allowfullscreen"></iframe></p>
<p>Thanks to <a href="https://www.linkedin.com/in/eric-motazedi-648a0490">Eric Motazedi</a>Â for teaching me about BDD and why <a href="http://programmers.stackexchange.com/questions/176063/how-to-be-successful-at-bdd-specifications-workshops">workshops</a> are so important.</p>
<p>FinallyÂ thanks to the Richmond <a href="http://www.meetup.com/Capital-Kanban/">Capital Kanban</a> group for teaching me more about how <a href="http://jessewarden.com/2013/08/kanban-paper-airplane-factory.html">Kanban works</a>.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Kanban Paper Airplane Factory</title>
		<link>https://jessewarden.com/2013/08/kanban-paper-airplane-factory.html</link>
		
		<dc:creator><![CDATA[JesterXL]]></dc:creator>
		<pubDate>Sat, 10 Aug 2013 15:19:37 +0000</pubDate>
				<category><![CDATA[Business Process]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[airplane]]></category>
		<category><![CDATA[factory]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[paper]]></category>
		<category><![CDATA[project management]]></category>
		<category><![CDATA[scrum]]></category>
		<category><![CDATA[sixsigma]]></category>
		<guid isPermaLink="false">http://jessewarden.com/?p=4307</guid>

					<description><![CDATA[I went to the local Capital Kanban meetup yesterday evening. It was a bunch of Project Managers discussing Kanban and waste in IT. Seemed completely out of my comfort zone and a way to meet new people in tech here in town so I attended. It turned out to be really cool and way more [&#8230;]]]></description>
										<content:encoded><![CDATA[<p>I went to the local <a href="http://www.meetup.com/Capital-Kanban/">Capital Kanban</a> meetup yesterday evening. It was a bunch of Project Managers discussing <a href="http://en.wikipedia.org/wiki/Kanban_(development)">Kanban</a> and waste in IT. Seemed completely out of my comfort zone and a way to meet new people in tech here in town so I attended. It turned out to be really cool and way more interesting than my expectations were. I wanted to mention some of those here, specifically some of the IT wastes that were mentioned I see all the time, the insights I got from the paper airplane factory game, and some after meeting talk that changed my perspective on what I perceive as problems in our industry with good software east of California (hah, trick question, there IS no good software done east of California&#8230;).</p>
<p><span id="more-4307"></span><strong>IT Wastes</strong></p>
<p>Andrea Ross did a presentation about waste in IT. Kanban, the production process used by Toyota then turned into a Project Management and Software Development, has 7 or 8 forms of what it calls waste. These are primarely in the factory line production process, so you have to draw your own metaphors and similes, and that&#8217;s what Andrea&#8217;s presentation extrapolated on.</p>
<p>From a high level, these are:</p>
<ul>
<li>Defects / Rework</li>
<li>Overproduction</li>
<li>Waiting</li>
<li>Non-Standard Over Processing</li>
<li>Transportation / Logistics</li>
<li>Intellect</li>
<li>Motion</li>
<li>Excess Inventory</li>
</ul>
<p>Her slides that have bullet point examples for each one are pretty self-explanatory. What was interesting to me was the sheer volume of bullet points I see all the time, together, in the same projects I work on. Some can&#8217;t be avoided, nature of the business and all that. Still, it was pretty eye opening to see that a traditional Factory Production process has identified these items as the core waste items, and software development has plenty of them with just about the same meanings. I won&#8217;t cover them in detail here as her slides do.</p>
<p><strong>Kanban, Bottlenecks, and Waste</strong></p>
<p>The concept of Kanban is to quickly identify bottlenecks in the existing production process, and iterate to improve the process to fix them.</p>
<p>Notice I said &#8220;existing&#8221; and &#8220;process&#8221;. The existing part is where Kanban has been easier to market than say <a href="http://en.wikipedia.org/wiki/Six_Sigma">Six Sigma </a>which is bought into wholesale, hence why it&#8217;s easier to be a Six Sigma consultant than a Kanban one. Kanban you basically overlay on top of what you have and it surfaces the problems your existing process has pretty clearly. Meaning, if you see a bunch of cards on a Kanban board that are in the &#8220;Analysis&#8221; column, and very few in the rest, it&#8217;s pretty clear where the bottle neck is located.</p>
<p>Now the &#8220;process&#8221; part is analogous to the production line; in this case all that goes into making software from the traditional waterfall perspective: design, development, deployment. However, the key here is you aren&#8217;t fixing the &#8220;bottleneck&#8221;, but rather the process itself. That is what I learned through our Paper Airplane Factory exercise quite clearly. There are a series of games like this that can be modified, but the point is they help teach the bottleneck vs. process modification process extremely clearly.</p>
<p>The key takeaway for me was fixing the bottleneck, like the 5 developers + 1 manager in a war room during a troubling moment during a software project, is actually a form of waste. Yes, it&#8217;s great teams rise up to tackle these problems in the moment. However, it&#8217;s important to note that it&#8217;s the Project Manager&#8217;s job to both recognize this as waste and fix the actual process problem. I&#8217;ll explain this below.</p>
<p>Note: If you&#8217;re concerned about spoilers, please be aware of 2 things. First, there are more than just the airplane factory game that you can find online. Second, if you do read the following section and later participate in the exercise, please either let the teacher/presenter know, or try not to modify the process too much to allow others to learn.</p>
<p><strong>Airplane Factory</strong></p>
<p>The game is like so (abridged version, you can find the <a href="http://www.teachengineering.org/view_activity.php?url=collection/wst_/activities/wst_kanban/wst_kanban_activity1.xml">full instructions here</a>):</p>
<ol>
<li>Divide your people into 4 groups, each sitting adjacent to each other. Circle or semi-circular seating arrangements works best to encourage intentional bottleneck adjustment engagement.</li>
<li>Cut up the airplane folding instructions alone the designated lines.</li>
<li>Give the first part of the instructions to the first group in the line. Give the second part of the instructions to the second group, and repeat on down the line. Some people may not necessarily have designated jobs beyond passing papers, etc. This is intentional to illustrate the intellect waste of not using human IP&#8230; and also to note how they&#8217;ll often become efficient passers, helpers, or even QA.</li>
<li>Ensure the group/person who&#8217;s last in line is aware of how far the plane must fly as a metric of defining a successful plane.</li>
<li>Setup a 5 minute timer, start it, and yell &#8220;Go!&#8221;</li>
<li>After 5 minutes, identify how many successfully flown airplanes were made as well as how much waste (crumpled papers, non-flying planes, etc) were created. That&#8217;s the round 1 score.</li>
<li>Iterate.</li>
</ol>
<p>The iterate step is where you reflect on what just happened and attempt to modify the process. I&#8217;ll go over how ours went down so you get an idea.</p>
<p><strong>Round 1</strong></p>
<p><strong>Line Setup</strong>: We had 8 people in our line. Round 1, we had 1 lady do the half fold, the 2nd guy do the additional 2 folds + paper sides cut, Andrea and I pass the paper to our left, another lady handle the 1st wing folds, and a gentleman at the end to make the wings and throw it. Our last person was a lady who handled QA and scoring.</p>
<p><strong>Process</strong>: Very quickly we had a bottleneck with the lady at my stations left. The instructions weren&#8217;t very clear and she struggled to learn how to do the first one. Both Andrea and I quickly went to help; Andrea attempting to do it with her, me taking a picture of the instructions with my iPhone, and attempting to duplicate at my desk while ensuring I kept passing the planes to my left into an ever growing pile.</p>
<p>Once I figured it out (I had actually built the exact same plane last week for my daughters birthday present which has an electronic propeller you attach), I told the ladies to ignore the &#8220;requirements&#8221; as they were crap and I walked them through how to successfully complete their step. I then quickly returned to my desk which had a pile of unmoved inventory.</p>
<p>The only person who didn&#8217;t struggle with their assembly was the 1st in the line who had to fold paper in half.</p>
<p>I believe we ended up with 2 planes and 1 waste.</p>
<p><strong>Takeaway</strong>: Our teacher quickly pointed how we went &#8220;downstream&#8221; to fix the production line process. This is a reactionary, and completely normal mode, to fix production line problems. It&#8217;s also wrong. You&#8217;re supposed to identify the upstream problem causing it and fix that. Additionally, we didn&#8217;t stop the line to ensure we fixed this problem first before continuing, also wrong. Car companies like Toyota do this via a chain that&#8217;s pulled to stop the line so they can ensure the problem is resolved. Sometimes they even take part of their line off the main line to ensure things keep moving.</p>
<p>As a side note, apparently GM used to keep going. Door doesn&#8217;t fit right? Keep going; jam the mofo on there. They&#8217;d end up with a lot full of cars pretty quickly&#8230; even if they were low quality. Ford was similar, but they&#8217;d ensure the cars were actually sold first before they sold them, thus not resulting in lots full of inventory they couldn&#8217;t sell like GM&#8230; even if the quality of pre-sold cars was still low.</p>
<p>We also noted various other problems such as no training in each plane&#8217;s building instructions, no one stopping if the station after them go overwhelmed with their ever growing stack, and sometimes idle resources (people with not much to do).</p>
<p><strong>Round 2</strong></p>
<p><strong>Improvements</strong>: First, the teacher actually implemented designated stack areas with a piece of paper on each station, and then wrote a number on the paper; this was the max amount of completed planes you could place for the next station to build so you didn&#8217;t exacerbate a bottleneck.</p>
<p>Second, I become a designated passer to my left while my partner moved to the left station to have a 2 women team doing the complicated folding.</p>
<p><strong>Process</strong>: My job was pretty easy; pass, and ensure I don&#8217;t bottleneck it. Every single station was faster since they had practiced their portion. The guy to my right had actually done his first 3 paper cuts wrong in round 1 which caused confusion to my left station, but had it down pat in round 2. The last station still experimented with various angles of folding to see how far the plane could actually fly. We actually had the last women in the line, QA, send a messed up plane back through the line as an unfolded piece of paper because it didn&#8217;t fly right; w00t, less waste!</p>
<p>A bottleneck, again, formed to my left, but the girls found a way to divide up the 2 step process between them to be more efficient. As our 5 minutes progressed, they got faster and eventually started making progress on the backlog.</p>
<p>We made 5 planes, 1 waste.</p>
<p><strong>Takeaway</strong>: We built 4 planes with 1 waste. The first person, as usual, was too fast. The guy to my right had an inefficient process because he&#8217;d have to fold, pick up the scissors, cut, then put &#8217;em down again. We had all abandoned our airplane instructions by this point.</p>
<p><strong>Round 3</strong></p>
<p><strong>Improvements</strong>:Â Everything else was fine, so we decided to give me the cutting job and the guy to my right would just fold. The girls to my left on-the-fly modification was good and we kept it.</p>
<p><strong>Process</strong>: My first 3 were slow, but once I practiced, I was uber fast and we were humming. The girls to my left were killing it. I managed to keep my right stack always below or at 2 in the pile. Very quickly it became apparent the 1st person was too fast; she was constantly folding and then waiting before she was allowed to make another.</p>
<p>We made 8 airplanes, no waste.</p>
<p><strong>Takeaway</strong>: Those of with spouses were already getting texted like mad to leave, but we all WANTED to see Round 3 succeed better than 2, and see if we made the process perfect. We didn&#8217;t; it went the complete opposite direction to the front of the line needing minor modifications. Overall, though, our output increased a lot, our waste went down, and it was very clear that the adjustments we made + the teachers maximum stack amounts were working well.</p>
<p><strong>My Overall Takeaways</strong></p>
<p>I went to this meeting to both meet new people in town to network with as well as to get out of my comfort zone. I find when I do the latter, I learn a lot and sometimes get a new perspective. It gave me a new appreciation for Project Managers who have not just 1, but 5 projects they have to manage to make an attempt to do this on. This also assumes they get enough time to really learn about each teams issues, where those bottlenecks are, and what the best ways are to address them. NOT by just fixing the bottlenecks, but by fixing the process itself, ensuring stop guards are in place not as many items/cards in a column, etc.</p>
<p>It also made me intimately aware of how I, as a consultant, immediately want to fix the bottleneck, and have learned ways (such as the war room) to solve them&#8230; when in reality, it&#8217;s a PM issue for a greater process problem. The other thing that makes it more complex is the whole &#8220;all things being equal&#8221;. For example, a Kanban board a PM would use on the whole process vs. just the Kanban board my software team would use. If my team fails to do TDD and ends up with a variety of bugs in the system because we&#8217;re forced to develop quickly and produce bad work, this show up on hers as us being the bottleneck. Without time to talk to us and really empower us to change our process, nothing will change.</p>
<p>I see this time and time again. The excuses, which are sometimes valid, range from &#8220;the software&#8217;s good enough even with the bugs&#8221;, or &#8220;TDD is too much work for not enough value&#8221; or &#8220;we can&#8217;t write a test suite for a huge mess that isn&#8217;t even testable&#8221;. &#8230;and that&#8217;s just a small portion of what I&#8217;ve seen gone wrong. If you&#8217;ve ever worked for a design agency, or even a large firm that has a huge new client, it&#8217;s very apparent many teams have a hard time getting sign off from clients which causes a bottleneck in the analysis column on the Kanban board because the items either pile up, or priority constantly shifts&#8230; yet they never actually make it out of their column.</p>
<p>A PM there who works with the government offered his strategies for dealing with the strange QA cycles government agencies will have where it goes into a black hole for 6 weeks thus really screwing up his Kanban metrics.</p>
<p>Overall, it was neat to be in a room with people who were geeking out on improving process. You see a lot of software developers get bored with programming or frustrated with how their lack of process is going, so they read up on XP and Agile. When you look at what these PM&#8217;s deal with, it makes you feel like just a small part in a larger overall process.</p>
<p>More importantly, my preconceptions about leadership being the problem 99% of my problem projects really had a wrench thrown in. I was bitching about it to one of the PM&#8217;s, and quickly explained, in great detail, why some big companies which don&#8217;t have a hard line metric such as money to predict performance will often use Lean methodologies since &#8220;ensuring customer satisfaction&#8221; is hard to measure depending on your business, and requires a more exploratory way of doing business. That said, it was great to hear that the common problems I experience in software dev with solutions were the same, just 1 of many that PM&#8217;s have to deal with.</p>
<p>I highly encourage software developers to partake in one of these exercises, even if you do Scrum vs. Kanban. Really eye opening stuff.</p>
<p>&nbsp;</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
