Why Agile? What are the Pros and Cons?

Why Agile? What are the Pros and Cons?

Agile is an iterative approach of product development based on lean manufacturing methodology that allows you to quickly make a product in small parts – basically divide a large project with many tasks on smaller pieces, called task decomposition.
What is great that in software development where we can really create things in parts, in hardware world Lean methodology is used to test product with customers even at very early stages. In both Agile and Lean those first trials called MVP or minimum viable product.
In my practice, I even created a product mock up with some simulations and showed it to the customers to collect their questions, ideas, and feedback before we deep dive into the complex product development and spend time / money for having fun creating it :).

Startups use Agile methodology because it relies on a high level of customer engagement and thus a product is much more likely to match what the market wants by the time it is released. The products which are being built without involving customers at early stages and so on, usually having issues with Product Market fit on the later stages when changes are costly and painful.

Let’s look into what is Agile?

It is the practice of iterative product development in short cycles called sprints. Agile is based on the core principles:

· Uses frequent releases to speed up learning about what works and what doesn't by building software / hardware and getting feedback from customers as frequent as possible.

· Flexible change of plans due to new incoming information. Usually, teams work with 1-4 weeks springs.

· Uses an empirical approach to invent and create the right product, not to follow a plan.

· Agile is more concerned with adaptability and responsiveness to change than with finding the "one best way" to do something.

· Seeks quick feedback so you can learn, adjust, make change, and keep moving forward.

· Agile places a lot of emphasis on teamwork and collaboration, which is must for creating great products together. Different skill sets within the team and transparent communications, and continuous work together, discussing and making choosing between time, cost, and functionality.

Traditionally, large companies with complex products (like Microsoft and their operating system or Volkswagen and their cars) couldn't launch their software by part because the whole product wouldn't work properly. Those companies had to deliver products in a predictable manner, carefully planning all options, testing all together and then launch.

As there are so many hardware products startups can accommodate and use in their projects efficiently and the software development costs fell, and small teams became able to complete development faster and began to outpace incumbents with much smaller teams that it used to be in the industry. Meanwhile, companies have spent years developing and launching products only to realise that customers have already changed their minds about what they need and what they want.

Teams began to focus on adapting to the market, introducing new versions of the product over time in small batches and figuring out what the market wants before investing huge periods of time/resources into building products that no one wants.

Pros of Agile

· Agile can quickly create a working prototype to show customer feedback immediately. In my experience we even built a mockup of the physical product and simulate its software functions to show possible customer experience and functionality.

· Customers can contribute to product development, suggesting features and correcting product vision during the development.

· Because of short sprints, teams can deliver new features quickly and frequently, with a high degree of predictability.

· Unlike Waterfall methods, which is more difficult to change once the specifications are made, Agile allows the team to optimise or refocus almost at any moment of product development by correcting or changing the backlog.

· The development is cascaded into manageable milestones, teams can spend time developing and testing, greatly reducing the chance of undetected bugs in final product. While in the waterfall projects the price of mistake is huge and everything may need to be redone.

· However, in my recent experience where I lead teams of hardware and software engineers simultaneously working on both parts of the complex products, we use Waterfall coupled with Agile in the way that the V-cycle is followed, but all the work in between of the Gates is done using sprints and Kanban boards.

Cons of Agile

· Time for task completion is crucial, if the estimates are inaccurate, the sprints are broken and team must adjust sprints or move features to following sprints, which will affect the overall timeline. A product manager role to insure the tasks in sprint are simple enough to make right estimations;

· A lot of responsibility falls on the scrum master and product manager, who constantly manage the product backlog to make sure that sprints are completed on time.

· Larger teams may find it more difficult to use Agile mostly due to more complex coordination and communication between team members, but it is possible, I have done this within the teams up to 25 people.