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?
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