JavaRush /Java Blog /Random EN /Everything you need to know about software development me...

Everything you need to know about software development methodologies: trends, principles and pitfalls for beginners

Published in the Random EN group
Software development is a complex business process. This means that IT needs to speak the language of optimization, planning and calculation. Everything you need to know about software development methodologies: trends, principles and pitfalls for beginners - 1Understanding management concepts provides a major advantage to both employers and developers and helps take collaboration to the next level.

Note for beginners: models, methodologies and general confusion

An important clarification to begin with: there are separate models for software development and separate methodology for this very development. Models predict the future behavior of a system. Methodologies are needed for the system to work the way it needs to. Confusing software development models and methodologies is the sacred task of every IT beginner, so this is not considered a gross mistake. And yet, the models are classic cascading Waterfall , with its linearity, clear goal setting for each stage and strict control over deadlines. The models are Spiral , with its focus on early identification and mitigation of project risks. Spiral development begins on a small scale, first solving local problems, and then more complex ones. The final model is IID , which breaks the project life cycle into a sequence of iterations, each of which resembles a “mini-project.” In general, a model is something that describes the software development process . But methodologies are systems for control, evaluation and monitoring of work on assigned tasks. Methodologies are the carrot and stick of the modern development, which are needed to control every link of the development process. They are chosen based on the direction of the project, its budget and the timing of the final product. Moreover, methodologies can be selected based on the temperament of the project manager and his team. Even based on the philosophy of the company or the customer. Let's look at the most popular methodologies.

1. Scrum methodology

Scrum is an agile project management method . It is based on “sprints” - short iterations, strictly limited in time (usually 2-4 weeks). The duration of meetings is reduced to a minimum, but their frequency increases. Each sprint consists of a list of tasks until the end of the iteration, and each of them has its own “weight”. During meetings, the team discusses who has done what, what they are going to do, and what problems there are. Scrum uses a sprint journal for planning. In this approach, a Scrum master often appears in the team, who establishes the continuous work of the entire team, creating comfortable conditions for it. Also on the project, the role of Product Owner appears - the development manager, the person who monitors the product and acts as the main link between the client’s request and the team’s result.

Pros:

  • quick project launch with the lowest possible budget;
  • daily monitoring of the progress of work, frequent demonstrations of the project;
  • the ability to make changes as the project progresses.

Minuses:

  • difficulties in concluding contracts due to the lack of a fixed budget;
  • does not work with low qualifications of the team, underestimated work deadlines or budget;
  • the ability to continually make changes between sprints can create confusion.

Who is it suitable for:

This system is suitable for projects of up to ten people - independent or within large companies. This is convenient if the team has a large amount of work and a long life cycle, which forces them to change and adapt to new market conditions.

2. Kanban methodology

The most important feature of Kanban is the visualization of the project life cycle . Columns are created for completing tasks that are submitted individually. The columns are marked with markers like: To do, In progress, Code review, In testing, Done (the names of the columns, of course, can change). The goal of each team member is to reduce the number of tasks in the first column. The Kanban approach is visual and helps you understand where the problem is. The Kanban structure is not determined definitively and irrevocably: depending on the specifics of the project, improvised columns can be added. For example, some teams use a system in which they need to define criteria for a task's readiness before executing it. Then two columns are added - specify (specify the parameters) and execute (get to work).

Pros:

  • planning flexibility. The team concentrates only on the current work, the priority of the task is also determined;
  • visibility. When all actors have access to data, global issues are easier to notice;
  • high involvement in the development process. Process visualization increases self-organization and self-control.

Minuses:

  • does not work with teams of more than five people;
  • not intended for long-term planning;
  • not suitable for working in a team without motivation. In Kanban, there are no deadlines set for each task, and the methodology does not provide for penalties for delay.

Who is it suitable for:

Kanban works great in companies where the team is motivated to develop and achieve results. As is already obvious, a small team. Perhaps even a division or part of a team.

3. RUP methodology

The RUP methodology uses an iterative development model. At the end of each iteration (which takes 2 to 6 weeks), the team should achieve the planned goals and have a temporary but working version of the project. RUP involves dividing the project into four phases , in each of which work is being done on a new generation of the product: the project initiation phase, refinement, construction and implementation. At the end of the phase, a stage completion marker (Project Milestone) is entered. Project Milestone can be considered the moment when the team evaluates the results achieved. As a result, the methodology implies that the main features are released in the first phase, and additions are added in subsequent phases.

Pros:

  • allows you to cope with changing tasks coming from both the client and those arising during the work;
  • ensures continuous improvement of the product. During iterations, the design can be scrutinized;
  • allows you to identify and eliminate risks in the early stages of work, as well as effectively control the quality of development.

Minuses:

  • a rather complex method that is difficult to implement with a small team or company;
  • dependence on the ability of experts to set tasks;
  • needs excessive documentation of requirements.

Who is it suitable for:

Large projects with clearly defined requirements and defined risks, when the product needs to be released as quickly as possible. Even at the expense of functionality, in order to quickly occupy its niche and only then refine the nuances.

Many methodologies, one trend

In addition to the undeniably popular Scrum and Kanban, which are based on the principles of flexibility under the general name “Agile” , as well as the tenacious iterative RUP, companies work with many variations of methodologies. Some people prefer extreme programming and making the fastest and simplest decisions, some prefer test-driven development, and others prefer rapid application development (RAD). At the same time, the main and unconditional trend is the use of several methodologies simultaneously . Or even combining models and methodologies into a unique control system. Everything you need to know about software development methodologies: trends, principles and pitfalls for beginners - 2Modern companies strive to eliminate bureaucratic barriers and create an atmosphere of general teamwork within the organization, without shifting responsibility between departments and blocks. According to the Scrumalliance report , 70% of IT companies use Scrum. Among them are such giants as Google, Amazon, Salesforce, Microsoft, Adobe. Startups and young projects are more inclined to Kanban, but it is also used by Toyota and, for example, gamers from Wargaming. More modest CIS companies Prom.ua, Bigl.ua, Kabanchik.ua use Scrum and Kanban methodologies simultaneously, but for different tasks. Scrum - as a planning tool, Kanban - for monitoring the progress of work. As for RUP, it is most often practiced by Western companies with 50-200 employees and revenue of 1-10 million dollars. But at the same time, IBM changed RUP to move closer to Agile principles by releasing the OpenUP methodology - “RUP, only agile.” That same vaunted Agile agility now rules the IT landscape . It's not just a fad these days - it's still innovative, and it actually works in many large companies. Agile is used in Silicon Valley and is used by Facebook and Uber.

Bottom line

Each project has its own software development methodology, depending on the team, funding, timing and customer requirements. There is no universal management technology: even the wildly popular Agile cannot provide the best approach to the development process. Therefore, the methodology is chosen carefully, and sometimes even fundamentally. So much so that you can use it to draw conclusions about the company itself or its customers. Methodologies are mixed, supplemented with models and adapted to suit themselves. So much so that they give rise to new approaches. Although in the end the management realm remains in the hands of Scrum and Kanban, with unexpected inclusions of the Waterfall model or iterative RUP.
What else to read
Websites: Books:
  • Andrew Stelman, Jennifer Greene: “Learning Agile”;
  • Per Kroll, Bruce MacIsaac: “Agility and Discipline Made Easy: Practices from OpenUP and RUP”;
  • Mike Cohn: Scrum. Agile development";
  • Robert K. Martin: “Rapid software development. Principles, examples, practice";
  • Markus Hammarberg, Joakim Sundén: “Kanban in Action”;
  • A Jacobson, G. Booch, J. Rumbaugh: “A Unified Software Development Process.”
Comments
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION