<?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: Getting a SOLID start.</title>
    <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start</link>
    <language>en-us</language>
    <ttl>40</ttl>
    <description></description>
    <item>
      <title>Getting a SOLID start.</title>
      <description>&lt;p&gt;I am often asked: &amp;#8220;How should I get started with &lt;span class="caps"&gt;SOLID&lt;/span&gt; principles?&amp;#8221;  Given the recent interest and controversy about the issue, it&amp;#8217;s probably time I gave a written answer.&lt;/p&gt;


	&lt;h2&gt;First things first.&lt;/h2&gt;


	&lt;p&gt;You can read about the Solid principles &lt;a href="http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf"&gt;here&lt;/a&gt;.  This is a paper I wrote nearly a decade ago.  It uses a somewhat dated form of &lt;span class="caps"&gt;UML&lt;/span&gt;, and examples are in C++.  Also the concepts are &lt;em&gt;severely&lt;/em&gt; abbreviated.  This is the Cliff Notes.  Still, it should give you an initial notion of the names, definitions, and concepts.&lt;/p&gt;


	&lt;p&gt;There are quite a few papers &lt;a href="http://www.objectmentor.com/resources/publishedArticles.html"&gt;here&lt;/a&gt; that explain the principles in much more detail.  Just click on the &amp;#8220;Design Principles&amp;#8221; topic to see them all.  Though I think you&amp;#8217;ll find the other topics pretty interesting too.&lt;/p&gt;


	&lt;p&gt;Finally, the principles are definitively described in two books: &lt;em&gt;Agile Software Development: Principles, Patterns, and Practices&lt;/em&gt;, and &lt;em&gt;Agile Principles Patterns, and Practices in C#&lt;/em&gt;.  You can see descriptions of these books &lt;a href="http://www.objectmentor.com/PPP"&gt;here&lt;/a&gt;&lt;/p&gt;


	&lt;h2&gt;What do I mean by &amp;#8220;Principle&amp;#8221;&lt;/h2&gt;


	&lt;p&gt;The &lt;span class="caps"&gt;SOLID&lt;/span&gt; principles are not rules.  They are not laws.  They are not perfect truths.  The are statements on the order of &lt;em&gt;&amp;#8220;An apple a day keeps the doctor away.&amp;#8221;&lt;/em&gt;  This is a good principle, it is good advice, but it&amp;#8217;s not a pure truth, nor is it a rule.&lt;/p&gt;


	&lt;p&gt;The principles are mental cubby-holes.  They give a name to a concept so that you can talk and reason about that concept.  They provide a place to hang the &lt;em&gt;feelings&lt;/em&gt; we have about good and bad code.  They attempt to categorize those feelings into concrete advice.  In that sense, the principles are a kind of anodyne.  Given some code or design that you &lt;em&gt;feel bad&lt;/em&gt; about, you may be able to find a principle that explains that bad feeling and advises you about how to feel better.&lt;/p&gt;


	&lt;p&gt;These principles are heuristics. They are common-sense solutions to common problems.  They are common-sense disciplines that can help you stay out of trouble.  But like any heuristic, they are empirical in nature.  They have been observed to work in many cases; but there is no proof that they always work, nor any proof that they should always be followed.&lt;/p&gt;


	&lt;h2&gt;Following the rules on the paint can won&amp;#8217;t teach you how to paint.&lt;/h2&gt;


	&lt;p&gt;This is an important point.  Principles will not turn a bad programmer into a good programmer.  Principles have to be applied with judgement.  If they are applied by rote it is just as bad as if they are not applied at all.&lt;/p&gt;


	&lt;p&gt;Having said that, if you want to paint well, I suggest you learn the rules on the paint can.  You may not agree with them all.  You may not always apply the ones you &lt;em&gt;do&lt;/em&gt; agree with.  But you&amp;#8217;d better &lt;strong&gt;know&lt;/strong&gt; them.  Knowledge of the principles and patterns gives you the justification to decide when and where to apply them.  If you don&amp;#8217;t know them, your decisions are much more arbitrary.&lt;/p&gt;


	&lt;h2&gt;So how do I get started?&lt;/h2&gt;


	&lt;p&gt;&amp;#8220;There is no royal road to Geometry&amp;#8221; Euclid once said to a King who wanted the short version.  Don&amp;#8217;t expect to skim through the papers,  or thumb through the books, and come out with any real knowledge.  If you want to learn these principles well enough to be able to apply them, then you have to &lt;em&gt;study&lt;/em&gt; them.  The books are full of coded examples of principles done right and wrong.  Work through those examples, and follow the reasoning carefully.  This is not easy, but it &lt;em&gt;is&lt;/em&gt; rewarding.&lt;/p&gt;


	&lt;p&gt;Search your own code, and the code of others, for applications and violations of the principles.  Determine whether those applications and violations were justified.  Improve the designs by applying one or more principles, and see if the result is actually better.  If you&amp;#8217;d like to study a code base that was written by people who&amp;#8217;ve been immersed in these principles for years, then download the source for FitNesse from fitnesse.org.&lt;/p&gt;


	&lt;p&gt;Conduct or join a discussion group at work.  Do brown-bags, lunch-n-learns, reading-groups, etc.  People who learn in groups learn much more, and much more quickly, than people who study alone.  Never underestimate the power of the other guy&amp;#8217;s viewpoint.&lt;/p&gt;


	&lt;p&gt;By the same token, join a user group with people from different companies.  Attend monthly meetings and listen to the speakers, or participate in the discussions.  Again, you&amp;#8217;ll learn an awful lot that way.&lt;/p&gt;


	&lt;p&gt;Practice, practice, practice, practice.  Be prepared to make &lt;em&gt;lots&lt;/em&gt; of mistakes.&lt;/p&gt;


	&lt;p&gt;And, of course, apply what you&amp;#8217;ve learned on the job, and ask your peers to review your work.  Pair program with them if at all possible.  &lt;em&gt;&amp;#8220;As iron sharpens iron, so one man sharpens another.&amp;#8221;&lt;/em&gt; (Proverbs 27:17)&lt;/p&gt;</description>
      <pubDate>Thu, 12 Feb 2009 20:43:35 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:970506d9-c08d-40b0-a6ee-b347be94e70e</guid>
      <author>Uncle Bob</author>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start</link>
      <category>Uncle Bob's Blatherings</category>
      <category>Design Principles</category>
    </item>
    <item>
      <title>"Getting a SOLID start." by Sadda Adda Songs</title>
      <description>&lt;p&gt;Nice post. I like the way to begin to conclude your thoughts. Thank you for this information. I very much appreciate your work, keep it up.&lt;/p&gt;</description>
      <pubDate>Wed, 08 Feb 2012 05:31:47 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:737730d3-4ac7-4a32-9300-a62f62d80513</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-202348</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by mohan</title>
      <description>&lt;p&gt;thanks for shear your tips with us.&lt;/p&gt;</description>
      <pubDate>Mon, 06 Feb 2012 22:29:49 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:65652f04-04dd-4ee8-951e-e799256846a7</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-202011</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by puzzles personalizados </title>
      <description>&lt;p&gt;I am fully agree with your given article information. I really admire to this nice blog to post this superior post.&lt;/p&gt;</description>
      <pubDate>Thu, 02 Feb 2012 14:53:04 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:3ecbbf19-36d2-44db-a9e3-9f1e0843fca1</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-201107</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by venta de gruas</title>
      <description>&lt;p&gt;Nice post on this topic. I like your blog very much because it has very helpful articles on various topics like different culture and the latest news. I am a googler and search on many topics. By searching I found this nice website. Thanks for sharing.&lt;/p&gt;</description>
      <pubDate>Thu, 02 Feb 2012 14:52:08 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:b720b66d-7743-4d75-be8b-8eea99aca724</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-201106</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by altan.</title>
      <description>&lt;p&gt;Thank you adminnn:) &lt;a href="http://www.sohbetizm.com/TR/toplumsalsohbet/index.html" rel="nofollow"&gt;http://www.sohbetizm.com/TR/toplumsalsohbet/index.html&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 02 Feb 2012 14:45:48 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:1f1e17b4-0ff8-42f6-aad3-0e405caa2f24</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-201105</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by altan.</title>
      <description>&lt;p&gt;Hi. welcome to chat. chatroom. &lt;a href="http://www.sohbetizm.com" rel="nofollow"&gt;http://www.sohbetizm.com&lt;/a&gt;&lt;/p&gt;</description>
      <pubDate>Thu, 02 Feb 2012 14:44:08 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:30608094-9fcb-4f39-9493-b48f7bdf9bad</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-201104</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by &#231;ank?r?</title>
      <description>&lt;p&gt;This article is really interesting. I&#8217;ll keep this post for a good reference. I think it might be useful someday because it talks about daily matters in human life. Thank you for sharing&lt;/p&gt;</description>
      <pubDate>Wed, 01 Feb 2012 01:14:10 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:ebbff62f-d2a6-43a5-92e7-7fa7ec460167</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-200487</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by ba?bakan</title>
      <description>&lt;p&gt;I should say that you have done a great job and your writing style is awesome. I was searching for this topic and just found your site when I was googling. Your blog can be much better if you put some pictures in it.&lt;/p&gt;</description>
      <pubDate>Wed, 01 Feb 2012 01:13:23 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:cb96bcab-3243-4333-b4b5-a069ec0e7515</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-200486</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by chat</title>
      <description>&lt;p&gt;thank you very much executives like you, I &lt;a href="http://www.tryemektarifleri.com" rel="nofollow"&gt;yemek tarifleri&lt;/a&gt;really like your blog very&lt;a href="http://www.mt2pvpserverler.net" rel="nofollow"&gt;metin2 pvp&lt;/a&gt; clean and reliable link to a web site trying to get the ban I hope I do not eat many thanks
Web sites with the music here is actually fun, chat, friendship, bi kind of people that I&amp;#8217;m &lt;a href="http://www.mt2pvpserverler.net" rel="nofollow"&gt;mt2 pvp&lt;/a&gt;trying to create an ideal environment for fusion with each other and chat environments, &lt;a href="http://www.sosyetechat.net" rel="nofollow"&gt;chat&lt;/a&gt;and sexual issues, as well as food, drink, and even my own social networking areas, such as creating &lt;a href="http://www.bayangiyimleri.org" rel="nofollow"&gt;bayan giyim&lt;/a&gt;a single goal is to serve our valuable administrators &lt;a href="http://www.chatchat.gen.tr" rel="nofollow"&gt;chat&lt;/a&gt;hope you understand 
If you need 
to make&lt;/p&gt;</description>
      <pubDate>Mon, 30 Jan 2012 17:07:15 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:7fc8847e-d0c0-4e63-a4f8-760841d375a0</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-200281</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by sohbet</title>
      <description>&lt;p&gt;thank  admin&lt;/p&gt;</description>
      <pubDate>Sun, 29 Jan 2012 13:34:18 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:f4d87ace-4334-46b2-8c94-62dee522eaa2</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-200101</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by http://www.sirinsohbet.net</title>
      <description>&lt;p&gt;&lt;a href="http://www.sirinsohbet.net" rel="nofollow"&gt;http://www.sirinsohbet.net&lt;/a&gt;  thank you  admin..&lt;/p&gt;</description>
      <pubDate>Sun, 29 Jan 2012 13:31:59 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:e0a46769-030a-439b-9dad-9519651bdb1c</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-200100</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by AvrupaCafe</title>
      <description>&lt;p&gt;&lt;a href="http://www.AvrupaCafe.nl" rel="nofollow"&gt;http://www.AvrupaCafe.nl&lt;/a&gt; thakyou.&lt;/p&gt;</description>
      <pubDate>Sun, 29 Jan 2012 06:55:08 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:e33e0410-940b-467c-910c-71b480771b6b</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-200080</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by the energy egg</title>
      <description>&lt;p&gt;Really nice, when you have this one.&lt;/p&gt;</description>
      <pubDate>Sun, 29 Jan 2012 05:43:05 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:07271101-040b-4695-b750-d9efaa5026b9</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-200075</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by erp manufacturing software</title>
      <description>&lt;p&gt;great work keep it up&lt;/p&gt;</description>
      <pubDate>Fri, 27 Jan 2012 00:49:59 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:cc4049c9-2c01-43d3-bc85-11247c57e4de</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-199282</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by Turk Sohbet</title>
      <description>&lt;p&gt;turk sohbet thanks you admin&lt;/p&gt;</description>
      <pubDate>Sun, 22 Jan 2012 08:13:08 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:412d472a-0492-442a-a0a8-6f3efbb063b4</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-198814</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by Jeyre2266</title>
      <description>&lt;p&gt;New facebook layout allows you to change all facebook layouts and backgrounds for Free Which makes it easy to change your wallpaper.&lt;/p&gt;


	&lt;p&gt;newfacebooklayout.com&lt;/p&gt;</description>
      <pubDate>Fri, 20 Jan 2012 05:08:14 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:0ea8f28f-2c26-41b7-b99a-19a0fddb0098</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-198680</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by miami bathroom remodeling</title>
      <description>&lt;p&gt;These are one of the few posts that I actually care to comment on. I find this blogger an inspiration and is definitley worth following. I&amp;#8217;ve became a subscriber too, so please keep me updated.&lt;/p&gt;</description>
      <pubDate>Thu, 19 Jan 2012 03:49:58 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:0d779d8a-a953-4538-8146-ad32187eed2e</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-198574</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by eski mynet sohbet</title>
      <description>&lt;p&gt;thnx&lt;/p&gt;</description>
      <pubDate>Tue, 17 Jan 2012 13:53:43 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:78f536be-243c-4403-8b07-68236146dc5f</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-198377</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by eski mynet sohbet</title>
      <description>&lt;p&gt;thnx&lt;/p&gt;</description>
      <pubDate>Tue, 17 Jan 2012 13:42:24 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:25970790-f402-4ca0-b0fd-1cb4865f28eb</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-198376</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by most fuel efficient suv</title>
      <description>&lt;p&gt;I would have to admit that it is a good article to help and inspire others.&lt;/p&gt;</description>
      <pubDate>Sat, 14 Jan 2012 01:39:18 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:0b295d7a-7fef-4dc1-a9ff-2196098ce2c0</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-197790</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by  Polo Ralph Lauren Pas Cher</title>
      <description>&lt;p&gt;orya maqbool jan, orya jan maqbool, orya maqbool, orya maqbool jaan, orya maqbool jan columns&lt;/p&gt;</description>
      <pubDate>Thu, 12 Jan 2012 21:37:37 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:489e89ff-c872-4dc7-98a9-d887e588f572</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-197588</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by Austin Computer Repair</title>
      <description>&lt;p&gt;This blog is much informative.Some terms are explained here with great importance.Thanks  for sharing this blog.I would like to get more alike updates.&lt;/p&gt;</description>
      <pubDate>Sun, 08 Jan 2012 08:59:59 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:2fc002d2-9cfa-496b-a682-ca44b295c735</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-196025</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by Orya Maqbool Jan Columns</title>
      <description>&lt;p&gt;orya maqbool jan, orya jan maqbool, orya maqbool, orya maqbool jaan, orya maqbool jan columns&lt;/p&gt;</description>
      <pubDate>Sun, 08 Jan 2012 00:42:23 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:fdd66608-b323-409c-a874-83e2a1d0ae36</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-195995</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by ?ddaa Tahminleri</title>
      <description>&lt;p&gt;?ddaa Tahminleri&lt;/p&gt;</description>
      <pubDate>Sat, 07 Jan 2012 23:25:59 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:0886346f-43fc-4f21-8bb1-f4ef964626cf</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-195990</link>
    </item>
    <item>
      <title>"Getting a SOLID start." by Bay Tahmin</title>
      <description>&lt;p&gt;?DDAA&lt;/p&gt;</description>
      <pubDate>Sat, 07 Jan 2012 23:25:37 -0600</pubDate>
      <guid isPermaLink="false">urn:uuid:0e9982d2-c44d-49fb-95f0-bdedfba4569a</guid>
      <link>http://blog.objectmentor.com/articles/2009/02/12/getting-a-solid-start#comment-195989</link>
    </item>
  </channel>
</rss>

