February 29

The SWE Mindset

The SDLC mindset is one that is often instilled in a software engineer’s brain, even when it comes to his/her approach to solving real world problems. For those who don’t know, SDLC stands for the Software Development Life Cycle. It is essentially a series of phases throughout the entire lifecycle of a software project from request inception through delivery. There are sometimes variations of the incremental steps in the cycle, but generally, they are as follows:

Requirements

When approaching a real world problem, you can expect someone with a SWE background to first understand the nature of the problem in its context and in its entirety. We don’t jump directly into solving the problem, we first process all the contextual information available to understand the big picture. We must understand not only the micro-level components but also the maco-level interactivity and impact.

Design

Once we have a clearly defined problem to solve, we begin to design the solution. We determine all the different paths we can take, and narrow them down by assessing the resources available, feasibility, efficiency and long term sustainability of each solution. Often there are many ways to solve a problem. But one of the primary responsibilities of a good SWE is to employ the BEST solution by weight factoring the above mentioned attributes of each.

Development

Once we’ve nailed down the golden path we want to pursue, we then develop the solution to the problem.

Testing

Before adding the missing piece (solution) to the puzzle (problem), we must first ensure that it remains the best solution by means of testing against the attributes to ensure we get the desired results that were initially intended. The solution often can be optimized prior to implementation based on findings of the test phase.

Implementation

Once we pass the testing phase, we implement our solution to solve the problem.

Now that the problem is solved, we’ve done our job. But wait! Our job isn’t just to solve the problem and forget about it.

Enhancements / Maintenance

As a great SWE, we also have a responsibility to ensure that with requirements changing, our solution must be agile and be maintained and enhanced throughout the course of time! We make incremental improvements and optimize the solution based on the ever-changing environment.

And this is the thought process a SWE might engage in when faced with even the simplest real world problems. Hopefully this gives you some insight into what powers the light-bulb in our brains.