Author Marko Krstic
Software Development Process
The software development process is unknown to many business and non-tech people. Sometimes the expectations are not clear as well. We don't know what we can expect, how it goes, what we need, and how to start. We usually hire a software developer or a software development company to lead us through the process and build adequate software.
Let's start from the beginning and assume we need to build custom software for our business. To construct any software, we need to match two expertise. The first one is domain knowledge related to our firm.
We should be the ones who know what our pain points are and how our business work. We understand our internal business processes, and we are the domain experts in that field.
The second expertise is related to software engineering. We need professionals who know how to translate our business into a digital form. Software engineers or developers are not necessarily experts in our business domain, but they should know everything about software engineering and how to build software.
Considering all the above, we need two parties with described expertise. The first one is our company and us, and the second one is a software development company. A software development company should provide expertise in software engineering.
Now let's dive into the process of software development. We can identify five steps:
- Learning about a business domain
- Gathering requirements and defining pain points
Learning about a business domain (step 1)
The first step in software development always starts with transferring the business knowledge to the software engineers. It is one of the essential parts, and based on this depends on how good the outcome will be. It should not be done in a rush since it might cost us a lot in the future.
We can perform this step in many ways, but probably the most efficient way is to sit together with software engineers and walk them through our processes. It can be organized through online or offline meetings or workshops. It might be pretty simple for some businesses, and it could take just an hour or two, but for some complex business processes, it could take a few days or even a week.
Gathering requirements and defining pain points (step 2)
Once software engineers get a complete overview and understanding of business and processes, it starts the second part. This step explains to engineers what we need and what we would like to automate to save time and money.
People from a software development company should collect all our requirements and start shaping the first version of the software. We, together with them, need to define the pain points in our business processes and define what it should look like in a digital form.
In this step, engineers will provide and present us with a potential solution and explain how we could use it.
In this step, it is also necessary to document everything. The engineering team is responsible for providing the first version of documentation of what the software will be doing.
The documentation can be written in many ways, and it's up to the software development company how it will look. Once the documentation is complete, we need to check it and suggest changes if required. This documentation also ensures that engineers understood all our requirements and successfully described new software in plain English. We should get the cost and duration estimates at the end of this step.
Development (step 3)
Most people think this is the step in which only software engineers are involved, but nothing could be further from the truth. It's correct that software developers lead the development and make our software, but we should be very actively involved.
Back in the day, this process was completely detached from us. Software development companies would focus on work, and we wouldn't hear anything about the process until it was complete.
It could take a couple of months before we get in touch with the company again and get our solution. The main problem with this approach is that we could get software that we don't need.
One reason for that could be outdated documentation. Our business could change in the meanwhile, some processes could look different, and we need some improvements in software. Still, we could get obsolete software because we defined our documentation some time ago.
Another reason could be a misunderstanding of the requirements. It doesn't matter how well we defined the requirements and documentation; it could always happen that there were some misunderstandings. Building software based on the wrong requirements leads to the software we don't need. Luckily, this way of building software has stayed in the past.
Because of these reasons, we must be included in the development process. It is the only way to be sure we get the right solution. Our job would be to keep track of the development and check every feature when complete. We should test the software frequently and see if it suits our needs.
After each feature is developed, software engineers should submit the work and notify us about the changes. Then if we see that something needs to be changed/added/removed, we talk to engineers so that they can fix it. In this way, we are involved in the development process and ensure that the software does what it is supposed to do.
Once the product is complete, we don't need to dedicate days or weeks to test all the features at once because we already did it incrementally step by step. We are already familiar with this product, and we know how it works. We need to re-check it and give the green light to engineers that this phase is complete so that they can start launching it.
Launching (step 4)
This step is related to putting our software solution into production and being ready to use. Software engineers are responsible for making sure it's up and running so that we can use it. If this is a web application, they will set up, deploy and configure it to work on the web so that we can reach it via our browser.
Note that this step is not mandatory, but it's highly recommended. If we decide to do it independently, we could do this on our own. But in that case, we are responsible for finding a host, setting up the server, deploying the app, and making all possible configurations.
Maintenance (step 5)
The last step is related to the work once our software solution is complete and up and running. It would include bug fixes, adding new and updating the existing features, applying security patches, backing up data, etc.
Maintenance doesn't have a timeframe; it is a long ongoing process. The work is performed whenever needed. This step is not mandatory but highly recommended to keep our product in good shape.
Hopefully, this article clarifies what a software development process should look like. The most important thing to note is that we should be actively involved in the process of software development. That's the small cost we need to pay to get a great solution.