Welcome to EMC Consulting Blogs Sign in | Join | Help

Mit creme

Musings on Agile development, Java and other, unrelated aspects of life

  • Reviewing Agile Process Management Tools, Part 2

    This post presents the results of a selection process described in the previous post to find an agile process management tool with which to run our project.

    I'm not going to go over old ground but to make this post capable of standing on its own, here is a very brief explanation. We evaluated a shortlist of tools that met our cost and technology constraints. We scored each tool against 11 criteria that described our project management process. We weighted each of the criteria based on how important they were to our team on our project.

    To see the full list of tools, the explanations of the criteria and our weightings, have a look at the previous post (http://blogs.conchango.com/gavyndowst/archive/2009/08/04/reviewing-agile-process-management-tools.aspx).

    Now on to the results and we'll start with the overall figures. Both the weighting adjusted and non-adjusted figures are represented but, as you can see, the correlation is pretty close, ScrumNinja being the notable exception as one of the main areas it drops points on has a low weighting for us (team management).


     

    The two winners, of those tested, are Version One and Agile on Demand. These two products very much sit on their own in the upper tier of products that do everything. They score very highly because they simply tick every box. This comprehensiveness does make them quite complicated to setup and use though. If you are running several projects with numerous teams and multiple releases then I'd say these tools are a good place to start. The effort spent getting them set up will be rewarded. Almost making it into this upper tier is XPLive which is also very full featured. It drops points mainly in the project view stakes. It doesn't have a fully interactive story or task board and the burndown charts were not the best. It is considerably cheaper than the other two in this tier though and handles story, task and testing management well.

    SilverCatalyst and Scrumninja are similar concepts and, that they scored so similarly is not surprising. They don't do anywhere near as much as the upper tier tools in terms of allowing multiple levels of project, releases, iterations, epics, stories, tasks, tests etc. but they are no where near as complicated either. They do the core items very effectively and intuitively with a high focus on a familiar card based story/task board view of the project.

    AgileBuddy, ProjectCards and Agilo probably make up the next grouping and all focus on the backlog management areas of the process. They don't provide much, if anything, in the way of story and task boards or burndown charts.

    Finally, sitting sort of on its own is XPlanner. This is an open source project and offers much already and promises much more. Currently as with the three in the previous group it's focused on the core backlog and task management areas. Those things that can be considered as improved interfaces such as task boards, burndowns are not there yet. It's one to keep an eye on though due to its price and its open source nature makes it potentially integratable with other tools.

    So to our choice and the one we deemed right for our project and our team. SilverCatalyst. It does what we need and it does it efficiently with a highly intuitive interface and at the individual task level it stacks up well against the highest scoring Version One as can be seen below.

     

    It also comes as an on-site version in addition to the hosted offering that was tested which promises integration with thirdparty tools allowing enhanced bug tracking, IDE integration etc. We may or may not go for this option as the hosted solution ticks a very big box for us with regards remote working but, if we do I'll certainly blog on the ease of integration, or otherwise.

     

  • Reviewing Agile Process Management Tools

    I’m just about to start a new project, finally. It’s starting a good three months after it was supposed to due to client procrastination but with the same goals and the same end date which will make for a challenging delivery. You’ve heard this before, right? Throw in some off shore testing resources and the possibility that some team members may have to spend up to seven days in swine flu quarantine at home during the project and the potential for failure is high. With this in mind we decided that an online, collaborative agile management tool would be essential.

     

    Turning to the internet, we quickly discovered that there was no definitive choice of agile process management product to meet our needs. They all seem to be overly complicated, trying to do everything and be ultimately flexible or too simplistic, unable to do enough. Nothing seemed to toe the middle ground. Once we’d established that the solution wasn’t going to be simple or obvious, we set about being a little bit scientific about our search. We thought about the process of developing in agile, mapped the key interaction points in the process and turned these into judgement criteria. These were:

     

    • Backlog – Can you create and manage a product backlog of stories simply and effectively, prioritising and ordering them?
    • Estimating – Can you estimate the stories on your backlog, simply, in bulk after the backlog is created?
    • Stories – How expansive are the stories and can you nest them within epics or turn them into epics at a later date?
    • Tasks – Can you create nested tasks under a story to represent the actual work that needs to be done, for more accurate tracking?
    • Testing – Does the tool allow for special testing tasks and testing oriented views of progress?
    • Teams – Can you create teams of people and manage their capacity over time?
    • Planning – How helpful is the tool in planning sprints and matching selected stories to sprint capacities. For a bonus, are these capacities dictated by the assigned team capacity?
    • Progress – How easy is it to update progress on tasks and stories and does it track only how long is left on a task or how long was spent as well?
    • Board – Does the tool provide a story board or a task board (or both) and how interactive is it? Can you drag and drop to update tasks, can you take ownership of a task directly from the board?
    • Burndown – How clear is the burndown and what other techniques of tracking progress exist?
    • Usability – Generally, how easy to use is the tool?

     

    These criteria should describe the things that most agile teams would need in a product but in order to ensure we obtained the best for us, we then weighted them as follows:

     

    • Backlog – 10 (This is essential)
    • Estimating – 6 (Need it but, we can cope with a little pain up front)
    • Stories – 10 (Another essential)
    • Tasks – 4 (We can manage this with more granular stories if we have to)
    • Testing – 2 (Not saying it’s not important but, differentiating testing tasks from other tasks isn’t. We’re happy to manage this with standard tasks or even stories)
    • Teams – 2 (Not vital, we have a short project and a small team)
    • Planning – 8 (Not essential but very useful and speeds up sprint planning)
    • Progress – 10 (The crux of everything really. If this isn’t right, nothing upstream or downstream is useful)
    • Board – 10 (This was the need that started the search and this visualisation remains an essential for us)
    • Burndown – 6 (The defacto view of project progress perhaps but not all that vital on a project as small as ours)
    • Usability – 7 (Don’t want it too clunky but, we’re all intelligent guys and we’ll figure it out)

     

    The final task was to build a shortlist of candidates. Inevitably, we had to include a cost factor. Our project is not huge and, we can’t say with any certainty that whichever tool we choose will be used beyond its end. So, we worked out comparative costs for 10 users over 6 months and excluded the most expensive. A couple of others were excluded as they only worked on MS SQL which didn’t work for us in a Linux and Oracle environment. The final list is below, and I’ve also listed those that didn’t quite make it.

     

     

    The following were looked into but excluded due to cost:

     

     

    The following were excluded due to technology constraints:

     

     

     

    Now all that was left was the scoring. We downloaded or signed up for the free trials of each product and set about inputting our data and running a mock project for a few days. This gave us a reasonably real-world view of the products’ performance. Fed the scoring into a spreadsheet and came up with some results. As this explanation has become rather long I will post the results and a short review of the products in the next blog.

  • When Breaking Policy Doesn't Break the Rules.

    I recently read an interesting article on the New Yorker's website, here*, about how rules, accepted convention and how doing something outside convention can yield results. It is an article that spawned a number of thoughts or, more accurately, realisations of occasions in my career where the messages in the article are really pertinent. The first example was triggered by one of several anecdotal references in the article, that of Doug Lenat and the Traveller Trillion Credit Squadron tournament which I will briefly summarise for your convenience and to better clarify my point though I'd still recommend you to read the whole of the New Yorker article.


    Unnecessary picture of a futuristic battleshipIn 1981, Doug Lenat was a computer scientist at Stanford University and decided to enter the Traveller Trillion Credit Squadron tournament. Run in San Mateo, this was a war game governed by a comprehensive rulebook which gave participants a trillion credits to design a fleet of warships to do battle with other contestants' fleets. Battles occurred over the course of a weekend in a large hall, described by Lenat thus, "Imagine this enormous auditorium area with tables, and at each table people are paired off. The winners go on and advance. The losers get eliminated, and the field gets smaller and smaller, and the audience gets larger and larger."

    Lenat had developed an artificial intelligence program called Eurisko into which he fed the tournament rulebook. Lenat gave Eurisko no advice or help, not being a war gamer himself he had none to give and so, unencumbered by human interference, Eurisko set to work. Running for about ten hours a night on one hundred computers at Xerox Parc, it took about a month for Eurisko to find an answer (this was 1981 remember!).

    Compared to the normal human designed fleet that featured an array of ships of varying sizes balancing attack, defence and mobility Eurisko's decision was radical. "The program came up with a strategy of spending the trillion on an astronomical number of small ships like P.T. boats, with powerful weapons but absolutely no defense and no mobility," Lenat said. "They just sat there. Basically, if they were hit once they would sink. And what happened is that the enemy would take its shots, and every one of those shots would sink our ships. But it didn't matter, because we had so many." Lenat, or rather Eurisko won the tournament easily that year.

    Next year the rules were changed to outlaw static gun platforms by introducing an enforced 'agility' measure that counted toward success. Provided with the new rulebook, Eurisko started work again. "What Eurisko did was say that if any of our ships got damaged it would sink itself?and that would raise fleet agility back up again," Lenat said. Eurisko won again.

    In this competition, Eurisko was an underdog. All the other gamers had extensive knowledge of military history and strategy. They were skilled at gaming. Eurisko knew nothing but the rules and it had no common sense and made no interpretation of the rules based on its own experiences. It was this lack of understanding of the conventions of the game and even life itself that was Eurisko's advantage. "Eurisko was exposing the fact that any finite set of rules is going to be a very incomplete approximation of reality," Lenat explained. "What the other entrants were doing was filling in the holes in the rules with real-world, realistic answers. But Eurisko didn't have that kind of preconception, partly because it didn't know enough about the world." So it found solutions that were, as Lenat freely admits, "socially horrifying": send a thousand defenseless and immobile ships into battle; sink your own ships the moment they get damaged.

    For a summary, that was quite long, wasn't it? Hope you're still with me! The essence of the anecdote for me is the interplay between experience, interpretation of rules and the forming of conventions. When we are given a set of rules that define a process, we fill in the gaps, we interpret those rules based on our current knowledge and experience and that then defines how we proceed. If this interpretation of the rules is followed repeatedly it becomes a convention. Once something's a convention it becomes accepted as being the rules and that's where the problem occurs because people lose sight of the original rules, and most importantly, the true meaning of them.

    This is a problem that I've seen in many large corporate IT departments with large, old policies. Over time, the policies have been interpreted and the interpretation has become convention. The convention has become so often practiced that it is now assumed to be the policy. When you attempt to implement something new, a technology or an approach (bearing in mind the speed at which IT moves, new is a fairly common concept) it creates all sorts of problems because it doesn't meet policy.

    That's not true though because it's not being judged against policy. It's being judged against the accepted policy which is actually the convention that has been built around an interpretation of the policy that was made long before this technology or approach existed. What should happen but doesn't is the rules that define the original policy need to be picked up and looked through by someone unencumbered with the experience of the convention and with knowledge of the new approach or technology who can determine if the policy is truly broken or not.

    We need to follow the rules, not the convention.

     


    * http://www.newyorker.com/reporting/2009/05/11/090511fa_fact_gladwell for those reading this in print.

  • I Am the Resurrection

    Hello. Anybody there? No? That doesn't surprise me! I've not posted here for a staggering two and a half years! They've been a busy two and a half years seeing me get married and become a father but I don't consider that overly blog-worthy, at least not on this forum, but I've not had time for anything else that might be because of those events. Recently though, I've had a bit more time and have been reading things, thinking a bit and learning a lot about various things technical and not. As a result, I thought I write this post as a marker that things are about to change around here and become just a bit more active.

    Starting with a series of posts about non-conventional thinking and underdog victories which will touch on war games, formula 1 and the definition of policies amongst other things. I've also been experimenting with Spring Roo lately so will probably post some of my observations and discoveries on that too.

     All in all, it should be a more active blog from now on!

  • Testing in Agile - Part Three

    Minimising the Bug Debt - A question of size

    I think most people would agree that on a real world development project of any scale, bugs will exist. Apply all the best practices in the world in the shape of unit testing and automated functional testing but there will be bugs.

    Minimising the size of the debt that is allowed to accrue is essential to staying within a single iteration of release. A useful way to achieve this is to keep everything else small. It is already widely accepted that quality is improved if the functional tasks themselves are broken down into small discrete items. A very small functional requirement with a few defined acceptance criteria is far easier to get right than a large complicated requirement with 10s of acceptance criteria.

    Extending this philosophy, keeping the sprints themselves smaller is also advantageous. I will personally never run a project with sprints longer than three weeks again and wherever possible I will aim for two weeks.

    The obvious advantage of smaller sprints is that less code can be developed in any one sprint and consequently fewer bugs can arise in the first place. Of course, this is offset by the fact that you have less time to find and resolve those bugs and if you’re still writing bad code then it probably won’t help! Another benefit though should help and that is that a shorter sprint encourages the team (development and business) to break larger functional tasks down into smaller ones and, as mentioned earlier, this is an acknowledged way of improving quality.

    Other advantages of smaller sprints are more frequent opportunities for retrospectives and, consequently, opportunities to modify anything that’s not working, more frequent releases to the customer and a greater number of total sprints in which to react to changes from these releases.

    In summary then, just as KISS (Keep It Simple, Stupid) has become an acronym for development and code design, it seems it could be employed to mean “Keep It Small, Stupid” too!

    This post is the last of those that I had pre-written in another form and was to be the last of my blog posts on the testing in Agile subject. These things are never fixed though and a comment on a previous post has triggered another area of thought. So, probably after Christmas now, I will post something on the topic of 'Functional testing vs. unit testing - the right tool in the right place'.

    Have a nice break all.

  • Testing in Agile - Part Two

    Managing Bugs in an Agile Project - Agile debt collection

    Previously I spoke of the bug debt and how, over the course of a project, bugs will arise and will either be handled immediately or held over to be completed “at a later date”. In order to maintain the concept where you are only ever a single iteration away from shippable, these holdover bug items must be collected and budgeted for.

    One approach to managing this is to maintain an additional backlog listing all of these carryover bugs. This backlog is maintained using three simple rules:

    1. Every sprint outstanding bugs are retested to confirm that they still exist and the backlog updated accordingly.
    2. The backlog is continually prioritised by the product owner.
    3. Each sprint planning meeting a portion of time is put aside to estimate the bug backlog, assigning estimates to new bugs and revising old bug estimates armed with any new information gathered.

    This process remains ongoing every sprint.

    If at any point the total estimate of the bug backlog, your bug debt, exceeds your sprint capacity then you are no longer a sprint away from shippable. You’re debts have exceeded your means which in this model, as in life, is not a tenable position! As such, as soon as this situation occurs it is immediately resolved by taking as many bugs from the top of the backlog off and feeding them into the next sprint as is necessary to reduce your debt back to a sprint’s worth.

    Working in this manner is an effective way to manage bugs and has some clear advantages.

    Giving the product owner visibility of the bug backlog for prioritisation keeps him very much aware that bugs exist but, will also make him aware, through the estimation, of how minor the effort of fixing these is in relation to the effort expended on value add functionality. This will help provide perspective and reinforce the perception of quality of the teams’ deliveries.

    Re-estimating the backlog every sprint keeps the bugs in the teams’ consciousness and will allow them to address the issue if they are making a modification to a problem area to facilitate new functionality and it doesn’t cause impact. It can also act as an ongoing aid memoir of what has gone wrong previously to help people avoid similar bugs in the future.


  • Testing in Agile - Part One

    Musings on the meaning of "potentially shippable"

    One of the mandates of Scrum, and a mainstay of Agile processes in general is the concept that every sprint or development iteration should produce potentially shippable code. In essence this is taken to mean that the day after any sprint is completed the fruits of the teams labour can be released immediately. Release could be to a UAT environment for final fit-for-purpose testing, or directly to a production environment but this is an extraneous detail. The key point is that there’s an expectation that the developed product will have no significant bugs and require no further development before being moved on to the next stage of project implementation.

    The question that has been occupying my thoughts for some time now having been through a number of Agile development project is whether this premise is actually achievable in the real world. Having failed to reach a definitive answer on my own I raised this as a discussion point at the recent Scrum Gathering in Minneapolis which provided some useful experiences and opinions on which to draw. This helped lead me towards a conclusion which is not so much an answer as a redefinition of the premise.

    Potentially shippable code is code that is never more than a single iteration away from release.

    In taking this approach it is possible to maintain agile development practices without significantly impacting the release as soon as it’s complete enough mantra. As a sprint backlog is worked through, code is developed to a high quality, tested at a unit level, functionally tested and bugs uncovered. In my experience, these bugs are generally rated by criticality and then handled in one of two ways. Regardless of the number of criticality levels, there is a dividing line with bugs sitting above that line being fixed immediately, within the current sprint, and bugs falling below that line being queued up for later attention. It is these queued bugs or “bug debt” that this final, “snagging” sprint provides the time to resolve.

    In subsequent posts I will post some thoughts on how to both minimise and manage the inevitable bug debt.




  • Why blog?

    So, here it is, my first blog post on my first blog. Why blog and why now? Well, a number of reasons really. Several people have been on at me to start blogging for quite a while now, most notably Howard and Colin. In addition, I've recently started writing stuff down in emails, text files, wherever and have decided that it really helps with getting your mind in order. A few people saw some of my mind scribbles and commented that it would make good blog material so, whereas previously I thought I'd never have the time to blog, it suddenly seemed that this wasn't the case.

    So, here we are. I have a blog and, I have a backlog of potential posts so that, at least initially, we should be able to make this blog a fairly rapidly changing, if not mildly interesting place.


Powered by Community Server (Personal Edition), by Telligent Systems