<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Coding the Architecture - iterative tag</title>
  <link>http://www.codingthearchitecture.com/tags/iterative/</link>
  <description>Software architecture for developers</description>
  <language>en</language>
  <copyright>Coding the Architecture</copyright>
  <lastBuildDate>Wed, 16 May 2012 08:01:04 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <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>

