<?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>limitedwipsociety.org &#187; Tim Wasson</title>
	<atom:link href="http://www.limitedwipsociety.org/tag/tim-wasson/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.limitedwipsociety.org</link>
	<description>The home of Kanban Systems for Software Engineering</description>
	<lastBuildDate>Thu, 19 Aug 2010 01:19:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Kanban turns around another project</title>
		<link>http://www.limitedwipsociety.org/2009/12/22/kanban-turns-around-another-project/</link>
		<comments>http://www.limitedwipsociety.org/2009/12/22/kanban-turns-around-another-project/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 13:30:56 +0000</pubDate>
		<dc:creator>kjscotland</dc:creator>
				<category><![CDATA[Karl Scotland]]></category>
		<category><![CDATA[Experience]]></category>
		<category><![CDATA[Tim Wasson]]></category>

		<guid isPermaLink="false">http://www.limitedwipsociety.org/?p=424</guid>
		<description><![CDATA[Tim Wasson posted the following Experience Report on the kanbandev list:
Since there has been a thread recently about what to do with a failing project, I&#8217;ll share my story:
I was hired into this situation:
3 full time devs, 1 part time dev
6 different codeignitor (php web app framework) applications, all hitting the same db, all stored [...]]]></description>
			<content:encoded><![CDATA[<p>Tim Wasson posted the following Experience Report on the <a href="http://finance.groups.yahoo.com/group/kanbandev/message/6461" target="_blank">kanbandev</a> list:</p>
<blockquote><p>Since there has been a thread recently about what to do with a failing project, I&#8217;ll share my story:</p>
<p>I was hired into this situation:<br />
3 full time devs, 1 part time dev<br />
6 different codeignitor (php web app framework) applications, all hitting the same db, all stored in a single 1GB svn repository<br />
Code written by offshore groups and multiple devs without coherent architecture<br />
Green team (oldest dev was 26)<br />
Fresh team &#8211; longest time here was 10 months, then 6 months, then 4 months, then 2 weeks.<br />
No processes of any sort</p>
<p>The &#8220;build&#8221; was going to be the be-all end-all attempt to fix all the design sins of the previous 12 months in just one month, while continuing to keep the business running with daily bill runs totalling about 20000 bills per month.  Some of the tickets for the release had complete descriptions consisting of &#8220;Decide how to clean up the database and do it&#8221;</p>
<p>Yeah&#8230;. riiiiiight.</p>
<p>The original release date had already passed when I came on board.<br />
85% of the tickets slated to be done in the release had not even been started.<br />
The devs were spending 60-90% of their day on &#8220;fires&#8221;</p>
<p>And management said &#8220;the build&#8221; HAD to be finished in December.</p>
<p>Yeah&#8230;. riiiight.  I wondered what I had gotten myself into.</p>
<p>One month later, we have dealt with 65 individual &#8220;fire&#8221; tickets, completed 24 planned tickets, and we will deliver a build that has the most important things the business needed, while reducing error rates on bills from 15% to less than 1%, and 2 of the devs have rolled off onto the next batch of prioritized tickets.</p>
<p>Here&#8217;s what I did:<br />
1. Got a white board<br />
2. Got stickies<br />
3. Make Kanban board with regular whiteboard pens.  Figured the process would change, so make it easy to change<br />
4. Started the morning meeting.<br />
5. Identified fires with pink tickets.<br />
6. Focused devs on one task at a time.  Told them they were not to think, plan, or meet with anyone about anything that wasn&#8217;t in work or in their immediate queue.<br />
7. Met with mgmt and convinced them of two things:  If we insist on getting everything in the build, it will not ship until february, and two, I can&#8217;t promise any dates.<br />
8. Had devs politely but firmly refer all questions from biz people to me.  The devs stopped giving anyone else answers.  Once bugging the devs is no longer effective, people stop doing it.  Told the business that if they want status, come to the morning meeting.  My guys were not going to answer status questions about tickets because that&#8217;s what the morning meeting was for.<br />
9. Arranged to handle all &#8220;you need to go change this in the db&#8221; type problems at one time right after the morning meeting.<br />
10. Convinced mgmt that we had to do a release in December of whatever we had in order to improve morale among the devs and the rest of the company.<br />
11.  Kept refusing to give a date for the first two weeks I was here.<br />
12. After two weeks, I gave a rough idea where I thought we might get to in the queue of tickets if we wanted to release on 12/15.</p>
<p>The biggest things that my devs have appreciated:<br />
1. Focus &#8211; only one ticket in work at any given time.<br />
2. Credit &#8211; Fixing fires is no longer just time the devs are supposed to eat in addition to their normal working hours.<br />
3. Horizon &#8211; They were buried under a mound of hundreds of &#8220;MUST HAVES &#8211; BLOCKER &#8211; CRITICAL &#8211; HIGH PRIORITY&#8221; tickets.  My devs only worry about tickets that are coming up in their queue.<br />
4. Traction &#8211; Moving the tickets at the morning meeting is a moral builder.  Seeing the stacks of fire tickets as real work that has been accomplished rather than things that prevented them from working has totally changed their attitude towards meeting the daily problems the business faces.<br />
5. Root Cause Troubleshooting &#8211; If a fire is important enough to fight, then we&#8217;re going to fight it.  We&#8217;re going to ask for good concrete examples, we&#8217;re going to track them down, we&#8217;re going to fix them, we&#8217;re going to get the testing that we need, we&#8217;re going to get the support from the business, and we&#8217;re going to put these things to bed.</p>
<p>So take it from me:</p>
<p>Kanban works.<br />
It is so much easier than Scrum.<br />
With Scrum you waste time arguing over how long a ticket will take, you waste time arguing over committing to this one last ticket for the release date, fires still don&#8217;t count as &#8220;real&#8221; work, and the tracking of hours and burndown chart turns into a timecard game each time I&#8217;ve seen it.  The hours and hours wasted making up numbers which will are guaranteed to be either too big or too small &#8211; it&#8217;s waste.  The sprint planning meetings are a beatdown.  You still feel pushed into promising dates when you don&#8217;t know.  With Scrum, daily changes in priority are a problem, adding and removing tickets is a problem, because now you have to re-check your dates, renegotiate everything.  That is almost all waste.</p>
<p>You can start Kanban tomorrow.  Just do it.  Learn as you do it.  Don&#8217;t be afraid to rewrite the process on the white board.  Mine changes about every 3 days.</p>
<p>Prioritize work<br />
Focus on one thing at a time<br />
Manage interruptions<br />
Create checklists, processes, and rituals<br />
Show progress</p>
<p>Funny story:  When I arrived, the devs were routinely going into the master database and modifying records throughout the day in response to various emails from company people.  This was leading directly to database replication problems, data corruption, and a willingness to continue to fix the data instead of fixing the code.</p>
<p>The entire business was upset that their database was unstable, but was contributing to that with constant requests to just fix the data.  I decided to make touching the master database a bit more expensive:  I created a &#8220;Database Ceremony&#8221; &#8211; In order to touch the master database, three people would be required to participate: me, the developer, and the business person who wants the change, must all participate.  First, we read the famous &#8220;Holy Hand Grenade of Antioch&#8221; passage from the &#8220;book of armaments&#8221; from Monty Python&#8217;s Quest for the Holy Grail.  I have a special round glass decanter that we take out of a special box, and we put on the desk with us.  Then we recite the reading aloud together.  Then we carefully log each and every query, check the numbers as we go, and at then end we say &#8220;amen&#8221; and we print the log, it becomes another &#8220;chapter&#8221; in our own 3-ring binder &#8220;book of armaments&#8221;, and we put the decanter back in the box.</p>
<p>Yes, it&#8217;s silly and unprofessional. So is messing with your master database all the time.  If a biz person really needs the change, we&#8217;re perfectly happy to do it, but they&#8217;re going to recite Monty Python with the geeks.  And using direct sql in your master database is like the holy hand grenade:  a powerful weapon, useful and appropriate at certain times, but one to be used with an attitude of care and reverence.</p>
<p>But there is a sound psychological reason behind this:  Reading the passage aloud puts us all in to a frame of mind that something important is going on, and the beginning and the end of it signify a period in which we must be extra careful  The attendees are recorded in the log as well, so there is accountability that we actually changed the data that the business wanted changed.  The standard for the log is simple:  You must show ALL your work in the master db.  Do selects and prove that the record you want to change is the right one, then change it, then prove it changed.  The log must allow us to restore the db to a proper condition if needed.</p>
<p>I must admit that after a database ceremony, when I put the decanter back into the box and close the lid, I do breath easier because I know the db is safe and sound.  And there is a &#8220;lean&#8221; angle to this as well:  The decanter on the desk is an Andon showing that the group is engaged in a particular unusual activity.</p>
<p>Anyway, sorry for the long post.</p>
<p>Tim</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://www.limitedwipsociety.org/2009/12/22/kanban-turns-around-another-project/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
