<?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>Gist Labs</title>
	<atom:link href="http://gistlabs.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gistlabs.com</link>
	<description>essential innovation</description>
	<lastBuildDate>Fri, 03 May 2013 03:21:53 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Visualizing Work</title>
		<link>http://gistlabs.com/2013/04/visualizing-work/</link>
		<comments>http://gistlabs.com/2013/04/visualizing-work/#comments</comments>
		<pubDate>Fri, 26 Apr 2013 22:20:45 +0000</pubDate>
		<dc:creator>John Heintz</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[kanban]]></category>
		<category><![CDATA[posts]]></category>
		<category><![CDATA[visualization]]></category>

		<guid isPermaLink="false">http://gistlabs.com/?p=478</guid>
		<description><![CDATA[Work can be hard enough, it doesn&#8217;t need to be invisible! NOTE: Please fill out the &#8220;contact us&#8221; form on the right, or just leave a comment asking, if you&#8217;d like to be notified when the future webinar series on &#8230; <a href="http://gistlabs.com/2013/04/visualizing-work/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Work can be hard enough, it doesn&#8217;t need to be invisible!</p>
<p>NOTE: Please fill out the &#8220;contact us&#8221; form on the right, or just leave a comment asking, if you&#8217;d like to be notified when the future webinar series on this topic is scheduled.</p>
<p>Here is a selection of visualizations that I find very helpful when managing work, either my own work or an organization&#8217;s work with 22 teams.</p>
<h1>Roadmaps</h1>
<p>Roadmap connect multiple high-level threads together over many quarters or years. They answer the questions of Who, When, How Often, What, Why, and How. Some can be sparse and others very (over) loaded. Here is a quarter of a year long roadmap that shows the various connected teams and how their work is connected:</p>
<p><a href="http://gistlabs.com/wp-content/uploads/2013/04/Roadmap-lowfi-2013-04-18-12.29.56.png"><img class="alignnone size-full wp-image-487" alt="Multi-Level Roadmap with connected work" src="http://gistlabs.com/wp-content/uploads/2013/04/Roadmap-lowfi-2013-04-18-12.29.56.png" width="451" height="690" /></a></p>
<p>This roadmap exposes the actual complexity of the current work management system.</p>
<h1>Program Management</h1>
<p>A program is a work managed towards a specific goal. Programs are larger than any one team and take longer than any near-term planning horizon. Here is a small visualization of a program from an unreleased tool. Work is pulled from the right, always completing towards the valuable goal on the left.</p>
<p><a href="http://gistlabs.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-23-at-4.26.34-PM.png"><img class="alignnone  wp-image-484" alt="Screen Shot 2013-04-23 at 4.26.34 PM" src="http://gistlabs.com/wp-content/uploads/2013/04/Screen-Shot-2013-04-23-at-4.26.34-PM.png" width="366" height="179" /></a></p>
<p>A program of work is more structured than just a list of items, as an Agile backlog often is. Often, a program makes an excellent wrapper around the bulk of the agile backlog. programs tend to important integration milestones and reviews that provide a natural tightening shape.</p>
<h1>Agile Release (Quarterly) Plans</h1>
<p>Agile &#8220;release&#8221; planning covers the scope of multiple sprints. I usually suggest quarterly planning but this could be anything from one to six months. This planning does need to include multiple sprint ahead, in order to gain the benefit of coordinating dependencies across teams (or dependencies will become unplanned interruptions).</p>
<p>First, we see a multi-team release plan based on sequential dependencies. Here a project or program named &#8220;A&#8221; is works on by several teams.</p>
<p><a href="http://gistlabs.com/wp-content/uploads/2013/04/TeamCollaboration.png"><img title="Teams Handing off Work Across Sprints" alt="TeamCollaboration" src="http://gistlabs.com/wp-content/uploads/2013/04/TeamCollaboration.png" width="308" height="184" /></a></p>
<p>&nbsp;</p>
<p>This sequential style of work management has the disadvantages that the plan must be &#8220;right&#8221; and any delays can cause havoc at the end of the timeframe.</p>
<p>Next, we see a multi-team collaborative model for work management. In this case teams are working directly together at various times to collaborate on the work.</p>
<p><a href="http://gistlabs.com/wp-content/uploads/2013/04/TeamConcurrentCollaboration.png"><img title="Teams Collaborating on a Single Project Across Sprints" alt="TeamConcurrentCollaboration" src="http://gistlabs.com/wp-content/uploads/2013/04/TeamConcurrentCollaboration.png" width="308" height="184" /></a></p>
<p>Notice in this more collaborative style that there are fewer elements to manage. This is actually a simpler way to manage work, but the actual collaborative activity will be highly messy and fast-paced.</p>
<h1>Personal and Team Work</h1>
<p>Visual Boards have long been useful for individual and team work. Here is the simplest example, showing Ready-InProgress-Done designations for work.</p>
<p><a href="http://gistlabs.com/wp-content/uploads/2013/04/Tempest-Kanban2.png"><img class="alignnone  wp-image-485" alt="Tempest - Kanban2" src="http://gistlabs.com/wp-content/uploads/2013/04/Tempest-Kanban2.png" width="309" height="346" /></a></p>
<p>Here is another example, with both more states for work to move through (columns) and more specific routes that work can travel (rows).</p>
<p><a href="http://gistlabs.com/wp-content/uploads/2013/04/Kanban-UX-in-Pod-2.png"><img class="alignnone  wp-image-486" alt="Kanban UX in Pod 2" src="http://gistlabs.com/wp-content/uploads/2013/04/Kanban-UX-in-Pod-2.png" width="569" height="290" /></a></p>
<p>These more details work management boards have two key values:</p>
<ol>
<li><span style="line-height: 15px;">They show what is actually happening now</span></li>
<li>They indicate what you should do next</li>
</ol>
<p>Something these boards don&#8217;t do well is provide the connection to the big picture. There are some variations on these (called 2-tier kanban boards) that show one level up, but this doesn&#8217;t give enough visibility when we are working on a single activity for a program or roadmap level goal.</p>
<h1>Common Abstractions</h1>
<p>All of these visualizations have a few things in common.</p>
<ul>
<li><span style="line-height: 15px;">They use space and structure, and sometimes lines, to indicate meaning and relationships</span></li>
<li>They have a direction, work is either approach from left (time) or right (priority)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://gistlabs.com/2013/04/visualizing-work/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SPOOn Framework: Context and Consequence</title>
		<link>http://gistlabs.com/2013/04/spoon-framework/</link>
		<comments>http://gistlabs.com/2013/04/spoon-framework/#comments</comments>
		<pubDate>Tue, 23 Apr 2013 14:37:47 +0000</pubDate>
		<dc:creator>John Heintz</dc:creator>
				<category><![CDATA[frameworks]]></category>
		<category><![CDATA[Israel Gat]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[Luke Hohmann]]></category>
		<category><![CDATA[posts]]></category>

		<guid isPermaLink="false">http://gistlabs.com/?p=433</guid>
		<description><![CDATA[tl;dr; We often spend too much time myopically focused on the processes and direct outputs of our work. We must remind ourselves to see the whole by examining the structures (context) that constrain our work and its outcomes (consequences). In my &#8230; <a href="http://gistlabs.com/2013/04/spoon-framework/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>tl;dr; We often spend too much time myopically focused on the processes and direct outputs of our work. We must remind ourselves to see the whole by examining the structures (context) that constrain our work and its outcomes (consequences).</p>
<p>In my consulting work over the past few years, I’ve had the privilege of working with many colleagues, and sometimes I get to blend ideas together in ways that seem to capture a simplicity and general application. One such blending is SPOOn, which combines the Structure-Process-Outcome framework from Luke Hohmann with the Process-Output-Outcome framework from Israel Gat. See Luke’s book <a href="http://www.amazon.com/Journey-Software-Professional-Sociology-Development/dp/0132366134">“Journey of the Software Professional”</a> and Israel’s post <a href="http://blog.cutter.com/2012/09/05/pursuing-velocity/">http://blog.cutter.com/2012/09/05/pursuing-velocity/</a> for references.</p>
<p><a href="http://gistlabs.com/wp-content/uploads/2013/03/SPOOn-Framework.png"><img class="alignnone  wp-image-447" alt="SPOOn Framework" src="http://gistlabs.com/wp-content/uploads/2013/03/SPOOn-Framework.png" width="493" height="412" /></a></p>
<p>The Structure/Process/Output/Outcome-name (SPOOn) is my combination of these two excellent thinking frameworks. I’m referring to this as “spoon” because it is easy to say and because I can refer to the comic superhero The Tick  ;)<img class="alignnone" alt="" src="http://media.tumblr.com/tumblr_lhtz5kpxa61qclcgo.jpg" width="270" height="211" /></p>
<h1>Why these frameworks?</h1>
<p>We spend much of our time, energy, and words on the processes we are engaged in and the direct outputs of these processes. These frequently discussed parts of the whole:</p>
<ul>
<li>Agile methods and code, velocity, cycle times</li>
<li>Creative/collaborative processes and ideas generated</li>
<li>Training processes and certifications</li>
<li>Business alignment processes and scorecards</li>
</ul>
<p>In fact, we spend so much time wrestling with these topics that we often ignore the bigger picture. What context (structure) is constraining the execution of this process or defining the output? Do the outputs actually make a positive difference in the overall result (outcome)? These questions are much, much more important than trying harder to adhere to the letter of some process or squeeze one more ounce of efficiently into an output.</p>
<h1>Structure</h1>
<p>From Luke Hohmann’s book, I’ve clearly understood that every process exists within some structure. The structure both supports and constrains our activities. Structures can be in our head (mental models and world views) or baked into our organizations (yearly financials, hierarchical reporting, delay penalty clauses). Some structures that affect our team processes (like Agile or Lean) include the trust/respect relationship our manager has with his or her own peers. Another is the contract we have with our VIP client.  Yet another is the architecture of our product.</p>
<p>Structures can possibly be changed … but over time and with effort. (Structure/Process/Outcome also includes feedback loops not shown here.) It is certainly true that we must begin by succeeding within the existing structures and not simply try to change them, even for very good reasons. It is also crucial to understand that structures exist for a reason and they evolved that way. As Jerry Weinburg says, “Things are the way they are because they got that way.”</p>
<p>Every process must exist and succeed within the structures that constrain it. Forgetting that, or merely denying it until too late, can lead to the feel and appearance of success until things start to fall apart. For example, Agile pilot teams can thrive right up until the moment when the rest of the organization is supposed to adopt the new code and new way of doing things. The existing structures have been either tolerating, misunderstanding, or undercutting the new process and simply aren’t ready to absorb change that goes against their grain.</p>
<p>How do structures constrain processes and outcomes? Here’s another example: imagine being lost in a city. The approaches (processes) available to find your way in this situation are constrained by the structure around this circumstance. Are you on vacation or almost late for an appointment? Is wandering around an adventure or a source of anxiety for you? These internal and external structures will affect how you choose to proceed and judge a valid outcome.</p>
<p><a href="http://gistlabs.com/wp-content/uploads/2013/03/SPO-Framework.png"><img class="alignnone  wp-image-456" alt="SPO Framework" src="http://gistlabs.com/wp-content/uploads/2013/03/SPO-Framework.png" width="255" height="152" /></a></p>
<h1>Output vs. Outcome</h1>
<p>Our processes are like little engines that produces stuff. Sometime they do this more or less reliably… but still we go through some actions and have something to show for it. If we only focus on this very direct output of a process, then we can easily miss the connection with everything else downstream from that process — the rest of the system. Israel Gat has created a model that distinguished the output of a process from the outcomes that result.</p>
<p><a href="http://gistlabs.com/wp-content/uploads/2013/02/Time_to_Market_as_an_Outcome-500x347.jpg"><img alt="Time_to_Market_as_an_Outcome-500x347" src="http://gistlabs.com/wp-content/uploads/2013/02/Time_to_Market_as_an_Outcome-500x347.jpg" width="300" height="208" /></a></p>
<p>The Structure/Process/Outcome <a href="#_msocom_1">[KMP1]</a> framework uses the name “outcome<a href="#_msocom_2">[KMP2]</a> ” for both the immediate and secondary results of a process. From Israel’s and my own experience, I find that distinguishing more clearly between output (first-order) and outcome (second-order or systemic) results provides much more understanding and insight into what is really happening and why. In fact, it helps change people’s perspective.</p>
<p>As an example<a href="#_msocom_3">[KMP3]</a> , consider an Agile team delivering stories at the end of a sprint. If the direct output of “accepted stories” is the only measure paid heed<a href="#_msocom_4">[KMP4]</a>  by the team or management, then they will simply apply pressure to work harder, faster, longer … to get more stories finished. Teams can certainly find ways to deliver what is measured and increase the output of accepted stories. Two common secondary outcomes for this circumstance are: 1) the team works overtime<a href="#_msocom_5">[KMP5]</a>  and ends up creating more bugs; or 2) a more reasonable team only works on new stories and doesn’t spend enough time learning and exploring. This second outcome is more delayed and harder to see than the first, but it still has  a big impact in a competitive and changing landscape.</p>
<p>These examples highlight two important characteristics that separate outputs from outcomes:</p>
<ol>
<li>Outcomes don’t happen “right now”</li>
<li>Outcomes don’t happen “right here”</li>
</ol>
<p>Both of these fit squarely in what systems theory calls “delayed feedback.” If you’ve ever first scalded then frozen yourself in a shower… well, you’ve already experienced this. Humans are <i>really</i><i><a href="#_msocom_6">[KMP6]</a> </i> bad at determining cause and effect when delayed feedback is present, and any help we can get in seeing this bigger picture is useful.</p>
<p>Outcome is much more important than output. We seldom measure and reward for it, but that is exactly what we should do. Focusing on the outcome <a href="#_msocom_7">[KMP7]</a> gives us both a better measure of success and more freedom to experiment and improve our processes and outputs.</p>
<p>This post is intended to help us better understand where we are right now, to more clearly see the full picture<a href="#_msocom_8">[KMP8]</a> . Future posts will examine how and why we change our systems by digging deeper into feedback loops, values, and vision.</p>
<p>Note: Private correspondance with both Luke and Israel has turned up essentially the same next thought on scaling these ideas up: expanding and integrating. From Luke the suggestion is multiple interlocked Structure/Process/Outcome frameworks. From Israel the suggestion is shifting focus to integrating across the entire life cycle of a system.</p>
]]></content:encoded>
			<wfw:commentRss>http://gistlabs.com/2013/04/spoon-framework/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Role of the Scrum Master</title>
		<link>http://gistlabs.com/2013/04/the-role-of-the-scrum-master/</link>
		<comments>http://gistlabs.com/2013/04/the-role-of-the-scrum-master/#comments</comments>
		<pubDate>Mon, 15 Apr 2013 15:44:13 +0000</pubDate>
		<dc:creator>John Heintz</dc:creator>
				<category><![CDATA[posts]]></category>

		<guid isPermaLink="false">http://gistlabs.com/?p=467</guid>
		<description><![CDATA[The SM is a glue and improvement role… it&#8217;s a little difficult to define with bullet list of job requirements. The SM isn&#8217;t about scheduling meetings, but actually helping the team get better at those meetings, at delivering and making &#8230; <a href="http://gistlabs.com/2013/04/the-role-of-the-scrum-master/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>The SM is a glue and improvement role… it&#8217;s a little difficult to define with bullet list of job requirements. The SM isn&#8217;t about scheduling meetings, but actually helping the team get better at those meetings, at delivering and making progress. Often though, scheduling meetings is a useful way to help. Some teams don&#8217;t need that help and schedule and prepare for all of the meetings themselves.</p>
<p>The SM doesn&#8217;t have the answers (to technical questions or how the team should organize). These answers are for the team to self-organize and figure out. But, the SM should have the right (and sometimes tough) questions that are important to ask. This requires a tremendous level of insight into the whole team, the individuals of the team, and the work.</p>
<p>Facilitate: to make easier, help bring about, Merriam-Webster</p>
<p>The definition of SM I use now is: &#8221;To continuously help make easier the teams execution&#8221;.</p>
<p>Notice I don&#8217;t say how to do this… that&#8217;s the trick the SM needs to figure out. Maybe the team needs more story definition, maybe less. Maybe it&#8217;s the team needs to learn more frequently, maybe the team is spending too much time in &#8220;discovery&#8221;.</p>
<p>It is the whole team (the PO, SM, and developer/contributors) that make a prediction/commitment. The PO is focussed on who/what/why both on the horizon and articulating these to the team during sprints. The developer/contributors are focused on the how, right now and with an eye towards the future. The SM is keeping the focus and momentum aligned, within and outside the team, to enable continuous improvement.</p>
<p>Who&#8217;s responsible for execution? In Scrum the PO is ultimately responsible for the value delivered, by being responsible for the definition of the work and prioritizing is effectively. The team makes commitments (now called predictions) together. The SM isn&#8217;t responsible for &#8220;delivering&#8221;, but rather for enabling. The SM doesn&#8217;t have the authority to command, but must balance and negotiate.</p>
<p>Here is how I would distinguish the role of SM in a few examples:</p>
<p>1) Ensures the team is ready for the meetings, and the team is setup for success in the meeting.</p>
<p>The SM helps to ensure both the PO and the developers/contributors are ready for meetings. This can be a gently reminder or canceling a planning meeting if the PO and/or team aren&#8217;t actually ready. During the meeting the SM is helping to make sure the whole team is clear what&#8217;s being asked and what decisions are being made, this is the who/what/why/how questions. If something isn&#8217;t going quite right (i.e. a Story that isn&#8217;t clear enough) then it&#8217;s the SM who usually suggests that it be taken out for future review.</p>
<p>2) Tracks and manages the resolution of an issue (like a problem implementing a story).</p>
<p>When something is going awry, it&#8217;s the SM that either tracks it or the SM works with a team member who is primary on the issue. The SM should know about all of the issues that are either a) touching outside of the team, b) involve communication with the PO, and c) are internal to team but serious enough to risk a sprint deliverable. Also, the SM should be able to effectively discuss the issue with either the PO or the team &#8211; most of the time being able to represent either if the full group can&#8217;t talk.</p>
<p>3) Team retrospective and improvement.</p>
<p>During the retrospective it is the SM who sets up the right questions to ask the team so that they can learn the most from the reflection. I call this &#8220;holding a mirror&#8221; up to the team. This is an example of the SM not having answers… but rather the hard questions. An example might be (relative to a story that was really hard to finish) &#8220;Isn&#8217;t this the third story in that subsystem that we&#8217;ve struggled with?&#8221;, or perhaps &#8220;Should we review and estimate &lt;future story&gt; because it seems similar to this tough one?&#8221;, and then &#8220;What should we start doing to help avoid this type of problem in the future?&#8221;.</p>
<p>What if the team is failing to deliver? I&#8217;d ask the SM what is going on, and I&#8217;d expect them to have an answer (at least partial). Then I&#8217;d ask the SM what we should do about it (a plan for change that addresses the situation). That plan might not be a solution to deliver everything asked up front, but it should be based on the reality of the team and context. The SM might recommend the team should work on cross-training more, or increase work on test automations, collaborate with another team more, or possibly recommend individuals be removed from the team. The SM would work first to help the team get more reliable/predictable, and them help to enable the team to go faster easier.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://gistlabs.com/2013/04/the-role-of-the-scrum-master/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rules for Fast Collaboration</title>
		<link>http://gistlabs.com/2013/01/rules-for-fast-collaboration/</link>
		<comments>http://gistlabs.com/2013/01/rules-for-fast-collaboration/#comments</comments>
		<pubDate>Tue, 22 Jan 2013 17:36:52 +0000</pubDate>
		<dc:creator>John Heintz</dc:creator>
				<category><![CDATA[posts]]></category>

		<guid isPermaLink="false">http://gistlabs.com/?p=419</guid>
		<description><![CDATA[Often we need to work together as a team and make at least some rapid progress in order to make our next decision. There are a few challenges that can really slow this down however: Somebody talks way too much &#8230; <a href="http://gistlabs.com/2013/01/rules-for-fast-collaboration/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Often we need to work together as a team and make at least some rapid progress in order to make our next decision. There are a few challenges that can really slow this down however:</p>
<ul>
<li>Somebody talks way too much</li>
<li>Somebody doesn&#8217;t talk or contribute at all</li>
<li>Arguments of being &#8220;right&#8221; and convincing others</li>
<li>Problem solving starts (prematurely)</li>
</ul>
<p>Here is a set of rules that can be called into a collaborative meeting when five or ten minutes of progress needs to occur without these delays.</p>
<hr />
<h1><span style="color: #000000; font-weight: bold;">Rules for Fast Collaboration</span></h1>
<h2>1) Take turns</h2>
<p>Round-robin works well, just make it clear and fair.</p>
<h2>2) Do one thing</h2>
<p>Add a post-it, draw a line, move a card, remove something, or maybe reorganize a few together. Pick one of those and then be done.</p>
<h2>3) Explain your action</h2>
<p>&#8220;I <span style="text-decoration: underline;">&lt;something&gt;</span> because <span style="text-decoration: underline;">&lt;thinking&gt;</span>&#8220;. Don&#8217;t argue or convince, just explain.</p>
<hr />
]]></content:encoded>
			<wfw:commentRss>http://gistlabs.com/2013/01/rules-for-fast-collaboration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing mechanize for java</title>
		<link>http://gistlabs.com/2012/09/announcing-mechanize-for-java/</link>
		<comments>http://gistlabs.com/2012/09/announcing-mechanize-for-java/#comments</comments>
		<pubDate>Mon, 17 Sep 2012 21:40:40 +0000</pubDate>
		<dc:creator>John Heintz</dc:creator>
				<category><![CDATA[posts]]></category>

		<guid isPermaLink="false">http://gistlabs.com/?p=408</guid>
		<description><![CDATA[On a recent project for a one of our startup clients, we at Gist Labs looked for a RESTful client library to support making the server even more hypermedia friendly. (This means we can move URLs around &#8211; even to &#8230; <a href="http://gistlabs.com/2012/09/announcing-mechanize-for-java/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>On a recent project for a one of our startup clients, we at Gist Labs looked for a RESTful client library to support making the server even more hypermedia friendly. (This means we can move URLs around &#8211; even to other servers &#8211; without breaking the clients coded against the site.)</p>
<p>Their exists a wonderful library to do this (mechanize) implemented in <a href="http://search.cpan.org/dist/WWW-Mechanize/">Perl</a>, <a href="http://pypi.python.org/pypi/mechanize/">Python</a>, and <a href="http://mechanize.rubyforge.org/">Ruby</a>. But we were writing a Java/Android client, so we did something about it.</p>
<p>Today we are happy to announce the availability of a Java port of this great tool. If you are building a REST client or screen scraping web pages in Java, please check it out!</p>
<p>Here is the project page: <a title="Mechanize for Java" href="http://gistlabs.com/software/mechanize-for-java/">mechanize for java</a></p>
]]></content:encoded>
			<wfw:commentRss>http://gistlabs.com/2012/09/announcing-mechanize-for-java/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ignore hours, focus on collaboration</title>
		<link>http://gistlabs.com/2012/08/ignore-hours-focus-on-collaboration/</link>
		<comments>http://gistlabs.com/2012/08/ignore-hours-focus-on-collaboration/#comments</comments>
		<pubDate>Thu, 30 Aug 2012 21:01:25 +0000</pubDate>
		<dc:creator>John Heintz</dc:creator>
				<category><![CDATA[agile]]></category>
		<category><![CDATA[posts]]></category>

		<guid isPermaLink="false">http://gistlabs.com/?p=364</guid>
		<description><![CDATA[Here&#8217;s a quiz for Agile team members using burndown charts. What does this picture mean? Seems pretty good, right? Work is getting done, pretty close to the ideal line. Nothing to fret over, especially if the mood of the team &#8230; <a href="http://gistlabs.com/2012/08/ignore-hours-focus-on-collaboration/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Here&#8217;s a quiz for Agile team members using burndown charts.</p>
<p>What does this picture mean?</p>
<p><a href="http://gistlabs.com/2012/08/ignore-hours-focus-on-collaboration/sprint-hours-burndown/" rel="attachment wp-att-368"><img class="alignnone size-full wp-image-368" title="Sprint Hours Burndown" src="http://gistlabs.com/wp-content/uploads/2012/08/Sprint-Hours-Burndown.png" alt="" width="768" height="528" /></a></p>
<p>Seems pretty good, right? Work is getting done, pretty close to the ideal line. Nothing to fret over, especially if the mood of the team is good.</p>
<p>Now, consider this alternate view of the same team, same sprint:</p>
<p><a href="http://gistlabs.com/2012/08/ignore-hours-focus-on-collaboration/sprint-story-points-burndown/" rel="attachment wp-att-369"><img class="alignnone size-full wp-image-369" title="Sprint Story Points Burndown" src="http://gistlabs.com/wp-content/uploads/2012/08/Sprint-Story-Points-Burndown.png" alt="" width="768" height="528" /></a></p>
<p>We&#8217;re about to start the eighth day of a ten day sprint&#8230; now it looks like panic. At least a few story points are done-done&#8230; but clearly the team hasn&#8217;t actually finished much of the work in the sprint. Will it all get done? Will it all get done? Are we looking at a mini-death march?</p>
<p>How could there be such a mismatch, and what can we do about it?!?</p>
<h2>Advice: Ignore hours</h2>
<p>A team I was coaching was really struggling to complete stories at the end of the sprint. They were being very diligent, but no matter &#8220;hard&#8221; they tried it didn&#8217;t change the emergency they experienced at the end of every sprint. In particular, they tried harder to get better at estimating task hours and making sure to level everyone&#8217;s hours&#8230;.</p>
<p>I became clued into all of this when I was asked: &#8220;John, do you think 6 hours per day is reasonable?&#8221; This was a sure indicator that the team was missing the forrest for the trees &#8211; loading individuals with tasks/hours at the expense of a team getting work done. This was setting each individual up for failure: either I can help my colleague/friend&#8230; or I work on what I committed to doing! I don&#8217;t like no win situations, especially when it hurts people.</p>
<p>My advice was simple. Just for one sprint, try the following:</p>
<ul>
<li>ignore hours, don&#8217;t estimate or track then</li>
<li>focus on the stories, which one is highest priority</li>
<li>encourage the team to work together in every way that makes sense</li>
<li>track story point burn down</li>
</ul>
<p>The team did this, and the result was amazing. Everyone felt free to collaborate <strong>and</strong> the stories were completed more smoothly. This team did reintroduce some hours back into their process, but they had changed: <em>collaboration and value over hours and tasks</em>.</p>
<p>Note on Kanban: As an interesting note, today most Kanban teams don&#8217;t bother with hours, and also don&#8217;t estimate stories! (They do often group by size.. so there is still some judgement of effort.) These teams track only cycle time (from start to end) of stories on the board. This gives the same focus on collaboration over hours tracking that I suggest in this post.</p>
]]></content:encoded>
			<wfw:commentRss>http://gistlabs.com/2012/08/ignore-hours-focus-on-collaboration/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Big Data, Little Tests</title>
		<link>http://gistlabs.com/2012/08/big-data-little-tests/</link>
		<comments>http://gistlabs.com/2012/08/big-data-little-tests/#comments</comments>
		<pubDate>Thu, 16 Aug 2012 16:20:53 +0000</pubDate>
		<dc:creator>John Heintz</dc:creator>
				<category><![CDATA[posts]]></category>

		<guid isPermaLink="false">http://gistlabs.com/?p=344</guid>
		<description><![CDATA[This is the content for my Agile2012 presentation. (Download BigDataLittleTests-Heintz) Slides are attached to this post, and these are the GitHub repos: https://github.com/jheintz/sample-hadoop-testing https://github.com/jheintz/sample-riak-testing https://github.com/jheintz/riak-download Here are the scripts that demonstrate everything: Hadoop Sample: #/bin/sh git clone https://github.com/jheintz/sample-hadoop-testing.git cd sample-hadoop-testing.git git &#8230; <a href="http://gistlabs.com/2012/08/big-data-little-tests/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>This is the content for my Agile2012 presentation. (Download <a href="http://gistlabs.com/2012/08/big-data-little-tests/bigdatalittletests-heintz/" rel="attachment wp-att-353">BigDataLittleTests-Heintz</a>)</p>
<p>Slides are attached to this post, and these are the GitHub repos:</p>
<ul>
<li>https://github.com/jheintz/sample-hadoop-testing</li>
<li>https://github.com/jheintz/sample-riak-testing</li>
<li>https://github.com/jheintz/riak-download</li>
</ul>
<p>Here are the scripts that demonstrate everything:</p>
<p>Hadoop Sample:</p>
<blockquote><p>#/bin/sh</p>
<p>git clone https://github.com/jheintz/sample-hadoop-testing.git<br />
cd sample-hadoop-testing.git</p>
<p>git checkout step1 # initial MRUnit tests<br />
mvn test<br />
# eclipse: show mapper<br />
# eclipse: show reducer<br />
# eclipse: show unit test<br />
# eclipse: try open hadoop source&#8230;</p>
<p>git checkout step2 # Use Cloudera repo for sources<br />
mvn test<br />
# eclipse show pom<br />
# eclipse: open hadoop source</p>
<p>git checkout step3 # parameterized many tests<br />
# eclipse test ManyWordCountTest.java</p>
<p>git checkout step4 # parameterized non-mr tests for speed<br />
# eclipse test ManyWordTest</p>
<p>git checkout step5 # add cluster test<br />
# eclipse show HadoopClusterBase<br />
# eclipse test ClusterTest</p>
<p>git checkout step6 # add parameterized cluster test<br />
# eclipse test MultipleClusterTest</p>
<p>git checkout step7 # split unit and integration tests<br />
# eclipse show test names<br />
# eclipse show pom failsafe<br />
mvn test<br />
mvn verify</p></blockquote>
<p>Riak Sample:</p>
<blockquote><p>#/bin/sh</p>
<p>git clone https://github.com/jheintz/sample-riak-testing.git<br />
cd sample-riak-testing.git</p>
<p>git checkout step1 # initial test, fails<br />
mvn test<br />
# eclipse show SmokeTest failure</p>
<p>git checkout step2 # add riak downloader<br />
mvn test<br />
# I don&#8217;t know why eclipse has maven failure&#8230;<br />
# eclipse show riak-build.xml<br />
# eclipse show pom.xml</p>
<p>git checkout step3 # add parameterized many tests<br />
# eclipse show ManySmokeTest</p>
<p>ant -f riak-build.xml stop</p></blockquote>
<p>Cassandra Sample:</p>
<blockquote><p>#/bin/sh</p>
<p>git clone http://github.com/jsevellec/cassandra-unit.git<br />
cd cassandra-unit</p>
<p>mvn test<br />
mvn eclipse:eclipse</p></blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://gistlabs.com/2012/08/big-data-little-tests/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Abstract != Vague</title>
		<link>http://gistlabs.com/2011/12/abstract-vague/</link>
		<comments>http://gistlabs.com/2011/12/abstract-vague/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 05:44:25 +0000</pubDate>
		<dc:creator>John Heintz</dc:creator>
				<category><![CDATA[posts]]></category>

		<guid isPermaLink="false">http://gistlabs.com/?p=321</guid>
		<description><![CDATA[(I&#8217;ve re-published this here. Originally published on my old personal blog). I&#8217;ve got a bone to pick, so I&#8217;ll do it here. This is a problem of mine that I have with both developers(architects) and with analysts(customers). Context: This rant &#8230; <a href="http://gistlabs.com/2011/12/abstract-vague/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<div>(I&#8217;ve re-published this here. Originally published on my <a href="http://johnheintz.blogspot.com/2010/01/abstract-vague.html">old personal blog</a>).</div>
<div>I&#8217;ve got a bone to pick, so I&#8217;ll do it here. This is a problem of mine that I have with both developers(architects) and with analysts(customers).</div>
<div>Context: This rant applies to models/designs/architectures of a problem or solution domain. It doesn&#8217;t apply to the actual coding of a solution (much).</div>
<p>First, some definitions:</p>
<ul>
<li><a href="http://dictionary.reference.com/browse/abstract">Abstract</a>: something that concentrates in itself the essential qualities of anything more extensive or more general, or of several things; essence.</li>
<li><a href="http://dictionary.reference.com/browse/concrete">Concrete</a>: pertaining to or concerned with realities or actual instances rather than abstractions</li>
<li><a href="http://dictionary.reference.com/browse/precise">Precise</a>: definite or exact in statement</li>
<li><a href="http://dictionary.reference.com/browse/vague">Vague</a>: not clearly or explicitly stated or expressed</li>
</ul>
<div>Here&#8217;s the picture:</div>
<div><a href="http://gistlabs.com/2011/12/abstract-vague/abstractprecise/" rel="attachment wp-att-324"><img class="size-full wp-image-324 aligncenter" title="AbstractPrecise" src="http://gistlabs.com/wp-content/uploads/2011/12/AbstractPrecise.png" alt="" width="400" height="318" /></a></div>
<div>What does this mean?</div>
<div><strong>Analysts tend towards Abstract-Vague. </strong>&#8220;Let&#8217;s not get bogged down with details right now.&#8221;</div>
<div><strong>Developers tend towards Concrete-Precise.</strong> &#8221;I need all of the table properties fields.&#8221;</div>
<div>Fortunately, almost no one tends to Vague-Concrete. Phew.</div>
<div>Un-fortunately, few move towards the most valuable region: Abstract-Precision. That&#8217;s the most valuable because it offers the least noise (Concrete details) and the most information (Precision).</div>
<div>Here&#8217;s an example. Squares are types, circles are interactions.</div>
<div><a href="http://gistlabs.com/2011/12/abstract-vague/example-model/" rel="attachment wp-att-325"><img class="size-full wp-image-325 aligncenter" title="example-model" src="http://gistlabs.com/wp-content/uploads/2011/12/example-model.png" alt="" width="400" height="162" /></a></div>
<div>Notice that &#8220;Money&#8221; isn&#8217;t concretely defined here. It could be a BigDecimal, double, or Smalltalk Number. Also, that Post Condition is much more precise than a lot requirements documents usually specify.</div>
<div>Ah, I feel better.</div>
<div>Here&#8217;s my rule of thumb for achieving more precision:</div>
<div>
<blockquote><p>Add elements to your model only in order to exactly say what your audience thinks is really important.</p></blockquote>
</div>
<div>In the example above the balance, amount, and cash properties are only present because a Withdraw requires them to precisely describe what needs to be done.</div>
]]></content:encoded>
			<wfw:commentRss>http://gistlabs.com/2011/12/abstract-vague/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Business: Knowledge, Risk, and Customer Value</title>
		<link>http://gistlabs.com/2011/10/business-knowledge-risk-and-customer-value/</link>
		<comments>http://gistlabs.com/2011/10/business-knowledge-risk-and-customer-value/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 04:37:13 +0000</pubDate>
		<dc:creator>John Heintz</dc:creator>
				<category><![CDATA[innovationgames]]></category>
		<category><![CDATA[knowledge]]></category>
		<category><![CDATA[risk]]></category>

		<guid isPermaLink="false">http://wp.gistlabs.com/?p=47</guid>
		<description><![CDATA[What do knowledge, risk management, and customer value have in common? Only your business value, and here&#8217;s what it looks like: Everything you do in a commercial sense has an effect on one or more of these three variables. Here &#8230; <a href="http://gistlabs.com/2011/10/business-knowledge-risk-and-customer-value/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>What do knowledge, risk management, and customer value have in common? Only your business value, and here&#8217;s what it looks like:</p>
<p><a href="http://gistlabs.com/2011/10/business-knowledge-risk-and-customer-value/business-value-prioritizing-a-backlog-2/" rel="attachment wp-att-366"><img class="alignnone size-full wp-image-366" title="Business Value, Prioritizing a Backlog" src="http://gistlabs.com/wp-content/uploads/2011/10/Business-Value-Prioritizing-a-Backlog.png" alt="" width="768" height="528" /></a></p>
<p>Everything you do in a commercial sense has an effect on one or more of these three variables. Here are some examples:</p>
<ul>
<li>Bring customers together and discover[1] what they need and desire =&gt; will increase Knowledge</li>
<li>Build some Architectural Runway =&gt; will decrease Risk</li>
<li>Improve a frequently used feature =&gt; will increase Customer Value ($$)</li>
</ul>
<p>But there are some actions that can move more than one variable at the same time, consider:</p>
<ul>
<li>A/B testing two features and releasing the winner =&gt; will both increase Knowledge and Customer Value</li>
<li>Address site stability/performance issues =&gt; will reduce Risk and increase Customer Value</li>
</ul>
<div>
<p>This chart provides a way to prioritize an organization&#8217;s backlog of work by asking the following questions:</p>
<ol>
<li><em>What are the current values for Knowledge, Risk, and Customer Value?</em></li>
<li><em>Which way are they heading? </em></li>
<li><em>What ought they be?</em></li>
<li><em>What next steps will bring me closer to what ought be?</em></li>
</ol>
</div>
<p>Alistair Cockburn has been explicitly modeling Knowledge for years, and in fact his writings considerably influenced my thinking on these three variables. See Alistair&#8217;s <a href="http://alistair.cockburn.us/Knowledge+acquisition+curve.png">Knowledge Acquisition Curve</a> for more details. Very recently David Anderson has reframed <a href="http://agilemanagement.net/index.php/site/understanding_the_process_of_knowledge_discovery/">Kanban as a Knowledge Discovery Process</a>.</p>
<p><a title="Risk Management" href="http://gistlabs.com/services/risk-management/">Risk Management</a> is an extremely underused tool. Usually someone, somewhere, just decides arbitrarily what should or shouldn&#8217;t be done.</p>
<p>Customer Value is the important to everyone, but in Agile Scrum projects it&#8217;s especially the the <a title="Product Owner" href="http://gistlabs.com/training/product-owner/">Product Owner</a> who is responsible for growing that curve.</p>
<hr />
<div>[1] Consider playing &#8220;serious games&#8221;, see <a href="http://wp.gistlabs.com/category/innovationgames/">Innovation Games</a></div>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://gistlabs.com/2011/10/business-knowledge-risk-and-customer-value/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Instant Play Innovation Games</title>
		<link>http://gistlabs.com/2011/10/instant-play-innovation-games/</link>
		<comments>http://gistlabs.com/2011/10/instant-play-innovation-games/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 03:24:35 +0000</pubDate>
		<dc:creator>John Heintz</dc:creator>
				<category><![CDATA[innovationgames]]></category>
		<category><![CDATA[Luke Hohmann]]></category>

		<guid isPermaLink="false">http://gistlabs.com/?p=278</guid>
		<description><![CDATA[Have a diagram you use for understanding or explaining? Want to turn it into an online collaborative tool? Yes, you really can Design your own visual collaboration game See these Instant Play games for examples you can use right now. &#8230; <a href="http://gistlabs.com/2011/10/instant-play-innovation-games/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>Have a diagram you use for understanding or explaining? Want to turn it into an online collaborative tool?</p>
<p>Yes, you really can</p>
<blockquote><p>Design your own visual collaboration game</p></blockquote>
<p>See these <a title="Instant Play Games" href="http://gistlabs.com/services/innovation-games/instant-play-games/">Instant Play games</a> for examples you can use right now. Of course Gist Labs can help you facilitate games, and design your own custom games.</p>
]]></content:encoded>
			<wfw:commentRss>http://gistlabs.com/2011/10/instant-play-innovation-games/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
