Today, most IT projects are run as Agile projects. But how should we understand the term ‘Agile’ and how does this way of managing projects differ from the traditional cascade or waterfall approach to project management? If waterfall means well planned, structured and documented, does that mean that Agile means chaos? Mateusz Młynarczyk, Head of the Software division at ITMAGINATION, has over 10 years’ experience in managing IT projects for international and Polish clients. He shares his experience of working with other project management methodologies and tells us about the route that ultimately led him to Agile.
My experience with project management
Project management has been a major part of my professional life for many years. I specialized in project management at university, and although I started my career as a developer, I soon found myself in a position where I was managing teams of developers, and managing projects worth tens of thousands of euros, then hundreds of thousands of euros and then millions of euros. I worked with local (i.e. Polish) market leaders and I worked with some of the world’s largest brands. Along the way, I had the chance to work with many different project management methodologies. And I also had a chance to obtain internationally recognized certification such as Prince 2 Practitioner, Project Management Professional and Professional SCRUM Master. Today, as Head of the Software Division at ITMAGINATION, I’m responsible for a team of 150 people, who work on project of all shapes and sizes, for clients all around the world. As a team, we need to be up to speed with what the market expects, and we need to be ready to empower our clients to lead in their respective markets.
Why consider Agile versus other project management methodologies?
Before I became certified in Agile, I had worked on a large number of projects for financial institutions and international organizations. Using traditional ‘Waterfall’ methodologies, the onus was always on defining all of the business and functional requirements before starting the project and then building a product that meets those needs. In short, the process looked like this:
Business analysis, during which we’d document all of the client’s business and functional requirements and then confirm them with the client
Design and build the product
Test and refine the product
Implement (i.e. start using) the product
That process seems fairly logical, even to this day. However, as I’ve learned in the last ten years, what seems logical in theory, doesn’t often translate into logical ‘in practice’.
These are the main problems I encountered:
Sometimes the full list of requirements is not known until the client sees the final product and realizes that something is missing.
Requirement are discussed and documented, but are they always understood in the same way by all parties? Different projects involve different stakeholders and different levels of attention to detail. Again, sometimes a lack of common understanding only becomes apparent when the final product is delivered.
Certain requirements only become apparent after the product is delivered. This can be a result of an incomplete analysis process or it can be a lack of understanding or articulation by stakeholders. More often than not, though, it’s simply due to the fact that significant time passes between the analysis stage and the product’s delivery. During that time, requirements have evolved.
One of the greatest challenges faced by leads of IT projects is the changing or lack of understanding of business objectives and expectations during the analysis phase. This scenario of multiple different parties having understood the objectives and expectations differently is depicted humorously in the comic strip below.
Humorous illustrations aside, though, this cascade way of working simply wasn’t working. As it becomes clear that there is a gap between what the finished product does and what the business wants it to do (even if the expectation has changed since the start of the project), the risk of dissatisfaction, budget overrun and missed deadlines increases. Apparently, it wasn’t just me that was noticing.
According to periodic research conducted by the Standish Group, in the five-year period 2011-2015, only around 30% of IT projects could be considered successful, with success being defined as having fulfilled or complied with the criteria set out at the beginning of the project (such as budget, time and scope). While percentages vary slightly across sectors, a surprisingly low success rate was common across all industries.
Could Agile help bridge the gap between clients and developers?
In theory, the remedy to such problems is the adoption of an agile project management methodology. Projects that are run according to an agile methodology are intended to be realized through a series of short cycles (‘sprints’). These sprints are used to constantly and continually ensure alignment between business expectations and stakeholders, and the progress of the project. In practice, this means structured, more-regular contact between the business stakeholders and the Development team. In turn, this should result in closer alignment between all parties and a clearer, shared view of the direction of the project and the end goal. Importantly, though, it also allows for some pivot and adjustment within the project (e.g. driven by changing business needs, market trends or budgetary or timeline factors) and it empowers the client to influence and be more accountable for the outcome of a product that is being built specifically for them.
As confirmed by the table below (produced by the Standish Group), the chances of success are significantly higher when the project is run according to an Agile methodology versus a Waterfall approach (wherein all of the requirements are analyzed and documented at the start and all subsequent design and development adheres to the original documentation, without an acknowledged flexibility to adjust course mid-project).
Agile certification was a natural next step
Having managed many IT projects, Agile was not completely new to me. In fact, I had previously obtained Professional Scrum Master certification. But I wanted to broaden my knowledge about how to divide the entire product development cycle into sprints and to learn more about the Agile approach to managing entire projects. So I embarked upon and completed the process of obtaining AgilePM Foundation certification (check out my certificate). As somebody that has dedicated a significant portion of their life to project management, it is important to me that I’m learning from an established and proven foundation of best practices and standards. My commitment to the profession and the experience I have accumulated are invaluable, but – as much as we’d like to think we’ve seen and done it all – we’ll never know everything. In this context, certification provides us with the opportunity to test our knowledge against a base of experience even broader and more extensive than our own. And it provides us with the opportunity to fill any gaps that we might have in our knowledge.
So, having managed many IT projects in my career and with Professional Scrum Master certification under my belt, I wasn’t coming at Agile as a complete newbie. I went on a three-day on-site course that concluded with an examination. I’m happy to say that I passed ‘top of the class’ in my group of around 20 other IT professionals!
The most interesting thing about Agile that I discovered is …
While on the course, I discovered a very interesting approach to Agile called the Dynamic Systems Development Method (DSDM). The DSDM approach encourages us to leave the finer details of a project to emerge as the project evolves. This approach is based on the high probability that business expectations will change from the start of the project. As such, the DSDM approach advises us against unnecessarily spending large amounts of time on something that is likely to change. Instead, DSDM advises that we focus on the closest and most-current business needs, to address those and then to move onto the next stage of the project. Of course, this doesn’t mean that the rest of the requirements can or should be ignored. Of course not, however, they should be acknowledged at a general level at this stage. In this way, we’re able to deliver functionalities and iterations of a project that meet current needs, and we avoid failed attempts to anticipate future needs. Importantly, we retain the flexibility to pivot or adjust to accommodate new or different business needs in the future. The business benefits by having faster access to a product that addresses its current needs and business stakeholders are able to influence and monitor progress much more closely.
Sounds nice, but what does DSDM mean for budgets and timelines?
The idea of focusing less on details and allowing them to emerge as a project evolves sounds all well and good, but it naturally poses questions. As a business stakeholder, how to do I budget accordingly and get the right deal if we’re shifting a (seemingly) large part of the work to later in the project? After all, isn’t the devil in the details? The DSDM addresses this topic in a very interesting way. In the DSDM view, an Agile project will have a fixed timeframe and cost, but the scope of what is delivered within that timeframe and budget might change (this is where MoSCoW comes in handy – read on). In this way (and as the diagram below illustrates) the DSDM Approach to Agile turns the Traditional Waterfall Approach to project management on its head somewhat.
The most useful thing I’ve taken from my Agile certification program is … MoSCoW
As an Agile project proceeds, the timeline for what is delivered and when is continually monitored and updated. The MoSCoW approach is a useful way for the business and project team to prioritize their needs and functionalities based on the idea of Must Have, Should Have, Could Have and Won’t Have:
Must Have. As the name suggests, these are the functionalities and objectives that must be met. Without these, the project loses its business ‘reason for being’. These cannot make up more than 60% of the scope of a project.
Should Have. These are important, but not essential. Omitting these will weaken the product, but the product will still be considered viable and valuable. ‘Should have’ functionalities should make up 20% of the project scope.
Note: The project should always plan to deliver all Must Have functionalities. For this reason, Must Haves should not account for more than 60% of the scope of the project as this would mean that there is insufficient flexibility in the scope. If there is a shortage of time and/or budget, Should Have functionalities will be considered for omission.
Could Have. These are real expectations that have a tangible use, but they are less important than Must haves and Should haves. These should make up 20% of the project scope. The project team should only be committed to delivering Must Haves and Should Haves. These account for 80% of the scope. Could Haves exist within the project buffer – if a project is progressing well, then Could Haves can be delivered. If, however, a project progresses more slowly, and more time is needed to deliver Must Haves and Should Haves, then Could Haves are naturally sacrificed.
Won’t Have. These are functionalities or expectations that are acknowledged as being potentially valuable but it has been agreed that they won’t be delivered at this project (at least not at this stage). They are still documented so as to formally acknowledge their exclusion from current scope and to have them accessible for review and consideration as part of future evolutions of the product.
Following the MoSCoW approach is something that can be done at the start of a project, but also within the context of each timebox or sprint (typically lasting 2-4 weeks), or cluster of such periods. This approach allows for certain requirements to be assigned one status when considered within the context of the current or next sprint, but a different status within the context of an entire project. For example, a particular functionality might be defined as Should Have within one sprint but be Must Have within the context of the entire project. It’s important to remember, though, that the percentage of Must Have features cannot exceed 60%, even if a functionality or requirement changes status during the project or between sprints. This 60% might seem random, but it has been identified by Agile practitioners as the number that, if exceeded, reduces the project team’s confidence that the project will be completed successfully and increases the risk of project failure. As such, if there is a threat that Must Haves will account for more than 60% of a project scope, it’s important to re-analyze the different requirements and functionalities and, if necessary, assign different statuses.
Another thing I enjoyed learning as part of AgilePM certification is the recommendation on the minimum documentation requirements for an agile project and the key roles within a project. I can recall many projects that have been bogged down by the sheer weight of documentation. Often, that documentation is not read by the people that need to read it and/or it’s out of date by the time the project starts properly. AgilePM does not encourage you to ignore the importance of documentation, but it does provide you with additional flexibility by providing recommendations on what is optional and what is obligatory.
Unlike Scrum, the AgilePM recommendation on documentation relates to the entire project from the initial stages of the project right through to its entire lifecycle, and not just to the implementation stages. It’s a dramatically easier-to-digest and easier-to-implement approach to managing IT projects compared to non-Agile methods, such as PRINCE2. This has saved us time and the lighter approach to documentation means that it’s easier to ensure that all key stakeholders are informed about the goals and plans for the project.
ITMAGINATION and Agile
Agile has become part and parcel of our daily work at ITMAGINATION, and it (or one of its variants) has become our standard methodology for the vast majority of projects that we work on. For a leading bank, we’re working on a mobile app. Working together, we are defining the scope of the project as well as the entire lifecycle of the application. On an ongoing basis, we track our progress against the roadmap for the entire project. We observe how we’re advancing against the original project plan and we meet with the project sponsor to discuss progress and, if necessary, adjust future actions and directions. In this way, the project continues to progress in line with the evolving requirements of the business. The business can enjoy and observe the benefits of the developments while, at the same time, evaluating whether any change in direction is needed. In this way, all parties are always aligned and in agreement on the direction that the project is heading, they jointly take decisions, and they all know the implications of those decisions. The result is a more satisfying way of working, faster delivery of results, and greater positive impact for the client’s business.
If, like me, you enjoy having attainable goals, working as one team with a variety of stakeholders and increasing your chances of success, there really is no alternative to Agile.
360° IT Check is a weekly publication where we bring you the latest and greatest in the world of tech. We cover topics like emerging technologies & frameworks, news about innovative startups, and other topics which affect the world of tech directly or indirectly.