<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	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/"
	>
<channel>
	<title>Comments on: Solve The Real Problem</title>
	<atom:link href="http://pliantalliance.org/2006/06/28/solve-the-real-problem/feed/" rel="self" type="application/rss+xml" />
	<link>http://pliantalliance.org/2006/06/28/solve-the-real-problem/</link>
	<description>Think. Evaluate. Change.</description>
	<pubDate>Tue, 06 Jan 2009 06:10:57 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>By: Jonathan Kohl</title>
		<link>http://pliantalliance.org/2006/06/28/solve-the-real-problem/comment-page-1/#comment-49</link>
		<dc:creator>Jonathan Kohl</dc:creator>
		<pubDate>Fri, 30 Jun 2006 17:44:24 +0000</pubDate>
		<guid isPermaLink="false">http://pliantalliance.org/?p=34#comment-49</guid>
		<description>This content would make a great article. :)

-Jonathan</description>
		<content:encoded><![CDATA[<p>This content would make a great article. :)</p>
<p>-Jonathan</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: benoit</title>
		<link>http://pliantalliance.org/2006/06/28/solve-the-real-problem/comment-page-1/#comment-48</link>
		<dc:creator>benoit</dc:creator>
		<pubDate>Thu, 29 Jun 2006 18:33:37 +0000</pubDate>
		<guid isPermaLink="false">http://pliantalliance.org/?p=34#comment-48</guid>
		<description>&lt;i&gt;While it may look like you are holding out for “the perfect solution” (that solves the whole, real problem), what you are really doing is preventing “the very good solution” that can be applied in the interim.&lt;/i&gt;

We must also admit that there is &lt;b&gt;no silver bullet&lt;/b&gt;.  As much as people write about processes that will "solve all problems" there is no way to do that, just as there is no one pair of pants that will fit every human on the planet.  What we have instead is the ability to recognize when what we are doing, and what we have done in attempting to solve the real problem has failed.  Regroup.  Rethink.  Rewrite.</description>
		<content:encoded><![CDATA[<p><i>While it may look like you are holding out for “the perfect solution” (that solves the whole, real problem), what you are really doing is preventing “the very good solution” that can be applied in the interim.</i></p>
<p>We must also admit that there is <b>no silver bullet</b>.  As much as people write about processes that will &#8220;solve all problems&#8221; there is no way to do that, just as there is no one pair of pants that will fit every human on the planet.  What we have instead is the ability to recognize when what we are doing, and what we have done in attempting to solve the real problem has failed.  Regroup.  Rethink.  Rewrite.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tbeck</title>
		<link>http://pliantalliance.org/2006/06/28/solve-the-real-problem/comment-page-1/#comment-47</link>
		<dc:creator>tbeck</dc:creator>
		<pubDate>Thu, 29 Jun 2006 14:35:25 +0000</pubDate>
		<guid isPermaLink="false">http://pliantalliance.org/?p=34#comment-47</guid>
		<description>&lt;i&gt;We must recognize that perfection can only be approached asymptotically through evolution of design and implementation.&lt;/i&gt;

Again, this can also be applied to how the software is developed.  :)</description>
		<content:encoded><![CDATA[<p><i>We must recognize that perfection can only be approached asymptotically through evolution of design and implementation.</i></p>
<p>Again, this can also be applied to how the software is developed.  :)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Brad Spencer</title>
		<link>http://pliantalliance.org/2006/06/28/solve-the-real-problem/comment-page-1/#comment-46</link>
		<dc:creator>Brad Spencer</dc:creator>
		<pubDate>Thu, 29 Jun 2006 14:32:53 +0000</pubDate>
		<guid isPermaLink="false">http://pliantalliance.org/?p=34#comment-46</guid>
		<description>Nudge felt.  I offer to you my musings from July 2003 on some related principles.

&lt;strong&gt;Solve the whole problem.&lt;/strong&gt;

This is the corollary to &lt;strong&gt;solve the real problem&lt;/strong&gt;. If you are building a function, a class, a library, an application, or a system, by solving the real problem, you make sure you clearly delineate the &lt;strong&gt;areas of responsibility&lt;/strong&gt; of yourself and others using a &lt;strong&gt;well-defined interfaces&lt;/strong&gt;. By solving the whole problem, you ensure that the well-defined interface best represents the most appropriate division of responsibility. This idea can be represented by the notion that a system component should make the work it does &lt;strong&gt;significantly easier&lt;/strong&gt; for clients if they use the component versus doing it themselves.

&lt;strong&gt;The implementation is more flexible than the interface.&lt;/strong&gt;

If you have &lt;strong&gt;well-defined interfaces&lt;/strong&gt; dividing &lt;strong&gt;areas of responsibility&lt;/strong&gt;, then you "write to the interface". Doing this properly and taking advantage of the abstraction requires designing the interface to match the division of responsibility (i.e. &lt;strong&gt;solving the whole problem&lt;/strong&gt;) and then writing the code to implement as much of that interface as is necessary (maybe all of it). The wrong thing to do is to write an interface that matches (read "exposes") your current implementation out of convenience and then be jailed to that implementation forever.

&lt;strong&gt;Never let perfect stand in the way of very good.&lt;/strong&gt;

It may be tempting to wait until you have the time, the knowledge, or the inclination to design the "perfect" solution, especially if you aim to &lt;strong&gt;solve the real problem&lt;/strong&gt;. However, you must temper this instinct with practicality. While it may look like you are holding out for "the perfect solution" (that solves the whole, real problem), what you are really doing is preventing "the very good solution" that can be applied in the interim. We must recognize that perfection can only be approached asymptotically through evolution of design and implementation: in essence by refining our deployed very good solutions to make them more perfect. Solving the real problem should be applied where scope allows and it should guide our path to tell us where perfect is, but we are allowed to get there in more than one step. Very good solutions have value, and value delayed is value lost.

This last principle developed out of seed ideas from David Trueman here at IIA and serves as an important balance to the other three.  It represents the "real world pressures" and reminds us that the real goal is to produce something, after all.</description>
		<content:encoded><![CDATA[<p>Nudge felt.  I offer to you my musings from July 2003 on some related principles.</p>
<p><strong>Solve the whole problem.</strong></p>
<p>This is the corollary to <strong>solve the real problem</strong>. If you are building a function, a class, a library, an application, or a system, by solving the real problem, you make sure you clearly delineate the <strong>areas of responsibility</strong> of yourself and others using a <strong>well-defined interfaces</strong>. By solving the whole problem, you ensure that the well-defined interface best represents the most appropriate division of responsibility. This idea can be represented by the notion that a system component should make the work it does <strong>significantly easier</strong> for clients if they use the component versus doing it themselves.</p>
<p><strong>The implementation is more flexible than the interface.</strong></p>
<p>If you have <strong>well-defined interfaces</strong> dividing <strong>areas of responsibility</strong>, then you &#8220;write to the interface&#8221;. Doing this properly and taking advantage of the abstraction requires designing the interface to match the division of responsibility (i.e. <strong>solving the whole problem</strong>) and then writing the code to implement as much of that interface as is necessary (maybe all of it). The wrong thing to do is to write an interface that matches (read &#8220;exposes&#8221;) your current implementation out of convenience and then be jailed to that implementation forever.</p>
<p><strong>Never let perfect stand in the way of very good.</strong></p>
<p>It may be tempting to wait until you have the time, the knowledge, or the inclination to design the &#8220;perfect&#8221; solution, especially if you aim to <strong>solve the real problem</strong>. However, you must temper this instinct with practicality. While it may look like you are holding out for &#8220;the perfect solution&#8221; (that solves the whole, real problem), what you are really doing is preventing &#8220;the very good solution&#8221; that can be applied in the interim. We must recognize that perfection can only be approached asymptotically through evolution of design and implementation: in essence by refining our deployed very good solutions to make them more perfect. Solving the real problem should be applied where scope allows and it should guide our path to tell us where perfect is, but we are allowed to get there in more than one step. Very good solutions have value, and value delayed is value lost.</p>
<p>This last principle developed out of seed ideas from David Trueman here at IIA and serves as an important balance to the other three.  It represents the &#8220;real world pressures&#8221; and reminds us that the real goal is to produce something, after all.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: tbeck</title>
		<link>http://pliantalliance.org/2006/06/28/solve-the-real-problem/comment-page-1/#comment-45</link>
		<dc:creator>tbeck</dc:creator>
		<pubDate>Thu, 29 Jun 2006 14:32:27 +0000</pubDate>
		<guid isPermaLink="false">http://pliantalliance.org/?p=34#comment-45</guid>
		<description>&lt;i&gt;Solve The Real Problem. If you don’t, you will have to live with the consequences. The longer you wait, the harder it will be to un-fix all patches.&lt;/i&gt;

This of course applies to both the software itself and the process used to build the software.</description>
		<content:encoded><![CDATA[<p><i>Solve The Real Problem. If you don’t, you will have to live with the consequences. The longer you wait, the harder it will be to un-fix all patches.</i></p>
<p>This of course applies to both the software itself and the process used to build the software.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: benoit</title>
		<link>http://pliantalliance.org/2006/06/28/solve-the-real-problem/comment-page-1/#comment-44</link>
		<dc:creator>benoit</dc:creator>
		<pubDate>Thu, 29 Jun 2006 14:29:48 +0000</pubDate>
		<guid isPermaLink="false">http://pliantalliance.org/?p=34#comment-44</guid>
		<description>"Solve The Real Problem" has been my motto for many years.  It applies to so many things other than software engineering!  However, in software, unlike with concrete real-world objects, it is sometimes harder to trace the symptoms that get reported back to their root problem.  I have seen how some other companies attempt to patch software at the symptom level and it usually ends up in a legacy of code that becomes unmaintainable.

Solve The Real Problem.  If you don't, you will have to live with the consequences.  The longer you wait, the harder it will be to un-fix all patches.</description>
		<content:encoded><![CDATA[<p>&#8220;Solve The Real Problem&#8221; has been my motto for many years.  It applies to so many things other than software engineering!  However, in software, unlike with concrete real-world objects, it is sometimes harder to trace the symptoms that get reported back to their root problem.  I have seen how some other companies attempt to patch software at the symptom level and it usually ends up in a legacy of code that becomes unmaintainable.</p>
<p>Solve The Real Problem.  If you don&#8217;t, you will have to live with the consequences.  The longer you wait, the harder it will be to un-fix all patches.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
