In software engineering, we apply computer science knowledge to solve real-world business problems. Software development has a generic life-cycle known as the SDLC that helps stakeholders to plan the progress of their software products. Also, the steps of this generic life-cycle can be arranged into different structures. We identify these things as software development models. For example, agile, waterfall, incremental, and spiral are well-known models for software development. The agile approach is vastly used because it helps teams to manage their work more efficiently. Also, it helps teams to maintain good customer satisfaction.
We have to decompose each development goal into smaller tasks to get better manageability of our works. The software development goals mainly refer to releases that deliver a set of features to the users of an application or a service. The completion of each smaller task will make the success of your master goal. These smaller tasks require programming and it mainly has two different thinking strategies about the goal.
A process-oriented person usually focuses completely on smaller processes. Similarly, a programmer who follows process-oriented thinking usually focuses more on completing smaller tasks without worrying too much about what needs to be achieved at the end. They may not try out new things that may shorter the path to milestones. Most of the time, these individuals are perfectionists. In other words, they will hang on a smaller task verifying every smaller detail with their standard process.
If we think about the release of a computer game, the very first version may not be a perfect one. But, after several updates, there will be a lot of improvements that will make the game perfect. For example, I saw a lot of YouTubers are comparing Cyberpunk 2077 with GTA 5. I’m pretty sure that they will get completely different results if they compare after the Cyberpunk team released several updates.
A goal-oriented person usually has a big picture of what needs to be delivered all the time. Likewise, a goal-oriented programmer thinks about the milestones rather than worrying too much about their standard processes. Therefore, they will try out new things that are not defined in their standard processes and they may find shorter ways to reach the goal. These types of programmers will never postpone deadlines, but there can be more mistakes or missing features compared to process-oriented programmers.
Importantly, when they meet a specific task that doesn’t have all the required information, they will handle it easily because goal-oriented programmers are very flexible and also open to new ideas.
The hybrid approach
Now, we have a question. Which one is the better approach when it comes to software engineering? Well, both thinking strategies have advantages and also disadvantages. The process-oriented strategy brings happiness at the end of the day because you completed several smaller tasks. On the other hand, goal-oriented brings happiness because you have a clear roadmap to the milestone.
The combination of these two strategies will make the best one. The processes can be used as tools for reaching the goal. However, we should not stick to the process-oriented strategy. Instead, we can always think about the big picture of what needs to be delivered. However, we should not completely ignore the standard process because it is also important to have the quality of work.