Project management: agile software development

January 6, 2023

Lang: cs en de es

When you develop a software project, you ask yourself how to bring it to a successful conclusion. Various software project management/leadership techniques have been developed for this purpose. Each such methodology has its pros and cons and hence suits different types of projects and business environments. When it comes to custom software development in today's dynamic times, agile methodologies have proven to be successful, but they are quite different from what the average person encounters in life. Today, agile development methodologies have proliferated the software development field. In principle, this is nothing new. However, it is also because many typically new customers expect a fix-time fix-price = fixed price and delivery in a certain time style, it is necessary to explain what agile software development is and how it benefits customers.

Project Management

Project Management is a systematic activity to achieve the realization of an individual work. Hence, it is not the sale of an already finished solution. And at the same time, that such realization will always bring some new obstacles, which we try to overcome effectively through project management. Typically, we need to manage the project so that it has the required functionality for the money expected in advance and within a suitable timeframe. This is because a project that costs more than it earns or is delivered later than it should be is a useless project.

So first and foremost, being able to manage a project means having the ability to complete the project as expected .

Phases of a project

The progress of a project can be divided into the following phases:

  1. Initialization
  2. Analysis
  3. Start-up
  4. Implementation process - long-term work in iterations
  5. Completion
  6. Evaluation

When an analysis is performed, it is necessary not only to look at the technical aspect, but also at the business aspect. This means even considering if it is really needed, what benefits it will bring. From a financial point of view, how resource-intensive the implementation will be in indicative terms (material, time, finance). From a technical point of view, it is necessary to find out if it is feasible at all.

Project Management Methodologies

There are several project management methodologies. The basic project management methodologies are:

  • Critical Path Method
  • Waterfall Method
  • Agile methodologies - there are several with the same basic principles
  • PERT (Program Evaluation and Review Technique)
  • PRINCE2
  • etc.

There are many project management methodologies and techniques, and this also affects the business and communication field. Therefore, I will mention and describe something from each. I will list what one can encounter most often and highlight the essential features.
I also recommend to first try out the cooperation and the given management methodology on a small (pilot) project.

Waterfall

Waterfall was the most typical project management. Someone decides that something is going to be developed and after analysis, people start the project. (If the analysis is not done you can't talk about managing the project).

Critical Path Method

In the implementation of any project, various tasks build on each other and one cannot continue without completing the previous one. Thus, this method allows focusing on finding these critical points and then following them during the project implementation.
This then ensures that it knows in time, i.e. sometimes ahead of time, if there is a problem that would significantly threaten the continued successful execution of the project.
The easiest way to think of this is in the execution of a building where it is clear that you cannot build a building without a foundation. And that the drying of concrete cannot be accelerated. Without a certain number of people, the work cannot be carried out in the planned time. Certain activities allow parallel work, which can speed up the project. However, at some point the work needs to be joined up and this needs to be managed.

Fix Time Fix Price

Fix Time Fix Price - this is not a management methodology but a way of commercially contracting a project, where a project is delivered at a pre-agreed price and on a given date. Personally, I only deliver smaller precisely defined, typically repeatable tasks this way. And given the exact price/time, I get such work paid for in advance.

Extensive analysis is required at the beginning of a project, and the difficulty of that analysis increases significantly with the size of the project. The time and cost of doing the initial analysis itself increases with the size of the project. Nobody will do a good analysis for free, so you need to pay for it without any certainty that the project will eventually be implemented. On the other hand, the customer has accurate information about whether the project can be implemented and thus will not invest money and time unnecessarily. In addition, he knows the exact price and delivery date. The analysis can also be washed as an investment and used as a basis in the future, even with a different supplier.

Fix Time Fix Price projects, have a significantly higher price because the contractor takes on the risks during implementation. It is not possible to change, let alone add new requirements during implementation. That would mean doing the whole analysis again.

Agillic

Agile software development methodologies are well-defined techniques/methods for managing a software development project. They are frequently used and even more frequently talked about. In principle, however, they are nothing new. Just by defining the term, writing books they have come more into awareness.

Agile methodologies have several well-defined project management techniques that are applied in detail in large companies. The most common technique used is Scrum.

Agile development is typically characterized by:

  • Close contact with the user = communication. The programmer communicates with the accountant if he/she is handling the accounting part of the application or with the warehouseman if he/she is handling the warehouse functions.
  • Response to requests during development.
  • Delivering smaller functional units. In so-called iterations.

Agile management means less management work, i.e. saving time/money with reduced communication noise.

Personally, I invoice such work on an ongoing basis at the end of each month, even if some tasks are yet to be distributed.

List of agile techniques:

  • Srum
  • Extreme Programming (XP)
  • Test Driven Development (TDD)
  • Lean development
  • atd

How agile development came about

It was in the early days of software development that agile development was used. The developer programmed the software for himself or the development was handled internally and it was a small company.
The developer was thus always in close contact not only with the client but also directly with the user of the software being developed. Since the field of computer science was new, it was often a real research, so everyone was aware of the difficulty of creating a program. And the associated search for new ways to solve it, whether it was algorithms or technical means.
In those days, most people preferred to just avoid computers.
But over time, as the field expanded, more and more people became interested in computer science. and their average expertise decreased. Eventually, computers began to be used by ordinary people or lay people. This was due not only to price, but also to user-friendliness and, last but not least, to open source software. including OS GNU/Linux.
The situation today is that: Requests for software development projects now overwhelmingly come from ordinary users, who would like a customized solution without knowing the complexity of the problem to be solved. The customer often only considers the price. The salesperson who represents the supplier has no knowledge of the project and the complexity of the task, yet is able to promise the sometimes impossible in order to close the deal. As a result, a deal is struck for a project that has a specific price and deadline, but without a precise specification or an analysis of the problem to be solved. Such projects have been and sometimes still are today.
However, since such results were not good and neither customers nor programmers were satisfied with them, so the developers reminded everyone how to develop to the satisfaction of all and then wrote a manifesto for agile development.
The point is that developing software is not like selling rolls or simply selling an already ready-made software solution. Development is about knowing the goal approximately, but how to get there has yet to be determined. Therefore, neither the time nor the cost can be determined precisely. And if mismanaged, both time and cost can increase significantly, and unnecessarily so.

Features of agile development

The most important link in software development is the developer/programmer. Therefore, everything is done with the aim of making the programmer comfortable. To move towards the goal effectively, it is also the developer's job to work with the customer and vice versa. Which is in the experienced contradiction where companies try to cut the programmer off from the user and keep the user as far away from the programmer as possible.
The developer has to discuss with the client the needs to design a solution and explain everything, of course the client pays for this time as well. However, this avoids communication noise and direct communication is also much more time efficient. So this direct contact/communication ultimately has the advantage that the product is better and, because time is saved, cheaper.

If you can't imagine what a programmer does, the details of what a programmer does are in the article: what is a programmer's job.

In rapidly changing times, their priorities are changing rapidly and new requirements are emerging. Agile development allows you to respond to these demands, and quickly. For a fixed project, there would be no choice but to stop the project, and re-analyze from the beginning and start the development of a new modified project.

Customers praise that instead of having one big meeting and then waiting for the result, which of course is significantly different from the idea. They can continuously deliver documents, modify the brief and most importantly comment on the delivered solution. In this way, they gradually get a result that they can check and start using. And with each iteration they get closer and closer to their needs and ideas.

This methodology is useful where requirements change or cannot be specified in detail, or where we need to deliver a partial functional solution quickly. Yes, generally speaking it looks easier to write a brief and then wait for the result to arrive, but writing a sufficiently precise brief is very difficult. (And few people want to write one). For large projects, it's often not possible to work out all the details at the beginning.
So creating a good brief cannot be done without analysis or even creating some kind of prototype.

Also, a fixed assignment is expected to have a fixed price, which in practice means either a truncated or a bad result. Fixed assignments consequently lead to the need for multi-tasking.
So a fixed price for non-small projects is an idealistic notion, when it comes to bespoke development. (Buying a ready-made solution is something else.) You have to take into account that in order to include the risks, the supplier typically multiplies the price by at least 2x or 4x.
Hence, even if the final price is not obvious at first glance, agile development always comes out cheaper. Because, you always pay only for what you need and what gets done.
Fix-price will only work out cheaper if the supplier is in the red, and nobody will do that in the long run.

Applications

There are various applications to support project management. There are also applications that specialize in software project management and that are optimized for software developers. One such tool is the web-based GitLab application, which integrates other resources for efficient development such as GIT. Thus, managers can lead tasks and manage project execution, including individual phases, in GitLab.

gitlab tasks

In addition, they also include other features and allow integrations with other tools. For example, there is the ability to use automated testing and auto-deploy.

Successful project

Whether you're implementing a small or large project, the key to success is:

  • Submit requirements
  • Test the delivered solution

Články na podobné téma

Python program to control Docker using the API
How to use MailCatcher to test emails
Python OpenAI API
Creating a WebSocket web application and setting up a proxy
How to run old PHP applications
What a good programmer should know
Rust programming language
NodeJS: development, server configuration
Nette security bug CVE-2020-15227
REST API: platform API
Custom web and mail hosting with ISP Config software
Programming in SQL: PostgreSQL, MySQL/MariaDB
HTTPS: secure web
NoSQL database Mongo DB
Connecting to Microsoft SQL Server from Linux
What is the job description of a programmer
Python application localization
Which mail and web hosting to choose
Digispark - Program Atmel ATtiny microcontroller with Arduino IDE
Development for ARM processors with Arduino IDE
How to program the ESP8266 WiFi processor
Open smartphone with Linux - Openmoko Neo FreeRunner

Newsletter

If you are interested in receiving occasional news by email.
You can register by filling in your email news subscription.


+