<?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>bigvisible.com &#187; Alex Singh</title>
	<atom:link href="http://www.bigvisible.com/author/asingh/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.bigvisible.com</link>
	<description></description>
	<lastBuildDate>Sun, 18 Jul 2010 14:10:55 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>A is A</title>
		<link>http://www.bigvisible.com/asingh/a-is-a/</link>
		<comments>http://www.bigvisible.com/asingh/a-is-a/#comments</comments>
		<pubDate>Sun, 01 Jun 2008 01:58:03 +0000</pubDate>
		<dc:creator>Alex Singh</dc:creator>
				<category><![CDATA[Agile Adoption]]></category>
		<category><![CDATA[Agile Coaching]]></category>
		<category><![CDATA[change truth A-is-A]]></category>

		<guid isPermaLink="false">http://www.bigvisible.com/?p=81</guid>
		<description><![CDATA[
Abraham Lincoln used to ask a riddle: &#8220;If you call a tail a leg, how many legs does a dog have?&#8221;
Answer: Four, because calling it a leg doesn&#8217;t make it a leg.

As a change consultant you have the difficult task of unmasking and presenting reality as it really is. This may involve the removal of [...]]]></description>
			<content:encoded><![CDATA[<p><!--StartFragment--></p>
<p class="MsoNormal"><span>Abraham Lincoln used to ask a riddle: &#8220;If you call a tail a leg, how many legs does a dog have?&#8221;</span></p>
<p class="MsoNormal"><span>Answer: Four, because calling it a leg doesn&#8217;t make it a leg.</span></p>
<p class="MsoNormal"><span id="more-81"></span></p>
<p class="MsoNormal"><span>As a change consultant you have the difficult task of unmasking and presenting reality as it really is. This may involve the removal of blinders that people have over their eyes. This also means that people have to be taught that simply wishing for things or saying things doesn&#8217;t make it so.</span></p>
<p class="MsoNormal"><span>Telling people how things really are can land you into hot waters a few times. There&#8217;s something to be said about being tactful and pragmatic, but there are times when you have to say it as it is and lay it all on the line. The question to ask yourself is: &#8220;Am I here to just collect a pay check or to make a real difference?&#8221; If it is the former, there is not much chance that you&#8217;ll expose faulty thinking or organizational dysfunctions, stir up the pot, or stick your neck out. You&#8217;ll also not make much of a difference. Change agents who want to make a difference may end up getting their head chopped-off once in a while but in the long run the successes will far outweigh the failures.</span></p>
<p class="MsoNormal">I&#8217;ve had a few instances where I&#8217;ve had to say &#8220;A is A&#8221; — a thing is what it is — to senior management. I&#8217;ve had my head handed to me on a platter only once; the other times the clients actually appreciated the forthrightness and the rewards (satisfaction in causing big changes, bigger contracts) far outweighed the risks. My sense is that most people want to do the right thing; sometimes, they just need to be jolted out of their current mode of thinking.</p>
<p class="MsoNormal">In the software development field, the thing I really like about Agile is that it reveals problems and dysfunctions and forces you to either acknowledge the problem and fix it or to cover your eyes and hope it goes away. People&#8217;s responses to these difficult situations (exposing the naked truth) help you quickly distinguish those who talk a great game from those who actually walk the talk. These situations also help you determine if you are really going to make a lasting change in the organization or if you are simply wasting your time and postponing the inevitable. Some might say that, &#8220;A dead ScrumMaster is a useless ScrumMaster&#8221;. To that all I have to say is that sometimes you just have to realize that even though you may not be technically dead, you are pretty useless anyway.</p>
<p><!--EndFragment--> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bigvisible.com/asingh/a-is-a/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Determining Actors and Defining Back-end Stories</title>
		<link>http://www.bigvisible.com/asingh/determining-actors-and-defining-back-end-stories/</link>
		<comments>http://www.bigvisible.com/asingh/determining-actors-and-defining-back-end-stories/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 16:54:15 +0000</pubDate>
		<dc:creator>Alex Singh</dc:creator>
				<category><![CDATA[Agile Coaching]]></category>
		<category><![CDATA[actors]]></category>
		<category><![CDATA[writing stories]]></category>

		<guid isPermaLink="false">http://www.bigvisible.com/?p=64</guid>
		<description><![CDATA[Last year I was involved in rescuing the delivery of an Educational Loan Servicing system for a couple of state education departments (the trials and tribulations in another blog). Like a number of projects in the Financial, Insurance, and Investment Banking industry, this project involved a significant number of back-end batch processes.
There were a few [...]]]></description>
			<content:encoded><![CDATA[<p class="MsoNormal">Last year I was involved in rescuing the delivery of an Educational Loan Servicing system for a couple of state education departments (the trials and tribulations in another blog). Like a number of projects in the Financial, Insurance, and Investment Banking industry, this project involved a significant number of back-end batch processes.</p>
<p class="MsoNormal">There were a few problems that the teams faced when attempting to discover the stories:</p>
<ol>
<li><!--[if !supportLists]-->There was minimal user interface and it wasn&#8217;t readily apparent who the users were for these back-office applications.</li>
<li><span style="Symbol;"></span><!--[endif]-->The team was at a loss on how to define the stories. Most of the stories by themselves provided no benefit — determining business value was difficult.</li>
</ol>
<p class="MsoNormal">Let&#8217;s tackle these two separately.</p>
<p class="MsoNormal"><span id="more-64"></span></p>
<h2>Determining Actors</h2>
<p class="MsoNormal">A number of people think of users solely as people. The problem with equating users with people is that the resulting stories are often too big to fit in an iteration and are better classified as epics. The problem of decomposing epics into smaller stories that are defined from a user&#8217;s (person) perspective and that provide business value frequently gets teams wrapped around the axle.</p>
<p class="MsoNormal">The trick is to realize that it is OK to have users who are not people. We can use the RUP concept of an actor to our advantage here.</p>
<p class="MsoQuote">An &#8220;actor&#8221; is anything with behavior, including the System Under Discussion (SuD) when it calls upon the services of other systems. Actors are roles played not only by people, but by organizations, software, and machines. — Craig Larman</p>
<p class="MsoNormal">Craig differentiates between three types of actors:</p>
<ol>
<li><!--[if !supportLists]-->Primary actor: has user goals fulfilled via the SuD&#8217;s services</li>
<li><!--[if !supportLists]--><span><span><span style="none;"> </span></span></span><!--[endif]-->Secondary actor: provides a service to the SuD, e.g., external credit card authorization service</li>
<li><!--[if !supportLists]--><span><span><span style="none;"> </span></span></span><!--[endif]-->Supporting actor: has an interest in the behavior of the use case (or epic) but is neither primary nor secondary, e.g., government tax agencies.</li>
</ol>
<p class="MsoNormal">Actors can be identified by asking questions like:</p>
<p><!--[if !supportLists]--></p>
<ul>
<li><span style="Symbol;"><span>Who uses the system (SuD)?</span></span></li>
<li><span style="Symbol;"><span>Who starts and stops the system?</span></span></li>
<li><span style="Symbol;"><span>Who does system administration?</span></span></li>
<li><span style="Symbol;"><span>Who does user and security management?</span></span></li>
<li><span style="Symbol;"><span>Is there a monitoring process that restarts the system on failure?</span></span></li>
<li><span style="Symbol;"><span>Who evaluates system activity and performance?</span></span></li>
<li><span style="Symbol;"><span>Who evaluates system logs? Are these remotely retrieved?</span></span></li>
<li><span style="Symbol;"><span>Who gets paged on errors or failures?</span></span></li>
<li><span style="Symbol;"><span>Do other systems call on the SuD to do their work?</span></span></li>
<li><span style="Symbol;"><span>Does the system do something in response to a time event? If so, then Time is an actor.</span></span></li>
</ul>
<p class="MsoNormal">Identifying the actors and determining their goals allows us to better decompose the stories.</p>
<h2>Defining Stories</h2>
<p class="MsoNormal">The loan servicing system involved the creation, transformation, and transfer of a number of file types. These file types had multiple record types within them. The data was exchanged between schools, loan providers, loan guarantors, loan servicers, endorsers, and employers not to mention the students and their parents. These files were often batched for processing, though the desire was to move to &#8220;real-time&#8221; processing sometime in the future.</p>
<p class="MsoNormal">The team initially created stories for each step of the loan origination process, like so:</p>
<p><!--[if !supportLists]--></p>
<ul>
<li><span style="Symbol;"><span>Create Stafford Loan from CL4 App/Send</span></span></li>
<li><span style="Symbol;"><span>Create Stafford Loan from CL5 App/Send</span></span></li>
<li><span style="Symbol;"><span>Create Stafford Loan from CRC</span></span></li>
<li><span style="Symbol;"><span>Validate Loan information for Stafford Loan</span></span></li>
<li><span style="Symbol;"><span>Validate Enrollment information for Stafford Loan</span></span></li>
<li><span style="Symbol;"><span>Validate Borrower information for Stafford Loan</span></span></li>
<li><span style="Symbol;"><span>Search for Loan</span></span></li>
<li><span style="Symbol;"><span>Search for Disbursement(s)</span></span></li>
<li><span style="Symbol;"><span>Search for School</span></span></li>
</ul>
<p class="MsoNormal">The way the team approached the work caused a number of issues:</p>
<ul>
<li><!--[if !supportLists]-->Most of the stories were not independent; the team discovered for example that updating a loan from one type of record was very similar to updating it from another. So which story gets the bulk of the work?</li>
<li><!--[if !supportLists]--><span style="Symbol;"><span>T</span></span>he team also noticed that if one type of creation story was overestimated, all the creation stories were likely overestimated. After a few iterations, the team really couldn&#8217;t say how much work actually remained.</li>
<li><!--[if !supportLists]--><span style="Symbol;"><span>T</span></span>he team started working on the creation stories and after a half-dozen iterations realized that they had produced nothing of value; there wasn&#8217;t anything complete end-to-end. They had started working layer-by-layer instead of trying to build threads through the system.</li>
</ul>
<p class="MsoNormal">A better approach would have been to decompose the epics in a manner that ensured that the resulting stories would adhere to the INVEST criteria (Independent, Negotiable, Valuable, Estimable, Sized appropriately, Testable).</p>
<h3>Split by File Type</h3>
<p class="MsoNormal">For example, an epic like &#8220;<em>As a loan originator, I want to receive a correctly formatted Stafford Loan application so that I can process the loan request.</em>&#8221; could be decomposed by the types of files that contain the loan information:</p>
<ul>
<li><!--[if !supportLists]-->Create Stafford Loan from CL4 App/Send files</li>
<li>Create Stafford Loan from CL5 App/Send files</li>
<li>Create Stafford Loan from CRC files</li>
<li>Create Stafford Loan from CAM files</li>
</ul>
<p class="MsoNormal">The backlog would have similar stories for creating other types of Loans: Federal Parent Loan for Undergraduate Student (PLUS loans), GRAD-PLUS loans, etc.</p>
<h3>Split by Type of Information within the File</h3>
<p class="MsoNormal">The stories mentioned above are too big to process in an iteration and need to be split further. An option is to do this by the type of formatting of the records in the file.</p>
<p><!--[if !supportLists]--></p>
<ul>
<li><span style="Symbol;"><span>As a loan servicer, I want to generate a CL4 file with the correct header information so that I can route the file correctly.</span></span></li>
<li><span style="Symbol;"><span>As a loan originator, I want to receive a CL4 file with the correct header information so that I can process the file correctly.</span></span></li>
<li><span style="Symbol;"><span>As a loan originator, I want to receive a CL4 file with correctly formatted Borrower Detail records (CL4 @1-02) so that I can process those correctly.</span></span></li>
<li><span style="Symbol;"><span>As a loan originator, I want to receive a CL4 file with correctly formatted Loan entry records (CL4 @1-07) so that I can process them correctly.</span></span></li>
<li><span style="Symbol;"><span>As a loan originator, I want to receive a CL4 file with correctly formatted Sub/Unsub Reallocation Loan Decrease records (CL4 @1-13) so that I can process them.</span></span></li>
<li><span style="Symbol;"><span>As a loan originator, I want to receive a CL4 file with correctly formatted Post-Withdrawal Return/Refund records (CL4 @1-28) so that I can refund funds.</span></span></li>
<li><span style="Symbol;"><span>And so on and so forth</span></span></li>
</ul>
<p class="MsoNormal">The backlog would have similar stories for creating Stafford Loans from other file types: CL5, CRC, CAM.</p>
<h3>Split by Data Filters</h3>
<p class="MsoNormal">Different Actors have different expectations of what data (transactions) is in the file. Some want data for the past week, some for the past 24 hours, some from specific sources, etc. To account for this, we can split based on time periods selected.</p>
<ul>
<li><!--[if !supportLists]--><span style="Symbol;"><span>As Aggieland Credit Union (a loan originator), I want to receive a CL4 file with only the last week of data.</span></span></li>
<li><span style="Symbol;"><span>As Education Finance Partners of New Mexico (a loan originator), I want to receive a CL4 file twice a month.</span></span></li>
<li><span style="Symbol;"><span>As First National Bank of Central Texas (a loan originator), I want to receive a CL4 file with only updates made in the last 5 business days.</span></span></li>
</ul>
<h3>Split by Scheduling</h3>
<p class="MsoNormal">Stories can be created based on schedules. For example, real-time processing versus end-of-day processing.</p>
<ul>
<li><!--[if !supportLists]--><span style="Symbol;"><span><span style="none;"> </span></span></span><!--[endif]-->As Aggieland Credit Union, I want to receive a CL4 file between 8:00 p.m. CST and 8:30 p.m. CST.</li>
</ul>
<p class="MsoNormal">&#8220;Post-Office&#8221; stories that deal with routing and file transfers could be another batch of stories.</p>
<h2>Order of Stories</h2>
<p class="MsoNormal">Even with this splitting-up of stories it is critical that the team select stories wisely. Remember that you want to: deliver quick increments of value and exercise the system end-to-end as soon as possible.</p>
<p class="MsoNormal">Stories selected should attempt to build threads through the system; don’t tackle all the file generation stories, then all the validation stories, then all the dissemination stories. Instead, choose a file type and record type and try to build that one through. Don’t worry about alternatives initially; just get the happy-path done quickly. Implement the alternate paths next to make the functionality robust.</p>
<h2>What Not to Do</h2>
<p class="MsoNormal">Do not split along process lines.</p>
<ol>
<li><!--[if !supportLists]--><span><span>Design the thing</span></span></li>
<li><span><span>Code it</span></span></li>
<li><span><span>Write unit tests</span></span></li>
<li><span><span>Write acceptance tests</span></span></li>
<li><span><span>Document the design and implementation details</span></span></li>
</ol>
<p class="MsoNormal">This doesn&#8217;t work very well as none of the five items produces value by themselves.</p>
<p class="MsoNormal">Don’t split across architectural lines either.</p>
<p class="MsoNormal"><!--[if !supportLists]--></p>
<ol>
<li>Design</li>
<li>Code the UI</li>
<li>Implement the business logic</li>
<li>Implement the data layer</li>
<li>Write acceptance tests</li>
<li>Document the design and implementation details</li>
</ol>
<p class="MsoNormal">The items by themselves don’t provide value and like waterfall projects, integration is pushed to the end instead of attempting it earlier.</p>
<h2>Helpful Tools and Additional Information</h2>
<p class="MsoNormal">Irrespective of how the stories were created, the teams in this case very quickly realized that use of a tool like Fitnesse was crucial. It allowed the teams to mock up files and records that they could develop against and use for automated functional testing.</p>
<ul>
<li>Unlike requirements captured in large formal documents, Fitnesse based requirements are executable.</li>
<li>Execution results are concrete — tests either pass or fail, thereby providing a true indicator of feature and project status.</li>
<li>Tests can be used as a starting discussion point for iteration planning — tests are demonstrable.</li>
<li>Fitnesse provided independence from a database</li>
<ul>
<li>Database state changes can make testing difficult — testers must revert to the initial state of the database after changes.</li>
<li>Testing hard to find situations (in real-time databases) becomes easier as data is manually setup.</li>
<li>Executing hundreds and thousands of tests can become slow if accessing data from a database. This makes quick feedback, which is highly desirable, impossible.</li>
</ul>
<li>Processes can be tested via workflow tests</li>
</ul>
<p class="MsoNormal">Good places to get additional information are Craig Larman’s, “<em>Applying UML and Patterns</em>” for a discussion on actors and their goals and Mike Cohn’s, “<em>User Stories Applied</em>” for guidance on writing good user stories. Fitnesse related information can be obtained from Rick Mugridge and Ward Cunningham’s “<em>Fit for Developing Software: Framework for Integrated Tests</em>” and from <a href="http://www.fitnesse.org/">http://www.fitnesse.org/</a> and <a href="http://fitnesse.info/start">http://fitnesse.info/start</a>.</p>
<p class="MsoNormal">
]]></content:encoded>
			<wfw:commentRss>http://www.bigvisible.com/asingh/determining-actors-and-defining-back-end-stories/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Hiring the right people</title>
		<link>http://www.bigvisible.com/asingh/hiring-the-right-people/</link>
		<comments>http://www.bigvisible.com/asingh/hiring-the-right-people/#comments</comments>
		<pubDate>Thu, 10 Apr 2008 16:13:22 +0000</pubDate>
		<dc:creator>Alex Singh</dc:creator>
				<category><![CDATA[Agile Adoption]]></category>
		<category><![CDATA[Agile teams]]></category>
		<category><![CDATA[hiring]]></category>
		<category><![CDATA[traits]]></category>

		<guid isPermaLink="false">http://www.bigvisible.com/asingh/hiring-the-right-people/</guid>
		<description><![CDATA[General Colin Powell in his Leadership Primer says that:
&#8220;Organization doesn&#8217;t really accomplish anything. Plans don&#8217;t accomplish anything, either. Theories of management don&#8217;t much matter. Endeavors succeed or fail because of the people involved. Only by attracting the best people will you accomplish great deeds.&#8221;
So, how do you attract and choose the best people to work [...]]]></description>
			<content:encoded><![CDATA[<p>General Colin Powell in his <a href="http://www.superfactory.com/articles/powell_leadership.htm" title="Leadership Primer">Leadership Primer</a> says that:</p>
<blockquote><p>&#8220;Organization doesn&#8217;t really accomplish anything. Plans don&#8217;t accomplish anything, either. Theories of management don&#8217;t much matter. Endeavors succeed or fail because of the people involved. Only by attracting the best people will you accomplish great deeds.&#8221;</p></blockquote>
<p>So, how do you attract and choose the best people to work in your organization? What are the qualities that you look for when hiring people &#8211; is it the length of their resume, their past positions, their degrees or where they obtained them? Is it their familiarity and expertise with the specific technology or domain that the company needs at the moment?</p>
<p><span id="more-62"></span>While I consider their ability to do the work required to be important, I weight factors other than technical knowledge far higher. Technical knowledge and ability to learn new related skills is a threshold trait that just gets them the interview.</p>
<p>What I am really looking for in a candidate are qualities like enthusiasm, drive, and motivation &#8211; remember the adage that the team is only as strong the least motivated individual. I look for people who accept responsibility to get things done and don&#8217;t waste their time bitching and moaning about others and the circumstances they were in. Ultimately, a person&#8217;s talent is immaterial if he doesn&#8217;t have the desire to get things done. Equally important is the person&#8217;s ability to execute and not just talk a great game; don&#8217;t assume that if someone can think and plan and sell their idea that they can also execute and deliver.</p>
<p>A willingness to do new things is critical &#8211; generalizing specialists are more versatile than specialists and can contribute in more areas. How often have you had to deal with people who think of themselves as one specific role (for example, I am an Architect and that&#8217;s what I do)? That sort of thinking is really counter to the Agile way. It reduces flexibility in scheduling projects, exacerbates the functional silo mentality, and encourages department managers to optimize their function often to the detriment of the whole. Keep in mind that a team members job is to get the product out the door not to do just development, or just testing, or just requirement gathering.<br />
You also want to hire people who can organize and plan their work and then execute it properly. If you don&#8217;t pay attention to this you end up hiring people that require constant baby-sitting and you end up doing most of their work anyway. If they demonstrate good judgment and an ability to anticipate problems so much the better.<br />
Last but not least, look for people who are able to collaborate and work closely with others. I don&#8217;t want &#8220;team players&#8221; who just go along with everyone; I like people who are willing to express their opinions and disagreements but who also have an open mind to take in new information and reconsider their position if need be.</p>
<p>People with the right attitude are far more productive and easier to work with than prima donnas who just excel in one narrow activity. People with the right attitude can pick up additional skills fairly easily; training someone without these skills is far harder.<br />
Ask the candidate to describe the accomplishment that they are most proud about. Then ask probing questions and listen for clues to the above in their responses. Also, ask what they would do once they got the job; their responses will let you know whether they have thought out a plan and how they would execute once on the job.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bigvisible.com/asingh/hiring-the-right-people/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Instilling a Sense of Urgency</title>
		<link>http://www.bigvisible.com/asingh/instilling-a-sense-of-urgency/</link>
		<comments>http://www.bigvisible.com/asingh/instilling-a-sense-of-urgency/#comments</comments>
		<pubDate>Mon, 07 Apr 2008 15:13:01 +0000</pubDate>
		<dc:creator>Alex Singh</dc:creator>
				<category><![CDATA[Agile Adoption]]></category>
		<category><![CDATA[Agile Coaching]]></category>
		<category><![CDATA[change]]></category>
		<category><![CDATA[Oz Principle]]></category>
		<category><![CDATA[Responsibility Process Model]]></category>
		<category><![CDATA[RPM]]></category>
		<category><![CDATA[urgency]]></category>

		<guid isPermaLink="false">http://www.bigvisible.com/asingh/instilling-a-sense-of-urgency/</guid>
		<description><![CDATA[When people ask for “a sense of urgency” or “ownership” what they are really saying is “show me that you care about delivering this as much as I do”. Here are a few suggestions in an Agile context in no particular order of importance:

Schedule the end of iteration demonstrations for the next 6-12 months &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>When people ask for “a sense of urgency” or “ownership” what they are really saying is “show me that you care about delivering this as much as I do”. Here are a few suggestions in an Agile context in no particular order of importance:</p>
<ul>
<li>Schedule the end of iteration demonstrations for the next 6-12 months &#8211; highly visible deadlines prevent teams from over-engineering solutions.</li>
<li>Hold team members collectively accountable for team performance and for fulfilling job responsibilities. When things do not get delivered it is the team that has failed &#8211; freeloaders or those who are completely unsuited for the job will usually not be tolerated by high performing teams for long.</li>
<li>A team’s performance is limited by the least invested individual. Such people dampen everyone&#8217;s morale and it is essential to quickly counteract people who habitually over-promise, make excuses, reject responsibility, complain, and lack commitment. While some skepticism up-front is healthy, perpetual grousing is not. To counter this, it is essential to clearly define and communicate behavioral expectations up-front and the consequences of not changing (if any).</li>
<li>Clearly define and communicate expectations for decision-making including span of control and scope. This is to ensure that the team is not waiting around to be told what to do next.</li>
<li>Require teams to develop corrective action plans for performance that is not meeting goals.</li>
<li>Set a good example by promptly responding to questions, concerns, and escalated problems. Clearly communicate time frames for follow-up and consistently follow-up within these time frames.</li>
<li>Help team members separate facts from emotional baggage.</li>
<li>Recognize individuals and teams that respond with urgency.</li>
<li>Discuss Chris Avery&#8217;s <em><a href="http://www.responsibilityredefined.com/">Responsibility Process Model</a></em> or Roger Conners&#8217; <em><a href="http://www.ozprinciple.com/">Oz Principle</a></em> early in the transition process and refer to either at appropriate junctures.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.bigvisible.com/asingh/instilling-a-sense-of-urgency/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Lean software development at current client</title>
		<link>http://www.bigvisible.com/asingh/lean-software-development-at-current-client/</link>
		<comments>http://www.bigvisible.com/asingh/lean-software-development-at-current-client/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 04:12:10 +0000</pubDate>
		<dc:creator>Alex Singh</dc:creator>
				<category><![CDATA[Product Development]]></category>
		<category><![CDATA[lean software development]]></category>

		<guid isPermaLink="false">http://www.bigvisible.com/asingh/lean-software-development-at-current-client/</guid>
		<description><![CDATA[I recently got invited back, for the third time, by a client in the &#8220;Leisure, Travel &#38; Tourism&#8221; industry to develop applications for their Cruise business. I play the role of an Engagement Manager and Business Demand Manager, whereby I am responsible for business idea harvesting and business idea vetting for the client
In the past [...]]]></description>
			<content:encoded><![CDATA[<p>I recently got invited back, for the third time, by a client in the &#8220;Leisure, Travel &amp; Tourism&#8221; industry to develop applications for their Cruise business. I play the role of an Engagement Manager and Business Demand Manager, whereby I am responsible for business idea harvesting and business idea vetting for the client</p>
<p>In the past two years, this client has moved from a crappy Agile implementation to doing Agile the right way to implementing a lean software development system. They have taken the concept of smaller batches, removal of waste, and continuous flow of value to heart.<br />
<span id="more-60"></span></p>
<p>A common problem in many organizations is that business often pushes projects into an IT organization faster than IT can complete projects. Some of those projects simply accumulate within the organization, become work in process, and slow down the system. To counter this problem, the business at this client ensures that they do not overfill the hopper and clog the system (IT).</p>
<p>It is all well and good to make sure that wasteful activities are being removed from the development process; it is another to make sure that the right projects are being worked on.</p>
<p>As part of the initial engagement, the Product Owners and I go through the complete wish list to determine the cost and benefit of each of the projects or enhancement requests. As an example, there were 55 line items in their 2008 Value Stream Analysis spreadsheet; most will never see the light of day as their relative ROI is poor compared to the others on the list.</p>
<p>Funding is asked for and approved based on the work done in this joint session. Only projects that meet a certain ROI threshold are approved. Project funding is denied if there are questions surrounding the ability to meet the targeted ROI. The benefits are evaluated 6-12 months after a project is delivered; shortfalls are analyzed in an effort to learn and to not repeat the same mistake.</p>
<p>The modus operandi is unlike that in most agile implementations that you see elsewhere. There are no iterations; instead, requirements in the form of stories are pulled by the team as they complete the stories that they have been working on. The Product Owners and I make sure that the backlog is always kept prioritized and that the top of the list is well thought out and defined.</p>
<p>The team is not collocated with the Product Owners — instead, most communication occurs via Skype and GoToMeeting. This actually works remarkably well for explaining the stories, clarifying issues, and demonstrating completed work.</p>
<p>Iteration planning is replaced by Skype and GoToMeeting sessions between the team and the Product Owners just prior to the start of that story. The team picks up a story or two from the top of the prioritized backlog and calls the Product Owners to discuss and ask for clarifications. The teams break up a larger story into smaller stories if necessary and begins test driven development.</p>
<p>Informal demos happen as the story is being worked on (and an interesting portion has been implemented) and when it is finished. There is no formal end-of-iteration demonstration. Feedback is incorporated immediately and the story re-demonstrated. Once the Product Owners are satisfied with the story, it is ready to be moved into the QA environment; promotions to Production happen every week.</p>
<p>The teams working for this client are significantly more productive than other comparable teams following the standard Agile way of developing in 2-week iterations. I think this increased productivity is due to the increased focus on a story or two at a time, quicker feedback and turnaround, minimization of in-iteration overhead, and continuous effort for removal of wasteful activities.</p>
<p>While this level of fluidity is more than what most new Agile teams can handle, they can still attempt to implement some of the practices that lead to a continuous flow of value. Story boards can provide a quick indication of and help regulate the amount of work in progress. Frequent demonstrations can speed up delivery and make the end-of-iteration demonstrations a breeze.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bigvisible.com/asingh/lean-software-development-at-current-client/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Breaking Agile Rules!</title>
		<link>http://www.bigvisible.com/asingh/breaking-agile-rules/</link>
		<comments>http://www.bigvisible.com/asingh/breaking-agile-rules/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 00:37:48 +0000</pubDate>
		<dc:creator>Alex Singh</dc:creator>
				<category><![CDATA[Agile Coaching]]></category>

		<guid isPermaLink="false">http://www.bigvisible.com/asingh/breaking-agile-rules/</guid>
		<description><![CDATA[I recently encountered a situation where we had three development teams working on the same product. Two separate clients that were supposed to act as one had jointly financed the project and were planning to individually sell it to educational institutions in their respective states (Texas and New Mexico). Needless to say the goal of [...]]]></description>
			<content:encoded><![CDATA[<p>I recently encountered a situation where we had three development teams working on the same product. Two separate clients that were supposed to act as one had jointly financed the project and were planning to individually sell it to educational institutions in their respective states (Texas and New Mexico). Needless to say the goal of acting as one never happened and conflicting requirements became the norm. Conversations were not working as the clients could not agree amongst themselves; prioritization wasn&#8217;t working as the clients had different short-term needs and were afraid that the other client&#8217;s needs would be given preference.</p>
<p><span id="more-59"></span>The Product Owners produced stories that followed the: &#8220;As an [actor], I have to do [action] to cause [effect] in order to achieve [business goal]&#8221; format. But this did little good for the team as they are not collocated and had a difficult time getting clarifications and details from the Product Owners. The result was significant in-iteration thrashing and a velocity that was close to negligible.</p>
<p>A &#8220;Come to Jesus&#8221; meeting, where being brutally honest about the observed behavior and its impact on the teams and on project progress, helped change the dynamics. Of course, losing the clients was a very real possibility but it was worthwhile taking the risk &#8212; we weren&#8217;t making any headway the way we were operating.</p>
<p>To reduce requirements churn, we decided that before the start of an iteration, candidate stories must meet the following criteria if they were to be scheduled for the upcoming iteration:</p>
<ol>
<li>Stories defined in the Agile project management tool</li>
<li>Acceptance criteria specified</li>
<li>Fitnesse tests / executable requirements specified</li>
<li>UI design/storyboards completed</li>
<li>Applicable business rules listed and referenced or defined</li>
<li>Non-functional requirements specified</li>
<li>Assumptions and constraints specified</li>
<li>In/out of scope delineated</li>
<li>Test data / sample files provided</li>
</ol>
<p>This level of upfront definition for a story before the start of an iteration is definitely an overkill in most situations. But Agile is all about &#8220;the art of the possible&#8221; to get the job done; it just made sense to go counter to an important Agile principle (customer collaboration and face-to-face conversations) to get things back on track.</p>
<p>What ultimately matters is a pragmatic outlook &#8212; sometimes you have to bend the rules or even break them to move forward. A good coach can guide you during these rare but crucial moments.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bigvisible.com/asingh/breaking-agile-rules/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RUP isn&#8217;t agile but some of its principles are worthwhile</title>
		<link>http://www.bigvisible.com/asingh/rup-isnt-agile-but-some-of-its-principles-are-worthwhile/</link>
		<comments>http://www.bigvisible.com/asingh/rup-isnt-agile-but-some-of-its-principles-are-worthwhile/#comments</comments>
		<pubDate>Sun, 06 Apr 2008 00:32:21 +0000</pubDate>
		<dc:creator>Alex Singh</dc:creator>
				<category><![CDATA[Agile Adoption]]></category>
		<category><![CDATA[Agile Coaching]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[coaching]]></category>
		<category><![CDATA[RUP]]></category>

		<guid isPermaLink="false">http://www.bigvisible.com/asingh/rup-isnt-agile-but-some-of-its-principles-are-worthwhile/</guid>
		<description><![CDATA[Why RUP isn&#8217;t Agile?
I work with a number of people who come from a RUP background and who claim that RUP is Agile because RUP calls for iterative development. While a cursory reading of RUP literature may show that the RUP framework doesn&#8217;t really mandate anything — it is a framework not a process — [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Why RUP isn&#8217;t Agile?</strong></p>
<p>I work with a number of people who come from a RUP background and who claim that RUP is Agile because RUP calls for iterative development. While a cursory reading of RUP literature may show that the RUP framework doesn&#8217;t really mandate anything — it is a framework not a process — and leaves things up to the team and organization, it&#8217;s spirit couldn&#8217;t be further from Agile. I just have a hard time reconciling some of  the ideas behind RUP to Agile values and principles</p>
<p><span id="more-58"></span>Consider the following:</p>
<p>RUP is predictive and calls for component based architecture, use of use cases for specifying requirements, and UML as the language for specifying design.</p>
<p>While RUP proponents may claim that official RUP literature doesn&#8217;t really mandate that use cases are the only way to specifying requirements, every explanation, presentation, or book always depicts RUP as use case driven. They also contain diagrams that mention the percentage of the use case model that should be completed by the end of each phase of the RUP. Moreover, the official documentation cleary states that &#8220;The Rational Unified Process is a use-case-driven approach&#8221; and the entire set of documentation refers to use cases and the use case model — use cases play a major role in several of the critical process workflows.</p>
<p>RUP calls for iterative development within a waterfall process. It does not aim for frequent releases at the end of each iteration; releases are done at the end of a transition phase after cycling through the Inception, Elaboration, Construction, and Transition phases, each of which is composed of multiple iterations. It basis reeks of Waterfall development — gather requirements, design, implement, and transition to production.</p>
<p>RUP encourages granular division of labor where specialists hand off documents to one another at specific points in the process. Their roles depend on the quality of documentation to guide their work. Agile teams look for generalizing specialists and makes no distinction between roles. All team members are accountable for the product! RUP roles are accountable only for their portion of the process.</p>
<p>Agile teams are assigned to one project at a time and everyone is busy during an iteration. During RUP phases, what is one group of roles doing in the other phases? Are people multitasking and working on different projects at the same time?</p>
<p>XP requires TDD and Scrum encourages adherance to good engineering practices like those followed by XP; RUP doesn&#8217;t and is instead a mini waterfall.</p>
<p>Agile methods call for aggressive refactoring and the discovery of a final design; RUP calls for an initial candidate architecture, UML to elaborate use cases and other design artifacts that become the basis for construction.</p>
<p>RUP prioritizes based on risk; agile on business value, which is a function of scope, quality, cost, and time. Too often projects in companies that adopt RUP seem to have an architecture/IT focus; business value is rarely if ever mentioned. This is also evident from how the use cases are written; they have an IT slant to them and are rarely written from a user&#8217;s perspective.</p>
<p>RUP is silent on the active removal of roadblocks; agile is chiefly concerned with identifying and removing roadblocks whether created by the team, management, or the organization.</p>
<p>Companies that adopt RUP often have a number of related heavy-weight Rational/IBM tools. It seems like a discussion of tools is often a major topic for RUP speakers these days. Agile teams on the other hand like to travel light and use the simplest tools possible &#8212; whiteboards, sticky notes, index cards, agile models, etc.</p>
<p><strong>So can we learn anything from RUP?</strong></p>
<p>This is not to say that we cannot learn anything from RUP. An initial focus on architecture and risk identification and mitigation is a good strategy especially when the project involves a degree of novelty (new technologies, new domains) or when the team is not composed of Journeymen or higher (&#8220;<em>The Seven Stages of Expertise in Software Engineering</em>&#8221; by Meilir Page-Jones ). Far too often, I have seen Agile teams struggle with the implemented architecture iteration-after-iteration; a short initial focus on specifying a candidate architecture would have been beneficial in most situations. Most probably, if the team was composed of superstars I wouldn&#8217;t have seen this problem. But there aren&#8217;t too many teams of that nature that I have come across.</p>
<p>Use cases though maligned by some, and bastardized by others, have their place. There has been a recent trend by Agile teams and Product Owners to write smaller-and-smaller stories to fit into shorter-and-shorter iterations. The result has been over-fragmentation and a loss of unity and cohesion; it becomes difficult to quickly see how the pieces fit together and how the process flows together. Use cases (if written properly) help us see the forest for the trees (see Alistair Cockburn&#8217;s writings and Craig Larman&#8217;s POS example in &#8220;<em>Applying UML and Patterns: An Introduction to Object-Oriented Analysis and Design and Iterative Development</em>&#8221; for good examples and principles to follow).</p>
<p>Considering risk and developing strategies for tackling them early is a smart idea. Spiking and implementing risky portions of the infrastructure and architure helps drive out risk early and prevents surprises later.</p>
<p>Modeling is a useful exercise if it doesn&#8217;t become an end to itself. Instead of UML, team members can gain much more insight by drawing simple, informal models on whiteboards (see Scott Ambler&#8217;s Agile Modeling Web site at <em>http://www.agilemodeling.com/</em> for creating effective and light-weight models).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bigvisible.com/asingh/rup-isnt-agile-but-some-of-its-principles-are-worthwhile/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Glide Plane and Personal Responsibility</title>
		<link>http://www.bigvisible.com/asingh/glide-plane-responsibility/</link>
		<comments>http://www.bigvisible.com/asingh/glide-plane-responsibility/#comments</comments>
		<pubDate>Sat, 05 Apr 2008 03:07:34 +0000</pubDate>
		<dc:creator>Alex Singh</dc:creator>
				<category><![CDATA[Product Development]]></category>

		<guid isPermaLink="false">http://www.bigvisible.com/gmorein/glide-plane-responsibility/</guid>
		<description><![CDATA[I recently worked at an insurance company (let&#8217;s call it Freesurance) that had mandated a &#8220;glide plane&#8221; process to bring a semblance of regularity to the chaotic development practices in place. All projects were to pass through specified stages of the glide plane at specified times. Glide planes were staggered to start every month.
Employees were [...]]]></description>
			<content:encoded><![CDATA[<p>I recently worked at an insurance company (let&#8217;s call it Freesurance) that had mandated a &#8220;glide plane&#8221; process to bring a semblance of regularity to the chaotic development practices in place. All projects were to pass through specified stages of the glide plane at specified times. Glide planes were staggered to start every month.</p>
<p>Employees were mandated to enter all tickets (work requests, enhancements, and bug fixes) into a requirement-tracking tool. All tickets were to track through each of the following phases.</p>
<ul>
<li><strong>New:</strong> All new work requests (tickets) should be entered into the requirement-tracking tool by the business analysts or by the development teams. Tickets must be entered at least 91 days before a scheduled monthly release.</li>
<li><strong>Acknowledged: </strong>A service level agreement (SLA) mandated that the business must acknowledge tickets within 7 days of receipt of the ticket – 84 days prior to release. This 7-day period was used to triage the tickets to remove duplicates, close tickets if no action was going to be undertaken, and to prioritize the items.</li>
<li><strong>Accepted:</strong> The IS department is tasked by the business to analyze and estimate the tickets — target 63 days prior to release.</li>
<li><strong>Business Requirements</strong>: The business analysts were required to complete the business requirements 42 days prior to release.</li>
<li><strong>Committed</strong>: IS would commit to the tickets, 28 days prior to release, that it thought it could complete — create functional specifications, construct, unit test, and build within the release dates.</li>
<li><strong>IN/OUT List:</strong> Final date to decide whether tickets are going to be included in this release or not.</li>
<li><strong>Constructed</strong>: IS completes coding, unit testing, and delivering final build 14 days prior to release.</li>
<li><strong>Resolved</strong>: Business analysts complete all testing 7 days prior to release.</li>
<li><strong>Closed</strong>: Code merged into the production environment (&#8220;going live&#8221;) on implementation day; Business signs-off on the release within 5 days of implementation.<span id="more-56"></span></li>
</ul>
<p>The goal of any development system is to deliver customer-defined value, effectively, and with a minimum of waste. Systems that deliver value more efficiently are preferable to those that deliver value in a relatively expensive manner. One of the greatest contributors to inefficiency, poor quality, and high costs is waste (activities that do not add value to the end user).</p>
<p>While the &#8220;glide plane&#8221; concept sounds good in theory, it suffers from a few major drawbacks:</p>
<ol>
<li>The glide plane does little to eliminate wasteful activities that do not add value to the end user. At Freesurance, over the 96 day (2304 hour) glide plane cycle, value is added during only 10 business days (80 business hours) during construction. This evaluates to a best case scenario of approximately 3.5% of the available time being used for value add activities. In actuality, overall productivity is further degraded by excessive rework and multi-tasking. Ouch!</li>
<li>The glide plane ultimately leads to excess work in progress — too many requirements are being investigated, sized, designed, and implemented at the same time. Time is wasted on investigating requirements that are not committed to being delivered and on backing out, at the last possible moment, implemented requirements which no longer hold true (scrap and rework).</li>
<li>The overlapping nature of the glide plane deliverables ensures that team members are not working solely on the current iteration; their focus is diluted by having to wrap up the previous release and to begin actively planning for the next release.</li>
<li>Multiple streams of work means that any single stream disruption can disrupt all streams. Critical bugs introduced in an implemented release have to be fixed, tested, and redeployed into production, therby, cutting the time available to work on the current iteration.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.bigvisible.com/asingh/glide-plane-responsibility/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Agile Introduction: Key Indicators of Success</title>
		<link>http://www.bigvisible.com/asingh/agile-introduction-success-indicators/</link>
		<comments>http://www.bigvisible.com/asingh/agile-introduction-success-indicators/#comments</comments>
		<pubDate>Sat, 05 Apr 2008 02:58:50 +0000</pubDate>
		<dc:creator>Alex Singh</dc:creator>
				<category><![CDATA[Agile Adoption]]></category>
		<category><![CDATA[Agile Coaching]]></category>

		<guid isPermaLink="false">http://www.bigvisible.com/asingh/agile-introduction-success-indicators/</guid>
		<description><![CDATA[My time these days is spent helping clients who want to introduce an iterative methodology into their IT departments.Time after time, I have noticed that a few factors serve as good leading indicators to the eventual success of the engagement. These factors in decreasing order of importance are:

Executive and Senior Management support and commitment
Team makeup
Front-line [...]]]></description>
			<content:encoded><![CDATA[<p>My time these days is spent helping clients who want to introduce an iterative methodology into their IT departments.Time after time, I have noticed that a few factors serve as good leading indicators to the eventual success of the engagement. These factors in decreasing order of importance are:</p>
<ol>
<li>Executive and Senior Management support and commitment</li>
<li>Team makeup</li>
<li>Front-line staff commitment</li>
<li>Degree of change being introduced</li>
</ol>
<p><span id="more-55"></span><strong>1. Executive and Senior Management Support</strong>At the start of an engagement, the most important determinant is the level of executive buy-in. Forming a judgment of their behavior, feelings, and real motives is easier said than done. All too often, the real motives and underlying political issues remain unstated; it is up to the change agent to quickly determine who is for and against the initiative and why. Some managers may be for the initiative but for the wrong reasons &#8212; a CIO at a previous client was interested in the change not to improve the division, but to earn brownie points with a key internal customer.Often times, an organization introduces change (Agile methodologies in this example) but does not change the way it evaluates and rewards performance. The cliche, &#8220;you get what you measure&#8221; is absolutely true. For example, all Agile methods depend to a large degree on teamwork; this can be easily undermined if the senior managers cherry-pick and reward their favorites during the annual evaluation cycle or if management decisions are made not with the ultimate product but with the functional roles in mind.</p>
<blockquote><p>A leading provider of strategic HR, payroll, and talent management solutions, in Florida, has successfully done away with individual rewards —- teams are rewarded based on their performance.</p></blockquote>
<p>The goodness of Agile methods is that they quickly spotlight major problems in the way the organization is structured and managed. Executives and senior managers then have the option of either fixing the underlying problem or ignoring the problem &#8212; switching off the spotlight &#8212; and hoping it will go away. Their actions when faced with such situations speak louder than their words. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.bigvisible.com/asingh/agile-introduction-success-indicators/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Wabi-Sabi and Agile Development</title>
		<link>http://www.bigvisible.com/asingh/wabi-sabi/</link>
		<comments>http://www.bigvisible.com/asingh/wabi-sabi/#comments</comments>
		<pubDate>Fri, 04 Apr 2008 21:54:15 +0000</pubDate>
		<dc:creator>Alex Singh</dc:creator>
				<category><![CDATA[Agile Adoption]]></category>
		<category><![CDATA[Agile Coaching]]></category>
		<category><![CDATA[adoption]]></category>
		<category><![CDATA[agile]]></category>
		<category><![CDATA[CrAgile]]></category>

		<guid isPermaLink="false">http://www.bigvisible.com/asingh/wabi-sabi-and-agile-development/</guid>
		<description><![CDATA[Richard Powell, in his book &#8220;Wabi-Sabi Simple&#8221;, discusses how the ideas of wabi-sabi can be used today to make our lives better in various way, including our work lives. Powell&#8217;s sayings on creativity are equally valid to presentation design:
&#8220;The influence of wabi sabi on creativity begins with a simple premise: Do only what is necessary [...]]]></description>
			<content:encoded><![CDATA[<p>Richard Powell, in his book &#8220;Wabi-Sabi Simple&#8221;, discusses how the ideas of wabi-sabi can be used today to make our lives better in various way, including our work lives. Powell&#8217;s sayings on creativity are equally valid to presentation design:</p>
<blockquote><p>&#8220;The influence of wabi sabi on creativity begins with a simple premise: Do only what is necessary to convey what is essential. In bonsai and in haiku, you prune and trim what is nonessential in an attempt to shorten the distance between the observer and the observed. You carefully eliminate elements that distract from the essential whole, elements that obstruct and obscure&#8230;.Clutter, bulk, and erudition confuse perception and stifle comprehension, whereas simplicity allows clear and direct attention.&#8221;</p></blockquote>
<p><span id="more-53"></span>This is harder than it sounds &#8212; people frequently confuse the concepts of complicated and complex (Glouberman and Zimmerman). Instead of trying to clarify the complex (by using pictures, stories, anectodes, graphs, etc.) they try to simplify it and, in the process, often lose the inherent nuances and interdynamics. They oversimplify and their end product/explanation barely does justice to the original complex system. This same problem exists in the realm of Agile coaching and transformation. Companies often start an Agile transformation effort based on a simplified explanation and then are usually surprised when things don&#8217;t pan out.</p>
<p>Complicated problems contain subsets of simple problems but are not merely reducible to them. Their complicated nature is often related not only to the scale of a problem like open heart surgery, but also to issues of coordination or specialised expertise. Complicated problems, although their solutions are generalizable, are not simply an assembly of simple components.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.bigvisible.com/asingh/wabi-sabi/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
