CodeGym/Java Blog/Random/Software development methodologies
Author
Alexey Yelenevych
Co-Founder at CodeGym

Software development methodologies

Published in the Random group
members
At many interviews, you’ll probably be asked about methodologies. This is not the most important or difficult question, but having a cheat sheet would be nice. In this article, we will try to convey what a development methodology is and compare them. A software development methodology is a process used to develop a particular product, that is, it is one way to organize development by a team of developers. There are many different development models, each of which defines its own approach. It can't be said that anyone of them should be used for every project. The right approach depends entirely on the situation. I intend to consider three of them in greater detail.

Waterfall

The waterfall methodology is one of the oldest and involves a strictly sequential implementation: each stage must be completed before the next one begins. In other words, a transition to the next stage means that the work of the previous stage is 100% complete. The picture shows how it works: first, we analyze the problem (document tasks, discuss challenges), then we design (project's structure takes shape at this stage), and then we code and test. Returning to previous stages is not allowed. This approach is recommended for small projects where the requirements are known in advance and unlikely to change. Software development methodologies - 2Advantages:
  • Complete and consistent documentation at each stage
  • Ease of use
  • Stable requirements
  • Budgets and deadlines are predefined
Disadvantages:
  • A large amount of documentation
  • Not very flexible
  • The client can't see a demo version of the product
  • No option to move backward

Scrum

Scrum is a software development methodology that divides the entire process into iterations. At the end of each interation, the team is ready to provide a demo version of the product. The picture shows that the team proceeds through all stages of development in parallel, making it possible to have a finished part of the project at the end of each iteration. Software development methodologies - 3I will try to briefly explain the essence of the methodology using simple words, but there is a lot of terminology. I think the most important thing is to understand the essence. You'll remember the terminology with experience. All development is divided into sprints (often 2-3 weeks). There is a backlog (list of tasks) for the entire development period and for each separate sprint. Each task has its own story point (difficulty rating). Each participant in the process has a role:
  • The scrum team consists of the professionals (developers, testers, designers) working on a project.
  • The scrum master is the person who makes sure that the principles of scrum are respected.
  • The product owner is the customer.
This methodology relies on communication, so there are a large number of meetings:
  • Stand-up – This is a short meeting, held every day, in which all team members take part. Each participant answers 3 questions: What did I do? What will I do? And what blocking issues are there?
  • Planning meeting – This meeting is held at the beginning of the sprint. The tasks that must be performed in the next sprint are identified at this meeting.
  • Retrospective - This meeting is held at the end of the sprint and its purpose is to identify what was done well and what could be improved.
Advantages:
  • The customer can see results during the development process
  • Daily monitoring of the development process
  • Ability to make adjustments during development
  • Established communications with all team members
  • A small amount of documentation
Disadvantages:
  • Difficult to assess labor and other costs required for development
  • Difficult to identify bottlenecks before development starts
  • The need to involve everyone in the work of other team members.

Kanban

Kanban is a method based on visualizing the progress made in completing the team's tasks. The main idea is to reduce the number of tasks that are currently being performed (in the "In Progress" column). In scrum, the team is focused on successfully completing sprints. In Kanban, the task occupies the preeminent position. This is good for projects in the maintenance stage, where the basic functionality has already been implemented, and minimal improvements and bug fixing remain. In Kanban, tasks are assigned individually. A task goes through all the stages on the board, independent of other tasks, and once it is completed it can be shown to the customer. A Kanban board consists of columns, each of which represents a separate development process. Some columns (for example, "In Progress") limit the number of tasks they can hold. This helps to quickly and easily find problem areas in the distribution of tasks. The picture shows an example of just such a board. The number of columns and their names can vary. I will present the most common: Software development methodologies - 4
  • To Do – The list of tasks that must be done
  • In Progress – Tasks currently being worked on
  • Code Review – Tasks that are done and have been submitted for review
  • In Testing – Tasks ready for testing
  • Done – Finished tasks
Advantages:
  • Ease of use
  • Visibility (helps locate bottlenecks, simplifies understanding)
  • High team involvement in the process itself
  • Highly flexible development
Disadvantages:
  • An unstable task list
  • Difficult to apply to long-term projects
  • Lack of hard deadlines

A final word about software development methodologies

People who hold or aspire to management positions must understand software development methodologies thoroughly, but everyone needs to understand at least the basics. Methodologies are an integral part of the development process and are used not only in the IT-sphere. Thank you for taking the time to read my article. I hope it was helpful to you. I tried to describe only the key points as accessibly and concisely as possible. As a result, this article is not exhaustive. I would be glad to hear your opinion about it and answer your questions. All the best!
Comments (3)
  • Popular
  • New
  • Old
You must be signed in to leave a comment
amirhossein
Level 2 , Tehran, Iran, Islamic Republic of
1 November 2019, 17:46
This is very helpful, thank you!
Serge
Level 20 , Birmingham, United Kingdom
31 October 2019, 15:04
In lots if job listings it is required to be able to work in agile environment. Would like to read about it.
Jay
Level 11 , United States
31 October 2019, 13:55
This is very helpful, thank you! I've heard about Agile and Scrum spoken about in the same sentence before -- are they the same thing?