Asking the Right Questions on a New Software Project

When presented with a new opportunity to build new software, developers often ask themselves questions like: 

  • Should we use a micro services architecture? 
  • Should we use Terraform as an abstraction to decouple our deployment from a particular cloud, like GCP? 
  • Should we move from a multi-repo code storage to monorepo? 
  • Should we enforce TDD, or let the coders decide whether to test after building the code? 
  • Should we embrace Typescript, or keep using Javascript? 
  • Should we use Kubernetes on this project? 
  • How important is CI/CD for this project? 
In software development, it is common for developers to jump into technical questions when presented with a new opportunity to build new software. However, it is crucial to first ask, "What problem are we trying to solve?" and identify the key requirements to ensure the focus remains on the customer problem. 

We need to remember to ask, "What existing solutions are available to solve this problem?" to avoid wasted effort. Rather than just considering the latest and greatest tech, it is also essential to evaluate past experiences and ask what worked well in the past. 

If “What problem are we trying to solve” is the most important question in software development, the second most important might be “Why do we need it?” 

Let’s carefully consider the need for certain technologies or approaches and determine if they are necessary or if there are more efficient alternatives. 

For example, in evaluating the need for a microservices architecture, it is essential to consider the key benefits and determine if they align with solving the particular problem at hand. Similarly, in determining the need for Terraform as an abstraction to decouple deployment from a particular cloud, it is important to evaluate whether cloud providers have easy-to-deploy solutions for the kind of app we’re building and if there is even a realistic need to worry about future migration from one cloud to another.

In evaluating the need for a move from multi-repo code storage to monorepo, it is important to question whether there is a great template already available for building and deploying web applications and whether the change is necessary for the project. At its most fundamental, I’m just suggesting that you question everything. Whether it is dogma about project management, development workflows, or must-use methodologies…if it feels like time wasted, it may actually be time wasted. 

Kent Beck is well known as a Godfather of Agile programming, and probably more responsible for TDD than anyone else on the planet today. In a recent Tweet he said, “I’ve been reluctant to try ChatGPT. Today I got over that reluctance. Now I understand why I was reluctant. The value of 90% of my skills just dropped to $0. The leverage for the remaining 10% went up 1000x. I need to recalibrate.” 

Thought leaders are recalibrating, and this is something good to remember as you preach the best practices they introduced 20 years ago. 

Today it is essential to find the fastest, cheapest, and most hassle-free way to deploy the software into the cloud. It’s not that difficult: just consult the internet and run a series of small tests to determine the most efficient way to deploy the software. 

By asking the right questions and thinking through the need for certain technologies or approaches, software development projects can be more efficient, avoiding wasted effort and ultimately leading to success in meeting deadlines.

Comments

Popular Posts