<?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>Ivar Jacobson International &#187; Roly Stimson | Ivar Jacobson International</title>
	<atom:link href="http://blog.ivarjacobson.com/author/rstimson/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.ivarjacobson.com</link>
	<description>The Smart Blog</description>
	<lastBuildDate>Mon, 16 Jan 2012 14:12:59 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>The kernel Journals 10: The essential does not change</title>
		<link>http://blog.ivarjacobson.com/the-kernel-journals-10-the-essential-does-not-change/</link>
		<comments>http://blog.ivarjacobson.com/the-kernel-journals-10-the-essential-does-not-change/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 01:25:36 +0000</pubDate>
		<dc:creator>Roly Stimson</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Essential Practices]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[process kernel]]></category>

		<guid isPermaLink="false">http://blog.ivarjacobson.com/?p=459</guid>
		<description><![CDATA[In the previous kernel journals we have explored the value that development organizations can get from a process kernel that codifies what each and every project always has to do, in a way that is distinct and separate from how different project teams might choose to go about doing it, some benefits being: The status [...]]]></description>
			<content:encoded><![CDATA[<h2><span style="font-weight: normal; font-size: 13px;"><img class="alignleft size-full wp-image-460" title="1134525_person_pyramid" src="http://blog.ivarjacobson.com/wp-content/uploads/2010/10/1134525_person_pyramid.jpg" alt="The kernel Journals 10: The essential does not change" width="216" height="216" />In the previous kernel journals we have explored the value that development organizations can get from a process kernel that codifies <em>what</em> each and every project always has to do, in a way that is distinct and separate from <em>how</em> different project teams might choose to go about doing it, some benefits being:</span></h2>
<ul> <span id="more-459"></span></p>
<li>The status and progress of diverse projects can be made visible and tracked in a consistent way</li>
<li>The overheads associated with evidencing (documenting) project progress can be minimized and does <em>not</em> become an end in itself</li>
<li>No teams need unnecessarily reinvent process wheels – teams  can be provided with demonstrably “necessary and complete, but minimal” practice guidance on how they <em>could</em> achieve everything they do actually always have to achieve</li>
<li>Teams can be pointed to one or more alternative tried and trusted ways of achieving what they are trying to achieve on their project here and now</li>
<li>Process need be prescriptive no more - teams can be empowered to adapt any specific aspect of their way of working in the light of their project circumstances and team experiences</li>
<li>Teams can try out new ways of achieving specific things and add them to the corporate memory banks for others to find and use if they work well</li>
<li>The fitness-for-purpose of a team’s adopted and adapted way of working can be easily assessed.</li>
</ul>
<p>The Key to achieving any and all of these benefits is the fact that the kernel is a shared, useful and generally accepted description of the <em>essential</em> aspects of all each and every project within an organization, where essential means:</p>
<ol>
<li>Critically important and</li>
<li>Invarient</li>
</ol>
<p>IJI has provided its customers with just such a standard process kernel and supporting practices over the past four years and have enabled them to reap many of these benefits as a result. Other process suppliers (such as IBM and the Eclipse Process Framework (EPF) consortium) are also converging on a similar “kernel plus practice” approach to structuring, presenting and deploying their process offerings.  Currently, the exact nature, shape (and even the names) of the underlying process kernels varies from process supplier to process supplier. If practices from different sources are to be made available to teams as interchangeable pieces within the picture of a team’s preferred ways of working, it is clear that we as an industry need to define and agree some standards for these process kernels.</p>
<p>Standards, standards, standards.  Frankly, the heart sinks at the very sound of the word. However, it really, really, really has <em>got</em> to be a lot easier to arrive at a shared consensus on <em>what</em> all project teams have to do, than it has ever been to achieve any kind of consensus on <em>how</em> they should go about doing it. All software development projects really do have a stack of stuff in common. All we have to do is codify it well.</p>
<p>Just to pluck a few examples of where supposedly warring parties more than agree:</p>
<ul>
<li>We all talk about software development <em>projects</em> and agree about importance of key project milestone dates such as software release dates</li>
<li>We all talk about software being a team sport and emphasizing how important team and stakeholder communication and collaboration is to the success of this endeavor</li>
<li>Many of us talk about the need to control project progression by iteratively by incrementally preparing and verifying sub-sets of the product release (although some of us tend to call these “iterations” and others “sprints”)</li>
<li>Most of us talk about the expedience of achieving early agreement on a vision or scope-level view of what needs to be achieved in a software release, without attempting to predetermine and cast in stone everything about the functionality and behavior of the release(the detailed requirements)</li>
</ul>
<p>This list of things we all agree on is easy to write and could very easily be made a lot, lot longer. And this should not surprise us, because the various processes and practices out there all share the same problem domain after all. And just beneath the surface we so-called methodologists are all experienced campaigners with similar war stories to share.</p>
<p>If we can’t come together to codify this problem domain in a common way to help our mutual customers find, compare, contrast, select and use the right practices for the right jobs then I for one think it is a pretty bad job.</p>
<p>This is the job that the SEMAT consortium is now embarking upon. I hope you will join us.</p>
<p>P.S. For those of us for whom “the obscurer the better”, “The essential does not change” is a quote from Samuel Beckett, which has certainly those of us well-versed in the Lockean and Berkleyan metephysics rolling in the aisles (I told you’d have to humor me!)</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ivarjacobson.com/the-kernel-journals-10-the-essential-does-not-change/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The kernel Journals 9: Is our way of working fit-for-purpose?</title>
		<link>http://blog.ivarjacobson.com/the-kernel-journals-9-is-our-way-of-working-fit-for-purpose/</link>
		<comments>http://blog.ivarjacobson.com/the-kernel-journals-9-is-our-way-of-working-fit-for-purpose/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 20:15:27 +0000</pubDate>
		<dc:creator>Roly Stimson</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Essential Practices]]></category>
		<category><![CDATA[Alphas]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[process kernel]]></category>
		<category><![CDATA[Rational Unified Process]]></category>
		<category><![CDATA[software projects]]></category>

		<guid isPermaLink="false">http://blog.ivarjacobson.com/?p=452</guid>
		<description><![CDATA[We have seen in the previous kernel journals that a process kernel, defined in terms of the key domain entities, or Alphas, and their value state progressions, can give us a simple, shared view of what each and every project has to achieve (which is common across all projects), that is distinct and separate from [...]]]></description>
			<content:encoded><![CDATA[<h2><img class="alignleft size-medium wp-image-453" title="building" src="http://blog.ivarjacobson.com/wp-content/uploads/2010/10/building-300x110.jpg" alt="The kernel Journals 9: Is our way of working fit for purpose?" width="300" height="110" /><span style="font-weight: normal; font-size: 13px;">We have seen in the previous kernel journals that a process kernel, defined in terms of the key domain entities, or Alphas, and their value state progressions, can give us a simple, shared view of <em>what</em> each and every project has to achieve (which is common across all projects), that is distinct and separate from <em>how</em> they might go about doing it (which may vary from project to project).</span></h2>
<p><span id="more-452"></span>If we provide projects with at least one “how” (practice guidance) for each and every “what” (alpha state progression), then no team ever <em>has</em> to discover or invent new ways of working. But, if we allow teams to adapt or substitute any specific piece of practice guidance with an alternative means of achieving the same end, then we can empower teams to adopt a way of working that best suites the evolving needs of their project and team circumstances.</p>
<p>This approach has significant benefits for process quality auditing and assessment too. In the past, quality assessors within an organization have often had an up-hill battle to determine which process a given team thinks it should be following, before they can even start to assess whether or not it is an appropriate process and finally whether or not the team is actually following it.</p>
<p>Being pointed to a “tailor down” process like the Rational Unified Process has never been popular with quality managers in my experience. The RUP may document everything that any project of any size might ever conceivably need to do, but everyone knows that no project ever should or could attempt to do all of it. But determining and documenting which bits of process do or don’t need to be done is challenging and onerous for projects (and therefore is either not done well or not done at all). Likewise, assessing whether the bits of process that the project team is supposedly doing, together constitute a complete and coherent process that is “necessary and sufficient” is nigh-on impossible.</p>
<p>A process kernel on the other hand provides a process quality assessor with a simple process-coverage checklist. We know that each and every project needs to achieve each and every alpha state progression <em>somehow</em>. If the project team knows <em>how</em> they will go about trying to achieve each and every progression, then they have a fully defined process that is both necessary and sufficient (in terms of coverage at least). A process quality assessor can therefore be presented with a project team’s defined process in the form of the standard set of alpha state progressions, with each one pointing to the practice guidance that the project team is following in order to achieve the progression.</p>
<p>The current state of the project is easily assessed as it is expressed in terms of the progressions that the project has made, each of which points to the evidence that shows it has been achieved, expressed in the way the practice guidance suggests it should be. The process assessor also knows which practices should be currently “in play” and guiding the planning and execution of the current project activities and tasks – these are the practices that relate to the state progressions that the team hasn’t achieved yet, but is striving to achieve next.</p>
<p>The kernel thus enables process quality assessors to effectively and non-invasively assess what process is theoretically being followed, whether it is fit for purpose and whether it has been and is being successfully followed.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ivarjacobson.com/the-kernel-journals-9-is-our-way-of-working-fit-for-purpose/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Kernel Journals 8: A little help here!</title>
		<link>http://blog.ivarjacobson.com/the-kernel-journals-8-a-little-help-here/</link>
		<comments>http://blog.ivarjacobson.com/the-kernel-journals-8-a-little-help-here/#comments</comments>
		<pubDate>Thu, 16 Sep 2010 20:01:18 +0000</pubDate>
		<dc:creator>Roly Stimson</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Essential Practices]]></category>
		<category><![CDATA[Process Improvement]]></category>

		<guid isPermaLink="false">http://blog.ivarjacobson.com/?p=425</guid>
		<description><![CDATA[In the previous kernel journals we have looked at the many practical applications of a process kernel that is based on the key software development entities (known as Alphas) that software projects add value to by progressing through their value states. We have seen that there are many advantages to separating these “whats” (progressions) that [...]]]></description>
			<content:encoded><![CDATA[<h1><span style="font-weight: normal; font-size: 13px;"><img class="alignleft size-full wp-image-426" title="1139527_communicate_3" src="http://blog.ivarjacobson.com/wp-content/uploads/2010/09/1139527_communicate_3.jpg" alt="The Kernel Journals 8: A little help here!" width="266" height="300" />In the previous kernel journals we have looked at the many practical applications of a process kernel that is based on the key software development entities (known as Alphas) that software projects add value to by progressing through their value states. We have seen that there are many advantages to separating these “whats” (progressions) that we are trying to achieve, from the many possible “hows” (software processes and practices) that describe how we might achieve and evidence these progressions, including the ability to set objectives and track progress in a common and consistent way irrespective of what specific practices a project happens to adopt.</span></h1>
<p><span style="font-weight: normal; font-size: 13px;"><span id="more-425"></span><br />
</span></p>
<p>So, our kernel gives projects advice on <em>what</em> to achieve (first / next) without providing any specific guidance on <em>how</em> to achieve it. This is both good (because we are not telling software development teams exactly how to do their job) and bad (because we aren’t giving them any help at all on how to do the things that they have to do).</p>
<p>Clearly there is no shortage of advice out there in the form of the myriad of competing software development processes. But we have seen that they have traditionally suffered from being somewhat monolithic (“all or nothing at all”), and while many contain much useful practice guidance, it is difficult to find and use the specific piece of guidance that we need without getting tangled up in a huge, prescriptive process web of activities to follow and artifacts to produce (and templates to complete).</p>
<p>What we need is a way of accessing process guidance that enables us to find our way straight from <em>what</em> we are trying to achieve here and now (such as establish a shared understanding of the value and scope of a software system) to specific guidance on <em>how</em> we can achieve it (e.g. with use-cases and use-case scenarios).</p>
<p>This is what IJI have done with their EssUP process – provide access to guidance on <em>how</em> to achieve something, that is accessible directly from the progressions that we know our project has to achieve first / next. And we have provided this guidance as a set of modular practices, so that if an organization or project does not like a particular practice (such as the use-case practice), they can “swap it out” and “swap in” a different practice into the same process space instead (such as a traditional declarative-requirements practice or a user-story based practice).</p>
<p>Organizations are now free to choose the balance that is right for them between process consistency and process freedom. At one end of the scale an organization can provide a single set of cohesive practices that provide just one single standard way of achieving all the things that projects need to achieve. At the other end of the scale, they can allow projects to select any “hows” they wish from any practice guidance that is “out there”, and to freely refine and evolve these working practices over time. A project, for example, might choose to scope its system with a use case diagram and then drive the development and test of the system with user stories. Furthermore, as we will see in the next kernel journal, we always know whether the process guidance available to a team “covers all the bases” or not (i.e. whether there are any spaces left in which people are expected to “just wing it”).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ivarjacobson.com/the-kernel-journals-8-a-little-help-here/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Kernel Journals 7: SatNav for Software Development Projects</title>
		<link>http://blog.ivarjacobson.com/the-kernel-journals-7-satnav-for-software-development-projects/</link>
		<comments>http://blog.ivarjacobson.com/the-kernel-journals-7-satnav-for-software-development-projects/#comments</comments>
		<pubDate>Tue, 03 Aug 2010 02:12:06 +0000</pubDate>
		<dc:creator>Roly Stimson</dc:creator>
				<category><![CDATA[Essential Practices]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Alphas]]></category>
		<category><![CDATA[Barry Boehm]]></category>
		<category><![CDATA[kernel]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[project milestones]]></category>
		<category><![CDATA[Rational Unified Process]]></category>
		<category><![CDATA[Unified Software Development Process]]></category>

		<guid isPermaLink="false">http://blog.ivarjacobson.com/?p=345</guid>
		<description><![CDATA[In the last Kernel Journal we looked at the problem that Barry Boehm was aiming to solve back in 1995 when he first proposed his three standard process milestones (which later gained industry prominence as the milestones in the Unified Software Development Process and the Rational Unified Process), namely that “the proliferation of software process [...]]]></description>
			<content:encoded><![CDATA[<p>In the last Kernel Journal we looked at the problem that Barry Boehm was aiming to solve back in 1995 when he first proposed his three standard process milestones (which later gained industry prominence as the milestones in the Unified Software Development Process and the Rational Unified Process), namely that “the proliferation of software process models provides flexibility”, but leaves us “with no common anchor points around which to plan and control.” [Barry Boehm, November 1995]. We looked at how a small set of domain entities with simple state progression models (which we call “Alphas”) can make these common anchor points much more practical and useful while ensuring that they remain process-neutral and do not become “document-driven”.</p>
<p>The alphas, when used with common milestones such as the Unified Process Milestones, can actually give us much more than this – they can provide a project status and health dashboard that can be used by the customer and supplier organizations to assess the current status and health of any / all projects, irrespective of which processes or practices they are following. The graphic below shows just such a dashboard, with a set of kernel alphas and a traffic-light status for each alpha, which is derived by comparing where the project is now (the state machine to the left of each traffic light) with where it needs to be to achieve the next project milestone (the state machine to the right of each traffic light).<img class="alignleft size-medium wp-image-352" title="Presentation2" src="http://blog.ivarjacobson.com/wp-content/uploads/2010/08/Presentation23-300x225.jpg" alt="The Kernel Journals 7: SatNav for Software Development Projects" width="300" height="225" /></p>
<p>In Kernel Journal 5: “Making the Invisible Visible” I described how we can easily “skin” a process kernel, by providing a portal for projects to capture, share and agree the essential project information that is needed to achieve each state progression (for example, using a set of templated Wiki pages). Once we have done this, we can make the alpha dashboard much more useful to the project teams themselves, by flagging which sections of the project portal need to be updated and agreed to get the project to where it needs to go next.</p>
<p>This gives us the equivalent of a Satellite Navigation System for our software projects project that enables us to:</p>
<ul>
<li>Set our journey destination and waypoints (milestones)</li>
<li>Track where we are now, compared to where we want to be</li>
<li>Get guidance on what to do next in order to progress towards our destination.</li>
</ul>
<h1><span style="font-size: small;"><span style="font-weight: normal;"><span style="font-size: xx-large;"><span><strong><br />
</strong></span></span></span></span></h1>
<p><strong> </strong></p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ivarjacobson.com/the-kernel-journals-7-satnav-for-software-development-projects/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Kernel Journals 6: Where to (first/next)?</title>
		<link>http://blog.ivarjacobson.com/the-kernel-journals-6-where-to-firstnext/</link>
		<comments>http://blog.ivarjacobson.com/the-kernel-journals-6-where-to-firstnext/#comments</comments>
		<pubDate>Mon, 05 Jul 2010 01:33:21 +0000</pubDate>
		<dc:creator>Roly Stimson</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Barry Boehm]]></category>
		<category><![CDATA[lifecycle]]></category>
		<category><![CDATA[Practices]]></category>
		<category><![CDATA[prescriptive process]]></category>
		<category><![CDATA[process kernel]]></category>
		<category><![CDATA[project milestones]]></category>

		<guid isPermaLink="false">http://blog.ivarjacobson.com/?p=332</guid>
		<description><![CDATA[We all know that we want to “cut to the chase” as soon as we can and start incrementally developing the software product through which we deliver value back to the business. But we also know that there are certain essential pre-requisites to “sprinting”, such as some kind of vision of where we are supposed [...]]]></description>
			<content:encoded><![CDATA[<h1><span style="font-weight: normal; font-size: 13px;"><img class="alignleft size-full wp-image-334" title="1264995_sign_post_silhouette" src="http://blog.ivarjacobson.com/wp-content/uploads/2010/07/1264995_sign_post_silhouette.jpg" alt="The Kernel Journals 6: Where to (first/next)?" width="67" height="100" />We all know that we want to “cut to the chase” as soon as we can and start incrementally developing the software product through which we deliver value back to the business. But we also know that there are certain essential pre-requisites to “sprinting”, such as some kind of vision of where we are supposed to be going and the right team and tools to get us there. If we start motoring before we are ready we may head off in the wrong direction or we may find that the wheels come off as we accelerate through the gears.<span id="more-332"></span><br />
</span></h1>
<p>It’s confession time. I’m a huge fan of Barry Boehm’s standard project milestones, as originally set out in “Anchoring the Software Process” [Barry Boehm, November 1995]. Honestly, you can run your life with these three simple but powerful checkpoints. Personally, if I’m given any significant job to do, I make sure that:</p>
<ul>
<li>Firstly, I      confirm my understanding of what I need to achieve, and when by</li>
<li>Secondly, I list      my biggest worries – what that might cause me to fail and anything that I      just don’t know how I am going to do or whether I can do it in time, and      then I do the bits of the job that can resolve my uncertainties and      relieve my worries (or rapidly prove them well-founded) and play back the      resulting, decisions, outcomes and implications</li>
<li>Thirdly, I get      my head down and get the rest of the job done</li>
</ul>
<p>My three steps are, in essence, Barry Boehm’s three common milestones. The problem with great practices like this, though, is that in the past they have tended to be glued together with bits of other great practice to form monolithic, prescriptive processes. So, we find Boehm’s milestones inside the Rational Unified Process, but mixed up with a lot of other guidance about the project phases to achieve the milestones, sub-dividing phases into iterations (normally at least two-to-six weeks long), the activities we perform in each iteration and the documents they produce that we then use to assess the milestone. But, of course, it’s hard to produce documents and get them reviewed, reworked and approved in one iteration. So, before we know it, all our projects are spending one-to-three months messing around with Vision documents and the like before any code is cut (irrespective of how “nearly ready” they were to get motoring on day one of the project). Whatever happened to “cutting to the chase”?</p>
<p>It just so happens that the original motivation for Boehm’s three common milestones paper exactly matches the challenges we face today as we seek to empower software projects to use the practices that best suit them: “The current proliferation of software process models provides flexibility for organizations to deal with the unavoidably wide variety of software project situations, cultures, and environments. But it weakens their defenses against some common sources of project failure, and leaves them with no common anchor points around which to plan and control.” To get back to Boehm’s original intent, we need a way of characterizing the state that our project needs to be in, for example before it is right to start sprinting, that is independent of whatever the appropriate means of getting there might be.</p>
<p>This is where we come back to our software development kernel and the domain model at its heart. This characterizes the key aspects of a project that we need to progress (known as Alphas) and the states that we need to progress them through to advance the project in a controlled way to a successful conclusion (without the wheels coming off). To define a major project milestone such as Barry Boehm’s first “life cycle <em>objectives</em> milestone”, we simply need to list the Alpha states that we need to achieve for this milestone. For example, some key state progressions required for the Lifecycle Objectives Milestone are:</p>
<ul>
<li>The <em>Requirements</em> are <em>Shared</em> (scope and value agreed)</li>
<li>The <em>Team</em> has its <em>Mission Defined</em> and (ideally) a team has been <em>Formed</em> to achieve the mission</li>
<li>The <em>Implementation</em> has an <em>Approach</em> <em>Selected</em> (e.g. the language / platform must      be agreed)</li>
<li>The <em>Project</em> has its <em>Milestones Agreed (</em>roughly what needs to be done and when      by<em>)</em></li>
</ul>
<p>Depending on how far off we are from being where we need to be, we can set ourselves a target date for getting there and select the appropriate practices to help us get there on time. On a simple project, with a clear steer, and a lightweight approach to confirming what we need to confirm (as described in the previous Kernel Journal), we can get there in hours or days, not weeks or months. And so cut to the chase!</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ivarjacobson.com/the-kernel-journals-6-where-to-firstnext/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Kernel Journals 5: Making the Invisible, Visible</title>
		<link>http://blog.ivarjacobson.com/the-kernel-journals-5-making-the-invisible-visible/</link>
		<comments>http://blog.ivarjacobson.com/the-kernel-journals-5-making-the-invisible-visible/#comments</comments>
		<pubDate>Thu, 13 May 2010 12:21:23 +0000</pubDate>
		<dc:creator>Roly Stimson</dc:creator>
				<category><![CDATA[Agile Development]]></category>
		<category><![CDATA[Essential Practices]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Alphas]]></category>
		<category><![CDATA[process kernel]]></category>
		<category><![CDATA[Wiki]]></category>

		<guid isPermaLink="false">http://blog.ivarjacobson.com/?p=285</guid>
		<description><![CDATA[The kernel Alphas are the core, key, critical, central, essential conceptual entities that we need to manage and progress in a controlled way in order to ensure a successful outcome for our project. But, like all concepts, they have the distinct disadvantage of being invisible. A project manager is convinced that his project is important [...]]]></description>
			<content:encoded><![CDATA[<h1><span style="font-weight: normal; font-size: 13px;"><img class="alignleft size-full wp-image-287" title="432276_paper_ball" src="http://blog.ivarjacobson.com/wp-content/uploads/2010/05/432276_paper_ball.jpg" alt="The Kernel Journals 5: Making the Invisible, Visible" width="92" height="100" />The kernel Alphas are the core, key, critical, central, essential conceptual entities that we need to manage and progress in a controlled way in order to ensure a successful outcome for our project. But, like all concepts, they have the distinct disadvantage of being invisible. A project manager is convinced that his project is important and that managing its progression to a successful conclusion is critical. But if, as an outside assessor, I were to say “bring me this project of which you speak so that I may gaze upon it and assess its status” he would be stumped. He can show me plans, people, documents, but he can’t show me “the project”. These key concepts are the elephants in the room that no one can see because …  well , because they are invisible. To be useful, they need to be made visible and real, so normal people can interact with them.</span></h1>
<p><span id="more-285"></span>In our first blog I talked about how domain models can be used to simulate the execution of a business by adding attributes to them and slapping a few crude user-interface screens over them. And we can do exactly the same with the Alphas that are the domain entities in our software development process kernel. This has become known in my sad, process-geeky world as “skinning the kernel”.</p>
<p>A great way to get a quick-and dirty but fit-for-purpose “skin” in place is to use a Wiki: one Wiki page for each required view onto the alpha states and attributes. Wikis are useful because they solve many process problems in one:</p>
<ul>
<li>Where do we put      our key information as we gather it?</li>
<li>How do we      communicate the information to all our stakeholders?</li>
<li>How do we get      agreement and consensus?</li>
<li>How do we record      key agreements and decisions?</li>
</ul>
<p>We capture the key project information where people can see it, contribute to it, refine it and agree it.</p>
<p>To help projects focus on the key project information (the Alpha attributes) and to help them to capture it in a simple, structured, concise and consistent way we can provide a simple set of Wiki templates. (After all it’s better to have a template than to make each project start from scratch with a blank Wiki each time).</p>
<p>(<em>But wait</em>, o<em>h no, not templates!!  We’re not supposed to use templates, because we are recovering document template addicts. How are we going to we stop ourselves becoming addicted to this (admittedly small, lightweight and relatively harmless looking) set of templates? </em></p>
<p>Fortunately, we already have the antidote in place<em>. </em>Our templates can’t become ends in themselves, because we know that they are only a <em>means</em> to the end of progressing the states of our key Alphas. We can easily define who needs to assess which states and when (e.g. “the product owner needs to agree the target date and scope of the next release before we start incrementally developing the product release”). We then close the evidential loop by stating where the evidence is to be found:  “based on the information in the Wiki <em>Project</em> and <em>Requirements</em> pages. If the assessing party is happy that the progression has been achieved, based on the evidence they see, then the progression has been achieved (even if there is the odd spelling mistake on the Wiki!).</p>
<p>So now we have a simple way of executing our development project by capturing the information we need to progress our project in a controlled way to a successful conclusion. And, once again, this is more than just process theory. I have seen many projects use this approach to reduce their documentation overheads from dozens of documents totaling many hundreds of pages (which of course virtually no one ever read) to a dozen or so Wiki pages which told everyone exactly what they needed to know about the project and its status, when they needed to know it (including CMMI SCAMPI C appraisers in one case, as it happens).</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ivarjacobson.com/the-kernel-journals-5-making-the-invisible-visible/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Kernel Journals 4: A Cure for Document and Template Addiction</title>
		<link>http://blog.ivarjacobson.com/the-kernel-journals-4-a-cure-for-document-and-template-addiction/</link>
		<comments>http://blog.ivarjacobson.com/the-kernel-journals-4-a-cure-for-document-and-template-addiction/#comments</comments>
		<pubDate>Fri, 19 Mar 2010 12:51:29 +0000</pubDate>
		<dc:creator>Roly Stimson</dc:creator>
				<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[governance]]></category>
		<category><![CDATA[practice framework]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[process kernel]]></category>

		<guid isPermaLink="false">http://blog.ivarjacobson.com/?p=236</guid>
		<description><![CDATA[Many organizations have achieved a degree of process maturity (reliability, discipline, consistency) only by paying a very heavy price – they have become addicted to documents and document templates. Unfortunately, it can happen all too easily. Most processes end up being document-centric even though they never set out to be so. They start by offering [...]]]></description>
			<content:encoded><![CDATA[<h1><span style="font-weight: normal; font-size: 13px;"><img class="alignleft size-thumbnail wp-image-237" title="196716_files" src="http://blog.ivarjacobson.com/wp-content/uploads/2010/03/196716_files-150x100.jpg" alt="The Kernel Journals 4: A Cure for Document and Template Addiction" width="150" height="100" />Many organizations have achieved a degree of process maturity (reliability, discipline, consistency) only by paying a very heavy price – they have become addicted to documents and document templates.</span></h1>
<p>Unfortunately, it can happen all too easily. Most processes end up being document-centric even though they never set out to be so. They start by offering useful process guidance on how to progress the project in a controlled way, in the form of a set of activities, each of which is defined in terms of the artifacts it produces. Most artifacts are documents of some kind and the process helpfully comes with templates for each document – a template is better than having to start with a blank sheet of paper, after all. The project milestones we need to pass through are evidenced using the documents, and the whole thing hangs together nicely.<span id="more-236"></span>The problem is that in practice the documents rapidly become ends in themselves. The way to progress, after all, is to fill out the templates and get someone to agree the results. To make sure the documents are in good shape, they are reviewed for completeness (i.e. no sections of the template left empty) and correctness (no typos or spellos), and are reworked and re-reviewed until they are 100% complete and typo-free. Even attempts at declaring that we are “iterative and incremental” by adding statements to the documents declaring them to be “living and evolving” doesn’t seem to help our case - our world now revolves around documents and it takes us weeks or months to get enough agreement about the vision and the plan to even start the real job of writing some software.</p>
<p>But going back to "coding and hoping" that what we’re building might be what was really needed won’t hack it either. We know there are certain pre-requisites to “sprinting” – like enough handle on the vision (problem, stakeholders, needs, solution scope), technical approach and platform, and enough of a credible release plan for it to be right to make the investment in letting a fully tooled-up development team loose on the job. But how to make sure we are “OK to go” without getting into the document review and approval time trap?</p>
<p>What we need is a simple way of characterizing <em><strong>what</strong></em> state we need to progress the different aspects of our project to (e.g the problem is understood, the release is scoped and the release milestones are agreed) without prescribing exactly <em><strong>how</strong></em> we should evidence it. Frankly, any old evidence will do as long as the people that need to agree what needs to be agreed are happy to agree it on the basis of whatever it is they have seen.</p>
<p>So, once again our kernel domain model comes to the rescue, with its simple characterization of the key things that all projects need to manage (such as the project, the requirements and the team) and the states that we need to progress them through (such as “project milestones agreed” and “release scope agreed”). By adding a few simple assessment criteria to the states (such as “the needs of the key stakeholders have been captured “, “the next release point and release cycle milestones have agreed target dates”, “the scoping requirements have been prioritized for the release”), we can rapidly agree what needs to be agreed without worrying too much about precisely about how it is documented, or whether it is totally typo-free.</p>
<p>And this is more than empty theory – I have seen software projects in mature development shops cut their lead time (from project start to starting the first “sprint” to develop and demonstrate increments of production quality code) from weeks or months to just a few days, without losing the ability to progress in a controlled way through the quality gates of the governance framework within which they operate.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ivarjacobson.com/the-kernel-journals-4-a-cure-for-document-and-template-addiction/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Kernel Journals 3: Process Spaces and Bases</title>
		<link>http://blog.ivarjacobson.com/the-kernel-journals-3-process-spaces-and-bases/</link>
		<comments>http://blog.ivarjacobson.com/the-kernel-journals-3-process-spaces-and-bases/#comments</comments>
		<pubDate>Wed, 03 Mar 2010 21:01:57 +0000</pubDate>
		<dc:creator>Roly Stimson</dc:creator>
				<category><![CDATA[Agile Development]]></category>

		<guid isPermaLink="false">http://blog.ivarjacobson.com/?p=224</guid>
		<description><![CDATA[Software development processes have long advocated structuring a software solution around a domain model of the problem space being automated. A domain model shows how our business processes add value by progressing the states of our key business entities. These entities and their life histories tend to be much stable over time than the processes [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-226" title="922922___unique__" src="http://blog.ivarjacobson.com/wp-content/uploads/2010/03/922922___unique__-150x100.jpg" alt="The Kernel Journals 3: Process Spaces and Bases" width="150" height="100" />Software development processes have long advocated structuring a software solution around a domain model of the problem space being automated. A domain model shows how our business processes add value by progressing the states of our key business entities. These entities and their life histories tend to be much stable over time than the processes that surround them. Modeling the entities and their states enables us to experiment with different ways of achieving the same outcomes (state progressions) as we seek to rationalize and automate these processes.<br />
So, why have we never thought to build a good domain model of the software projects at the heart of our software development processes? At IJI we started building such a model some four years ago and this model now forms the heart of our process kernel around which we built the Essential Unified Process. One key motivator was to model the value that different development practices and processes can / do / should provide so that we could enable our customers to evaluate and select between different ways of achieving the same outcomes.</p>
<p><span id="more-224"></span>Some of the key entities in the IJI software development kernel include:</p>
<ul>
<li>Project – the      software development project itself</li>
<li>Requirements –      how the software system we are developing should behave</li>
<li>System – the      software system we are developing</li>
<li>Opportunity –      the opportunity / problem space into which the system delivers value</li>
<li>Team – the team      that undertakes the project to develop the system</li>
</ul>
<p>These are the “spaces” in which we can expect development practices and processes to add value, for example by helping us to:</p>
<ul>
<li>Steer the <em>project</em> to a timely and successful conclusion</li>
<li>Understand,      share and confirm the <em>requirements</em></li>
<li>Build the right <em>team</em> for the job and enable it to collaborate and operate effectively</li>
</ul>
<p>Even at this very high level we can start to put this simple domain model to effective use. For example, we can get various stakeholders to rate our current capabilities within each space as a precursor to any process improvement or practice rollout initiatives – how critical is each space to our success, and how good or bad a job do we do in each space currently? If we find that we do pretty well in the <em>project</em> and <em>team</em> spaces, but we suffer significant pain in the <em>requirements</em> space, then looking at adopting a project management practice like Scrum should perhaps be a lower priority than looking at requirements practices such as Use Cases or User Stories.</p>
<p>If now we start to think specifically about the kind of advances or progressions that we need to achieve early on in any project, we can say for example that we need to:</p>
<ul>
<li>Agree the key      project milestones, such as the next planned release point (i.e. progress      the <em>Project</em> to state <em>Milestones Agreed</em>)</li>
<li>Agree the goals      and scope of the release we will produce at that point (i.e. progress the <em>Requirements</em> to state <em>Shared)</em></li>
</ul>
<p>Having established WHAT we need to achieve, we can now look at the different options that we have in terms of HOW we might go about achieving it. Scrum, for example, has the concept of release planning, which tells us that we need to do these things, but gives us little specific guidance on <em>how</em> to achieve them. User Stories are great for prioritizing and sizing the requirements and driving and tracking requirements progress, but we really need a scope-level view before we can go about getting the right kinds of users into the right meetings and give them the right scope steers to get the right kind of user stories coming our way. Actually, a Use Case diagram is a great way of very rapidly sketching, agreeing and sharing the scope, context and user types for a release in support of Scrum release planning and in preparation for a user story workshop. Suddenly the “Use Cases vs. User Stories”, “either or” “method war” is shown to be an unhelpful and overly simplistic view of the world that prevents us discovering and leveraging some powerful practice combinations.</p>
<p>So, even with a few, very simple and obvious codified “spaces” (Alphas) and “bases” (state progressions) we can start to achieve some very powerful things that no other process construct can help us with, namely:</p>
<ul>
<li>Establish and      communicate exactly WHAT a given technique, process or practice helps us      with (and what it does <em>not</em> help us with)</li>
<li>Evaluate      potential practices and processes against identified process gaps, needs      and priorities</li>
<li>Establish which      processes, practices and techniques are complementary and which are      competing like-for-like alternatives.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.ivarjacobson.com/the-kernel-journals-3-process-spaces-and-bases/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Kernel Journals 2: An executable model of software development</title>
		<link>http://blog.ivarjacobson.com/the-kernel-journals-2-an-executable-model-of-software-development/</link>
		<comments>http://blog.ivarjacobson.com/the-kernel-journals-2-an-executable-model-of-software-development/#comments</comments>
		<pubDate>Thu, 25 Feb 2010 18:28:32 +0000</pubDate>
		<dc:creator>Roly Stimson</dc:creator>
				<category><![CDATA[Agile Development]]></category>

		<guid isPermaLink="false">http://blog.ivarjacobson.com/?p=214</guid>
		<description><![CDATA[I first learnt about the power of domain models more than 25 years ago when I first applied the Jackson System Development (JSD) process. This approach involves modeling the key conceptual entities in the problem domain and the business rules that define how value is delivered by advancing the value states of these key entities. [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-219" title="ist2_3995793-businessman-with-an-empty-diagram" src="http://blog.ivarjacobson.com/wp-content/uploads/2010/02/ist2_3995793-businessman-with-an-empty-diagram-150x100.jpg" alt="The Kernel Journals 2: An executable model of software development" width="150" height="100" />I first learnt about the power of domain models more than 25 years ago when I first applied the Jackson System Development (JSD) process. This approach involves modeling the key conceptual entities in the problem domain and the business rules that define how value is delivered by advancing the value states of these key entities. Add a few key business attributes and you now have an executable model of your problem domain / business. You can then simulate the execution of your business merely by slapping some rough-and-ready user-interface screens onto these entities.<br />
<span id="more-214"></span>When object-orientation proper arrived I was fortunate that one of my first points of reference was Ivar Jacobson’s book on Object-Oriented Software Engineering. I was particularly struck by a statement on Page 340: “to start identifying the use cases it is often appropriate to have a first picture of the system in terms of some problem domain objects”.  And so it has proved to be on the numerous software development projects I have been involved with ever since.</p>
<p>So, why have we as software process engineers not got around to eating this most excellent and nutritious software process dog-food ourselves?</p>
<p>As part of Ivar Jacobson International I was lucky enough to be around when Ivar and his team first asked and answered this question some four years ago by developing just such an executable process model, which we call a process kernel. The beating heart of this process kernel is (… wait for it …) a domain model of the key entities that we need to progress (known as “Alphas”) and the states that we progress them through as we execute a software development project.</p>
<p>In the next few blogs I will share some of the experiences I have had over the past few years in applying this simple but powerful concept to solve a number of process problems for my customers, including:</p>
<ul>
<li>How can we get      rid of our process documentation overheads without losing process      maturity?</li>
<li>How do project      teams get the help they need, when they need it, without prescriptive      process?</li>
<li>How can we      enable teams to own and adapt their working practices efficiently and      effectively?</li>
<li>How can we judge      whether a team’s way of working is sufficient / fit for purpose?</li>
<li>How can we share      successful team practices and the lessons learned in applying them?</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://blog.ivarjacobson.com/the-kernel-journals-2-an-executable-model-of-software-development/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Kernel Journals 1: The Hegelian Dialectic of Software Engineering</title>
		<link>http://blog.ivarjacobson.com/the-kernel-journals-1-the-hegelian-dialectic-of-software-engineering/</link>
		<comments>http://blog.ivarjacobson.com/the-kernel-journals-1-the-hegelian-dialectic-of-software-engineering/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 03:19:29 +0000</pubDate>
		<dc:creator>Roly Stimson</dc:creator>
				<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Requirements Management]]></category>
		<category><![CDATA[practice framework]]></category>
		<category><![CDATA[prescriptive process]]></category>
		<category><![CDATA[process kernel]]></category>
		<category><![CDATA[software development]]></category>

		<guid isPermaLink="false">http://blog.ivarjacobson.com/?p=114</guid>
		<description><![CDATA[We in the software development industry face a seemingly intractable problem. We have learnt the lesson that prescriptive process is a bad thing. Process bureaucrats sitting in ivory method towers, telling highly-skilled professionals how to do their job and setting the process police on them if they don’t follow their instructions to the letter, can [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-thumbnail wp-image-129" title="958915_sphere" src="http://blog.ivarjacobson.com/wp-content/uploads/2010/01/958915_sphere2-150x100.jpg" alt="The Kernel Journals 1: The Hegelian Dialectic of Software Engineering" width="150" height="100" />We in the software development industry face a seemingly intractable problem. We have learnt the lesson that prescriptive process is a bad thing. Process bureaucrats sitting in ivory method towers, telling highly-skilled professionals how to do their job and setting the process police on them if they don’t follow their instructions to the letter, can (unsurprisingly) be really quite damaging. It disempowers the development team  and engrains apathetic attitudes along the lines of “When we inevitably under-deliver, it will not be our fault, but the fault of these ludicrous process hoops that we are forced to jump through, instead of being able to focus on writing great software”.  The agile revolution was software engineering’s way of learning this lesson, and the agile manifesto pledge to value “people over process” and “software over documentation” has got to be right. But (… there was always a “but” coming …), we are already finding that the opposite extreme of little or no explicit process isn’t going to cut it either, because it leaves too many problems unsolved, such as:<span id="more-114"></span></p>
<ol>
<li>Avoiding      Confusion – there is a big and noisy world of competing processes and      methods out there. How do software development teams find the right      practices for their specific needs?</li>
<li>Team efficiency      – do we really want our development teams to constantly have to reinvent      new solutions to old process problems when they should be focusing on      writing great software?</li>
<li>Supporting      Diversity – some software engineers need / want more explicit practice      guidance than others. How do we provide just enough guidance without being      overly prescriptive?</li>
<li>Consistency – if      every team works differently, how do we get resource mobility /      flexibility?</li>
<li>Governance – how      does the sponsoring organization manage the risks associated with its      investments in software and ensure visibility of progress towards a      successful outcome?</li>
</ol>
<p>We face the following Hegelian Dialectic (I graduated in philosophy – you have to humor me!):</p>
<ol>
<li><strong><em>Thesis</em></strong>: Prescriptive      process kills the golden goose (development team creativity and      motivation)</li>
<li><strong><em>Antithesis</em></strong>: Removing the      prescriptions can distract, confuse and frustrate the team and its      stakeholders</li>
<li><strong><em>Synthesis</em></strong>: We need some      kind of smart practice framework that enables us to provide clear      direction on <strong><em>what</em></strong> needs to be done and <em>just enough</em> default standard guidance on <strong><em>how</em></strong> to do it, but enables teams      to easily refine or replace practices that are not exactly right for them.</li>
</ol>
<p>This smart practice framework is known as a process kernel. In this short series of blogs I will describe in a little more detail at what a kernel is and report on my experiences of using process kernels in practice to enable my customers to find answers to some of these seemingly intractable process problems.</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.ivarjacobson.com/the-kernel-journals-1-the-hegelian-dialectic-of-software-engineering/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

