<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" 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:copyright="http://blogs.law.harvard.edu/tech/rss" xmlns:image="http://purl.org/rss/1.0/modules/image/" version="2.0">
    <channel>
        <title>Learning to Lead</title>
        <link>http://evanhoff.com/Default.aspx</link>
        <description>My adventures in learning to look beyond my nose.</description>
        <language>en-US</language>
        <copyright>Evan Hoff</copyright>
        <managingEditor>evan@evanhoff.com</managingEditor>
        <generator>Subtext Version 2.0.0.43</generator>
        <image>
            <title>Learning to Lead</title>
            <url>http://evanhoff.com/images/RSS2Image.gif</url>
            <link>http://evanhoff.com/Default.aspx</link>
            <width>77</width>
            <height>60</height>
        </image>
        <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/EvanHoff" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
            <title>The Economics of Design Complexity</title>
            <link>http://evanhoff.com/archive/2008/10/05/the-economics-of-design-complexity.aspx</link>
            <description>&lt;p&gt;This isn't specific to software.  This works for pretty much anything large and complex (i.e. electronics).&lt;/p&gt;  &lt;p&gt;First, there are two milestones of complexity.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Size - Designing an item which cannot be designed by a single individual.&lt;/li&gt;    &lt;li&gt;Knowledge - Designing an item which cannot be understood by a single individual.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The first often shows up in typical "business app" developments.  The second, however, is much more rare (in my experience).  I would guess it's typically exemplified by large code bases (greater than 500 KLOC) or complex problem domains (military and scientific domains, some finance, etc).&lt;/p&gt;  &lt;p&gt;Regardless of whether we are talking about software or some other complex artifact, there is one shared economic factor.  Given either milestone, there becomes a need for a coordination mechanism among the designers.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;The economics of designing a complex artifact are directly tied to the efficiency of the coordination mechanism of its designers.&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;If you want to reduce the cost of producing complex artifacts (i.e. software), you have to focus not only on raising the productivity of the individual designer but also on the efficiency of coordinating those designers.&lt;/p&gt;  &lt;p&gt;In small development teams, this comes mostly in the form of communication.  Better and more frequent communication typically provides better coordination among designers (developers).&lt;/p&gt;  &lt;p&gt;You see this embodied in many of the practices of a highly efficient development team: the team room, the information radiator, kickoff meetings, retrospectives, and customer demos (to name a few).&lt;/p&gt;  &lt;p&gt;When remote developers are in play (i.e. offshoring), the economics and coordination mechanism change (unless the entire team, including stakeholders, is offshore).&lt;/p&gt;  &lt;p&gt;When multiple teams of developers are in play for a single artifact, this also changes the coordination mechanism.  A good architect will know that based on the communication obstacle associated with having multiple teams, each team will work better if loosely coupled from the others.  This means employing a loosely coupled design boundary between the design artifacts owned by each team.&lt;/p&gt;  &lt;p&gt;That's an odd thought the first time it comes across.  The communication structure of the designers should be embodied in the design of the artifact.  But after a while, it quickly appears to be common sense.  This could actually be phrased more as a law than a principle, because &lt;strong&gt;the communication paths of the designers will be reflected in the work they produce&lt;/strong&gt;.  Either account for it in the architecture, or let it show through later (in the form of bugs and issues).&lt;/p&gt;  &lt;p&gt;Another interesting area to explore in software is readability.  In codebases and teams steeped in Domain-Driven Design, for example.  The code itself becomes a communication mechanism.  This is where qualities such as readability and comprehensibility are both prioritized.&lt;/p&gt;&lt;img src="http://evanhoff.com/aggbug/7.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Evan Hoff</dc:creator>
            <guid>http://evanhoff.com/archive/2008/10/05/the-economics-of-design-complexity.aspx</guid>
            <pubDate>Sun, 05 Oct 2008 23:26:22 GMT</pubDate>
            <wfw:comment>http://evanhoff.com/comments/7.aspx</wfw:comment>
            <comments>http://evanhoff.com/archive/2008/10/05/the-economics-of-design-complexity.aspx#feedback</comments>
            <slash:comments>159</slash:comments>
            <wfw:commentRss>http://evanhoff.com/comments/commentRss/7.aspx</wfw:commentRss>
        </item>
        <item>
            <title>MDA: Model-Driven Ambiguity</title>
            <link>http://evanhoff.com/archive/2008/09/25/mda-model-driven-ambiguity.aspx</link>
            <description>&lt;p&gt;I've collected a few bounded contexts on the usage of being "model-driven":&lt;/p&gt;  &lt;p&gt;Model-Driven Design:  being driven by the need to capture a model of the problem space in the structure and elements of a software system (see: &lt;a href="http://domaindrivendesign.org/" target="_blank"&gt;Domain-Driven Design&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;Model-Driven Development: allowing the process (activities/workflows) of forming software structures to be largely driven by a model (i.e. a &lt;a href="http://www.amazon.com/Case-Modeling-Addison-Wesley-Object-Technology/dp/0201709139/" target="_blank"&gt;Use Case Model&lt;/a&gt;) of the desired deliverable (see: Unified Process, Rational Unified Process)&lt;/p&gt;  &lt;p&gt;Model-Driven Architecture: allowing the platform-specific implementation (i.e. c#, .NET) to be driven (or generated) off a Platform Independent Model (PIM) captured in UML (see: &lt;a href="http://www.omg.org/mda/" target="_blank"&gt;Model-Driven Architecture&lt;/a&gt; or &lt;a href="http://en.wikipedia.org/wiki/Model_Driven_Engineering" target="_blank"&gt;Model-Driven Software Engineering&lt;/a&gt;)&lt;/p&gt;  &lt;p&gt;With the big push for &lt;a href="http://www.microsoft.com/soa/products/oslo.aspx" target="_blank"&gt;Oslo&lt;/a&gt;, we will have another major "model-driven" initiative in play.  I'll be interested to see which of these definitions (if any) align with Oslo's goals.&lt;/p&gt;&lt;img src="http://evanhoff.com/aggbug/6.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Evan Hoff</dc:creator>
            <guid>http://evanhoff.com/archive/2008/09/25/mda-model-driven-ambiguity.aspx</guid>
            <pubDate>Fri, 26 Sep 2008 03:27:34 GMT</pubDate>
            <wfw:comment>http://evanhoff.com/comments/6.aspx</wfw:comment>
            <comments>http://evanhoff.com/archive/2008/09/25/mda-model-driven-ambiguity.aspx#feedback</comments>
            <slash:comments>104</slash:comments>
            <wfw:commentRss>http://evanhoff.com/comments/commentRss/6.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Free Hosting and CMS for UGs</title>
            <link>http://evanhoff.com/archive/2008/09/17/free-hosting-and-cms-for-ugs.aspx</link>
            <description>&lt;p&gt;I just ran across &lt;a href="http://www.sitefinity.com/product/features/free-offer.aspx" target="_blank"&gt;this offer&lt;/a&gt; for User Groups, so I'm definitely going to have to investigate.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.telerik.com/" target="_blank"&gt;Telerik&lt;/a&gt; (the controls guys) are offering a free standard license ($899) along with free hosting from &lt;a href="http://discountasp.net/" target="_blank"&gt;discountasp.net&lt;/a&gt; for user groups.&lt;/p&gt;  &lt;p&gt;And I do have to say that the showcase sites don't look half shabby:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.metrotorontoug.com/" target="_blank"&gt;Metro Toronto .NET Users Group&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://nhdnug.org/homepage.aspx" target="_blank"&gt;North Houston .NET User Group&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.sevdnug.org/Home.aspx" target="_blank"&gt;Southeast Valley .NET Users Group&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;The Nashville user group has had its web site under overhaul for way too long, and this might be just the thing to get the site knocked out (look Ma, no code!).  &lt;/p&gt;  &lt;p&gt;I've had great experiences with discountasp.net in the past, so that's a definite win.  &lt;/p&gt;  &lt;p&gt;I originally had intentions of moving the site to &lt;a href="http://communityserver.com/" target="_blank"&gt;Community Server&lt;/a&gt; but recently learned that CS + discountasp.net is &lt;a href="http://www.marketing-ninja.com/hosting/discountaspnet-and-community-server-do-not-mix-despite-what-discountaspnet-advertises/" target="_blank"&gt;a bad combination&lt;/a&gt;.  Without any load, CS eats about 100MB of memory, causing websites to hit their memory usage threshold at the hosting provider (and having their App Pool recycled).  That's just nasty.&lt;/p&gt;  &lt;p&gt;Maybe &lt;a href="http://www.lostechies.com/blogs/sean_chambers/archive/2008/09/15/working-with-telligent.aspx" target="_blank"&gt;Sean&lt;/a&gt; (a Los Techies rock star) will some day fix this for us. :-)&lt;/p&gt;&lt;img src="http://evanhoff.com/aggbug/5.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Evan Hoff</dc:creator>
            <guid>http://evanhoff.com/archive/2008/09/17/free-hosting-and-cms-for-ugs.aspx</guid>
            <pubDate>Thu, 18 Sep 2008 00:37:48 GMT</pubDate>
            <wfw:comment>http://evanhoff.com/comments/5.aspx</wfw:comment>
            <comments>http://evanhoff.com/archive/2008/09/17/free-hosting-and-cms-for-ugs.aspx#feedback</comments>
            <slash:comments>68</slash:comments>
            <wfw:commentRss>http://evanhoff.com/comments/commentRss/5.aspx</wfw:commentRss>
        </item>
        <item>
            <title>The Google Bus</title>
            <link>http://evanhoff.com/archive/2008/09/17/the-google-bus.aspx</link>
            <description>&lt;p&gt;&lt;a href="http://evanhoff.com/images/evanhoff_com/WindowsLiveWriter/TheGoogleBus_10EB8/googlebus_2.jpg"&gt;&lt;img style="border-right: 0px; border-top: 0px; margin: 0px 25px 0px 0px; border-left: 0px; border-bottom: 0px" height="180" alt="googlebus" src="http://evanhoff.com/images/evanhoff_com/WindowsLiveWriter/TheGoogleBus_10EB8/googlebus_thumb.jpg" width="240" align="left" border="0" /&gt;&lt;/a&gt;Living in Nashville, Tennessee, I don't see a lot of swag from the likes of Google, Yahoo, or the other big techies out in California.  Today, however, I managed to bump into &lt;a href="http://www.google.com/apps/bus" target="_blank"&gt;the Google bus&lt;/a&gt; parked outside P.F. Changs.  Way cool!&lt;/p&gt;  &lt;p&gt; &lt;/p&gt;  &lt;p&gt;Apparently, they are on a cross-country campus tour.&lt;/p&gt;&lt;img src="http://evanhoff.com/aggbug/4.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Evan Hoff</dc:creator>
            <guid>http://evanhoff.com/archive/2008/09/17/the-google-bus.aspx</guid>
            <pubDate>Thu, 18 Sep 2008 00:15:05 GMT</pubDate>
            <wfw:comment>http://evanhoff.com/comments/4.aspx</wfw:comment>
            <comments>http://evanhoff.com/archive/2008/09/17/the-google-bus.aspx#feedback</comments>
            <slash:comments>117</slash:comments>
            <wfw:commentRss>http://evanhoff.com/comments/commentRss/4.aspx</wfw:commentRss>
        </item>
        <item>
            <title>That Architecture Thing</title>
            <link>http://evanhoff.com/archive/2008/09/15/that-architecture-thing.aspx</link>
            <description>&lt;p&gt;I'm going through the Patterns and Practices Application Architecture guidance.  The first place I'll start is with the &lt;a href="http://www.codeplex.com/AppArch/Wiki/View.aspx?title=Architecture%20and%20Design%20Guidelines" target="_blank"&gt;Architecture and Design Guidelines&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Let's start right at the top:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;Software Architecture is often described as the organization or structure of a system, while the system represents a collection of components that accomplish a specific function or set of functions. In other words, architecture is focused on organizing components to support specific functionality. This organization of functionality is often referred to as grouping components into “areas of concern”. The following diagram represents a common application architecture with components grouped by different areas of concern.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;I want to hone in here on the word "component."  It's true that the architecture of many systems is composed of components, but is that really the best way to describe it?&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Component-Based Development&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Judging by the rest of the document, the word component here has a very specific meaning.  This meaning comes largely from the practice of &lt;a href="http://en.wikipedia.org/wiki/Software_components" target="_blank"&gt;Component-Based Development&lt;/a&gt;.  I don't want to go into specifics on this here, but I will point you to a couple resources for more information.  &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;There's a good &lt;a href="http://www.se-radio.net/podcast/2008-02/episode-87-software-components" target="_blank"&gt;podcast&lt;/a&gt; on this topic from &lt;a href="http://www.se-radio.net/" target="_blank"&gt;Software Engineering Radio&lt;/a&gt;. &lt;/li&gt;    &lt;li&gt;There's a &lt;a href="http://research.microsoft.com/~cszypers/Books/component-software.htm" target="_blank"&gt;classic book&lt;/a&gt; written by a Microsoft Researcher on this topic. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;One of the key things to remember is that CBD guys see Components as an evolution of the Object.  I'm not going to say their perspective is wrong.  It's just important to realize that it's *different* from many of us still writing object-oriented systems.  This includes everyone from Martin Fowler and the DDD crowd to the growing crowd behind Rocky Lhotka and his Business Objects.&lt;/p&gt;  &lt;p&gt;The other thing to notice is that we don't have to agree on everything, but that the Component line nicely divides most developers that care about such things into one of the two camps.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Back to that Definition&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;So the question is, how do you address a topic such as architecture in a way that doesn't clearly identify with one of the two camps?&lt;/p&gt;  &lt;p&gt;Luckily, this has &lt;a href="http://www.sei.cmu.edu/architecture/published_definitions.html" target="_blank"&gt;already been done&lt;/a&gt; for us.  Indeed, it not only works for both design camps, it works with all the others as well (such as the growing crowd of functional programmers).&lt;/p&gt;  &lt;p&gt;From the book, &lt;a href="http://www.amazon.com/Software-Architecture-Practice-2nd-Engineering/dp/0321154959/" target="_blank"&gt;Software Architecture in Practice&lt;/a&gt;:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;The software architecture of a program or computing system is the structure or structures of the system, which comprise software elements, the externally visible properties of those elements, and the relationships among them.&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;You'll notice we've swapped the word "component" for element.  This covers us for all crowds: components, objects, and functions.  In addition, we've introduced the notion of "externally visible properties" into our definition.&lt;/p&gt;  &lt;p&gt;At first glace, this may look like black magic, but after deeper digging, we learn that the "externally visible properties" of the architecture are really its quality attributes: availability, modifiability, performance, security, scalability, testability, usability, etc.&lt;/p&gt;  &lt;p&gt;While I don't expect a guidance document to fully describe the use of these attributes to design our architecture, exposing these properties of any type of example architecture does two things:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;It draws some type of line for where the architecture should not be used &lt;/li&gt;    &lt;li&gt;It gives markers for a developer reading the document to find his own way or look for reference material for additional clarification &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;P&amp;amp;P Recommendation: Reword this document so that it's less specific to components (as much of the content already is).  If a sample component architecture is desired, move the component-specific stuff into it.  Be careful of labeling component-based development with a guidance label (sans "sample").  Otherwise the community *will* use it as the defacto standard.&lt;/strong&gt;&lt;/p&gt;&lt;img src="http://evanhoff.com/aggbug/3.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Evan Hoff</dc:creator>
            <guid>http://evanhoff.com/archive/2008/09/15/that-architecture-thing.aspx</guid>
            <pubDate>Tue, 16 Sep 2008 01:57:42 GMT</pubDate>
            <wfw:comment>http://evanhoff.com/comments/3.aspx</wfw:comment>
            <comments>http://evanhoff.com/archive/2008/09/15/that-architecture-thing.aspx#feedback</comments>
            <slash:comments>81</slash:comments>
            <wfw:commentRss>http://evanhoff.com/comments/commentRss/3.aspx</wfw:commentRss>
        </item>
        <item>
            <title>Back to Business</title>
            <link>http://evanhoff.com/archive/2008/09/15/back-to-business.aspx</link>
            <description>&lt;p&gt;For the recent past, I've been sporadically posting over at &lt;a href="http://www.lostechies.com/" target="_blank"&gt;Los Techies&lt;/a&gt;.  The keyword in that last sentence was "sporadically."&lt;/p&gt;  &lt;p&gt;I've come to the decision that I'd like to refocus my efforts on blogging.  As part of that decision, I'd like to move back to my own domain.&lt;/p&gt;  &lt;p&gt;I do, however, want to thank the great guys over at Los Techies for hosting me.  They have a rock star blog lineup, and if you don't subscribe, I'd highly recommend it.&lt;/p&gt;&lt;img src="http://evanhoff.com/aggbug/2.aspx" width="1" height="1" /&gt;</description>
            <dc:creator>Evan Hoff</dc:creator>
            <guid>http://evanhoff.com/archive/2008/09/15/back-to-business.aspx</guid>
            <pubDate>Tue, 16 Sep 2008 01:01:18 GMT</pubDate>
            <wfw:comment>http://evanhoff.com/comments/2.aspx</wfw:comment>
            <comments>http://evanhoff.com/archive/2008/09/15/back-to-business.aspx#feedback</comments>
            <slash:comments>32</slash:comments>
            <wfw:commentRss>http://evanhoff.com/comments/commentRss/2.aspx</wfw:commentRss>
        </item>
    </channel>
</rss>
