<?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>Tyner Blain &#187; Expert systems</title>
	<atom:link href="http://tynerblain.com/blog/category/expert-systems/feed/" rel="self" type="application/rss+xml" />
	<link>http://tynerblain.com/blog</link>
	<description>Software product success.</description>
	<lastBuildDate>Thu, 02 Sep 2010 21:53:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Prioritization and Value Maximization</title>
		<link>http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/</link>
		<comments>http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/#comments</comments>
		<pubDate>Wed, 01 Aug 2007 05:52:15 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Expert systems]]></category>
		<category><![CDATA[Prioritization]]></category>
		<category><![CDATA[Product Management]]></category>
		<category><![CDATA[Project Management]]></category>
		<category><![CDATA[ROI]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements Models]]></category>
		<category><![CDATA[Use Cases]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[prioritizing use cases]]></category>
		<category><![CDATA[time boxes]]></category>
		<category><![CDATA[time boxing]]></category>
		<category><![CDATA[timeboxes time-boxes]]></category>
		<category><![CDATA[timeboxing]]></category>
		<category><![CDATA[use cases]]></category>
		<category><![CDATA[value maximization]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F07%2F31%2Fprioritization-and-value-maximization%2F", "style": "big", "title": "Prioritization and Value Maximization" });

We all know the story about the emperor&#8217;s new clothes.  I&#8217;ve been thinking about prioritization and scheduling, and as far as I know, no one is promoting that we maximize value &#8211; they (and we) have been promoting that we do the most valuable [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F07%252F31%252Fprioritization-and-value-maximization%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Prioritization%20and%20Value%20Maximization%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F07%2F31%2Fprioritization-and-value-maximization%2F", "style": "big", "title": "Prioritization and Value Maximization" });</script></div>
<p><img title="emperor's clothes" alt="emperor's clothes" src="http://sehlhorst.smugmug.com/photos/179245489-M.jpg" /></p>
<p>We all know the story about the emperor&#8217;s new clothes.  I&#8217;ve been thinking about prioritization and scheduling, and as far as I know, no one is promoting that we maximize value &#8211; they (and we) have been promoting that we do the most valuable stuff first.  Doing the most valuable things first does not result in getting value the fastest.  In this article, we show why not.</p>
<p><span id="more-550"></span></p>
<h2>Genesis</h2>
<p>About a month ago, I read an <a title="Prioritize intuitively" href="http://kw-agiledevelopment.blogspot.com/2007/06/how-to-prioritise-quickly-and.html">article by Kelly Waters on how to prioritize intuitively</a>.  He presents a magic square diagram, showing both the &#8220;how valuable is it&#8221; and the &#8220;how hard is it to do&#8221; axes.  I&#8217;m oversimplifying, read his article for more details &#8211; he incorporates elements of risk, complexity, etc.  I really liked that he was addressing the &#8220;missing element&#8221; of how much work is involved.  However, his diagrammatic approach, while presenting this information very well, does not really yield insights into <em>what to do first</em>.  Kelly and I had a great discussion over the next couple weeks, exploring the interplay of work and value in prioritization, trying to find a way to encourage value-maximizing decisions.</p>
<h2>Prioritize By Value</h2>
<p>We have talked about prioritizing the <em><a title="prioritize by value" href="http://tynerblain.com/blog/2006/01/18/prioritizing-requirements-three-techniques/">most</a> <a title="prioritize across releases" href="http://tynerblain.com/blog/2006/03/08/prioritizing-software-requirements-across-releases/">valuable</a> <a title="cost reduction potential" href="http://tynerblain.com/blog/2006/09/25/cost-reduction-potential/">requirements</a></em> first repeatedly.  And in the last of those links, we accidentally hinted at, but didn&#8217;t grasp the real goal:</p>
<blockquote><p>We will only consider those steps where the profitability of change  exceeds our <a title="definition of npv" href="http://tynerblain.com/blog/2006/03/05/definition-of-npv-net-present-value/">hurdle rate</a> for investment.</p></blockquote>
<p>We&#8217;ve also talked in the past about using <a title="Planning a delivery schedule with use cases" href="http://tynerblain.com/blog/2006/07/19/communicating-a-release-schedule-with-use-cases/">use cases as the basis for scheduling</a>, as each use case represents realizable value.  For the rest of this article, we&#8217;ll talk in the context of scheduling use cases across releases.</p>
<p>Consider a very simple example &#8211; you have five use cases, with values of 10, 9, 9, 8, and 7 respectively (the units don&#8217;t matter).  If you sort those use cases in order by value, from left to right, they would look like the following:</p>
<p><img alt="use cases in order by value" title="use cases in order by value" src="http://sehlhorst.smugmug.com/photos/179245556-M.png" /></p>
<p>The size of each box shows the relative value of having the use case implemented.</p>
<p>Based on our previous guidance (and everyone else&#8217;s), you would implement them in order, from left to right.  Makes sense.  Do the most valuable thing first.  Do the next most valuable thing next.  Repeat until the value is not high enough to continue.</p>
<h2>What About The Amount of Work?</h2>
<p>OK, the amount of work required should play a role too.  In our <a title="how to timebox" href="http://tynerblain.com/blog/2006/04/12/how-to-use-timeboxes-for-scheduling-software-delivery/">time-boxing article</a>, we describe each release as having a given capacity, which you can visualize in terms of cost (resource) and time (duration of applying resources):</p>
<p><img alt="empty timebox" title="empty timebox" src="http://sehlhorst.smugmug.com/photos/64224627-M.png" /></p>
<p>We fill up that capacity with use cases, based upon how much work is involved.</p>
<p><img alt="filled timebox" title="filled timebox" src="http://sehlhorst.smugmug.com/photos/64224630-M.png" /></p>
<p>We can estimate the work involved with each use case by any of a number of methods &#8211; but the earliest estimates can be developed using <a title="use case points tutorial" href="http://tynerblain.com/blog/2007/02/12/software-cost-estimation-ucp-1/">use case points</a>.</p>
<p>Consider the following &#8220;work&#8221; measurements, identified for each of our use cases from above:</p>
<p><img alt="prioritize by value with work" title="prioritize by value with work" src="http://sehlhorst.smugmug.com/photos/179245541-M.png" /></p>
<p>We have the same sequence of use case implementation (based on value), but now we can visually see that there are different amounts of work associated with each use case.  The area of each box represents the relative level of effort required to implement the use case.</p>
<h2>Prioritize By Value Results</h2>
<p>The best way to explain the flaw with the classical &#8220;prioritize by value&#8221; approach is to show what happens after the first release.  Consider that you can accomplish 30 units of work in the first release.</p>
<p><img title="empty timebox of size 30" alt="empty timebox of size 30" src="http://sehlhorst.smugmug.com/photos/179245531-M.png" /></p>
<p>We can schedule the first two use cases for this release.  The size of the time-box above represents the amount of work that can be accomplished.  With the first two use cases scheduled, the time-box will look like the following:</p>
<p><img title="first release" alt="first release" src="http://sehlhorst.smugmug.com/photos/179245535-M.png" /></p>
<p>We have completely used up the available capacity of the team (Work = W = 30 = 10 + 20) by delivering the two most valuable use cases.  We have delivered <strong>19 units of value</strong> (Value = V = 10 + 9 = 19).</p>
<h2>Value Maximization</h2>
<p>When we consider both the value (V) and the cost (in terms of work, W) of each use case, we see that some use cases generate more value <em>per unit of work</em> than other use cases.  If we consider the ratios of value to work (V/W), and sort the use cases based on this approach, we would see the following:</p>
<p><img title="ratio order" alt="ratio order" src="http://sehlhorst.smugmug.com/photos/179245567-M.png" /></p>
<p>And with the previous specific value and work values:</p>
<p><img title="value and work in ratio order" alt="value and work in ratio order" src="http://sehlhorst.smugmug.com/photos/179245574-M.png" /></p>
<p>If we were to organize our delivery of use cases based on this ratio, we would be saying &#8220;<strong>prioritize the most effective use cases in terms of value per unit of work</strong>.&#8221;  This may seem counter intuitive, but it makes sense &#8211; get the most bang for the buck earlier, and you will get more value faster.</p>
<p>Consider what our first release would look like:</p>
<p><img title="timebox scheduled by ratio" alt="timebox scheduled by ratio" src="http://sehlhorst.smugmug.com/photos/179245564-M.png" /></p>
<p>We would complete three use cases (using 25 units of available work), and we would deliver <strong>25 units of value</strong>.  We would also be able to start working on one of the use cases that would be delivered in the next release.</p>
<h2>True Maximization</h2>
<p>To find the mathematically proven maximal value, we have to do a bunch more work.  This prioritization exercise is actually an example of the <em>bin-packing problem</em>, an np-complete computer science puzzle.  To make a long story short, we can&#8217;t use a simple heuristic and guarantee that in all cases it will be optimal.  But we can do better than &#8220;most valuable first.&#8221;</p>
<p>If we use the scheduling rule as follows:</p>
<p>Schedule the use cases in order based on the highest value-to-work ratio, skipping use cases that are &#8220;too big&#8221; for the current release.</p>
<p>Then we will get value out of the system as fast as possible.  There are a couple problems with this approach:</p>
<ol>
<li>It does not take into account that you can apply work from one release to a use case that is scheduled in a future release.  Intuitively, any &#8220;remaining time&#8221; after scheduling complete use cases should be spent on the next highest-ratio use case.  I haven&#8217;t proven that mathematically, but it makes sense.</li>
<li>Use cases, and their underlying requirements, and the implementation tasks to support those requirements are not actually independent.  You may need to introduce one use case before another &#8211; the second use case may not be possible without the first one.  Implementing a requirement that is shared across use cases will reduce the &#8220;remaining work&#8221; for those other use cases &#8211; causing a need to recalculate ratios.  Implementation tasks are often dependent upon one another.  The discrete tasks to support a valuable use case may require implementation work that is also leveraged in lower value use cases.  Further, some implementation tasks <em>must</em> be performed sequentially.  You can&#8217;t optimize a query before defining a database schema, for example.</li>
</ol>
<p>The second problem actually applies to any prioritization approach that incorporates value.  The nature of software development introduces constraints (X must be  completed before Y can be started).  Those constraints narrow the possible scheduling choices.  And they make it impractical to determine the &#8220;optimal&#8221; solution.  At least with commercially available tools, excluding expert systems, which can be used to solve this type of problem.</p>
<h2>Conclusion</h2>
<ul>
<li>Sequencing use cases based <em>solely</em> on value does not maximize the delivery of value over time.</li>
<li>Sequencing those use cases based upon the ratio of value to effort will increase the rate at which value is delivered to customers.</li>
<li>It is impractical (and possibly marginally valuable) to determine the optimal sequence for scheduling use cases to maximize value.</li>
</ul>
<p>You should use the &#8220;highest ratio first&#8221; approach, and when a use case can&#8217;t be delivered yet because of interdependencies, skip it.  Also &#8211; apply judgement to sanity check if you are doing something that seems odd &#8211; like delaying a high ratio, high value use case.  Explore with the development team if there are ways to adjust their dependencies to allow for a &#8220;more valuable&#8221; delivery sequence</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Prioritization+and+Value+Maximization+http://bit.ly/4xmnR+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/&amp;t=Prioritization+and+Value+Maximization" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/07/31/prioritization-and-value-maximization/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Smart Enough Systems &#8211; Interview With James Taylor</title>
		<link>http://tynerblain.com/blog/2007/06/25/smart-enough-systems/</link>
		<comments>http://tynerblain.com/blog/2007/06/25/smart-enough-systems/#comments</comments>
		<pubDate>Tue, 26 Jun 2007 03:38:54 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Book Reviews]]></category>
		<category><![CDATA[Business Analysis]]></category>
		<category><![CDATA[Expert systems]]></category>
		<category><![CDATA[Process Improvement]]></category>
		<category><![CDATA[Reviews]]></category>
		<category><![CDATA[edm]]></category>
		<category><![CDATA[edm interview]]></category>
		<category><![CDATA[edm podcast]]></category>
		<category><![CDATA[enterprise decision management]]></category>
		<category><![CDATA[hidden decisions]]></category>
		<category><![CDATA[interview]]></category>
		<category><![CDATA[james taylor]]></category>
		<category><![CDATA[managing data]]></category>
		<category><![CDATA[mp3]]></category>
		<category><![CDATA[smart enough systems]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2007/06/25/smart-enough-systems/</guid>
		<description><![CDATA[
topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F25%2Fsmart-enough-systems%2F", "shorturl": "http://bit.ly/bpxUYl", "style": "big", "title": "Smart Enough Systems - Interview With James Taylor" });

Today we recorded an interview with James Taylor, co-author of Smart (Enough) Systems, How To Deliver Competitive Advantage by Automating Hidden Decisions.  This book, written by James Taylor with Neil Raden comes out on Jun 29th (2007), and [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2007%252F06%252F25%252Fsmart-enough-systems%252F%22%2C%20%22shorturl%22%3A%20%22http%3A%2F%2Fbit.ly%2FbpxUYl%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Smart%20Enough%20Systems%20-%20Interview%20With%20James%20Taylor%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2007%2F06%2F25%2Fsmart-enough-systems%2F", "shorturl": "http://bit.ly/bpxUYl", "style": "big", "title": "Smart Enough Systems - Interview With James Taylor" });</script></div>
<p><img title="James Taylor" src="http://www.edmblog.com/jamestaylor2.jpg" alt="James Taylor" /></p>
<p>Today we recorded an interview with <a title="About James Taylor" href="http://aboutjt.com/wp/">James Taylor</a>, co-author of Smart (Enough) Systems, How To Deliver Competitive Advantage by Automating Hidden Decisions.  This book, written by James Taylor with Neil Raden comes out on Jun 29th (2007), and is available for pre-order from Amazon today.  Our interview covers many of the topics in their book, with a focus on the ideas inside and the benefits you can get from applying them, in just under an hour.</p>
<p><span id="more-526"></span></p>
<h2>Smart (Enough) Systems</h2>
<p><img title="smart enough systems book cover" src="http://sehlhorst.smugmug.com/photos/166708837-M.jpg" alt="smart enough systems book cover" /></p>
<p>James and Neil introduce a pretty compelling concept &#8211; that paying attention to small decisions can have as large an impact for companies as paying attention to large decisions.  All successful companies invest in strategic decision making &#8211; the big impact, infrequent decisions.  But most companies overlook the benefits of investing cost-effectively in the small decisions that happen thousands or millions or even billions of times a day.</p>
<p>In our interview, James gives us some insight into exactly how that can happen, how to approach these small decisions, and how to manage them.</p>
<h2>Interview With James Taylor</h2>
<p>You can download <a title="James Taylor Interview" href="http://tynerblain.com/downloads/20070625.jamestaylor.interview.mp3">our interview with James Taylor in mp3 format (18 MB, 52 minutes)</a> and listen at any time.  As this is my first recorded interview, please accept my apologies for the &#8220;ums and ahs.&#8221;  James does 99% of the speaking, so it still turned out ok &#8211; he did a fantastic job.</p>
<p>James&#8217; book is an excellent read, and eye-opening, revealing what should be obvious but remains hidden about improving our businesses.  Every action and interaction a company makes is the result of a decision.  Making those decisions accurately, quickly, and cost-effectively is critical to every business.  Being able to adapt those decisions (and their resulting processes and customer-interactions) rapidly is the key to success in a world that is changing faster than ever.  The flow of ideas is straightforward, and each new idea builds upon the previous ones, allowing readers to quickly conceptualize a <em>better way to run their business</em>.  The anecdotes and real-world examples also solidify the concepts, and almost force the reader to think about how to apply it to their own business.</p>
<p>I personally recommend the book, and thank James for the opportunity to read it and speak with him about it.</p>
<h2>More Resources on Smart (Enough) Systems</h2>
<p>Near the end of our interview, James mentions<a title="smart enough systems website" href="http://www.smartenoughsystems.com/wp/main"> the web site for the book</a>.  The book is available from Amazon now, and can be ordered through the link on the main page.  They also have an RSS feed with news on the book, and will be launching a wiki for the book very soon as well.</p>
<p>This approach to integrating business and IT systems is also known as enterprise decision management, or EDM.  You can read more about EDM at James&#8217; <a title="EDM Blog" href="http://www.edmblog.com/">EDM Blog</a>.</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Smart+Enough+Systems+%E2%80%93+Interview+With+James+Taylor+http://bit.ly/ECy0w+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2007/06/25/smart-enough-systems/&amp;t=Smart+Enough+Systems+%E2%80%93+Interview+With+James+Taylor" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2007/06/25/smart-enough-systems/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
<enclosure url="http://tynerblain.com/downloads/20070625.jamestaylor.interview.mp3" length="18743599" type="audio/mpeg" />
		</item>
		<item>
		<title>Expert systems &#8211; do what I say, not what I should have said</title>
		<link>http://tynerblain.com/blog/2006/03/26/expert-systems-do-what-i-say-not-what-i-should-have-said/</link>
		<comments>http://tynerblain.com/blog/2006/03/26/expert-systems-do-what-i-say-not-what-i-should-have-said/#comments</comments>
		<pubDate>Mon, 27 Mar 2006 05:39:17 +0000</pubDate>
		<dc:creator>Scott Sehlhorst</dc:creator>
				<category><![CDATA[Expert systems]]></category>
		<category><![CDATA[Requirements]]></category>
		<category><![CDATA[Requirements gathering]]></category>
		<category><![CDATA[Software development]]></category>
		<category><![CDATA[Software requirements specification]]></category>
		<category><![CDATA[expert systems requirements]]></category>
		<category><![CDATA[knowledge base]]></category>
		<category><![CDATA[knowledge engineering]]></category>
		<category><![CDATA[managing data]]></category>

		<guid isPermaLink="false">http://tynerblain.com/blog/2006/03/26/expert-systems-do-what-i-say-not-what-i-should-have-said/</guid>
		<description><![CDATA[We've studiously avoided talking about requirements for expert systems because it is such a small niche of software development. Please let us know in the comments on this post if this is an area you would like to read more about.  This post is both a discussion of the main barrier to success for these systems and an introduction to future posts if you ask for them in the comments on this post.  Expert systems, or AI programs can solve some of the hardest problems.  Yet AI software has not dominated the software landscape, neither Heinlein's nor Vinge's fictions have become real.  Why has AI software failed?  It isn't that the hardest problems are too hard to solve, it's that they often don't need to be solved at all.

]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Ftynerblain.com%252Fblog%252F2006%252F03%252F26%252Fexpert-systems-do-what-i-say-not-what-i-should-have-said%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22Expert%20systems%20-%20do%20what%20I%20say%2C%20not%20what%20I%20should%20have%20said%22%20%7D);"><script type="text/javascript">topsyWidgetPreload({ "url": "http%3A%2F%2Ftynerblain.com%2Fblog%2F2006%2F03%2F26%2Fexpert-systems-do-what-i-say-not-what-i-should-have-said%2F", "style": "big", "title": "Expert systems - do what I say, not what I should have said" });</script></div>
<p><img title="albert einstein" alt="albert einstein" src="http://sehlhorst.smugmug.com/photos/61667566-M.jpg" /></p>
<p><strong>Esoteria</strong></p>
<p>We&#8217;ve studiously avoided talking about requirements for expert systems because it is such a small niche of software development. Please let us know in the comments on this post if this is an area you would like to read more about. This post is both a discussion of the main barrier to success for these systems and an introduction to future posts if you ask for them in the comments on this post.</p>
<p><strong>Background</strong></p>
<p>Expert systems can solve some of the hardest problems.  Yet AI software has <em>not </em>dominated the software landscape, neither Heinlein&#8217;s nor Vinge&#8217;s fictions have become real. Why has AI software failed? After over 10,000 hours of gathering, validating and implementing requirements for expert systems, we&#8217;re convinced that it&#8217;s because programmers are being asked to solve the wrong problems.</p>
<p>The problem isn&#8217;t that the hardest problems are too hard to solve, it&#8217;s that they often don&#8217;t need to be solved at all.</p>
<p>Expert systems are often referred to as <em>knowledge engineering systems</em>. An expert system takes a database containing data, and adds engineering rules to it. This database is then usually known as a <em>knowledge base</em>. An engine can then process inputs into &#8220;the system&#8221;, and generate outputs in accordance with the data and rules embodied in the knowledgebase.</p>
<p><strong>Catalyst for this post</strong><br />
We recently were linked to from <a title="Nilsnet blog" href="http://www.nilsnet.com/">Nilsnet</a> (thanks!), and the first article we read was titled &#8216;<a title="AI article" href="http://www.nilsnet.com/index.php?/archives/18-Expert-system-program-that-almost-solves-a-toy-version-of-a-non-problem.html"><em>Expert System = program that almost solves a toy version of a non-problem</em></a>&#8216; by Nils Davis. In that article, he also links to an article that presents a criticism of AI. This just started the gears turning&#8230;</p>
<p><strong>Business applications of expert systems</strong><br />
There are a few &#8216;common&#8217; problems that are addressed with expert systems:</p>
<ul>
<li><strong>Resource planning and allocation</strong>: Minimizing the amount of work-in-process inventory that has to be carried to achieve a given production schedule, determining the lowest-cost manufacturing facility to source an order, airplane route scheduling.</li>
<li><strong>Equipment configuration</strong>: Custom-configuration of high end equipment (telecommunications hardware, super-computers and clusters) with validation that the equipment will be operational as ordered.</li>
<li><strong>Travelling salesman</strong>: Minimizing the distance or time spent travelling to multiple locations to save costs in scheduling of deliveries.</li>
<li><strong>Resource optimization</strong>: Resolving otherwise computationally prohibitive constraints to achieve optimal selections of services, software, or hardware.</li>
<li><strong>Automation of tedious engineering work</strong>: Calculating and validating layout and placement information in association with engineering rules (aircraft interiors, card placement in modular systems, traffic routing in a pbx, etc)</li>
</ul>
<p><strong>Migration projects are the norm</strong><br />
We&#8217;ve talked in the past about <a title="Requirements for software migration" href="http://tynerblain.com/blog/2006/03/09/software-requirements-for-migration-projects/">the migration continuum</a>, here&#8217;s a diagram from that post depicting the range of projects</p>
<p><img alt="migration continuum" title="migration continuum" src="http://sehlhorst.smugmug.com/photos/59244846-M.png" /></p>
<p>Every expert system project we&#8217;ve seen has been a migration project from an existing process. Fewer than 10% have involved major process changes. These projects almost always get relegated to being <em>plug-ins</em> into existing business processes. The client companies simply automate a step in their existing process. In one major engagement, the client was coincidentally re-engineering their entire project, but the expert systems portion was no more than a box in a flowchart from an executive perspective. A multi-million dollar box, true, but still a second-class portion of the project.</p>
<p><strong>Mis-application of technology</strong><br />
If engineering is the application of science to practical problems, then knowledge engineering is the mis-application of science to impractical problems.</p>
<p>Using expert systems to solve problems requires programmers that are &#8220;wired differently.&#8221; There are two factors that at least correlate with this.</p>
<ol>
<li>The experts in these technologies tend to be unappreciative of the other elements of successful software.</li>
<li>The non-experts in most organizations do not understand the technology &#8211; neither its capabilities nor its limitations.</li>
</ol>
<p><strong>Myopic viewpoint</strong></p>
<p>To quote the <em>Gary Martins reference</em> (from Nils&#8217; post):</p>
<blockquote><p>While all other areas of technology have enjoyed heroic advanages since [1955], AI advocates continue to pick over the same stale chestnuts that seemed so fascinating way back then.</p></blockquote>
<p>I chuckled when I read this. I remember a project that was undertaken at my previous employer to rewrite/migrate an existing expert system engine to a new platform. The first thing the developer did was create a set of these chesnuts (9-queens, bin-packing, etc.) as his criteria for validating his work. Only after getting feedback did he incorporate real-world problems (pbx trafficing, frame-relay network design, card-slotting). This is exactly the lack of appreciation that prevents the technologists who understand the technology from thinking about <em>valuable</em> applications.</p>
<p>We&#8217;ve talked, in <a title="Navigating areas of expertise" href="http://tynerblain.com/blog/2005/12/02/intimate-domains-%e2%80%93-navigating-areas-of-expertise/"><em>Intimate Domains</em></a> about the importance of operating and communicating in the intersection of these domains, as the following Venn diagram shows.</p>
<p><img title="Domain expertise diagram" alt="Domain expertise diagram" src="http://sehlhorst.smugmug.com/photos/46728357-M.png" /></p>
<p>The expert system experts tend to conspicuously avoid any overlap with the stakeholders/users/marketing group. My favorite quote from an expert system developer about users:</p>
<blockquote><p>I&#8217;d rather pick up garbage than design user interfaces.</p></blockquote>
<p>Hmmm.</p>
<p><strong>Lack of understanding</strong></p>
<p>Even technically savvy business people don&#8217;t have an appreciation of the applicability of expert systems to their problems. Unfortunately, there aren&#8217;t many people who can live in both worlds (switch hitters) and provide that synthesis of ideas. Many a glazed eye has ignored a powerpoint presentation attempting to explain the technology.</p>
<p><strong>Lack of collaboration</strong></p>
<p>Ultimately, both of these problems result in a lack of collaboration.  A typical conversation might go like this:</p>
<blockquote><p>Business: We want the software to configure the optimal racked storage system based on our customer&#8217;s needs.<br />
Developer: Define optimal. Lowest cost? Highest performance? Highest profit (to our knowledge, no one has implemented a profit-maximizing configurator)?<br />
B: Lowest cost.  Can you make it propose upselling suggestions?<br />
D: Of course we could, that&#8217;s trivial. But it&#8217;s not a good application of this technology. You should focus on the configuration.<br />
B: OK, you&#8217;re the expert.  How much will this cost?  How fast will it run?<br />
D: Optimality is hard. We did a prototype, and we expect it will take a minute to process for a fully maxed out system. Also, it will cost you (really large amount).<br />
B: Well, we need it &#8211; go ahead.  [Makes note to himself: Replace these guys asap - too expensive]</p></blockquote>
<p>Here are a couple improvements to the conversation.  We start by putting a requirements analyst into the loop.</p>
<blockquote><p>Business: We want the software to configure the optimal racked storage system based on our customer&#8217;s needs.<br />
Analyst: Do you want to optimize on cost to your customer, profits to your company, or some other metric? How important is optimality?<br />
B: Lowest cost.  What do you mean important?  It&#8217;s critical &#8211; that&#8217;s how we compete!<br />
A: Well, there&#8217;s a theoretical lowest cost for any solution. An engineer can figure it out in a day, our software can do it in about a minute. And it will cost you (really large amount). But if we only had to get within 1% of the <em>optimal</em> solution (say $1,000 for a $100,000 storage system), we could do it for half the cost and it would take about a second for our software to find the answer. Besides, our analysis shows that your average system cost your customers 10% more than the &#8220;optimal&#8221; price. You would be getting 90% of the benefit of the system at half the cost.<br />
B: Our sales reps have the authority to adjust prices up and down 3%, and sales managers can cut them by 5%. We can live with 1%.<br />
&#8230;</p></blockquote>
<p>Maybe if these conversations had taken place, the companies that failed to capitalize on expert systems would still be around. The problem is that the technologists, in their eagerness to please, do whatever is asked of them (if they can). They never learned to question the value of what they were being asked to do. In our example, the customer didn&#8217;t <em>need</em> to get the optimal price &#8211; any improvement would make them more competitive. And the business person knew it. The technologist didn&#8217;t know to ask.</p>
<p>There are many examples like this in the engineering domain as well. A subject matter expert may say &#8220;It must be X,Y,Z&#8221; and the developer will say &#8220;not a problem.&#8221; X,Y,Z might be a choice that saves a penny over X,Z,Y. And implementing &#8220;X first&#8221; might be a lot easier. Furthermore, the SME should have said &#8221; is important.&#8221;</p>
<p>Someone who understands the particular expert system, and who understands business and engineering rules needs to act as an intermediary to gather the requirements. This need is no different than with any software project. The problem is there are so few people who can fill it that the industry is languishing (again) before the problem can truly be addressed.</p>
<p><strong> Conclusion</strong></p>
<p>There are a lot of amazing things that can be accomplished with expert systems. The challenge is in knowing when those solutions are unneccesary. Again, please add a comment if you would like to read more (or not) about expert systems at Tyner Blain. Thanks in advance!</p>

<p align="left"><a target="_blank" rel="nofollow" class="tt" href="http://twitter.com/home/?status=By+@sehlhorst:+Expert+systems+%E2%80%93+do+what+I+say%2C+not+what+I+should+have+said+http://bit.ly/3Ynoqu+" title="Post to Twitter"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-twitter-big1.png" alt="Post to Twitter" /></a> <a target="_blank" rel="nofollow" class="tt" href="http://www.facebook.com/share.php?u=http://tynerblain.com/blog/2006/03/26/expert-systems-do-what-i-say-not-what-i-should-have-said/&amp;t=Expert+systems+%E2%80%93+do+what+I+say%2C+not+what+I+should+have+said" title="Post to Facebook"><img class="nothumb" src="http://tynerblain.com/blog/wp-content/plugins/tweet-this/icons/tt-facebook-big4.png" alt="Post to Facebook" /></a></p>]]></content:encoded>
			<wfw:commentRss>http://tynerblain.com/blog/2006/03/26/expert-systems-do-what-i-say-not-what-i-should-have-said/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
