If you are running a software project, one of the questions you are likely to come across is which development methodology to use. Some like to stick to a traditional waterfall approach whereas others are keen advocates of an agile methodology. In reality, many projects end up somewhere in between; with a methodology that is neither extremely agile nor extremely rigid.
Compared to the waterfall, these “middle-of-the-road” methodologies can seem flexible as they allow for changes to take place from iteration to iteration. Compared to agile, however, they are likely to appear rigid and far less collaborative.
When deciding on the right development methodology for your project, think about how much flexibility it should contain and which aspects you can employ from different types of approaches to best suit your needs. Examine the size of your project, the make-up of your team, the organizational culture and what you want to achieve. Then piece together the methodology for your specific needs. Even if your organization advocates a certain approach, there will often be opportunities for you to improve it and adapt it to your specific project.
To help you decide which approach is best suited to your situation, take into consideration the below aspects. The questions will help you decide how flexible your methodology needs to be on a scale from very flexible (agile) on the one hand, to the very rigid (waterfall) on the other.
1. How clear are the project’s objectives and requirements?
On some projects, the clients know exactly what they are looking to achieve and what the success criteria of the project are. On other projects, it can be difficult to pinpoint what the project needs to achieve or what the requirements are. When the requirements are difficult to define, or likely to change significantly, you need an approach which is relatively experimental and flexible; an approach which allows you to speedily demonstrate and prototype ideas to the customer and incorporate changing requirements.
2. How clear and well-defined is the solution?
You may find yourself in a situation where the desired outcome of the project is clear, but where the solution for achieving that outcome is not. When the team is faced with difficult and risky choices around technology, design, and implementation, your software development methodology needs to be flexible enough to cater for this and iterate through various stages of prototyping, development, and roll-out.
3. How easy or difficult is it to access the end users?
Are the users, domain experts, and product owners likely to be available to provide feedback and help test deliverables at short notice, or do you anticipate that they could be difficult to get hold of? Would it be easier to engage them for a pre-planned test cycle where lots of deliverables can be tested at once? The more constraints there are around your user’s availability, the more rigid your methodology should be.
4. What is the size of the project?
Is your project on the larger side or is it reasonably small and lean? The larger the project, the more difficult it might be to incorporate lots of changes at short notice and refocus the team in a different direction. Small tight-knitted teams which work closely with the customer and end users are more flexible and better geared to quickly incorporate changes.
5. How dispersed is the project team?
Do you have several project teams situated in different geographic locations or is the team more homogenous and located together? When the team is geographically spread out it can be difficult to quickly coordinate new work and adapt to changing priorities. Teams which sit together, and even share the same room, are much better placed to working in an agile environment with changing priorities.
6. What is the team’s and stakeholder’s experience with these methodologies?
Are your team and stakeholders already accustomed to working with a specific methodology? If so, bear in mind that it takes time to change a team’s working practices. If your project is time critical, be wary of making too many drastic adjustments to the existing methodology as it may jeopardize the timescales and success of your project.
7. What are the project’s success criteria?
Which is more important for your sponsor and client? Having a relatively firm estimate and schedule which must be adhered to, or ensuring that the end deliverables add value and match the user’s needs and expectations? Is your client ready to embrace a more flexible and quality-conscious approach at the expense of fixed costs and schedules?
8. How much value would incremental feature-driven development add?
Does the project lend itself to being delivered in an incremental way and would this add real value to the stakeholders? Must the products and features be delivered at once in order to provide tangible benefits or would it be a real advantage to deliver them gradually?
Republished with permission from Susanne Madsen.
Susanne Madsen is an internationally recognized project leadership coach, trainer, and consultant. She is the author of The Project Management Coaching Workbook and The Power of Project Leadership. Susanne’s belief is that project management success is as much about leading people as it is about managing tasks, events, and processes. She is a firm believer and practitioner of the GTD (Get Things Done) approach and enjoys helping people formulate and achieve their goals. For more about Susanne, please visit http://www.susannemadsen.com/