Today, Agile is such a buzzword that even teams outside software development try to incorporate it into their workflow. But Agile is not for everyone.
For example, a marketing agency can never implement Agile, because clients don't want to pay for a half-finished marketing campaign and iterate. There are revisions, but their number is clearly specified in the contract. Plus, there's no such thing as "working increments" - you either have the deliverables, or you don't.
Agile isn't the right approach for every software project, either. If you don't have access to customers, can't iterate, or if you have a complex organizational structure, it's very difficult to adhere to Agile principles.
Agile works best when:
- You can't estimate the time you'll need and don't know the full scope of requirements
- You don't know whether there's a need on the market for your software
- You can't map out the business needs, so the design needs to emerge through trial and error
- You have unlimited access to your customer who's ready for extensive involvement
- You can afford to iterate and don't need to deliver fully functional software at once
- Neither you nor your client has a complex bureaucracy that delays decision-making
- Clients don't have a fixed budget/schedule
- You need to capture the market before there's any competition
- Your customers don't have trouble updating their software (or don't even notice it, e.g., they use a web app)
As you can see, Agile is more suited for small-to-medium size organizations than it is for corporations. The reason is simple: the fewer people there are, the easier it is to make a decision and respond to change. Also, Agile is more suited for product companies over consultancies.
Agile is also great for startups, where "fail fast" is the dominant mantra. Venture capitalists encourage startups to try crazy ideas and let the market do the work. Most of the ideas will fail, and those few that succeed will change the world.
Advantages of Agile Project Management
- You can deploy software quicker, so your customer can get value sooner rather than later
- You waste fewer resources because you always work on up-to-date tasks
- You can better adapt to change and respond faster
- Faster turnaround times
- You can detect and fix issues and defects faster
- You spend less time on bureaucracy and busywork
- There's a big community of Agile practitioners with whom you can share knowledge
- You can get immediate feedback (which also improves team morale)
- Developers can improve their skills based on QA feedback
- You don't have to worry about premature optimization
- You can experiment and test ideas because its costs are low
Disadvantages of Agile Project Management
Agile has substantial advantages, and it's important to know the disadvantages, limitations, and risks it brings.
- Documentation tends to get sidetracked, which makes it harder for new members to get up to speed
- It's more difficult to measure progress than it is in Waterfall because progress happens across several cycles
- Agile demands more time and energy from everyone because developers and customers must constantly interact with each other
- When developers run out of work, they can't work on a different project since they'll be needed soon
- Projects can become ever-lasting because there's no clear end
- Scope creep and experience rot
- Clients who work on a specified budget or schedule can't know how much the project will actually cost, which makes for a very complicated sales cycle ("Until iteration ends," is not something clients like to hear)
- The product lacks overall design, both from a UX and architecture point of view, which leads to problems the more you work on the product
- Teams can get sidetracked into delivering new functionalities at the expense of technical debt, which increases the amount of unplanned work
- Features that are too big to fit into one or even several cycles are avoided because they don't fit in nicely into the philosophy
- You need a long-term vision for the product and actively work on communicating it
- Products lack cohesion, and the user journey is fragmented because the design is fragmented. The more time passes, the more disjointed the software ends up becoming
- Short cycles don't leave enough time for the design thinking process, so designers have to redevelop the experience over and over due to negative feedback
- Check here for some more Scrum sprint planning anti-patterns and product backlog and refinement anti-patterns
Fundamentals of Agile Project Management
Workers in tech don’t usually feel like they have the ability to focus on craft — especially when it comes to visual design. When you're constantly iterating, constantly pushing new versions out, you can’t invest time in seemingly unnecessary details that will be lost in tomorrow’s update. - Jessica Hische