<?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 developers</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Mon, 02 Aug 2010 21:05:00 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>QCon London 2010</title>
    <link>http://www.codingthearchitecture.com/2010/03/17/qcon_london_2010.html</link>
    
      
        <description>
          &lt;p&gt;
After running the abridged version of the software architecture for developers course at QCon London on Monday with Simon, I returned for the conference &#034;proper&#034;.
&lt;/p&gt;
&lt;p&gt;
QCon felt quite diverse this year, running tracks on Agile, Java, .NET, architecture, craftsmanship, design, web and mobile development, testing, and more. As such, it’s quite hard to come away with some sort of over-arching feel for what’s driving the industry at the moment. Perhaps that’s really the take-away message this year: that there are numerous movements bubbling under, but a growing sense of pragmatism over technology choice and process adoption.
&lt;/p&gt;
&lt;p&gt;
However, a few candidate themes were discernible that might constitute some sort of zeitgeist. 
&lt;/p&gt;
&lt;p&gt;
Firstly there was the contended issue of software craftsmanship. At its heart there was a suggestion that this is about being proud of the software we produce and developing techniques to enable, and perhaps enforce, the delivery of “good code”. Around the edges was the suggestion that it was describing a walled garden, wherein development became inbred to the detriment of broader collaboration. 
Despite primarily being a developer, I found myself disagreeing with the software craftsmanship argument more than I expected. The argument seemed to be predicated on the assertion that we simply knew that we had a lot of bad code and that bad code was, well, bad. It took other tracks to present any evidence of there having been no improvement in software project success rates over the last decade, which may simply be bad science anyway! In a successful bit of scheduling there were talks representing both sides of the argument, so this is definitely a topic to keep watching.
&lt;/p&gt;
&lt;p&gt;
The craftsmanship track was also complemented by the development and operations track. This presented a view of development, deployment and production support disciplines as a partnership, ideally wherein they were part of the same process. Craftsmanship in the output of this sort of team feels like a more valuable ambition, where the notion of code quality reflects its ability to survive outside the bubble of our QA processes.
&lt;/p&gt;
&lt;p&gt;
The Agile movement also came under some scrutiny in the Agile Evolution track. There was (finally!) a pragmatic view of it presented as an industry that has seemingly sprung up off the back of some well-intentioned recommendations. In a somewhat ironic retrospective, we see how Agile has caused us to throw away things that we have since come to reinvent, while clinging to rituals regardless of their real value; “we have ADHD, retrograde amnesia and OCD,” says Keith Braithwaite. Rachel Davies, author of “Agile Coaching”, referred to &#034;w-agile&#034;: mini-waterfall with daily stand-ups, the point at which many attempts at agile adoption stall. However, it was refreshing to see this recognised as being a good start and perhaps as a reminder that it’s not a &lt;em&gt;particular&lt;/em&gt; process that’s the goal, but continuous improvement.
&lt;/p&gt;
&lt;p&gt;
There was a huge amount in addition to this at the conference -- certainly a couple of consistent technical themes that are worth tracking down on the QCon site. In particular, Dan Ingalls provided a reminder of the enjoyment we can get from developing software and that we shouldn&#039;t lose sight of this in our work.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2010/03/17/qcon_london_2010.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2010/03/17/qcon_london_2010.html</guid>
    <pubDate>Wed, 17 Mar 2010 11:24:34 GMT</pubDate>
  </item>
  
  <item>
    <title>Also speaking at Software Architect 2009</title>
    <link>http://www.codingthearchitecture.com/2009/09/20/also_speaking_at_software_architect_2009.html</link>
    
      
        <description>
          &lt;p&gt;
As Simon&#039;s &lt;a href=&#034;http://www.codingthearchitecture.com/2009/06/29/speaking_at_software_architect_2009.html&#034;&gt;already indicated&lt;/a&gt;, we&#039;ll be presenting at &lt;a href=&#034;http://www.software-architect.co.uk&#034;&gt;Software Architect 2009&lt;/a&gt; in London.
&lt;/p&gt;
&lt;p&gt;
We&#039;ll be running the CTA one-day workshop and Simon will be presenting two sessions on some of the skills typically required of software architects.
&lt;/p&gt;
&lt;p&gt;
I&#039;ll be presenting a session on my day (and the occasional evening and night) job, working on a financial trading application. The focus will be on the client-side architecture of the desktop application, showing a few examples of how client and server development have similar concerns and solutions, but also where they are different and benefit from different techniques.
&lt;/p&gt;
&lt;p&gt;
We&#039;ve covered most of these concerns in various posts on this site, from development methodology to service-oriented designs and approaches to logging. With the return of rich applications (albeit &#034;zero install&#034; and/or running in a browser, plugin or mobile device) it&#039;s worth considering which design decisions are based on an understanding of this domain or simply inherited from lessons learned working server-side.
&lt;/p&gt;
&lt;p&gt;
The schedule for SA2009 is looking good, so hopefully we&#039;ll be able to provide an overview of the discussions and presentations from this year&#039;s conference.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2009/09/20/also_speaking_at_software_architect_2009.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2009/09/20/also_speaking_at_software_architect_2009.html</guid>
    <pubDate>Sun, 20 Sep 2009 19:22:22 GMT</pubDate>
  </item>
  
  <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>
      
      
    
    
    
    <category>How do you deliver software architecture?</category>
    
    <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>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <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>
      
      
    
    
    
    <category>How do you define software architecture?</category>
    
    <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>
      
    
    
    
    <category>How do you deliver software architecture?</category>
    
    <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>
  
  <item>
    <title>Style on top of substance...</title>
    <link>http://www.codingthearchitecture.com/2008/08/27/style_on_top_of_substance.html</link>
    
      
      
        <description>
          &lt;p&gt;
As seasoned techies, many architects aren&#039;t automatically comfortable giving presentations. Ironically, our ability to abstract and describe complex information makes us better suited to doing them than we like to think, providing we understand the medium.
&lt;/p&gt;
&lt;p&gt;
Presentation, whether it&#039;s via projector, whiteboard, flipchart or hand-waving alone, is an important tool for helping convey certain aspects of architectures, especially as our target audience is sometimes non-technical. 
&lt;/p&gt;&lt;p&gt;&lt;a href=&#034;http://www.codingthearchitecture.com/2008/08/27/style_on_top_of_substance.html&#034;&gt;Read more...&lt;/a&gt;&lt;/p&gt;
        </description>
      
    
    
    
    <category>How do you share software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/08/27/style_on_top_of_substance.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/08/27/style_on_top_of_substance.html</guid>
    <pubDate>Wed, 27 Aug 2008 13:12:54 GMT</pubDate>
  </item>
  
  <item>
    <title>The Four Stages of Learning</title>
    <link>http://www.codingthearchitecture.com/2008/03/25/the_four_stages_of_learning.html</link>
    
      
      
        <description>
          &lt;p&gt;
I&#039;ve found many parallels with the four stages of learning in software development, from how a developer&#039;s approach to design changes to how agile teams eventually become self-organising (eg, Scrum&#039;s &#034;readiness levels&#034;). By understanding where someone is on their path to becoming truly good at something you can be more effective in mentoring them to the next level - rather than assuming you can fast-track them right to the top.
&lt;/p&gt;&lt;p&gt;&lt;a href=&#034;http://www.codingthearchitecture.com/2008/03/25/the_four_stages_of_learning.html&#034;&gt;Read more...&lt;/a&gt;&lt;/p&gt;
        </description>
      
    
    
    
    <category>What is the the role of a software architect?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/03/25/the_four_stages_of_learning.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/03/25/the_four_stages_of_learning.html</guid>
    <pubDate>Tue, 25 Mar 2008 10:07:57 GMT</pubDate>
  </item>
  
  <item>
    <title>Common sense...</title>
    <link>http://www.codingthearchitecture.com/2008/01/28/common_sense.html</link>
    
      
        <description>
          &lt;p&gt;
I&#039;ve just spent a day helping out on a project I had some involvement with last year. For some reason it apparently puts people&#039;s minds at ease when an old face gets involved (actually, my face isn&#039;t that old - perhaps I mean&#039;t &#034;a familiar face&#034;?)
&lt;/p&gt;
&lt;p&gt;
Despite my prior involvement I can&#039;t claim to have particularly in-depth knowledge of the systems being worked with. I&#039;m certainly not familiar with the requirements that were being discussed. I wasn&#039;t really even there to solve a specific problem. My helping-out wasn&#039;t a formal arrangement - I was there, unaccountable and for one day only. &lt;/p&gt;
&lt;p&gt;
I don&#039;t reckon there&#039;s a lot of architecture you can get done in a day. However, you can do a lot &lt;i&gt;for&lt;/i&gt; the architecture in that day. By asking a few simple, common sense questions you can drive out what&#039;s missing, the reason that a project might be languishing:
&lt;ul&gt;
&lt;li&gt;&#034;What methodology are you following?&#034; Although a one- or two-word answer might result you&#039;re really asking them to prove it. &#034;Can I see the backlog?&#034; &#034;Have you signed off the architecture document?&#034; Most methodologies rely on commitment and accountability so if the team isn&#039;t clear on the approach they&#039;re unlikely to know what they&#039;re responsible for or who&#039;s relying on it.&lt;/li&gt;
&lt;li&gt;&#034;What problem does this design solve?&#034; Ok, as an outsider to a project I&#039;ve got to get some context, but I&#039;m surprised how many times a solution is given as a requirement. This often indicates that a technical solution has been conceived by those undertaking the analysis - the potential for standardisation, reuse and, worse, understanding is severely diminished. Furthermore, if you don&#039;t know what the problem is, you&#039;ve very little right to be confident in your solution.&lt;/li&gt;
&lt;li&gt;&#034;Why did you choose this solution?&#034; Problems usually have a corresponding space of solutions, not just a single one. Understanding why a solution was reached is another step in having confidence in it. You also start to learn how reversible the decision is or how flexible the solution is and thus how much  effort you might want to spend refining it.&lt;/li&gt;
&lt;li&gt;&#034;Can you do this?&#034; There are numerous reasons things can&#039;t be done, particularly time, money and skills. It can be instructive to find out if the technical skills exist and, more importantly, responsibility for them seems to stick to someone in the team. Remember, the system/application needs to be built!
&lt;/li&gt;
&lt;/ul&gt;
&lt;/p&gt;
&lt;p&gt;
That&#039;s probably more than a day&#039;s worth of discussion in those few questions (indeed, it turned out to be a &lt;i&gt;long&lt;/i&gt; day!). Whether it makes any long-term difference to the project is ultimately up to the project team.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you deliver software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2008/01/28/common_sense.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/01/28/common_sense.html</guid>
    <pubDate>Mon, 28 Jan 2008 11:21:00 GMT</pubDate>
  </item>
  
  </channel>
</rss>
