Do not fall for waterfall, be fast, be agile!

Fijar Lazuardy
Inside PPL B7
Published in
5 min readMar 9, 2020

Do you ever have a great software product that you want to develop so bad? But you actually not sure if you have a certain result that you want to achieve? And, how you and your team gonna develop it? Just code it straight away? Bet it would end up horrible. In order to develop a great software product, you will need what called a software development methodology.

Okay, what is that?

Software development methodology refers to the processes of planning, creating, testing and then deploying a project. There is bunch of methodologies that ever created, but two of the most popular methodologies are Waterfall and Agile

What differentiate them two?

Waterfall

Waterfall methodology is a more “traditional” way to develop software. Where in waterfall, you gather all the requirements about your software before actually develop it. The sequence of this methodology is something like:

  • Gather and document requirements
  • Design
  • Code and unit test
  • Perform system testing
  • Perform user acceptance testing (UAT)
  • Fix any issues
  • Deliver the finished product

In waterfall summary, you don’t get to see or test the progress in the software development until the entire product is built where, if you have an idea for a software but you don’t know the ‘end’ of it, waterfall methodology might not be the solution for you, you will need a more “modern” approach, Agile development.

Agile

Compared to waterfall, agile is a more flexible software development methodology. It means, while waterfall needs to specify all the requirements needed before actually develop the software and deliver it, agile works on iterations, which allows rapid testing and implementation of results. Ultimately, it promotes faster project completion and makes the developmental process highly efficient.

How agile works?

Each software product in agile methodology is broken down into several different small processes or iterations. This gives you the liberty to work on different aspects of the software development at the same time.

Each iteration will generally have fixed time duration and depending on the user reviews and the test results, you can improve the product after every iteration.

The entire software product will be split up based on the priority found during the requirement analysis. Rather than launching the product as a whole, its split into a number of releases and in every particular timeline each update is released depending on the user reviews.

Benefits of following an agile development methodology:

  • Rapid software development and delivery.
  • Transparent development process.
  • Continuous customer/user involvement & feedback.
  • Reduced software product development timeline.
  • Easily anticipate and include changes in any developmental stage.

Agile development also has many frameworks in it. Each frameworks are different in some ways but they all follow the same agile philosophy, features, and procedures. Each framework has its own formula of practices, course of action, terminologies, and more. This article will only cover the two most popular agile frameworks, Scrum and Kanban

Scrum

This framework allows the developers to deal with complex problems in the development process, while continuing to productively deliver high-quality outcomes. It will always help in easy understanding and functioning of complex product development processes. It is a simple framework, is Easy-to-understand, but hard to master.

Type of roles in scrum, src: Innodev

In scrum framework, the user/product owner gets the opportunity to work closely with the product development team and take part in the many functional or process decision makings, like prioritizing the releases, setting timeframes for iterations (called sprint), and more. Time for each sprint are different from each company, but it usually take around 2 weeks.

Scrum is based on the empirical process control theory; and it makes use of iterations and continuous feedback evaluations to rapidly build an efficient software product. It follows an incremental product development approach that helps in optimizing the software product and easily accepts changes in the development process.

The 5 values of Scrum framework:

  • Commitment to the software product.
  • Openness to accept changes.
  • Courage to try new development processes.
  • Focus on a unified outcome.
  • Respect the outcome of each sprint.
Step of Scrum development

Kanban

Even though scrum looks very promising and highly efficient, some company didn’t use it because they think scrum is actually just a “mini waterfall” since you can only do works that are defined in scrum planning in each sprint. And kanban came to solve that problem.

Kanban framework allows the development team to visualize their entire workflow rather than just viewing the outcome of every process. The development process is generally broken down into multiple problems and is managed using a task board. Here the simultaneous workflow is limited, but continuous process improvement is done. It is Lightweight, trouble-free process, and Highly cost-effective.

Kanban is generally called as a pull system, where the “pull” means a task is pulled into the development process only when there’s a space for it in the workflow. In Kanban framework a work-in-progress (WIP) limit is initially set.

A number of development processes will be carried out within the WIP limit and new task will be pulled only when the total processes are less than the WIP limit. It allows transparency in the process followed by each product development team and optimizes the entire workflow.

The 5 values of Kanban Framework –

  • Visualize current development process.
  • Limited Work-in-progress
  • Measured and limited processes.
  • Explicit developmental workflow.
  • Continuous improvement
Step of kanban framework, src: Innodev

How do you decide what methodology is best for you?

I once asked a product manager from a big company the same question, She simply said, “If you know exactly the goal of software you want to build, and you don’t have a tend to bring it further than the goal you have set, waterfall is good for you. But, if you don’t have exact goals of your product, and most likely will expand it further, agile is the right methodology for you.”

While waterfall gives you a certainty about your software, agile gives you flexibility about your software development process. Both are great, but they also have different purpose. So, choose wisely!

Thanks for reading this article! It’s written in order to complete the course i’m taking in my University, any feedback will be appreciated! Cheers!

--

--