The Art of Building Software

Luis Guerrero
9 min readJun 3, 2020
Photo by Ryunosuke Kikuno on Unsplash

The main focus of this article is on how to enable the engineering team to build software that can be easily developed, tested, deployed, and maintained.

We are going to focus on the last three stages of the software development lifecycle which I will refer to as the execution phase, these stages are:

  • Implementation
  • Testing and Integration
  • Maintainance


Implementation is the process of writing code to solve the actual requirements of the software, those requirements should be already defined and well documented in the first phase of the SDLC. Since a requirement can be implemented in many ways, it will depend on the team to find the best one.

Environment setup

One of the pains most teams have in common is the process of setting up the environment to start writing code, if you go and read the instructions of many projects you will see that there are tons of terminal commands for downloading, installing, updating, and configuring things to make the computer ready to start developing.

The biggest problem with that is that most of the time those commands are based on a particular computer and when trying them on a different one, a lot of problems start to arise, like incompatibility with another stuff installed on the computer (even the operative system itself), missing things, different versions, etc.

Why is this a problem? because when someone joins a team, besides learning the architecture of the code, the tools being used, how they are used, etc. They also need to expend a considerable amount of time trying to set up their environment, and most of the time that setup is not strong enough that when something is modified in the computer everything stops working and they have to set up everything again.

How can this be solved? By making the environment setup the most straight forward and agnostic possible. One way to achieve this is to ensure all the environments to be the same by encapsulating the project in a virtual environment, in a container, or even in a virtual machine. Some tools that can be used for this purpose are:

  • Virtual environments like Pipenv if…



Luis Guerrero

Product-focused Software Engineer with more than 13 years of experience delivering top-quality software for world-class companies. React JS/TS advocate.