<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - kseal</title>
  <link>http://www.codingthearchitecture.com/authors/kseal/</link>
  <description>Software architecture for hands-on software architects</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Mon, 29 Jun 2009 09:25:12 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>Is your development process about to be eroded?</title>
    <link>http://www.codingthearchitecture.com/2009/01/25/is_your_development_process_about_to_be_eroded.html</link>
    
      
        <description>
          &lt;p&gt;
The following quote from &lt;i&gt;The Economist (Jan 3rd-9th)&lt;/i&gt; provides a reasonable analogy for what some development teams are experiencing as once free-flowing technology investment starts to dry up:
&lt;/p&gt;
&lt;blockquote&gt;
For the more curmudgeonly sort of older manager, the current recession is the joyful equivalent of hiding an alarm clock in a sleeping teenager&#039;s bedroom. Once again, the touchy-feely management fads that always spring up in times of plenty are being ditched in favour of more brutal command-and-control methods.
&lt;/blockquote&gt;
&lt;p&gt;
The article refers to how the relationship between old-school management and the net generation is shifting back in favour of the former&#039;s approach. While it wouldn&#039;t be correct to equate &#034;touchy-feely&#034; with &#034;agile&#034;, some relationship is apparent.
&lt;/p&gt;
&lt;p&gt;
I think this may ultimately be for our own good: a chance to experience how things might otherwise be done and to see whether our processes are really as perfect as we preach. Even Toyota, often cited by agile evangelists, is (understandably!) struggling, albeit far less than their american counterparts. Similarly, our software development processes will not make us immune from a downturn in business, however responsive they are to change.
&lt;/p&gt;
&lt;p&gt;
As part of the interface between the business and the technology teams, architects may find themselves in an increasingly divisive position. On the one hand they may need to defend the progress (and investment) that has been made in coaching and process change. On the other, they may have to concede that lower-quality, shorter-term thinking may be required in difficult times. In either case, it would seem prudent to be proactively ensuring that your assumptions, requirements and, ultimately, the resultant process and architecture remain appropriate now that the business drivers may be shifting, if they haven&#039;t done so already.
&lt;/p&gt;


        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2009/01/25/is_your_development_process_about_to_be_eroded.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2009/01/25/is_your_development_process_about_to_be_eroded.html</guid>
    <pubDate>Sun, 25 Jan 2009 14:35:42 GMT</pubDate>
  </item>
  
  <item>
    <title>There&#039;s nothing new under the Sun...</title>
    <link>http://www.codingthearchitecture.com/2008/12/17/theres_nothing_new_under_the_sun.html</link>
    
      
        <description>
          &lt;p&gt;
Ah, writing frameworks - the most noble of pastimes for experienced developers!
&lt;/p&gt;
&lt;p&gt;
I&#039;ve written my fair share of frameworks over the course of my career in software development: workflow, integration, content management, validation, data-binding, remoting. And with the wisdom of hindsight I think I regret having visited each of them upon the rest of the development team!
&lt;/p&gt;
&lt;p&gt;
These frameworks all served a purpose (apart from scratching my framework-writing itch). They bridged a gap between the technologies we were using and the requirements being implemented, thereby making these implementation tasks easier. 
&lt;/p&gt;
&lt;p&gt;
However, these requirements weren&#039;t particularly unusual and the technologies chosen certainly weren&#039;t. So it seems unlikely that these frameworks were fulfilling some new purpose that couldn&#039;t be met by an existing piece of software.
&lt;/p&gt;
&lt;p&gt;
These days if I find myself writing a framework I appreciate a bit of introspection or criticism to keep me honest.
&lt;/p&gt;

&lt;h3&gt;Why aren&#039;t you using an existing framework?&lt;/h3&gt;
&lt;p&gt;
Many home-grown frameworks (my own included) are backed up by some strong criticism of the alternatives. Much of this comes from ignorance of those alternatives or a belief that yours won&#039;t exhibit the same, or indeed any, deficiencies.
&lt;/p&gt;
&lt;p&gt;
As a general rule I&#039;d say that you really don&#039;t want to own your own framework code. At the very least you can opt to defer taking ownership by selecting an open source alternative or using professional services support for a commercial offering. This makes speculative concerns about third-party frameworks less, well, concerning.
&lt;/p&gt;
&lt;p&gt;
I&#039;m surprised how many development teams rely on open source software yet prefer to hack their way around problems (with vitriolic commentary) rather than contribute a defect report, let alone a fix! It&#039;s not just polite, it&#039;s less likely to result in regression defects.
&lt;/p&gt;

&lt;h3&gt;What opportunities does rolling your own offer?&lt;/h3&gt;
&lt;p&gt;
If you &lt;i&gt;are&lt;/i&gt; writing your own framework then it pays to be clear where it&#039;s going to recoup the cost of ownership. Creating a generic solution is unlikely to be the most efficient way of meeting your requirements and moves the framework from the problem domain into the abstract, making it less intuitive to those most likely to be working with it.
&lt;/p&gt;
&lt;p&gt;
Keep things no less specific than necessary, targetting your problem domain, environments and development process. Abstract where it provides clarity rather than as a precursor to world domination.
&lt;/p&gt;

&lt;h3&gt;Is it too late to change your mind?&lt;/h3&gt;
&lt;p&gt;
Although our architectural decisions are supposed to be costly to change, successful designs often reduce that cost, making other choices less important.
&lt;/p&gt;
&lt;p&gt;
Rolling your own framework is not an ideal design decision and is simply incumbent due to a lack of suitable alternatives. The veracity of this statement should be checked from time to time as it will give you the chance to draught someone else&#039;s development effort.
&lt;/p&gt;
&lt;p&gt;
It&#039;s not necessarily safe to assume that over time your framework will become better. It will probably become bigger, but since it&#039;s likely of lower quality than a third-party alternative its benefits may become outweighed by its ongoing maintenance and training costs. Improvements in the &#034;competition&#034; will also mean you may have to run just to stand still. 
&lt;/p&gt;

&lt;p&gt;
If you are intent on rolling your own framework then don&#039;t manufacture differences just to set your solution apart: they&#039;ll simply make it harder to migrate to other frameworks should the need arise.
&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2008/12/17/theres_nothing_new_under_the_sun.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/12/17/theres_nothing_new_under_the_sun.html</guid>
    <pubDate>Wed, 17 Dec 2008 21:57:27 GMT</pubDate>
  </item>
  
  <item>
    <title>Conway&#039;s Law</title>
    <link>http://www.codingthearchitecture.com/2008/12/07/conways_law.html</link>
    
      
        <description>
          &lt;p&gt;
Conway&#039;s Law is an underrated, or at least, underused design observation. In short, it asserts that:
&lt;/p&gt;
&lt;blockquote&gt;
Any organization that designs a system (defined broadly) will produce a design whose structure is a copy of the organization&#039;s communication structure.
&lt;/blockquote&gt;
&lt;p&gt;
In other words, the interfaces between components mimic the interfaces between the component teams.
This may seem a little trivial at first, but I find it the basis for numerous &lt;i&gt;significant&lt;/i&gt; design decisions. 
&lt;/p&gt;
&lt;h3&gt;Does your proposed design confound existing organisational structure?&lt;/h3&gt;
&lt;p&gt;
Interfaces between internal teams are often not taken as seriously as they ought to be. It&#039;s assumed that people will talk, resolve their problems and everything will work out in the end. Even with the best will in the world, not all developers will be able to reconcile the various demands placed on them. For example, the desire to add features for one colleague whilst maintaining compatibility for another can be &lt;a href=&#034;http://www.codingthearchitecture.com/2008/11/14/modifying_open_services.html&#034;&gt;harder than it sounds&lt;/a&gt;. 
&lt;/p&gt;
&lt;p&gt;
Suitable design can alleviate these tensions and allow effective communication and development. Conway&#039;s Law should help keep us focused on the fact that design matters at development-time, not at runtime (so much).
&lt;/p&gt;
&lt;h3&gt;Do you want to be constrained by existing organisational structure?&lt;/h3&gt;
&lt;p&gt;
The flip-side of designing in a way that appeals to your communication structure is to organise your teams, or allow them to organise themselves, so that both they and the software meet an emergent structure. I believe it can be extremely productive to move developers into the same team when both sides of an integration task are being undertaken simultaneously. However, this has to be kept in check with suitable review; the emergent software design shouldn&#039;t become inconsistent or tightly-coupled as the organisational structure shifts to maximise short-term productivity.
&lt;/p&gt;
&lt;h3&gt;Does your design suggest a fantasy organisational structure?&lt;/h3&gt;
&lt;p&gt;
Many software systems need to be able to support requirements that didn&#039;t contribute to their original design. This doesn&#039;t necessarily suggest modular frameworks, however. The provision of a modular system is appropriate to organisational structures where release schedules can&#039;t be aligned, communication is best undertaken via SLAs and APIs or the extraction of a core set of features can &lt;i&gt;demonstrably&lt;/i&gt; add value (ie, to more than one team).
&lt;/p&gt;
&lt;p&gt;
I&#039;ve seen, and written, numerous systems that will theoretically support all kinds of requirements through the addition of suitable modules. Those systems would have had to have become as popular as, say, the Eclipse IDE in order to reap any rewards from this design decision (they didn&#039;t become that popular and weren&#039;t required to). While some abstractions serve to contain complexity, others may be introduced to generate needless complexity: will your organisation ever develop your system in a way that will make your design appropriate or is the set of other possibilities more likely? 
&lt;/p&gt;
&lt;p&gt;
The link between design and team structure is critical to maintaining a productive development practice. It&#039;s particularly important at the level of the system architecture where the organisational structure is far less driven by the needs of your particular project but dependent on your design choices nonetheless.
&lt;/p&gt;


        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2008/12/07/conways_law.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/12/07/conways_law.html</guid>
    <pubDate>Sun, 07 Dec 2008 22:16:05 GMT</pubDate>
  </item>
  
  <item>
    <title>London User Group - October 2008</title>
    <link>http://www.codingthearchitecture.com/2008/10/14/london_user_group_october_2008.html</link>
    
      
        <description>
          &lt;p&gt;
Here are the details of the October &lt;a href=&#034;http://www.codingthearchitecture.com/pages/londonusergroup.html&#034;&gt;London User Group&lt;/a&gt;.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Title&lt;/b&gt; : Testing as an Architectual Concern&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Summary&lt;/b&gt; : In this session, &lt;a href=&#034;http://www.codingthearchitecture.com/authors/kseal/&#034;&gt;Kevin Seal&lt;/a&gt; will present some recent experiences of testing a JavaEE project and how coverage was a double-edged sword, unit testing a blessing and a curse, and a pragmatic mix of test approaches was eventually invaluable in refining the architecture and development process.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Date&lt;/b&gt; : Wednesday, 29th October 2008&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Time&lt;/b&gt; : 18:30-20:00&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Location&lt;/b&gt; : Skills Matter, &lt;a href=&#034;http://maps.google.co.uk/maps?f=q&amp;hl=en&amp;q=1+Sekforde+Street+London&amp;sll=53.098145,-2.443696&amp;sspn=11.997343,29.619141&amp;ie=UTF8&amp;ll=51.523271,-0.104671&amp;spn=0.006061,0.014462&amp;z=16&amp;om=1&#034;&gt;1 Sekforde Street&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Format&lt;/b&gt; : Presentation and discussion, with further discussion in a local pub (The Crown).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Cost&lt;/b&gt; : Free, but &lt;a href=&#034;http://skillsmatter.com/event/java-jee/&#034;&gt;registration is required&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p align=&#034;center&#034;&gt;
&lt;a href=&#034;http://www.skillsmatter.com&#034;&gt;&lt;img src=&#034;http://www.codingthearchitecture.com/images/skillsmatter.gif&#034; alt=&#034;Skills Matter&#034; border=&#034;0&#034; /&gt;&lt;/a&gt;
&lt;br/&gt;
Many thanks to Skills Matter for sponsoring the user group. 
&lt;/p&gt;

        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2008/10/14/london_user_group_october_2008.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/10/14/london_user_group_october_2008.html</guid>
    <pubDate>Tue, 14 Oct 2008 13:55:18 GMT</pubDate>
  </item>
  
  <item>
    <title>Testing Times</title>
    <link>http://www.codingthearchitecture.com/2008/09/26/testing_times.html</link>
    
      
      
        <description>
          &lt;p&gt;
Having recently taken &lt;a href=&#034;http://www.sealisland.net/2008/09/pursuit-of-coverage.html&#034;&gt;another look&lt;/a&gt; at my project&#039;s unit testing strategy I thought I&#039;d share some of my thoughts on how I see unit testing as just another force on the system&#039;s design. As such it needs to be weighed in the balance with the other forces.
&lt;/p&gt;
&lt;p&gt;
Unfortunately it&#039;s a force that tends to get more influence than it perhaps deserves, not least because it&#039;s a force typically backed by the development team.
&lt;/p&gt;&lt;p&gt;&lt;a href=&#034;http://www.codingthearchitecture.com/2008/09/26/testing_times.html&#034;&gt;Read more...&lt;/a&gt;&lt;/p&gt;
        </description>
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2008/09/26/testing_times.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/09/26/testing_times.html</guid>
    <pubDate>Fri, 26 Sep 2008 13:09:00 GMT</pubDate>
  </item>
  
  </channel>
</rss>
