<?xml version="1.0"?>
<rss version="2.0">
<channel>
  <title>Delivering software - agile tag</title>
  <link>http://www.rendell.org:80/pebble/software/tags/agile/</link>
  <description></description>
  <language>en</language>
  <copyright>Andrew Rendell</copyright>
  <lastBuildDate>Tue, 24 Aug 2010 22:36:00 GMT</lastBuildDate>
  <generator>Pebble (http://pebble.sourceforge.net)</generator>
  <docs>http://backend.userland.com/rss</docs>
  
  
  <item>
    <title>Tale of two SCRUM stand ups</title>
    <link>http://www.rendell.org:80/pebble/software/2009/12/15/1260877320000.html</link>
    
      
        <description>
          I walked past two teams doing their daily SCRUM standup today. Both teams claim to be agile. I didn&#039;t join in (even as a chicken) but just observed for a minute or so.&lt;br /&gt;
&lt;br /&gt;
The first team was sitting down in a breakout area. Their body language spoke volumes. There was not one single participant maintaining eye contact with anybody else. Two people were playing on their phones. One developer had his head in his hands. Most had bored expressions. The team leader who is also the SCRUM master was the only person who spoke for the entire time I watched.&lt;br /&gt;
&lt;br /&gt;
The second team was stood in a space near their desks. They were gathered round a task board which appeared to be up to date and the focus of several of the individual&#039;s updates. One person spoke at a time. Almost everybody appeared to be paying attention to whomever was speaking. Most updates were short and concise. A couple rambled on.&lt;br /&gt;
&lt;br /&gt;
Other than both teams calling their meeting a SCRUM I could see no similarities.&lt;br /&gt;
&lt;br /&gt;
As our agile adoption has spread beyond the original teams I suppose it is inevitable that as the experience gets spread a little thinner that people will simply label their existing activities with agile sounding names. Often we have no clear remit in those teams to supply a mentor and to try offer advice would result in rebuttal as team leaders guard their territory. Does this matter? Is there a risk that these teams who are not practicing agile correctly will diminish and discredit agile in the eyes of our programme managers? This is sounding a bit like an excuse for an Agile Inquisition going round checking that no team is using Agile&#039;s name in vain. This cannot be a good thing either.
        </description>
      
      
    
    
    
    <comments>http://www.rendell.org:80/pebble/software/2009/12/15/1260877320000.html#comments</comments>
    <guid isPermaLink="true">http://www.rendell.org:80/pebble/software/2009/12/15/1260877320000.html</guid>
    <pubDate>Tue, 15 Dec 2009 11:42:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Agile 2009</title>
    <link>http://www.rendell.org:80/pebble/software/2009/08/28/1251478620000.html</link>
    
      
        <description>
          I have spent the week at the &lt;a href=&#034;http://agile2009.agilealliance.org/&#034;&gt;Agile2009&lt;/a&gt; conference in Chicago. This annual conference, now in its eighth year, is the premier international gathering for agilsts. It caters for a whole spectrum of experience from new comers to the discipline to the gurus who are leading the way. &lt;br /&gt;
&lt;br /&gt;
I attended some very thought provoking sessions as well as presenting &lt;a href=&#034;http://agile2009.agilealliance.org/files/session_pdfs/tower-agile2009-draft3.pdf&#034;&gt;my own experience report&lt;/a&gt; on techniques for technical architecture in an agile context. My colleague from Valtech US, Howard Deiner, battled hardware and network issues to present a well received &lt;a href=&#034;http://agile2009.agilealliance.org/node/161&#034;&gt;demonstration of Continuous Integration&lt;/a&gt;. Both sessions got reasonable attendances in the face of stiff competition from competing presentations being held in parallel. Both received very positive feedback from attendees (mine scored 80% for command of topic and 78% overall). I got lots of positive feedback for my session in conversations with conference attendees throughout the week. This was very much appreciated.&lt;br /&gt;
&lt;br /&gt;
My presentation is backed up by an IEEE Report which was published in the conference proceedings. The report&#039;s premise is that incumbent waterfall software development processes force technical architects into a position of isolation and ineffectiveness (the ivory tower). The challenge I (any many many other TAs) have faced is how to deliver the guarantees of technical correctness and consistency that clients (especially those moving from waterfall to agile) demand when some of the most widely used conventional techniques for architecture have been discredited. I am thinking primarily of the emphasis placed on up front detailed design and architectural review. &lt;br /&gt;
&lt;br /&gt;
The report details architectural problems during scale up of a previously successful agile project. The report then describes and evaluates a number of techniques employed on the project to deliver the technical architecture without ascent of the ivory tower. The conclusions include the justification that documentation is not an effective tool for technical governance and that the architect must target activities which bring them closer the the actual implementation. This mirrors Neal Ford&#039;s point in his &lt;a href=&#034;http://agile2009.agilealliance.org/node/1146&#034;&gt;Emerging Architecture&lt;/a&gt; presentation that we need to accept that the real design &lt;strong&gt;is the code&lt;/strong&gt;, not the summaries and abstractions of the code presented via the numerous tools (UML, narrative documents, whiteboard sessions) at our disposal. Other conclusions include the identification of automated tests as an architect&#039;s, not just a tester&#039;s, most effective tool for delivering a correct solution. The paper also identifies that soft skills around communication and people management, often the anathema of the conventional architect are critical to success. Finally the report concludes that utilizing the most cost effective techniques (rather than just the most technically powerful) were key. (That does not mean you cannot justify the use of expensive techniques, just that they may only be justifiable on the most important components in the system).&lt;br /&gt;
&lt;br /&gt;
Agile 2009 was a great balance of real world experiences (such as my session) and more philosophical, academic sessions. There also the chance to listen to some insightful keynotes and take part in some exciting expert sessions which challenged the way we work. It is always easier to learn in a community of professionals with real experience and this was definitely the case at this conference. I learned as much over dinner and in break out sessions as I did in the formal seminars.&lt;br /&gt;
&lt;br /&gt;
I am going to blog what I learned in some of sessions in the next couple of days, possibly earlier as I am stuck at Chicago O&#039;Hare for eleven hours after a &#039;mechanical issue&#039; with our plane!
        </description>
      
      
    
    
    
    <comments>http://www.rendell.org:80/pebble/software/2009/08/28/1251478620000.html#comments</comments>
    <guid isPermaLink="true">http://www.rendell.org:80/pebble/software/2009/08/28/1251478620000.html</guid>
    <pubDate>Fri, 28 Aug 2009 16:57:00 GMT</pubDate>
  </item>
  
  <item>
    <title>Use of best of breed open source</title>
    <link>http://www.rendell.org:80/pebble/software/2009/08/17/1250541761919.html</link>
    
      
        <description>
          Over the last two years of my current project I have noticed a recuring pattern. On several occasions we have identified an implementation pattern which commonly appears on many enterprise projects. That pattern is common enough that there is a well known (i.e. at least one person in the team has heard of it) open source solution which appears to be recognised by the community as being best of breed. In order to reduce risk and increase our velocity we use that open source component, possibly making changes to the design to more effectively incorporate the ready to run package. The theory (and one I fully buy into) being that be using the open source library we free up time to concentrate on the part of our solution which are truly unique and require bespoke software. &lt;br /&gt;
&lt;br /&gt;
The recurring pattern I see is that on at least four occasions the best of breed package has proven to be severely sub-optimal. What is worse is that most of the time these deficiencies occur when we move into high volume load test in a cluster. It seems only then that we discover some limitation. Typically this is caused by a particular specialism required for our application which then exercises some part of the library that is not as commonly utilised as others and therefore less stable. Some times the limitation is so bad that the library has to be refactored out before launch and other occasions the issue becomes a known restriction which is corrected at the next release. All of the significant refactorings have involved replacement of the large, generic, well known library with a much smaller, simpler, bespoke piece of code.&lt;br /&gt;
&lt;br /&gt;
I am undecided whether this is a positive pattern or not. On one hand using the standard component for a short period helped us focus on other pieces of code. On the other, the identification of issues consumed significant resource during a critical (final load test) period. The answer probably is that it is okay to use the standard component as long as we put it under production stresses as quickly as possible. We then need to very carefully take account of the effort being consumed and have an idea of the relative cost of an alternative solution. When the cost of the standard component begins to approach the cost of the bespoke then we must move swiftly to replace it. The cost should also factor in maintenance. We need to avoid the behaviour where we sit round looking at each other repeating &amp;quot;This is highly regarded piece of software, it can&#039;t be wrong, it must be us.&amp;quot; for prolonged periods (its okay to say this for a couple of hours, it could be true). I used to work for a well known RDBMS provider. I always felt that the core database engine was awesomely high quality and that anybody who claimed to have found a defect was probably guilty of some sloppy engineering. I knew however, from painful experience, that you did not have to stray far from the core into the myriad of supported options and ancillary products to enter a world of pure shite. The best of breed open source components are no different.&lt;br /&gt;
&lt;br /&gt;
Some of the problem components:&lt;br /&gt;
&lt;br /&gt;
ActiveMQ (2007) - We thought we needed an in memory JMS solution and AcitveMQ looked like an easy win. It turned out that at that release the in-memory queue had a leak which required a server restart every ten to fifteen days. It also added to the complexity of the solution. Was replaced by very few lines of code utilising the Java 5 concurrency package. I would still go back to it for another look, but only if I was really sure I needed JMS.&lt;br /&gt;
&lt;br /&gt;
Quartz (2007) - The bane of our operations team&#039;s life as it would not shutdown cleanly when under load and deployed as part of a Spring application. Replaced by the Timer class and some home grown JDBC.&lt;br /&gt;
&lt;br /&gt;
Quartz (2009) - Once bitten, twice shy? Not us! The shutdown issue was resolved and we needed a richer scheduling tool. Quartz looked like the ticket and worked well during development and passed the limited load testing we were able to do on workstations. When we moved up to the production sized hardware and were able to put realistic load through we discovered issues with the RAMJobStore that were not present with the JDBC store (which we didn&#039;t need). It just could not cope with very large (100 000+) numbers of jobs where new jobs were being added and old ones deleted constantly.
        </description>
      
      
    
    
    
    <comments>http://www.rendell.org:80/pebble/software/2009/08/17/1250541761919.html#comments</comments>
    <guid isPermaLink="true">http://www.rendell.org:80/pebble/software/2009/08/17/1250541761919.html</guid>
    <pubDate>Mon, 17 Aug 2009 20:42:41 GMT</pubDate>
  </item>
  
  <item>
    <title>Security compliance without empirical evidence</title>
    <link>http://www.rendell.org:80/pebble/software/2009/08/17/1250539273671.html</link>
    
      
        <description>
          As the project nears the final delivery I am having to complete a statement of compliance for group security (did you feel a shiver as you read that, it was justified). One of the values I have tried to instil is that we don&#039;t do any documentation or formal design with no clearly defined audience. When we do identify a subject that does need to be formally recorded I am keen that it is done well. The interactions between components OAUTH&amp;nbsp; is one of those few key areas. &lt;br /&gt;
&lt;br /&gt;
The OAUTH sequence diagram was correctly checked into the UML repository and was pretty good. Looking at it I was suddenly struck but a deep sense of unease. How was I supposed to know whether the implementation sitting on our servers bears any relation to the work of art being displayed on my screen? What value is my statement without real knowledge that we are secure? I know this is is something I have known for years and bang on about to anybody who will listen but it was a startling moment to be sitting there looking at the design and being asked to make a formal statement about its realisation without empirical evidence. I already knew from an audit of the acceptance test suite (end to end, automated, in-container tests) that one of the omissions was anything that exercised OAUTH. I decided that one of my priorities for tomorrow will be the completion of that test and that I wont be making a statement of compliance without it.
        </description>
      
      
    
    
    
    <comments>http://www.rendell.org:80/pebble/software/2009/08/17/1250539273671.html#comments</comments>
    <guid isPermaLink="true">http://www.rendell.org:80/pebble/software/2009/08/17/1250539273671.html</guid>
    <pubDate>Mon, 17 Aug 2009 20:01:13 GMT</pubDate>
  </item>
  
  </channel>
</rss>

