Co-authored by Michael Edwards.
The first time I introduced Agile development methodology to an enterprise CIO, it seemed like a great success story. The company was behind schedule in rolling out a much-needed application upgrade. And, because the company also was over budget, the team didn’t have many resources to throw into the fray. Introducing Agile to the client – and to a provider that could deliver it – turned the project around. The provider team worked onsite in tight sprints to meet the original deadline and delivered a working program within four weeks.
“I felt like a kid in a candy store,” said the CIO as he thanked us for the support. “We’ll use Agile for EVERYTHING from here on out!” And so they did …
A few months later, I checked in on how it was going. It turns out, things were less than perfect. The CIO was exasperated. “Agile worked great for some of the development, not so great for other work, and it doesn’t seem to fit at all for the rest of the development activity. What gives?”
Here’s what happened: he had gone from the candy store to the hardware store. He had fallen in love with Agile and forgotten that it’s just one of many tools in the IT organization’s toolbox. Instead of using the right tool for the job, he had the proverbial hammer – and every problem looked like a nail. He’s not the only one who has fallen for the idea that Agile methodology works for every development project. Instead of considering Agile as the only way to develop and maintain applications, he needed to consider it as one of many ways.
An IT organization’s toolbox should include a range of tools, including the following:
Waterfall: The traditional method for applications support, waterfall is a hierarchical approach that follows a structured linear path: 1) requirements gathering, 2) detailed planning, 3) scheduling, 4) design, 4) coding, 5) rounds of testing and 6) deployment. Waterfall development tends to be most effective with applications that need detailed documentation or that are well-established with defined upgrades. It fits well with legacy systems, and may even be required for firms with strong regulatory and compliance oversight. It works best in cases that do not require a tight timeline.
Scrumfall: Agile sounds promising, but your organization may not be ready to take the leap. Scrumfall employs Agile techniques within the traditional structure of waterfall development. The project begins by gathering requirements and defining the application’s final state – like waterfall – but is worked in sprint-like manner, with small iterations from the internal team. Typically, the business units are minimally involved in the inner workings and still only see the final output. Scrumfall retains the rigorous documentation and testing of waterfall but allows development teams to be more independent and flexible. It is used most effectively by clients looking to move beyond waterfall but still test the stream.
Agile (Scrum): Originally described in the Agile Manifesto, Agile is a group of application development methodologies and practices combined to quickly develop application prototypes and then refine them in a series of iterative sessions called sprints. Development teams called scrums work directly with the business units on a daily basis, collaboratively sharing ideas. Agile relies on self-directed teams that don’t require strict oversight or rigid hierarchies, which are considered a hindrance to the output. Agile is best employed in cases with a tight timeframe, when there is no time for extensive project architecture, and when the requirements are broadly framed. It is not the best fit for many legacy applications.
Distributed Agile: What if Agile still isn’t fast enough or you can’t set up a scrum on site? Distributed Agile is a model that uses offsite development teams that are connected by live video conference to the client business units. This way, teams can employ a follow-the-sun approach that extends the productive time and ultimately shortens the production schedule. Because teams are offsite, specialized programmers can switch in and out as needed. Distributed Agile requires deliberate collaboration, interaction and coordination, but the daily oversight remains casual. It works best with tight timeframes and/or projects with specialized requirements.
Agile Extreme Programming (XP): This is the next step for organizations already using the Agile method. It builds on the disciplines of Agile but makes sprints shorter, faster and more collaborative. Timing of sprints is scheduled solely based on need, allowing different sprints to have different timeframes. Changes to sprints happen as needed at the direction and agreement of the scrum members themselves, based on their daily and hourly inputs. XP is not the place to start your application development journey, but it is a good target to give your team.
Kanban Development: Do you have legacy systems that need upgrades and minor development but not a complete overhaul? Kanban development modernizes and improves existing legacy applications with minimal disruption to existing frameworks and hierarchies. Originating from “just in time” manufacturing processes, this methodology works well for maintenance upgrades, break fixes and small and mid-sized enhancements. Kanban works well when the goal is to improve existing applications and is a poor choice for new development.
The decision about how to develop and maintain your applications is the same whether it is done in-house or with a provider. Begin with the end in mind. Consider the ultimate requirements of the application itself – timeline, cost, platform, portability, documentation, regulatory and compliance – and choose a framework that best meets these needs.
ISG helps enterprises assess and create a plan for meeting development needs. Contact us to discuss further.
About the authors
Mark is an ISG Principal Consultant with more than 16 years in outsourcing and shared services consulting and service delivery. This includes background in ITO, ADM, HRO, procurement, and F&A. He has substantial client relationship with clients in the Manufacturing, Energy, Pharmaceutical and Financial Services Industries. He has strong relationships across IT and BPO providers, Analysis and industry associations.
Michael guides his clients as they look towards outsourcing strategies to stay competitive in an increasingly competitive and global economy. His skills and expertise in IT outsourcing, business process outsourcing and HR outsourcing have been essential in helping companies in multiple industries make strategic sourcing decisions, and once those decisions have been made, to effectively manage those outsourcing relationships so that his clients are able to gain the most value from each one. His experience in Service Level Performance Management and SLAs, along with his market insights and past experience, keeps the outsourcing strategy focused on meeting specific goals and KPIs