What follows are my personal experiences and thoughts based on a recent contract role that I did as a Project Manager of an Agile project.
Agile has been a buzz word for quite some time now and I think it’s safe to say that it’s caught on as a fashion statement as far as project methodologies go. Nowadays most of the job adverts ask for agile experience, which I assume is a direct indicator of most projects wanting to go the agile way. I have attended an interview where the hiring manager, looking at my profile said something like ‘I feel outdated and have been thinking of going agile with my project’ which in fact was a multi-year network upgrade project, one of the last projects in the world I would think of making Agile.
My project was a long term (2 years) development project and the project team involved 7 squads working on a fortnightly sprint based development model. We followed Agile ritualistically. We breathed agile so to speak. Where I stand now, I believe that agile, in its purest form, may not be appropriate for most of the long running (multi-year) projects around.
Here are some tips I’ve picked up in my experience to-date.
Agile Must Haves:
However you try to coat it, Agile depends heavily on making documentation lean and on demand. This has some detrimental impacts in the long run. If you have a project running for a long duration, or a project which is done and dusted but the go live is delayed and the team had to be dismembered and re-convened (with different set of contractors) later . Nobody would have a clear end to end view of the architecture, requirements, design implemented, standards used etc. Thus the need to focus on the long term, even when the sprints are of 2 weekly duration. Figure out what are the documents that an operation team would require to maintain the application, or a new set of contractors would need if they were to re-engineer the solution for whatever reason. System appreciation document, Requirements document, Requirements Traceability documents to list a few. Effort needs to be set apart and planned for documentation during each iteration or at regular intervals say every 4th iteration.
There is an argument that user stories provide traceability in agile projects. But I haven’t found that effective. User stories would be sliced pieces of bits and pieces of functionality which are created to fit into the effort available in a sprint doable by a developer, testable by a tester. But no group of user stories would clearly depict the requirements in a clear and understandable manner in the long run. Hence go for a tool like JAMA for putting in requirements. You need to establish a clear heirarchy of functional requirements and a process as to how and under what sub requirement would a user story of a particular type and function be added. Establish the skeletal process upfront before you write your first user story. We got into a mess as the skeletal structure and the processes were not set upfront and each Scrum Master who came on board went their own way in documenting requirements.
Refactoring is the next topic that needs attention. The need to get going with the next set of requirements, along with the need to be agile and deliver at very short intervals leads to a lot of disjointed coding practices and deviations from the initial design architecture standards. More often than not you would tend to cut corners to ensure we deliver the requirements on time for the iteration. There is an unavoidable need to have a refactoring sprint planned regularly. If it could be afforded, you could have a separate squad consisting of the architect and a developer working together who pick up what has gone into the previous iteration. This squad then reviews, corrects and refactors code where required regularly. Another idea is that it can be a sprint planned for all/some of the squads every 2 months or so where they spend (say) 1 week of their time in refactoring and tidying up what has already gone in. In the second model it is imperative that some watchdog like the architect or a senior developer keep a note of what are the corners that were cut, deviations that were done, either in consultation with or whatever is found through reviews.
Agile gives a real good work life balance for employees. It’s perfect from a developer or a tester’s perspective. You commit to what you can do and go ahead do that.
It’s perfect in all the other ways that we all know about like, being able to cater to the customers immediate needs, providing a working software at regular intervals which the customer can look and feel and modify his requirements accordingly to.
Agile keeps the enthusiasm level up there or thereabouts always. It is great to have frequent sense of achievement, release of pressure, re planning and re estimation, recharging of batteries.
A Physical Agile Board:
Always have a physical agile board unless you have a big and wide screen monitor/smart board which is life like. The sense of physically moving tasks from one stage to another cannot be replaced.
Have a ‘graveyard’ where you would move the completed tasks and stories. If possible get different squads to use different colours or may be different colours for different types of tasks (one for dev and one for Test maybe) this would help to create some nice and creative patterns on the graveyard which through a time-lapse video would make us all proud as a work of art and provide an ongoing sense of achievement.
Agile is for teams involving good to expert level developers and testers. New members must be drafted in gradually, and drafted in only when then they are very close to 100% ramped up. New team members or those who are not well versed with the technology in-use, liquidate the effectiveness of agile methodology. When such a member joins, for quite a few iterations at least the team’s velocity estimates go low and so does the productivity. Agile teams are like bullet trains. You can’t attach a cargo van at the end of it and expect it to run at the same pace. It can be very detrimental. This is one of the reasons I feel, why agile is not good for a long running project where you, more often than not, would have churn and developers and testers move in and out frequently or in organizations where resources are pulled into different projects or operational activities at various times.
In an agile project the timeline OR the scope can remain constant. Both cannot. Due to the inherent nature of agile, scope gets swapped in and out, functionality requirements keep changing everything moves around between iterations.
Ensure that you engage and educate the stakeholders on what they are getting into. It so happened in one of my projects that towards the end of the project, (mainly due to some internal politics between the concerned departments within the company) the agility and its rules were forgotten and the business put a wooden foot forward saying the scope is non-negotiable and so is the time-to-market. Hence all the remaining scope in the backlog became indispensable. This same backlog was always thought of as a priority list (as it should be) which would be tackled in the right order and it would be the product owners responsibility too to ensure that he gets the most important features in the time remaining till the project go live. So now we had a situation where the product owner who was all agile and happy to add in and chop off requirements as he wished suddenly went backstage and there we had the business director standing on top of us with a ‘my way or highway’ attitude.
What the above scenario teaches me is that even though we run an agile project, do 2 things. Educate / coach your stakeholders on how agile works and what it means, with respect to overall scope and timelines. Secondly, keep yourselves covered by always probing and getting as much requirements (even at a high level) listed upfront, high level planning poker done for all the requirements , add your buffers and keep the forecast with respect to scope also highlighted in your weekly reports. What I mean is, if there was a new chunk of work that came in to the backlog which suddenly became priority for the product owner, show clearly by means of trend graphs how the overall scope has increased and how that impacts timelines if all the requirements were to be completed.
You might say “we all do that!” Yes but still ensure that every week the view of how the overall picture looks with regards to scope is provided to all stakeholders. The product owner shouldn’t be able to shrug off the accountability of getting what is required in the time that is allocated.
Particular mention needs to be made of some product owners who, on seeing that the velocity of the squad is really good, tries to get it in more thrills and frills wherein that high velocity should be used to tackle the important features first and then return to the thrills if time permits. Keep a tab on the prioritization thought process of your product owner at all times.
When you have multiple agile squads, each runs with a different velocity of course as each squad has a different way of story pointing and different levels of productivity too. Thus, when preparing project plans you need to ensure that you take a reasonable and probable average velocity into account. If you are starting a new project with new squads who haven’t been together before then all you can do is a reasonable guess I believe. But ensure that you do a most likely, worst case, best case analysis and provide forecasts accordingly.
Agile Pitfalls: The next bit, though a bit sensitive to talk about is worth the mention. Agile teams can grow to be very sentimental and moody. They need to be nurtured with care and love. At times all that care and love can create a monster. They become a collective unit and conspire to put blockers where there are workarounds, give out considerably higher story points than is appropriate, can decide to delay a few activities so that the stretch goal needn’t be brought in to the current iteration even though there is spare time available, give out higher story points and ensure that there is enough buffer to compensate for less than 100% effort. All this can happen even when teams aren’t facing new challenges regularly. So one way of tackling this is to do a close monitoring of the work that each member is doing, even at the risk of going against one of the concepts of Agile which is to have full belief in the team and its capabilities. You could do this being less conspicuous by catching up with team members offline and not in a formal team meeting environment or at her or his desk. You might even want to swap team members without affecting the structure too much at the same time. This reduces chances of such behavioural patterns developing.
Other things to consider.
We once had a security hackathon which was basically a 2 hour period wherein all the developers and testers attached the application and tried to crack into secure data. It did bring out quite a few security vulnerabilities, which are part of the often forgotten and often non-written non-functional requirements. This is a highly recommended practice.
Getting the squads together to engage in some agile games is another way of making it fun at work while indulging in some team building activities. You’ll get a truckload of games online which you could try out for your squads. Most of my team really liked whenever we had them.
Backlog is very volatile bucket so how do you actually depict anything meaningful to the stakeholders on how and when would something be done. A visual representation of what feature was developed when we had what we called a Sprint pipeline plot. Which was an excel sheet which showed blocks of work that would be covered by each squad and around when.
Also consider how useful this would be in a situation where you have 5+ squads (like we had 7) and you have a year-long project to run. Scope might keep getting added to a particular module and might get culled in some others, but with this sort of visibility you can easily look at options on how you could rejig and make everything fit more like a jigsaw puzzle. It would be much easier discussion with senior stakeholders too, in order to explain how agile you are and how confident you still are in meeting the project goals.
The total scope that we had to cover in terms of story points. This was based on the initial very high level planning poker where we got the total number of story points that needed to be covered. Here again we did a best and worst case. It’s imperative that we do a reality check a few times through the project to revalidate the total number of story points that forms the scope. Please ensure that when you do this exercise you do take into account time that needs to be spent on stuff other than development, testing and deployment, I can think of research work, tech spikes, maybe a cloud deployment etc. which may not be part of a module you work in, may not be part of the discussions and work that you do with the product owner but are necessary for the software to be released. I could write a separate blog on how to prepare EVM graphs for an agile project. That’s an elaborate topic in itself. May be I will do it one of these days and provide some examples on how to go about it.
By: Nikhil Prabhakar
Nikhil is a project manager who has recently joined IMA who comes with a management background in Applications development, Service Delivery, Transformations and Transitions and has worked with a diverse set of customers across the globe.
He has just been promoted from ‘forever wanting to write about his experiences’ to ‘having his first blog published’. Nikhil is an avid soccer fan and is’nt shy in proclaiming his support for Arsenal FC