The key phases of software development (simply put).
Tags: javascript, webdev, programming, beginners
Published: 2024-05-12 23:39:24

Simply put, software development is the process of creating a software product. As someone with three years of experience in the industry, I can say it consists of three main parts.
- Understanding the problem
- Developing the solution
- Deploying the solution

After listing the phases, it is important to understand that even if each phases have their own actors and deliverables, they very much depend on each other. We cannot build a solution that we do not understand and we cannot deploy a product that does not exist.

Now that we have clearly identify the different phases, let's dive in details into each one.

## I. Understanding the problem

This phase consists of clarifying any sort of doubts related to the problem we want to solve. In other words, we have a lot of questions to ask and have as much meetings as we need to make sure we solve the problem the best way possible. In this phase, we need to come to an agreement before proceeding because we do not want to build a solution that doesn't solve the problem or solves it partially. In this phase, the deliverables for this phase are usually the following:
- A user requirements list (functional and non functional).
- A list of features
- A backlog of tasks
- A prototype 
- A contract to seal the deal (if applicable).

The team in this phase is made of the product owner, team lead, project manager, the client or their representatives.

The deliverables of this phase much teach us everything need to build a solution that will actually be used. It is the only way to make sure that we get into the second phase with much assurance that we will be developing a solution not just another application.

## II. Developing the solution

As we said in the introduction, the phases depend on one another. Imagine how confused one can be if we were just asked to build a solution without being allowed to ask questions. In this phase, we assume that the solution is clear to every stakeholders because all questions have been asked and rightly answered in the previous phase. In the agile methodology, it is during this phase that the product comes to life. The deliverable for this phase consists of the following:
- The working solution

The different profiles involve are usually the scrum master, the developers, the testers and the client.

The only outcome expected from this phase is a working solution. But, it is very important to understand that this solution can be broken into modules that are ready to be used because we are in continuous development. And only this phase can take us to the deployment of the solution.

## III. Deploying the solution

From my experience, this phase is by far the most tricky one because it can last long or short or put the entire project in danger if not handled correctly. Testing the application in local environment is totally safe but on the internet, we are exposed to all sort of dangers. The outcomes for this phase include:
- A CICD setup for the application/solution
- A working solution deployed on the internet 
- Proper detailed documentation 

The core team in this phase includes devOps, system administrators, trainers in case the solution targets a specific set of users and clients.


In my opinion, the making of a software solution depends a lot on these phases as they give us a clear understanding of what the solution is, how to develop it and finally, how to deploy it. Although these phases help me a lot, it's important to find a system that suits your use case better. After all, this field is all about creativity so it's important to not restrict ourselves but to continue exploring till we find what works best for us.