<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - agile tag</title>
  <link>http://www.codingthearchitecture.com/tags/agile/</link>
  <description>Software architecture for developers</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Mon, 09 Jan 2012 09:02:08 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>
      
      
    
    
    
    <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>How much architecture is enough?</title>
    <link>http://www.codingthearchitecture.com/2008/09/08/how_much_architecture_is_enough.html</link>
    
      
        <description>
          &lt;p&gt;
Thanks to everybody that came along to our &#034;in *our* brains&#034; session last week where we tried to answer the question of &lt;a href=&#034;http://www.codingthearchitecture.com/2008/09/01/how_much_architecture_is_enough.html&#034;&gt;how much architecture is enough&lt;/a&gt;. The event was part of Skills Matter&#039;s &lt;a href=&#034;http://skillsmatter.com/event/agile-scrum/london-agile-month&#034;&gt;London Agile Month&lt;/a&gt; and it was a great turnout where we had some interesting disucssion ranging from what agile is all about through to how architecture tasks should be tackled during an agile project.
&lt;/p&gt;

&lt;p&gt;
The set of slides that I used to set the scene can be downloaded from &lt;a href=&#034;http://static.codingthearchitecture.com/presentations/20080903-how-much-architecture-is-enough.pdf&#034;&gt;here&lt;/a&gt; (PDF, 0.9MB) and the video from the session can be watched from &lt;a href=&#034;http://skillsmatter.com/podcast/agile-scrum/enterprise-architects&#034;&gt;here&lt;/a&gt; (this includes the presentation and the discussion). Also, Alberto Brandolini has a really good &lt;a href=&#034;http://ziobrando.blogspot.com/2008/09/how-much-architecture-is-enough.html&#034;&gt;blog entry&lt;/a&gt;, which covers the session along with some of his own thoughts that followed. See you next month!
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2008/09/08/how_much_architecture_is_enough.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/09/08/how_much_architecture_is_enough.html</guid>
    <pubDate>Mon, 08 Sep 2008 16:01:00 GMT</pubDate>
  </item>
  
  <item>
    <title>How much architecture is enough?</title>
    <link>http://www.codingthearchitecture.com/2008/09/01/how_much_architecture_is_enough.html</link>
    
      
        <description>
          &lt;p&gt;
This Wednesday, after the &lt;a href=&#034;http://www.codingthearchitecture.com/2008/08/29/software_architecture_training_in_london.html&#034;&gt;training course&lt;/a&gt; and as a part of Skills Matter&#039;s London Agile Month, we&#039;ll be running a session entitled &#034;How much architecture is enough?&#034;. Although this is billed as &#034;In the Brain of Simon Brown&#034;, it&#039;s actually going to be an &#034;In *our* Brains&#034; session where a few of us will be facilitating a group discussion.
&lt;/p&gt;

&lt;p&gt;
As for how much architecture is enough, well we&#039;ve touched upon this question before, particularly with respect to &lt;a href=&#034;http://www.codingthearchitecture.com/2008/01/18/how_much_software_design_detail_in_your_architecture_document.html&#034;&gt;the level of design detail you should put in your architecture document&lt;/a&gt; and the need for &lt;a href=&#034;http://www.codingthearchitecture.com/2006/05/02/quality.html&#034;&gt;just enough quality&lt;/a&gt;. While I don&#039;t think that software development is a relay sport, if you are planning on &lt;a href=&#034;http://www.codingthearchitecture.com/2007/05/14/the_hand_off.html&#034;&gt;handing off your architecture&lt;/a&gt;, how much do you need to do to ensure that this exercise is successful? And on the subject of &lt;a href=&#034;http://static.codingthearchitecture.com/presentations/sa2008-sharing-architectures.pdf&#034;&gt;sharing architectures&lt;/a&gt;, how much should you share and are there &lt;a href=&#034;http://www.codingthearchitecture.com/2008/08/27/style_on_top_of_substance.html&#034;&gt;more creative ways of efficiently delivering your message&lt;/a&gt;?
&lt;/p&gt;

&lt;p&gt;
There&#039;s lots to talk about and if this stuff interests you, please sign up on the &lt;a href=&#034;http://skillsmatter.com/event/agile-scrum/enterprise-architecture&#034;&gt;Skills Matter website&lt;/a&gt;. This will be the September &lt;a href=&#034;http://www.codingthearchitecture.com/pages/londonusergroup.html&#034;&gt;London User Group&lt;/a&gt; and the session starts at 6:30pm.
&lt;/p&gt;
        </description>
      
      
    
    
    
    <comments>http://www.codingthearchitecture.com/2008/09/01/how_much_architecture_is_enough.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2008/09/01/how_much_architecture_is_enough.html</guid>
    <pubDate>Mon, 01 Sep 2008 10:11:25 GMT</pubDate>
  </item>
  
  <item>
    <title>Why do so many technology projects fail?</title>
    <link>http://www.codingthearchitecture.com/2007/11/23/why_do_so_many_technology_projects_fail.html</link>
    
      
        <description>
          &lt;p&gt;
The Financial Times published an interesting article earlier in the week entitled &lt;a href=&#034;http://www.ft.com/cms/s/0/c24b1248-9759-11dc-9e08-0000779fd2ac,dwp_uuid=4dce8136-4a24-11da-b8b1-0000779e2340.html?nclick_check=1&#034;&gt; Perspectives: Why do so many technology projects fail?&lt;/a&gt; (registration required) detailing a court action between BSkyB and EDS. In summary, it&#039;s about the failure to deliver a software project, how software projects aren&#039;t like construction projects, how a new way of working is needed, etc, etc. It&#039;s all stuff we&#039;ve heard before and, as the article says, are lessons never learned?
&lt;/p&gt;

&lt;p&gt;
Why do so many technology projects fail? Here are my thoughts, some of which overlap with the FT&#039;s article.
&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Iterative and agile techniques have revolutionized the way that software development is performed, but our industry needs to take a step back and look at the way in which software projects are engaged. Why, when you read about so many high profile big budget software failures, do businesses still initiate software projects with &#034;we want this, tell me how much it will cost&#034;? *We* know that they&#039;ll change their mind. *They* know that they&#039;ll change their mind. So let&#039;s change the engagement model, stop hiding behind fixed price contracts and work *together* to solve problems.&lt;/li&gt;
&lt;li&gt;In my opinion, the view that software development is a commoditized skill is wrong. This is regardless of whether software is developed on-shore, off-shore, etc. Software development is a discipline that&#039;s part engineering and part art. If you want decent software built, don&#039;t treat it like a commodity. You wouldn&#039;t want anybody to build you a Ferrari, would you?&lt;/li&gt;
&lt;li&gt;And finally, of course, there&#039;s the &lt;a href=&#034;http://www.codingthearchitecture.com/2007/11/14/technical_architects_in_investment_banking.html&#034;&gt;lack of a technical architect&lt;/a&gt;. Not all architects sit in ivory towers throwing unworkable &#034;solutions&#034; at development teams. Some of us like to work *in* the development team and eat our own dog food. Think of how many software projects you&#039;ve seen that function correctly but are not fast enough, scalable enough or secure enough. That&#039;s why you need an architect.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;
I was chatting to &lt;a href=&#034;http://www.codingthearchitecture.com/authors/sdalton/&#034;&gt;Sam&lt;/a&gt; yesterday and he has some interesting thoughts too, which I&#039;m hoping he&#039;ll write about one day. Something that we both agreed on though, is that the software industry generally needs to learn some lessons and wake up to some of the shortcomings that are so prevalent today. 
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>What is software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2007/11/23/why_do_so_many_technology_projects_fail.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2007/11/23/why_do_so_many_technology_projects_fail.html</guid>
    <pubDate>Fri, 23 Nov 2007 14:48:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Real Systems Develop Organically</title>
    <link>http://www.codingthearchitecture.com/2007/07/19/real_systems_develop_organically.html</link>
    
      
        <description>
          Often software isn&#039;t designed and built like a bridge. It&#039;s not engineered and left in a fixed state. It&#039;s more like a city - growing from a small hamlet into a major city like London. Most of London wasn&#039;t planned, it just sort of happened. Interestingly, the bits that weren&#039;t planned are often better places to live and work than the bits that were. Usually because people built what they wanted, when they wanted it.
&lt;p&gt;
A &#039;typical&#039; software product in financial services (I&#039;m sure this will ring a bell in other businesses) starts out as a spreadsheet. A customer rings a consultant/trader/salesperson and asks for something unusual. Smelling a fat commission they price up the request (adding a huge &#039;spread&#039;) and the customer goes away happy. Often that&#039;s as far as it goes but sometimes another customer phones up asking for something similar, so they reuse the spreadsheet.
&lt;p&gt;
As the requests increase the spreadsheet gets more complex and other employees (traders on the desk) start using it too. Often the figures the spreadsheet produces are updated automatically and published onto a message bus like Triarch (finance messaging system), chat system or emailed. This in turn is used by other spreadsheets, VBA apps and the like.
&lt;p&gt;
Two years later IT is called in, possibly because &#034;an important application failed yesterday&#034;. You discover an application with 100 users that&#039;s spread across multiple desktop machines. It all sort of hangs together, it&#039;s not documented and there is no backup policy. If one of the users running part of this application goes on holiday they have to tell someone their password so they can run it up. If they quit then... All the users love what it does, even if it&#039;s nasty to use, and don&#039;t want it to change. It generates several million in profit every year. It&#039;s now your job to stop this being a disaster waiting to happen while keeping the users happy. Sounds familiar?
&lt;p&gt;
To stretch my analogy to breaking point, this is similar to the problems the Victorians had in London when they wanted to supply water, sewage and power to old parts of the city. Do you try and provide the necessary infrastructure to what already exists or do you knock it down and replace it with something designed from scratch?
&lt;p&gt;
In theory you should be able to estimate the costs of both (don&#039;t forget to include any lost revenue, training time, mistakes with a new system, long term support costs etc) and choose the cheapest. In practice an organically grown IT system tends to have spread much more widely than you&#039;d dream possible. On one occasion I&#039;ve received an angry phone call from an IT manager in Zurich because a file was no longer being generated that he needed. The file appeared to be a side effect of a system I was replacing and was no longer needed - except his system was automatically doing an FTP for the file and using it as a risk input to a trading system. How was I to know it did that?
&lt;p&gt;
Unlike a physically growing thing like a city, it&#039;s just not easy to see what you affect. The strategy that seems to work best is to slowly replace systems a little at a time and run the replacement in parallel. You have to test that the new functionality works but also make sure you&#039;re not side-effecting something else entirely and unexpectedly. You may (or may not) be surprised at how many systems run for years in undead mode, with no one daring to turn them off. You need to avoid this as the system will become harder to support over time as those who know how it works leave. Disable the system to start with but make sure you can re-enable if you have to. Only remove it when it has been disabled for a reasonable period of time.
&lt;p&gt;
Organically grown systems are common and often successful. I&#039;d advise not ripping them out but viewing them as an agile system that needs some process and refactoring. Does anyone else have similar war stories?

        </description>
      
      
    
    
    
    <category>What is software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2007/07/19/real_systems_develop_organically.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2007/07/19/real_systems_develop_organically.html</guid>
    <pubDate>Thu, 19 Jul 2007 08:55:37 GMT</pubDate>
  </item>
  
  <item>
    <title>Speculative design</title>
    <link>http://www.codingthearchitecture.com/2006/02/09/speculative_design.html</link>
    
      
        <description>
          &lt;p&gt;
From &lt;a href=&#034;http://www.darrenhobbs.com/archives/2006/01/agile_answers.html&#034;&gt;Agile Answers&lt;/a&gt; comes the following paragraph (emphasis added), which is pretty timely given the conversations I&#039;ve had recently.
&lt;/p&gt;

&lt;blockquote&gt;
Do the simplest thing for the task at hand
&lt;br /&gt;&lt;br /&gt;
Originally a pushback against speculative development (particularly in code frameworks), this guideline is very easy to distort if you want to attack agile methods. &lt;b&gt;Developing incrementally does not (in my opinion) mean taking your brain out before starting. I generally have an idea of where I&#039;m going when developing, based on knowledge and experience.&lt;/b&gt; I use that mental roadmap to decide how to write the next test. Sometimes I&#039;ll skim through and try a quick implementation of part of a feature to see if it looks right (quick meaning minutes, not days). Then I&#039;ll write the tests that exercise my intended implementation, which will probably change it slightly to make it more testable. Code is clay, not marble. Or at least it should be.
&lt;/blockquote&gt;

&lt;p&gt;
For me, the logical extension to this is to talk about iterative and incremental development in general. Take a common component. With a traditional waterfall methodology, common components are typically planned, designed and built upfront before being baselined as complete and ready to use. While this works, problems can arise later on in the project when you realise that the common component doesn&#039;t quite support what you need or, worse, provides functionality that you&#039;re never going to need. This happens because you speculated what was needed too early.
&lt;/p&gt;

&lt;p&gt;
Iterative and incremental development provides a way for you to &#034;do the simplest thing for the task at hand&#034;, yet it&#039;s easy for teams to fall into the trap of doing speculative design because they like to have a fully planned out schedule before starting off on the project, which is contrary to the adaptive planning approach recommended for iterative/agile development. As Darren says, you don&#039;t take your brain out before starting an incremental project - you still need to know where you&#039;re going.
&lt;/p&gt;

&lt;p&gt;
Those common components will get built, but they&#039;ll be built when they&#039;re needed and, as a result, they&#039;ll support exactly the features that are needed. If you do build common components outside of the context in which they will be used, what do you say when somebody asks you whether they&#039;re finished? How do you know when you&#039;re finished?
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you deliver software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2006/02/09/speculative_design.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/02/09/speculative_design.html</guid>
    <pubDate>Thu, 09 Feb 2006 10:59:58 GMT</pubDate>
  </item>
  
  <item>
    <title>How long is a timebox?</title>
    <link>http://www.codingthearchitecture.com/2006/01/23/how_long_is_a_timebox.html</link>
    
      
        <description>
          &lt;p&gt;
One of the most common questions about timeboxing relates to the length of timeboxes. How long should they be and what factors influence this decision?
&lt;/p&gt;

&lt;p&gt;
While there are many recommendations out there, some of which are strongly tied to the development process you&#039;ve adopted (e.g. Scrum recommends a month), the factor I would like to talk about is the skill of the team. Or rather, how much relevant experience they have. By relevant experience, I mean experience with whichever development process, team structure, technologies, tools, etc that are in use on the project. Based upon this information, you should be in a good position to find the ideal length of timebox that suits your project.
&lt;/p&gt;

&lt;p&gt;
For very experienced teams, a short duration (say 2 weeks) allows for some very aggressive timescales and some very quick feedback loops, assuming that you would plan to do a release at the end of each timebox. On the other hand, a longer duration (say 4-6 weeks) is more suited to projects that are larger, more architecturally challenging or where the team is on a steep learning curve with the process, technologies, tools, etc. From experience, problems arise when you put a team that&#039;s on a steep learning curve into very short timeboxes and expect them to deliver. It&#039;s just not realistic to expect them to take onboard lots of new technologies *and* expect them to deliver something that&#039;s production quality.
&lt;/p&gt;

&lt;p&gt;
The ideal length of a timebox for any particular project will vary and deserves some careful thought. Of course, adopting an iterative approach means that you have the flexibility to tweak the timebox duration throughout the project based on your growing experience.
&lt;/p&gt;

&lt;p&gt;
Here at The Pragmatic Architect, we&#039;re interested to see what you you have to say. What are experiences here? What timebox duration works for you and why?
&lt;/p&gt;
        </description>
      
      
    
    
    
    <category>How do you deliver software architecture?</category>
    
    <comments>http://www.codingthearchitecture.com/2006/01/23/how_long_is_a_timebox.html#comments</comments>
    <guid isPermaLink="true">http://www.codingthearchitecture.com/2006/01/23/how_long_is_a_timebox.html</guid>
    <pubDate>Mon, 23 Jan 2006 16:52:26 GMT</pubDate>
  </item>
  
  </channel>
</rss>

