Software development is a complex business process. This means that IT professionals need to speak the language of optimization, planning, and costing. An understanding of management concepts gives both employers and developers a big advantage and helps take collaboration to the next level. Everything you need to know about software development methodologies: trends, principles, and pitfalls for beginners - 1

Attention, beginners! Models, methodologies, and general confusion

To start, we need to make an important clarification: software development models and software development methodologies are separate and distinct. Models predict how a system will behave. Methodologies are required for the system to work as it should. Confusing software development models and methodologies is standard operating procedure for every IT novice, so this is not considered a big blunder. An example of a model is the classic waterfall model, with its linear progression, clear definition of objectives for each stage, and strict control over deadlines. Another model is the spiral model, with its focus on early detection and mitigation of project risks. Spiral development starts small, first solving local problems, and then progressing to more complex ones. Finally, another model is iterative and incremental development (IID), in which the project life cycle is broken down into a series of iterations, each of which resembles a "mini-project". In general, a model is a description of the software development process. But methodologies are systems for controlling, evaluating, and monitoring work on assigned tasks. Methodologies are the stick and carrot of the modern age, needed to control each step in the development process. They are chosen based on the direction of the project, its budget, and the deadlines for the implementation of the final product. What's more, methodologies can be selected based on the temperament of the project leader and his or her team. Even based on the philosophy of the company or customer. Let's take a look at the most popular methodologies.

1. Scrum

Scrum is an agile project management method. It is based on "sprints", or short iterations, strictly limited in time (usually 2-4 weeks). This minimizes the duration of meetings, but increases their frequency. Each sprint consists of a list of tasks to be completed by the end of the iteration, and each of them has its own "weight". During meetings, the team discusses what team members have done, what they plan to do, and what problems there are. Scrum uses a backlog for planning. In this approach, teams generally have a scrum master. This person helps the team to work without interruption and creates a comfortable environment for the team. The project will also have someone in the role of product owner. This person is the head of development, monitors the product, and acts as the main link between what the customer request and what the team produces.

Pros:

  • ability to quickly launch a project with the lowest possible budget;
  • daily monitoring of progress, frequent project demos;
  • the ability to make adjustments during the project.

Cons:

  • difficulties in concluding contracts due to the lack of a fixed budget;
  • does not work for an inexperienced team or when deadlines or the budget are understated;
  • the ability to constantly make changes between sprints can create confusion.

Who is it for?

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

2. Kanban

The most important feature of Kanban is visualization of the project life cycle. Columns for performing work items are created. The work items are tackled individually. The columns are marked with statuses like: To do, In progress, Code review, In testing, Done (of course, the column names may vary). Each team member's goal is to reduce the number of work items in the first column. Kanban's approach is intuitive and helps you understand where problems lie. The structure of Kanban is not definitively and irrevocably fixed: depending on the specifics of the project, you can add improvised columns. For example, some teams use a system in which you need to define done rules for a work item before performing it. In this case, two columns are added: Specify (specify the parameters) and Implement (get to work).

Pros:

  • flexibility in planning. The team concentrates only on the current work, the priority of a task is also defined;
  • visibility. When all participants have access to data, global issues are easier to spot;
  • high involvement in the development process. Visualizing processes increases self-organization and self-control.

Cons:

  • does not work with teams of more than five people;
  • not intended for long-term planning;
  • not suitable for an unmotivated team. Kanban doesn't have deadlines for every work item. Nor does the methodology stipulate penalties for delays.

Who is it for?

Kanban works great in companies where the team is motivated to grow and achieve results. It should be obvious already — this is for a small team. Perhaps even a detachment or part of a team.

3. Rational Unified Process (RUP)

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 get a working, albeit temporary, version of the project. RUP calls for dividing the project into four phases. In each phase, work on the next generation of the product is performed: inception, elaboration, construction and transition. At the end of a phase, a project milestone is achieved. The moment when the team evaluates its results could be considered a project milestone. This means that the methodology implies that the main features are released in the first phase, and additions are added in subsequent phases.

Pros:

  • makes it possible to deal with changing tasks, both from the customer and changes that arise in the course of work;
  • ensures continuous improvement of the product. During iterations, you can evaluate the project scrupulously;
  • makes it possible to identify and eliminate risks in the early stages of work, as well as to effectively control the quality of development.

Cons:

  • This methodology is rather complex and difficult to implement in a small team or company;
  • depends on experts' ability to set tasks;
  • needs excessive documentation of requirements.

Who is it for?

Large projects with clearly established requirements and risks that are well understood, when the product needs to be released as quickly as possible. Even at the expense of functionality, in order to quickly occupy your niche and only later add the finishing touches.

There are many methodologies, but one trend

In addition to scrum and Kanban, which are undeniably popular and based on agile principles, as well as the hardy, iterative RUP methodology, companies use many variations of methodologies. One company may be closer to extreme programming and making the fastest and simplest decisions. Another may be closer to test-driven development. Another still may prefer rapid application development (RAD). That said, there is a strong, unquestionable trend toward using multiple methodologies simultaneously. Or even combining models and methodologies into a unique management system. Today's companies strive to eliminate bureaucratic barriers and create an atmosphere of unified teamwork within the organization, without shifting responsibility between departments and organizational units. According to Scrum Alliance, 70% of IT companies use scrum. Among them are such giants as Google, Amazon, Salesforce, Microsoft, and Adobe. Startups and young projects are more inclined towards Kanban, but Toyota and, for example, the gamers at Wargaming, also use it. Scrum is a planning tool, while Kanban is for monitoring progress. As for RUP, it is most often used by Western companies with 50-200 employees and revenues of $1-10 million. However, IBM modified RUP to move closer to agile principles, releasing the OpenUP methodology (RUP, but agile). This vaunted agile methodology is now driving the IT world. This is not just a passing fad — it is still innovative, and in fact it is utilized at many large companies. Agile is used in Silicon Valley. Facebook and Uber use it. Everything you need to know about software development methodologies: trends, principles, and pitfalls for beginners - 2

The bottom line

Each project has its own software development methodology, which depends on the team, funding, deadlines, and customer requirements. There is no universal management technique: even the wildly popular agile methodology cannot ensure the best approach to the development process. As a result, methodologies are chosen carefully, sometimes even on principle. So much so that we can draw conclusions about a company itself or about its customers by looking at its methodology. Methodologies are mixed, supplemented with models, and adapted. So much so that they give rise to new approaches. That said, the management realm ultimately remains in the hands of scrum and Kanban, with unexpected elements of the waterfall model or the iterative RUP methodology.
More reading:
Websites: Books:
  • Andrew Stelman, Jennifer Greene: "Learning Agile";
  • Per Kroll, Bruce MacIsaac: «Agility and Discipline Made Easy: Practices from OpenUP and RUP";
  • Mike Cohn: "Succeeding with Agile: Software Development Using Scrum";
  • Robert C. Martin: "Agile Software Development: Principles, Patterns, Practices";
  • Marcus Hammarberg, Joakim Sunden: "Kanban in Action";
  • I. Jacobson, G. Booch, J. Rumbaugh: "Unified Software Development Process".