Category: Agile Thoughts

Agile thoughts covers my assessment of agile software development based on project application experience.

  • Digital Whiteboard

    Digital Whiteboard

    Whiteboard image with mind-mapOne of the latest gadgets in the StoryCase office is a Intuous drawing tablet from Wacom. I remember getting a Wacom tablet many years ago when it needed an RS232 cable and separate power supply. It never really got used mainly due to the fiddly interface (was it 8 bit, parity or no parity?) and wires that just got in the way. These new models are so much easier – just one usb plug and you’re up and running or there’s even a wire free one if you want.

    Somehow in the last office move I lost my whiteboard and so I thought it would be good to try and hook up a digital one instead. Of course the ubiquitous iPad could be used but there’s something about holding a pen in the hand that makes writing and doodling for me so much more natural. So I fired up Photoshop on the MacBookPro and started with a blank canvas 1200x780px. I claimed it “My Whiteboard” and added “Do not erase!” on the background layer to add some reality (yes, it’s tempting fate especially when saving on the project share).

    Next I added a new layer with today’s date and began with a mindmap of tasks I’d been thinking about and needed to focus on. Changing company name has generated a myriad of stuff to do and the linear todo lists had just grown longer. The whiteboard helped us see the dependencies so we ‘d spend less time arguing why we’d actioned things in the wrong order – another story, when I get a minute.

    Soon the layers build up into a digital version of the whiteboard that seems really quite useful. Toggling the layer visibility makes it easy to see what’s changed and when and if you want to try a new branch of ideas just fill the layer to obscure the previous doodles. Okay, there have been many attempts at virtual whiteboards already – Trello, EasyChalk, Uniboard or integrated into Livemeeting for example, but a simple multiple layer approach in PSE or Photoshop works fine if you want to be creative with doodles. “My Whiteboard” is shared on the office NAS so we can all participate and there are separate Kanbans for each project we’re working on.

    So did the new Wacom get used? Well yes, just need to add the whiteboard pen aroma to complete the user experience!

    Postscript – we’re evaluating digital whiteboard solutions and the cloud based Trello is our current favorite so if you have not seen what it can do why no try it out? : http://trello.com – it’s currently free!

     

  • Defect Thursday

    Defect Thursday

    Calendar showing Defect task for ThursdaysDoes your development team treat defects differently? A few projects ago the sprint teams I worked with decided the best way of burning down the bug list was to allocate at least a day a week (or every two weeks) to defects. There were several sprints running in parallel with a continuous daily build.  The main sprint’s stories took priority so non critical defects built up. Come defect Thursday everyone dropped the new tasks and picked up the bugs.

    Over several weeks the burn-down charts showed progress with reduced defects along with the main stories. With the weekly expectation of having to focus on defects the sprint teams adopted a more ‘relaxed’ approach to bugs. Of course the critical bugs took priority in the daily stack but the medium and low priority defects were left for Thursdays. This allowed more time to think through a better fix. Thursday’s stand-up could home in on areas that needed refactoring to fix the defect and maybe adopt a better strategy for exception handling or tackling the buggy UI component that had been accepted until now.

    Compared to some other approaches to managing the defect list such as daily developer rotation (oh no it’s not my turn) or swot team (the ‘B’ team – always bug fixing) having a fixture in the calendar my work for you too.

     

  • Agile analysts – do they exist?

    I like to think I’m agile. Most of the time I’m working as an analyst on projects, split between business and system analysis tasks. I talk with the business experts and help them define their requirements from requests to change or add new behaviour to adapt to business needs. In an ideal agile world I’d be redundant, as the business would have resource to allocate experts to work alongside developers in the project team. Fortunately for me and many other analysts the business are rarely flushed with enough experienced business experts and must rely on a go between to convey their message. I like to think I add value by removing any preconceived notions the business may have in specifying how they want the new functionality to work, by filtering their requirements and extracting what they want it to do. I might write a story that details a change to an operational report or define a new addition to the product set. I seek estimates from the developers and feed this back to the business for approval. As a go-between, I’m fulfilling a legitimate agile role.

    But is there really a need for an agile analyst? Is the term an oxymoron? It’s a question often asked by companies starting out on the agile path. CEOs read agile books about empowerment and business sponsors and plough in with pilot projects that bring swift results. They attend seminars and see the productivity of pair programming. Six months or so after the heady kick-off meeting and countless show and tell sessions the business realise they have more work to do than automation can bring. Who’s going to handle the customer support lines? Who will send the white mail and respond to written enquiries? Just what does Sox mean to audit? Soon the full time business sponsor is part time or has little or no time to spare at all. We’ve seen it happen on several projects.

    Beyond the consultant’s vocabulary of business process change and IT infrastructure lays the reality of an end-to-end process. In the haste to embrace agility the business may forget this. But I like to think the analyst never will. The agile analyst can fill the gap when the initial sponsor retreats or play the role of surrogate business expert when full time secondment was never an option. They may even re-badge themselves as product specialists.

    I like to think the agile analyst brings a few more tools and techniques that the businesses sponsor or developer could rarely provide. As an analyst I can create models and unambiguous diagrams that slay endless business arguments. For example, a state diagram that clarify exactly in which circumstances we will accept a certain business event. Or I can create a data model that captures the legitimate rules for relating product to service. It’s true, once these business requirements are understood by the developers my effort if no longer required, I’ve fulfilled my role. But when significant changes are required later on the analyst can again help filter and convey requirements without bias of technical forethought.

  • Agile in practice

    Over the years I’ve practiced various flavours of IT development in projects with emphasis on use case driven approaches to guide requirements capture. Not all companies work this way and for many creation of a lengthy functional requirements document is the norm. Without an FRD / PRD / ReqDoc or whatever the in-house term used, the functional requirements are often fragmented and hierarchical with lashings of must haves, should haves and could haves. And in many of my projects the use case has successfully challenged this status quo with an improved way to cluster and manage requirement complexity.

    Some projects along the use case migration road have not been so successful and there seems to be a trend to these types. A bad smell may begin with endless reviews in which more detail is added and more critique ensues. Business won’t sign-off and development is stalled and eventually the project misses its window of opportunity and is canned. Or the number of use cases seems to keep increasing with ever more elaborate techniques to package, include and extend them. The Business becomes frightened to read or review and loose faith in use case salvation. Or the estimates raise eyebrows and a new project manager is called in to tame the beast. The PM brings along new metrics in Excel; an impressive plan in Project and development begins, milestones come and go. The first use case never reaches QA for test. The project takes a vacation.

    So what’s going wrong and can an agile approach help? Clues left behind by failed or failing IT development projects are useful forensic evidence. Larger companies may have resource to carry out their own post mortem as post implementation reviews. I’ve witnessed two recurring themes from these reviews. First killer is complexity and can be reduced and controlled by user stories. Second killer is lack of iteration borne out of waterfall mindset and this requires enlightened confident management.

    Complexity just happens. It’s often not intentional, use case specification just get longer and more detailed. What starts as a simple happy day with a few sentences becomes a heavyweight monster, detailing a multitude of alternatives and exception scenarios. All parties agree these are important. But the project plan has a single task for the whole use case – there so many use cases so we can’t have separate activities for each one can we? The developers wrestle with the monster use case and may get some scenarios working but there’s never enough complete to make it past QA. One way to avoid the monster is to focus only on the happy day and perhaps one or two alternatives. The use case is manageable and can progress through analysis, design dev and test. Success? Not necessarily as those missing alternatives and exceptions are identified during release testing and requires further iterations to fix the defects. But this is ok, the dev team have been through the build cycle and the team can cope so long as release dates are flexible. Success depends on not getting bogged down during requirements definition and producing something that demonstrates delivery is possible. Agility wins the day by accommodating change – the requirements we skipped over at the start get fixed after some code is working.

    So was the use case to blame? Maybe. Use cases have become collections of scenarios all working towards a common goal – something of benefit to the business. But just as use cases are collections of related functional requirements, scenarios add another dimension and complexity is multiplied. Think about it; with five requirements related to registering new user, if 4 scenarios are identified that’s twenty requirements that need developing and testing. The use case is overloaded and may hide underlying complexity. An eight person-day estimate to code the use case for one scenario may translate to 32 days when all scenarios are included. If early happy day estimates are used to construct the project plan budgets are soon blown.

    A user story helps avoid overloaded by keeping the scenarios separate. The story captures one or two tightly bound scenarios with a crucial constraint – it must be possible to code the story in a short time, say a maximum of 1 week. The agile approach does not allow story bloat. Yes more stories are needed to capture all the scenarios but there’s no insistence that they must all be identified before a line of code is written. Complexity is still there but never all at once. Each iteration builds towards complete functionality covering more scenarios but never all at once. The story becomes the unit of planning instead of a use case that may contain dozens of stories.

    Agile methods talk about story velocity and it’s an important concept. The velocity is the number of stories coded per unit of time, typically in person days. For example, our current team has a velocity of 5 stories per day. Perhaps story inertia is an even more useful term. Consider the effort in getting a development team moving. The larger the story, the more inertia and effort needed in getting it moving but once moving it’s easy to add more stories and get working code out the other end. An agile process starts by keeping initial requirements concise and simple in a few stories so development can get moving – low inertia. Then stories for the alternatives and exceptions are added, refactoring where necessary. Another benefit: later stories don’t need as much detail as the initial story has already defined the main pathway and show the way.

    Contrast this with a full use case driven development in which as many scenarios are analysed and detailed before any coding begins. Picking any use case to start development brings along all its scenarios in one chunk of code. High inertia, a big flywheel to get moving.

     

  • To document or not

    To document or not

    Document Graphic Lipsum and BookFew people really like documentation. Given the option most would rather try to figure out what to do without reading the manual. Even quick reference guide is hurriedly tossed aside to tryout the latest gadget. It’s probably masculine pride and could account for the agile manifesto’s preference for face-to-face communication over written documentation. I’m not saying the agile manifesto favours masculine traits but it’s true the initiators were all male (http://agilemanifesto.org/).

    When a new member joins an agile project face-to-face communication is essential to gain understanding of the system its foibles and its characteristics. There’s likely to be little or no documentation to read. Agile modellers may have left behind some light weight foot prints in the form of iPhone whiteboard snaps or maybe a few diagrams, most likely rendered in HTML and accessible only via a browser. But these are rarely up to date, refactoring and continuous delivery will have seen to that. So to return to the question often debated by projects embarking on an agile course, “Should we produce any documentation or not?” Well, it depends…

    Given a stable agile project team there’s little benefit in documenting much before coding. Simple user stores capture outline requirements sufficient to continue conversations between developers and business specialists. The story’s success criteria keep QA busy with enough to write test cases and outline scripts. After several iterations and releases all the team are in sync so there’s little perceived benefit in retro documentation and the overhead associated in keeping it in sync. Inevitably team members wax and wane and new requirements challenge the agile approach. The Business, flushed with success of early versions may see new opportunities for additional features way beyond the original requirements. These aspects stress an agile project. Without documentation new members must spend time with experienced team players but those left are over utilised in responding to change requests and bug fixes and can spare little time for the newbies. Without a high-level architectural schematic it’s difficult to discuss the brittle points for the new requirements and the developers talk code rather than packages. (Code has its place but not usually at meetings between the business, architects and project managers discussing the latest marketing ideas for product offerings.)

    Documentation helps support the frailty of human memory and schematic models can focus and simplify discussions so that all are on the same page. In the truest agile way these can be generated from a model or created on a whiteboard and don’t have to be lengthy tombs. I’ve found a few core diagrams can be extremely helpful. For example, in a message based order processing application, a state diagram showing the states of an order with its associated events can form the basis for planning development, partitioning stories and organising test cases. While a high-level block schematic can define architectural boundaries and help allocate development teams and identify message interface owners. There’s often little need for pages of descriptive prose or endless sequence diagrams. But one or two physical data models depicting the cardinality between major entities can again focus discussions and ultimately speed development.