Agile for Managed Services Projects (MSPs)
Scenario
Project manager from production support team approach “Agile Coach/Scrum Master” to discuss issues related to agile migration from traditional SDLC model.
Conversation
PM: Hey Ajay, you people are promoting agile quite rigorously but as per my understanding agile works only for IT related development projects. In our portfolio, we have IT support (managed services) and non-IT compliance related projects as well.
AC/SM: I think there is some confusion about agile in your mind. Before I could suggest something to you can you answer few of my questions?
PM: Yes
AC/SM: Before starting any work do pre pare list of activities to be performed and do you prioritize them?
PM: Yes, sometimes but many a times we get adhoc urgent requests and then we have to give them higher priority
AC/SM: Ok that’s fine. Do you think your team needs more collaborations, discussions, brain storming to arrive at better solutions or to come up with innovative ideas to optimize delivery output.
PM: Yes, we do many a times I found that team members are not in sync with what other person is working on and that leads to lot of confusion and loss of productivity. Also, this being a support team they rarely provide any innovative ideas they just do their work. As they do same work year after year and there is any contribution towards organizational goals and as a result their personal growth is stagnant. As a result team motivation level is very low.
AC/SM: Good, Now I understand what problem you have. I think agile way of working is highly recommended for you team. Agile is not only restricted to one particular framework, it encompasses many concepts borrowed from various agile promoters time to time. For your case I would recommend to use combination of ‘SCRUM’, ‘Kanban boards’, ‘Xtreme Programming (XP)‘, ‘DevOps’ and ‘Design Thinking’.
SCRUM would help you to enhance visibility, trust, collaboration amongst team members, Kanban boards will help for better tracking and better monitoring and control towards delivery. XP would help developers to share their ideas and solve problems collectively rather than working in silos. DevOps would help to get rid of human errors, faster delivery cycles with high quality of deliverables. Design thinking would make team think out of box and come up with innovative ideas to improvise productivity and achieve individual as well as organization value addition.
On top of this, to get success in agile implementations you should be using three senses - common sense, human sense and agile sense to deal with ground level issues and arrive at most practical approach to address the issue.
I would recommend you to go through following write up to understand agile implementation approach for managed services project.
Context
Many a times support teams who provide managed services and working in waterfall mode wonder how agile way of working would be applicable to them? Most of the times these are teams that oppose Agile initiatives. Some of the issues they face towards adopting agile are
- Backlog definition is not possible upfront as they get critical/urgent tickets/CRs on adhoc basis and they needs to be fixed immediately keeping all other work aside
- Team will burn out and will be working under stress as they have to report their progress on daily basis
- Always there will be pressure to improvise sprint by sprint and will to over burden to team members
- Team (e.g. Dev) would be hold responsible even if delay is from other team (e.g. Ops)
Approach
But on second thought these issues are just myths and effective usage of agile using ‘Scrum’, ‘Kanban boards’, ‘Xtreme Programming (XP)‘, ‘DevOps’ and ‘Design Thinking’ could address them with ease. Let see how:
Scrum
Scrum improves workflow, collaboration amongst team members through brainstorming, sharing and learning. As delivery, ownership lies with whole team and not individual member. Team culture will be healthy and individual team members would not be overburdened or stressed. The activities team needs to do are
- Identify product owner, scrum master
- Form cross-functional development team with minimal dependency of external teams. If dependency of external team cannot be avoided then ensure partial involvement of external team members (e.g. in daily standups or weekly status meets, etc.). This will ensure zero surprises and seamless sync up.
- Using real-time communication tools to increase project visibility within the team and customer engagement
- Define suitable sprint length (e.g. 1 month)
- Start having all scrum events. Ensure they are strictly time boxed so that team’s time would be used effectively
- Sprint planning [e.g. 4 hrs.] for work distribution, planning etc.
- Start daily standups [e.g. 15 mins]– to report status, plan and discuss issue
- Sprint review [e.g. 4hrs] - to see progress and meet stakeholders expectations
- Sprint retrospective [e.g. 2hrs] – to understand what went well and where is scope for improvement
Kanban Boards
This will enhance visibility, reduce waste and will identify impediments and roadblocks upfront. For geographically distributed teams we can use digital Kanban boards using tools like Jile, Jira, TCS MC DevPlus, etc.
Xtreme Programming
Through usage of some of the best practices in XP managed services teams can gain significant advantage as described below
- Use user story format – to capture requirements to understand context better and who needs what and when
- Use Pair programming – Mundane production fixes could be handled by single developer or by machine itself. However, when some complex, critical issue or requirement comes it is always better if pair programming is used. This will ensure division of responsibility and reduce stress. Owner of the problem can work on the solution and observer could be the person from operations team or from different domain or system that is going to get impacted due to this change.
- Make use of test driven development – to ensure automated regression testing to assist testing team achieve perfection is shortest period of time
- Refactoring – Keep clarifying and simplifying your deliverable, design to achieve better and better excellence in terms of functionality and NFRs.
- Make use of estimation techniques prescribed by agile like Planning Poker, Affinity Grouping, Estimation Units (T-Shirt sizing), Dot Voting, The Bucket System, Large/Uncertain/Small, Affinity Mapping and Ordering method. to get consensus of all team members
- Continuous Integration – Instead of waiting till end keep integrating your deliverable with main trunk as frequently as possible and ensure seamless integration at the end of project.
DevOps
Many a times IT teams are responsible for development and operations teams are responsible for production deployment. This leading to IT team dependency on operations team leading to delayed production deployment. DevOps makes IT team’s independent and leads to faster time to market. It can be implemented in multiple ways
- Have DevOps engineer as part of team to help quick releases
- Automate DevOps process – so that scrum team directly release in production
- Different benefits of DevOps are
i. Automated build and release management
ii. Continuous integration
iii. Continuous delivery
iv. Improved flow, value release, maintain and monitor value in production
v. CI/CD smart monitoring
vi. Bots assisted trouble shooting
vii. Self-healing, Logs and data analytics to keep production up and running
Design Thinking
Many a time in support teams, resist to ‘think out of the box’ or to ‘imagine how system can be improved’. In spite of having, capability do so. To address this design thinking is the answer. It considers what customer’s desire is to what extent it is feasible and whether it is financially viable. This way, design thinking ensures right things are done by finding their value before doing them. Similar to agile, design thinking process is iterative in nature. It has five steps and they are executed iteratively until end goal is achieved. These steps are Empathize, Define, Ideate, Prototype and Test. Support teams could adopt this methodology to be more innovative and productive.
Agile workforce
If each team member in team is educated on agile principles then agile implementation becomes lot more easy. Best example for this is public health and sanitation situation the Developed vs Developing countries. As the people in developed countries are educated and understand importance of hygiene and cleanliness public places and health care centers are lot more neat and clean compared to developing countries where people could not understand importance of the same due to lack of education. Similarly, educated agile team follow all agile principles in true sense leading to higher productivity gains and less pains.
Agile Workspace
Agile workspaces play a major role towards successful agile implementation. If workspaces are designed in such a way that people can collaborate more, express their ideas to other team members with minimal efforts. People of visibility in to the status of different tasks going on in project. Then, overall motivation and energy level of teams goes high. This leads to major contribution towards higher productivity and positive attitude towards innovation.
Conclusion
Based on above discussion it is practically feasible and economically viable for managed services teams to follow agile practices in true sense. It is responsibility of every team member to restrict agile anti-patterns and adhere to agile philosophy meticulously.
Sample Production Backlog
Please find below template for sample production backlog for managed services project.
Sample Kanban board
Please find below sample Kanban board for managed services project.