<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="/stylesheets/rss.css"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/">
  <channel>
    <title>Object Mentor Blog: Solution Probleming</title>
    <link>http://blog.objectmentor.com/articles/2007/03/23/solution-probleming</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Solution Probleming</title>
      <description>&lt;p&gt;I&amp;#8217;ve been fortunate enough to have spent most of the past three weeks teaching advanced Object-Oriented Design with patterns.  The students have been wonderful and helpful and brilliant, so the classes have gone very well.&lt;/p&gt;


	&lt;p&gt;As I introduced students to Visitors, Adaptors, Chain of Responsibility, and mult-level State patterns, I was reminded of the problem that was rampant in the 90s: Having learned a catalog of patterns, many OO designers could not wait to put them into practice.   Rather than using patterns to solve problems, they began to look for ways to apply these pattern solutions.&lt;/p&gt;


	&lt;p&gt;I call it &amp;#8220;solution probleming&amp;#8221;, which is of course the opposite of &amp;#8220;problem solving.&amp;#8221;&lt;/p&gt;


	&lt;p&gt;It wasn&amp;#8217;t just the patterns community, it was software tools and it was frameworks and languages.  A company I know used to say &amp;#8220;I don&amp;#8217;t know what the problem is, but the solution is &lt;span class="caps"&gt;DB2&lt;/span&gt;, CICS, and &lt;span class="caps"&gt;COBOL&lt;/span&gt;.&amp;#8221;  That&amp;#8217;s solution probleming.  It&amp;#8217;s one of the reason that so many of us strive to not be product-based consultants.  We want to solve problems, not just shoehorn prefab solutions into people&amp;#8217;s applications.&lt;/p&gt;


	&lt;p&gt;I think any well-developed software developer&amp;#8217;s immune system should be wary of the smell of solution probleming.  It&amp;#8217;s one of the best ways I know to overcomplicate and overengineer a solution &lt;del&gt;-&lt;/del&gt; which is one of the worst ways to develop software.&lt;/p&gt;</description>
      <pubDate>Fri, 23 Mar 2007 11:07:00 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:236750c7-e455-40bd-a917-a4221e8c0925</guid>
      <author>Tim Ottinger</author>
      <link>http://blog.objectmentor.com/articles/2007/03/23/solution-probleming</link>
      <category>Tim's Tepid Torrent</category>
      <trackback:ping>http://blog.objectmentor.com/articles/trackback/6110</trackback:ping>
    </item>
    <item>
      <title>"Solution Probleming" by Tim</title>
      <description>&lt;p&gt;I don&amp;#8217;t always do that, but I do frequently mention that some of the patterns are language-specific and some are much easier to use in dynamic languages.&lt;/p&gt;


	&lt;p&gt;It&amp;#8217;s also not a straight patterns class, we talk more about design principles and practices, while covering a pretty decent starter-set of patterns (some advanced).&lt;/p&gt;</description>
      <pubDate>Fri, 23 Mar 2007 14:35:44 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:8af2a1de-5b18-4328-b669-71f59ec8090c</guid>
      <link>http://blog.objectmentor.com/articles/2007/03/23/solution-probleming#comment-158</link>
    </item>
    <item>
      <title>"Solution Probleming" by muumi</title>
      <description>&lt;p&gt;I hope you have emphasized also that design patterns are often to overcome the restrictness of the language used. For example, the problem of exploring a class hierarcy outside is much better done with pattern matching than visitor.
See: &lt;a href="http://www.artima.com/weblogs/viewpost.jsp?thread=166742" rel="nofollow"&gt;http://www.artima.com/weblogs/viewpost.jsp?thread=166742&lt;/a&gt;
Also in much more detail: &lt;a href="http://www.scala-lang.org/docu/files/MatchingObjectsWithPatterns-TR.pdf" rel="nofollow"&gt;http://www.scala-lang.org/docu/files/MatchingObjectsWithPatterns-TR.pdf&lt;/a&gt;&lt;/p&gt;


	&lt;p&gt;But of course there&amp;#8217;s always room for design patterns; but they should be focused on design, rather than implementation hacking.&lt;/p&gt;</description>
      <pubDate>Fri, 23 Mar 2007 12:46:13 +0000</pubDate>
      <guid isPermaLink="false">urn:uuid:82448cab-0e89-4e73-837c-a7ff09806403</guid>
      <link>http://blog.objectmentor.com/articles/2007/03/23/solution-probleming#comment-155</link>
    </item>
  </channel>
</rss>
