Il'ya Dudkin 03/10/2018 #Tips 11 min readHaving a structured approach to software development is critical to ensuring that your product is done right the first time, on time and on budget. However, there are so many methodologies out there for you to choose from. In this article, we will break down Scrum, Kanban, and Waterfall so you can make an informed decision on how you would like to structure your next project. ScrumScrum is a variation of Agile and one of the most popular process frameworks for Agile implementation. It is a software development model used to manage complex software and product development with iterations which are of fixed length, called “sprints”, which usually last from 1-2 weeks. This allows the team to ship software on a regular cadence and, at the end of each sprint, team members and stakeholders meet to discuss the next steps. The Scrum methodology would be a good fit for development projects that are constantly changing or have extremely developing requirements. The Scrum software development model starts with preliminary planning, followed by some conferencing and completes with a concluding review. Such growth methodology is used for software development that happens to include a series of iterations to produce the required software. Scrum has a set of responsibilities, roles, and meetings that usually do not change. For example, Scrum calls for four ceremonies that provide structure to each sprint: planning the sprint, daily stand-ups, sprint demos, and sprint retrospectives. During each sprint, the team will use visual aids such as task boards or burndown charts to show progress and receive incremental feedback.The benefits of Scrum are:The product owner, as a participant of the Scrum process, can influence the scope of each sprint, resulting in an innovative product that is ahead of the competition. Easy to accommodate changes: Thanks to sprints and constant feedback, it is easy to deal with and accommodate changes such as discovering a new user story during one sprint. If this occurs, team members can easily add that feature to the next sprint during the backlog refinement meeting.Increased cost savings: Constant communication ensures the team is aware of all issues and changes as soon as they arise, which helps decrease expenses and increase quality. Since coding and feature testing occurs in small chunks, there is continuous feedback and mistakes can be corrected early on, before they get too expensive to fix.Some disadvantages are: A team requires experience and commitment: The team needs to be familiar with Scrum principles to succeed since there are defined roles and responsibilities. All team members must commit to the daily Scrum meetings and remain on the team for the duration of the project.Scope creep becomes a factor: Some Scrum projects can experience scope creep due to a lack of specific end date. With no completion date, stakeholders may be tempted to keep requesting additional functionalities. KanbanKanban was first imagined by the Toyota Production System and Lean Manufacturing. In the 1940s, Toyota was able to improve its engineering process by stealing a page from supermarkets’ playbook in terms of how they stock shelves. Engineer Taiichi Ohno noticed that supermarkets stock just enough products to meet demand, which optimizes the flow between the supermarket and the customer. Inventory would only be restocked when there was empty space on the shelf and since inventory matched consumption, the supermarket improved efficiency in inventory management software systems.The literal translation of the word “Kanban” is “visual sign” or “card.” It is a visual framework used to implement Agile that shows what to produce, when to produce it, and how much to produce. It encourages small, step by step changes to the current system and while not requiring certain setups or procedures. This means that you can overlay Kanban over your existing workflows. However, in the world of IT, Kanban is a technique for managing a software development process in a highly efficient way. Kanban underpins Toyota’s ‘just-in-time’ (JIT) product system. The underlying mechanism for managing the production line can still be applied, even though producing software is a creative activity and therefore different from mass-producing cars.The advantages of Kanban include:Less waste: Kanban revolves around reducing waste, which ensures that teams do not waste time doing work that is not needed or doing the wrong kind of work. More flexibility: Kanban is a fluid, evolving model. There are no set phase durations and priorities are re-evaluated as new information comes in. Some disadvantages are:Teams can overcomplicate the Kanban board: The Kanban board should remain clear and easy to read. However, some team members may learn “new tricks” they can apply to their board and by adding these kinds of bells and whistles to the Kanban board just buries the important information.An outdated board can lead to issues: The team must be committed to keeping the Kanban board up to date, otherwise, they’ll be working off inaccurate information. If the work is completed based off an out-of-date board, it can derail the whole project.WaterfallThe Waterfall model originated in the manufacturing and construction industries, both highly structured environments where changes can be too expensive or sometimes impossible.. Waterfall methodology follows a linear, sequential process which makes it the most popular version of the systems development life cycle (SDLC) for software engineering and IT projects. Very often, the planning will be done via the Gantt chart, a type of bar chart that shows the start and end dates for each task. As soon as one of the eight stages is completed, the development team moves on to the next step. The team can’t go back to a previous stage without starting the whole process from scratch and, before the team can move to the next stage, requirements may need to be reviewed and approved by the client.The advantages of Waterfall are:Requires a well-documented approach: Every phase of Waterfall requires documentation, resulting in a better understanding of the logic behind the code and tests. It also leaves a paper trail for any future projects or if stakeholders need to see more details about a certain phase. Easy to manage and use: Since the Waterfall model follows the same sequential pattern for all projects, it is easy to use and understand and there is no need for any previous experience or training before working on a Waterfall project. Waterfall is also a rigid model where each phase has specific deliverables and review, so it’s easy to manage and control.The disadvantages are:Formulating accurate requirements can be a challenge: One of the first stages in a Waterfall project is taking to the customers and stakeholders and identify their requirements. This can be difficult to pinpoint exactly what they want early on in the project. In most cases, customers don’t know exactly what they are looking for in the early stages and instead, learn and identify requirements as the project progresses.Changes cannot be easily accommodated: Once the team completes a phase, they cannot go back. If they reach the testing phase and realize that a feature was missing from the requirements phase, it is very difficult and expensive to go back and fix it. The differences in project management methodologies only matter if you use the methodology consistently. For example, if you don’t keep your phases discrete when using Waterfall, then you might as well just use an Agile methodology. Having said this, the best project management methodology for your team is the one you will execute perfectly. Estimate your project in terms of time and cost, then identify processes and stick to them. Using piecemeal parts of a methodology will only make you lose out on the benefits that popularized the methodology in the first place. So while you certainly can adapt methodologies for your team’s use, it’s best to use a methodology as intended, adjusting only as necessary.