5 Tips To Make Better Technical Decisions as a Software Engineer
Add this underrated skill to your arsenal
Photo by Roland Samuel on Unsplash.
How do you make technical decisions? That is a tough question to answer. It had me scratching my head because not everyone makes decisions the same way. There is no right or wrong decision. The result is usually the judge of that.
Anyway, let’s get into it. What do I mean by technical decisions? This is when you are choosing between two or more technologies to use or two or more solutions to a problem. How do you make that choice? I realized this is a skill that I did not learn in school.
With that said, everything I will share is from my experience in tech. It is crucial to hone this skill because the more senior you become in your software engineering career, the more you will need it.
The technical decisions you make will either help you and your team soar and make things that you have never made before or they could get in the way of innovation and slow your team down.
Keep in mind that the tech industry moves quickly and new technologies are always coming out. You will always be making decisions around whether you want to adopt this new technology or not.
In this article, I will share five things that I consider when I am making a technical decision.
1. Does It Get the Job Done?
I think this is considered the golden rule when it comes to making technical decisions. Answering this question can be tricky. It requires you to have a thorough understanding of the problem you are trying to solve.
Oftentimes when making technical decisions, there are lots of problems that arise. The trick is to focus on one problem at a time and think about the solution for that particular problem.
This prevents you from choosing an overcomplicated solution. If you go with an overcomplicated solution, you run the risk of over-engineering something or making something too complicated for you and your team to understand.
2. Is It Easy To Use?
There are a lot of things encapsulated in this one tip. Think about it. Is it easy to use literally in the code? Is it intuitive? Is there documentation written by somebody? Is it rich? Are there lots of troubleshooting tips in case of any issues? Is there a community around it? I find that even if the documentation and the usage are great, I will run into problems.
Every developer’s nightmare is Googling something and not being able to find a solution online. This is related to the fact that the more people use it, the better it will be because it gets lots of feedback from the community.
It also just helps when a lot of other parts of the industry are making use of the same technology because then you can share insights and opinions on how to use it.
It also gives you the skill of using something that a lot of other people use in the industry.
Some people might consider pricing as well. Is it reasonably priced? Is that in your budget? Does it do all the things that you want to do for a good price?
To me, this is maybe one of the most important considerations when deciding whether to choose a technology or not.
3. How Easy Is It to Maintain?
People do not talk about this a lot, but I think it is an important one to add to the list. Once you integrate something in your code base or your workflow, you are taking in more code, steps, and workflows as part of your work.
Think about this for a minute. Does using it create a risk? What are some of the things you have to do to maintain it and keep it up and running? These are things to consider to give you a sense of whether or not it is worth integrating.
Also, ask yourself what dependencies it creates. Are there abstractions that protect you and your code base in case anything goes wrong? Is it easy to swap out in case it breaks? Those are all costs that you incur when you are making a technical decision. Therefore, be on top of them.
4. Is Your Team Comfortable Using It?
OK, this one is for those working with teams. Your #1 consideration is whether or not your team members will be comfortable using it. You have to think about what it will take to get them up to speed in case they are not as comfortable using it as you are.
Some technologies have a high learning curve, so make sure to have a conversation with your team to see how you can get everybody up to speed and on the same page.
Not being on the same page tech-wise creates a bottleneck because you will be the only one maintaining it, and it will reduce efficiency in case you ever choose to go on vacation or something like that.
If using that specific solution is a must, take the time to train your team on how to use it. It will save you from developing issues later.
5. Are You Confident Using It?
Code is a complex thing, and we want to trust ourselves and the solution we are working with to get the job done.
If you are going to adopt something new or choose between X and Y, make sure that you feel good about it. If you do not, figure out why and see how those things can be addressed.
This is common in web development because you can achieve the same thing in many different ways. You can do a full-stack app using the MERN stack, and you can do the same app using the MEAN stack or LAMP.
You just need to be confident with the technology of your choice. It usually comes down to time and quality.
So those are my five tips on how to make technical decisions. It can be something as small and simple as using tabs or spaces or a choice as big as React vs. Vue.
If there is anything that I may have missed, feel free to share. I love learning from others as well. I would love to hear from you all. Happy coding.
I am a full-stack web developer. I love sharing my knowledge of web development technologies and programming in general.