“A series of things that are done in order to achieve a particular result” is the definition for “process” in Oxford learner’s dictionary. Before moving into the software development context, we shall discuss some day-to-day life examples regarding “process” and its importance. This will pave the way to understand the big picture rather than blindly following the process in your project. I have seen many people worshipping the process because they have been asked to do so. This won’t lead you to get the real usage of practicing a process.
This is my first example. Assume you are sitting for an examination. (I am taking this, as everyone has their own experience regarding this 😉). First of all, you have to study the syllabus. Will it define your result? No, it won’t. The way you study, the time you spent on studying or the number of extra classes you went to is not directly correlated to the result you get at the end. It totally depends on the process you follow for the studying. Here is my second real-life example. Take the scenario of you preparing lunch at home (maybe your mother 😋). You are going to cook rice and 3,4 curries. There is a defined method that we have to follow to cook each curry. Will just following these steps make your curry tasty or hygienic? It totally depends on the steps you followed. Even the time consumption to complete the whole scenario depends on the process you followed once you are cooking. I hope the above-mentioned examples are emphasizing the necessity of following a suitable process at any work you are doing.
Now we shall consider the software development context. The Software Development Life Cycle (SDLC) defines the methodology of developing and maintaining the software. Following are the standard life cycle stages.
These steps are to be followed during any process you engage in. The sequence of steps can vary from process to process. Sometimes above phases can be executed parallelly too. Combining a few stages or expanding one stage into few, totally depends on the process. Following are the popular software development processes in the software industry.
Let’s evaluate the significance of having a process in a software development context.
In the industry, the product is developed by a team. One of the major challenges is starting the project. Project requirements should be gathered and analysed. There should be a proper mechanism for dividing the bigger tasks into smaller ones. Tasks have to be prioritised. The final output has to be delivered within a limited time with a lesser number of defects. Tasks have to be spread evenly based on the weight within the given time period. Last-minute work may lead to a low-quality product. The proper process will drastically reduce time wastage. One of the main misconceptions is that people think coding has to be started at the very beginning of the project. Instead we should spend more time on planning in the beginning.
The team can consist of people with a different set of skills and different ways of thinking. Ultimately this diversified team should be integrated into achieving one common goal. Therefore, team synchronization is a key factor. Assume a scenario where a team follows no process or an unsuitable process. This may lead to two different outputs. One is having an inefficient team. The other one is job burnout. Both results are directly affecting the success of the project. Sometimes management believes highly technical skilled people can deliver a successful product, which is not always correct. I can assure you that an average skilled team with a highly effective process can produce best results. Communication among team members is a major fact while working with any team. All members of the project team should be on one page every time. This would avoid a lot of unnecessary problems. Moreover, many impediments can be avoided through proper communication. Not having proper communication leads to unfruitful outcomes. Therefore, it is mandatory to gain the advantage of having group discussions. Having proper process will produce responsible team members. Each individual can be evaluated and appraised according to these objectives which have been allocated. These facts reveal some key features for establishing and executing an effective process model.
There is no single process that can be applied to every situation. After analysing project requirements, type of project, project input/output and allocated resources, the suitable process has to be selected. The agile model may not be suitable for a project with a heavy research area. Also, the Waterfall model is not suitable for a project in which case its requirements are changing frequently. I strongly accept process adaptation since the project context is different from one to one. One of the main objectives of the following process is to make things simple and understandable. Therefore, flexibility of a process is a key fact. I have experienced people making simple things complex by following a process. Even though I have mentioned about the adaptation and flexibility, there shouldn't be any loopholes. Finally, it should be neither more generalized nor a more restricted one.
Image source: https://mymidlifehustle.com/my-healthy-fitness-plan/