Today, agile is such a buzzword that 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 are no such thing as a "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 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 a fully functional software at once
- Neither you nor your client have a complex bureaucracy that delays decision
- 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, eg. they use a web app)
As you can see, agile is more suited for small-to-medium size organizations than corporations. The reason is simple: the less 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 markets do the work. Most of the ideas will fail 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 less 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 meaningless work
- 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 coding skills based on QA feedback
- You don't have to worry about premature optimization
- You can experiment and test ideas because it costs are low
Disadvantages of agile project management
Agile has strong advantages but it's important to know the 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 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 because 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)
- Product lacks overall design, both from UX and architecture point of view, which leads to problems the more you work on the product.
- Teams can get sidetracked into delivering new functionality 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 software ends up.
- 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
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