<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>.Hibri - Software Design</title>
    <link>http://www.hibri.net/</link>
    <description>Thoughts on the craft of building software</description>
    <language>en-gb</language>
    <copyright>Hibri Marzook</copyright>
    <lastBuildDate>Wed, 28 May 2008 18:51:38 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.3.9074.18820</generator>
    <managingEditor>hibri@hibri.net</managingEditor>
    <webMaster>hibri@hibri.net</webMaster>
    <item>
      <trackback:ping>http://www.hibri.net/Trackback.aspx?guid=d201f27d-4c5d-4eb4-b05c-675d3472141a</trackback:ping>
      <pingback:server>http://www.hibri.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.hibri.net/PermaLink,guid,d201f27d-4c5d-4eb4-b05c-675d3472141a.aspx</pingback:target>
      <dc:creator>Hibri</dc:creator>
      <wfw:comment>http://www.hibri.net/CommentView,guid,d201f27d-4c5d-4eb4-b05c-675d3472141a.aspx</wfw:comment>
      <wfw:commentRss>http://www.hibri.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d201f27d-4c5d-4eb4-b05c-675d3472141a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Thinking of ways to measure code readability. How easy is it to read and understand
a  method, or class ?
</p>
        <p>
Number of branches in a method ? more branches -&gt; more complex  hence a more
complex method  that is hard to read 
</p>
        <p>
Split the camel casing of a method/class into words and run some sort of word analysis
to check if the words make sense ?
</p>
        <p>
The analysis has to be automated, and run as part of CI ideally..
</p>
        <p>
 
</p>
        <div style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px; display: inline" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:581ae04a-9af0-4fcb-b3f0-cceb69ae51f3" class="wlWriterSmartContent">Technorati
Tags: <a href="http://technorati.com/tags/.net" rel="tag">.net</a>,<a href="http://technorati.com/tags/thinking%20out%20loud" rel="tag">thinking
out loud</a>,<a href="http://technorati.com/tags/code%20metrics" rel="tag">code metrics</a></div>
      </body>
      <title>Measuring code readability ?</title>
      <guid isPermaLink="false">http://www.hibri.net/PermaLink,guid,d201f27d-4c5d-4eb4-b05c-675d3472141a.aspx</guid>
      <link>http://www.hibri.net/2008/05/28/MeasuringCodeReadability.aspx</link>
      <pubDate>Wed, 28 May 2008 18:51:38 GMT</pubDate>
      <description>&lt;p&gt;
Thinking of ways to measure code readability. How easy is it to read and understand
a&amp;nbsp; method, or class ?
&lt;/p&gt;
&lt;p&gt;
Number of branches in a method ? more branches -&amp;gt; more complex&amp;nbsp; hence a more
complex method&amp;nbsp; that is hard to read 
&lt;/p&gt;
&lt;p&gt;
Split the camel casing of a method/class into words and run some sort of word analysis
to check if the words make sense ?
&lt;/p&gt;
&lt;p&gt;
The analysis has to be automated, and run as part of CI ideally..
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;div style="padding-right: 0px; padding-left: 0px; padding-bottom: 0px; margin: 0px; padding-top: 0px; display: inline" id="scid:0767317B-992E-4b12-91E0-4F059A8CECA8:581ae04a-9af0-4fcb-b3f0-cceb69ae51f3" class="wlWriterSmartContent"&gt;Technorati
Tags: &lt;a href="http://technorati.com/tags/.net" rel="tag"&gt;.net&lt;/a&gt;,&lt;a href="http://technorati.com/tags/thinking%20out%20loud" rel="tag"&gt;thinking
out loud&lt;/a&gt;,&lt;a href="http://technorati.com/tags/code%20metrics" rel="tag"&gt;code metrics&lt;/a&gt;
&lt;/div&gt;</description>
      <comments>http://www.hibri.net/CommentView,guid,d201f27d-4c5d-4eb4-b05c-675d3472141a.aspx</comments>
      <category>.Net General</category>
      <category>Software Design</category>
    </item>
    <item>
      <trackback:ping>http://www.hibri.net/Trackback.aspx?guid=8410ff38-3c46-4303-9905-cabbeab00131</trackback:ping>
      <pingback:server>http://www.hibri.net/pingback.aspx</pingback:server>
      <pingback:target>http://www.hibri.net/PermaLink,guid,8410ff38-3c46-4303-9905-cabbeab00131.aspx</pingback:target>
      <dc:creator>Hibri</dc:creator>
      <wfw:comment>http://www.hibri.net/CommentView,guid,8410ff38-3c46-4303-9905-cabbeab00131.aspx</wfw:comment>
      <wfw:commentRss>http://www.hibri.net/SyndicationService.asmx/GetEntryCommentsRss?guid=8410ff38-3c46-4303-9905-cabbeab00131</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Today, at <a href="http://www.bbcworldwide.com/" target="_blank">work</a> I was treated
to a rare opportunity to attend a talk by <a href="http://martinfowler.com/" target="_blank">Martin
Fowler</a>. I may or may not get the chance to hear someone who can profoundly inspire
developers. with simple( sometimes obvious) nuggets of wisdom, that will make us build
better software.
</p>
        <p>
The talk didn't have a specific title, but centred around the theme of software design
and how we go about it. His talk mostly focused on how keeping things simple can help
build better software. This concept is obvious, but many of us loose sight of it.
</p>
        <p>
          <em>
            <strong>look at what has already been done.</strong>
          </em>
        </p>
        <p>
Similar problems have already been solved, someone out there knows how to solve it. 
This is the basis of all the design patterns that have been collated by Eric Gamma
et al and Martin Fowler himself.  Patterns are nothing new, they are not the
future. They are practices that have been used in successful software in the past,
and we can draw on the lessons learnt during the past 30 (or more)  years of
software development.
</p>
        <p>
          <em>
            <strong>spread knowledge backward</strong>
          </em>
        </p>
        <p>
it's important that older, experienced developers pass on their knowledge to new or
less experienced developers. He made an interesting point on how software architects
at Thoughtworks pair up with less experienced developers. A good software architect
is one who does not have to make any decisions. On a related subject Martin said <em>"burn
your architecture document"</em>. If the developers have to refer back to a <em>document</em>,
it means that they haven't fully absorbed the architecture of the system being built,
and there are gaps in their knowledge.
</p>
        <p>
          <em>
            <strong>keep things simple, expect and prepare for change</strong>
          </em>
        </p>
        <p>
This is what inspired me the most. Software is soft( malleable). It always changes,
expect and be ready to change. Importantly be prepared to undo change. Work with what
you know, and do not worry about changes that can happen. Postpone decisions till
you absolutely need to make them. Organise work into incremental chunks of changes.
</p>
        <p>
There is a lot more I took away from the talk. Might take a while to digest it all
:). However these are concepts that are stressed in the books listed below, specially
in<em> </em>The Pragmatic Programmer.
</p>
        <p>
If you haven't read any of Martin Fowler's books, I strongly suggest you do so immediately,
along with a few other books that will inspire ( and shock you) into being a better
developer.
</p>
        <p>
          <a href="http://www.amazon.co.uk/Enterprise-Application-Architecture-Addison-Wesley-Signature/dp/0321127420/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1205962255&amp;sr=8-1">Patterns
of Enterprise Application Architecture</a>
        </p>
        <p>
          <a href="http://www.amazon.co.uk/Refactoring-Improving-Design-Existing-Technology/dp/0201485672/ref=pd_bbs_sr_2?ie=UTF8&amp;s=books&amp;qid=1205962255&amp;sr=8-2">Refactoring:
Improving the Design of Existing Code</a>
        </p>
        <p>
          <a href="http://www.amazon.co.uk/Domain-driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1205962400&amp;sr=8-1">Domain-driven
Design: Tackling Complexity in the Heart of Software</a>
        </p>
        <p>
          <a href="http://www.amazon.co.uk/Pragmatic-Programmer-Andrew-Hunt/dp/020161622X/ref=pd_bbs_sr_1?ie=UTF8&amp;s=books&amp;qid=1205962444&amp;sr=8-1" target="_blank">The
Pragmatic Programmer</a>
        </p>
        <p>
Kudos to <a title="Jason Gorman" href="http://parlezuml.com/blog/" target="_blank">Jason</a> for
organising the talk.
</p>
      </body>
      <title>Martin Fowler Talk</title>
      <guid isPermaLink="false">http://www.hibri.net/PermaLink,guid,8410ff38-3c46-4303-9905-cabbeab00131.aspx</guid>
      <link>http://www.hibri.net/2008/03/20/MartinFowlerTalk.aspx</link>
      <pubDate>Thu, 20 Mar 2008 02:37:05 GMT</pubDate>
      <description>&lt;p&gt;
Today, at &lt;a href="http://www.bbcworldwide.com/" target="_blank"&gt;work&lt;/a&gt; I was treated
to a rare opportunity to attend a talk by &lt;a href="http://martinfowler.com/" target="_blank"&gt;Martin
Fowler&lt;/a&gt;. I may or may not get the chance to hear someone who can profoundly inspire
developers. with simple( sometimes obvious) nuggets of wisdom, that will make us build
better software.
&lt;/p&gt;
&lt;p&gt;
The talk didn't have a specific title, but centred around the theme of software design
and how we go about it. His talk mostly focused on how keeping things simple can help
build better software. This concept is obvious, but many of us loose sight of it.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;strong&gt;look at what has already been done.&lt;/strong&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
Similar problems have already been solved, someone out there knows how to solve it.&amp;nbsp;
This is the basis of all the design patterns that have been collated by Eric Gamma
et al and Martin Fowler himself.&amp;nbsp; Patterns are nothing new, they are not the
future. They are practices that have been used in successful software in the past,
and we can draw on the lessons learnt during the past 30 (or more)&amp;nbsp; years of
software development.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;strong&gt;spread knowledge backward&lt;/strong&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
it's important that older, experienced developers pass on their knowledge to new or
less experienced developers. He made an interesting point on how software architects
at Thoughtworks pair up with less experienced developers. A good software architect
is one who does not have to make any decisions. On a related subject Martin said &lt;em&gt;"burn
your architecture document"&lt;/em&gt;. If the developers have to refer back to a &lt;em&gt;document&lt;/em&gt;,
it means that they haven't fully absorbed the architecture of the system being built,
and there are gaps in their knowledge.
&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;&lt;strong&gt;keep things simple, expect and prepare for change&lt;/strong&gt;&lt;/em&gt;
&lt;/p&gt;
&lt;p&gt;
This is what inspired me the most. Software is soft( malleable). It always changes,
expect and be ready to change. Importantly be prepared to undo change. Work with what
you know, and do not worry about changes that can happen. Postpone decisions till
you absolutely need to make them. Organise work into incremental chunks of changes.
&lt;/p&gt;
&lt;p&gt;
There is a lot more I took away from the talk. Might take a while to digest it all
:). However these are concepts that are stressed in the books listed below, specially
in&lt;em&gt;&amp;nbsp;&lt;/em&gt;The Pragmatic Programmer.
&lt;/p&gt;
&lt;p&gt;
If you haven't read any of Martin Fowler's books, I strongly suggest you do so immediately,
along with a few other books that will inspire ( and shock you) into being a better
developer.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.amazon.co.uk/Enterprise-Application-Architecture-Addison-Wesley-Signature/dp/0321127420/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1205962255&amp;amp;sr=8-1"&gt;Patterns
of Enterprise Application Architecture&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.amazon.co.uk/Refactoring-Improving-Design-Existing-Technology/dp/0201485672/ref=pd_bbs_sr_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1205962255&amp;amp;sr=8-2"&gt;Refactoring:
Improving the Design of Existing Code&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.amazon.co.uk/Domain-driven-Design-Tackling-Complexity-Software/dp/0321125215/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1205962400&amp;amp;sr=8-1"&gt;Domain-driven
Design: Tackling Complexity in the Heart of Software&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.amazon.co.uk/Pragmatic-Programmer-Andrew-Hunt/dp/020161622X/ref=pd_bbs_sr_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1205962444&amp;amp;sr=8-1" target="_blank"&gt;The
Pragmatic Programmer&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Kudos to &lt;a title="Jason Gorman" href="http://parlezuml.com/blog/" target="_blank"&gt;Jason&lt;/a&gt; for
organising the talk.
&lt;/p&gt;</description>
      <comments>http://www.hibri.net/CommentView,guid,8410ff38-3c46-4303-9905-cabbeab00131.aspx</comments>
      <category>.Net General</category>
      <category>Software Design</category>
    </item>
  </channel>
</rss>