In this age of Agile Product Development, project managers are forced to face with an unenviable task, having to run multiple releases in parallel and to prioritize features coming as requirements from a multitude of sources- their own project plan, bug list from previous releases, customer feedback, degree of complexity and risk of implementation, senior management prerogatives, competitor initiatives etc.
A typical Sustenance life cycle plotted against Customer Priority vs Degree of Complexity looks like this
It is evident that the real stakeholder value adding activities like new feature development and release enhancements are pushed due to project teams getting into a vicious circle of hot fixing bugs and creating patches.
The challenges encountered by project teams in a typical sustenance project are:-
- Long lead time for planning, prioritizing and implementing new features
- Indecisiveness among managers in categorizing tasks correctly – tendency to push everything under hot fix or patch
- End consumer priorities are often ignored
- Difficult to bring in a uniform process for various tasks which vary so much in terms of complexity and priority
- Ops related challenges managing multiple branches of code
- Not able to incorporate enough testing cycles which in turn impacts quality
- Using tools, Accelerators and Frameworks reduce development time and facilitate early release to market
- Effectively implementing agile processes and practices and sharing the best practices and lessons learnt across projects
- Having a technology team that does periodic reviews and comes up with strategies to improve the code quality
- Having smaller focussed teams for better productivity
- Building domain capabilities to enhance testing efficiency
- Flexible & scalable engagement models
- CI and Sonar integration to manage multiple releases and branches effectively
A few “Good to follow” sustenance practices
Code Refactoring helps to remove redundancies in code and maintain a structure that helps you extend and build new features easily and expediently.
Refactoring is an investment and should be done as part of every release so that the code structure is well maintained and features can be built easily.
In addition to that there should always be a code refactoring phase after 2 or 3 releases to retrospect the current state of code and ensure that the quality of code is not compromised by recent development activities
Some of the other benefits of refactoring include:-
- A refactored code base makes it easier for new team members start coding easily without having to spend hours understanding the flow
- In the long run cost & effort savings up to 28% can be achieved
- The savings in effort, in turn accelerates entry to market and maintains competitive advantage
- Teams are not firefighting fixing bugs and hot fixes, but can concentrate on newer releases
Smaller Teams and Knowledge Management
Having smaller agile teams, each working on a different release helps achieve release targets efficiently as opposed to one team switching between releases.
Smaller targets keep team members focussed and make releases easy to plan, execute and mitigate risks. Project owners are able to chalk out deadlines more accurately which in turn helps marketing and sales teams to effectively pitch the features into the market.
The “Best Practices” and “Lessons Learnt” from the various teams need to be shared via retrospective meetings conducted at the end of a release/iteration and by documenting them in a Knowledge Management Repository
Cross functional training of team members can be facilitated easily by having a knowledge repository.
The Knowledge Management Repository also accelerates new resource transition and also can be used as a source for product documentation at the end of the release which otherwise takes, on an average, additional 5% of the development effort.
Some benefits of following the above mentioned best practices:
- Faster entry to market with new features ensures greater stakeholder and end customer satisfaction
- Smaller teams and focussed groups ensure better quality output
- Readily available frameworks and tools reduce complexity of tasks- Tasks in high complexity zone move to medium or low complexity `
- Greater attention can be given to tasks like new feature development and future release planning that add value to stakeholders
The sustenance cycle shown in figure 1 shrinks as shown below:-
Latest posts by author (see all)
- EFFECTIVELY USING GIT FOR DISTRIBUTED WORK ENVIRONMENT - August 7, 2015
- Webcast – How to Scale Continuous Delivery in the Cloud? - May 21, 2015
- Why testing setup will make or break your continuous deployment? - April 29, 2015