Keeping Up With Tech Tools for Software Engineers
Solving problems should be the focus, everything else is a tool.
Do you find yourself overwhelmed by the sheer number of programming languages, libraries, frameworks, databases and platforms that are coming out every day ? Do you struggle to keep up with them? Well, even do.
Hi I am Adarsh, currently working as a Software Engineer. The idea behind this post is to share my thoughts on how I approach all these new things by trying to keep the focus on the problem.
But why ?
But, why do people create these ? Why bother learning about all these new things when the existing stuff gets work done ?
As humans, we are always trying to become more efficient. We want things to be fast, accurate and get the job done in the least amount of time and effort possible. Also with our requirements getting more and more complicated by the day, and the scale at which we operate today, there is no single language or framework that can take care of all our needs.
Some of these languages and frameworks can make your work exponentially easier and faster, where as others could cause you a lot of regret. Making the right choices could make or break your projects.
So, now what ? Learn everything ?
Keeping up with everything that is going on in the tech industry is near impossible. So what do we do ?
Well, I think the answer is to change the way we think.
As a software engineer, your primary job is to solve problems or build solutions that satisfy some requirements. The word engineer means ‘a person who designs, builds, or maintains engines, machines, or structures’. As Software Engineers we design, build and maintain software.
I personally dislike the words coder or programmer for Software Engineers. Yes, programming is a big part of Software Engineering, but there is a lot more that goes into building solutions that are efficient, reusable and scale well.
As engineers our focus should be on solving problems. Think of these languages, libraries, frameworks, platforms, databases, etc.. as tools that help you solve a certain problems.
I think it is not about learning everything, it is the awareness that matters. Know why certain languages exist. Know why some frameworks work well in some cases. Try to understand the trade-offs that come with every tool.
Everything is a Tool
Every language was designed with a specific purpose in mind. Every library was made to abstract common solutions. Every framework was designed to add structure, follow certain patters and provide a starting point for doing something. Every database was designed with certain paradigms or approaches in mind.
The point is, everything is a tool that was designed for a specific purpose.
We tend to get lost in the specifics of certain tools, and lose sight of the big picture. The end goal is to solve the user’s problems and make them think “Wow, this is the best solution for this problem”.
Most of your users don’t care if you used the hottest new language out there. All they care about is what your solution does for them, if it adds value to their life.
So try and not get lost in the specifics of tools, and overanalyse things. Do your research, try and pick the best tools that does the job for you. If you feel something is not working out, don’t be afraid to change. You might even go back to the same thing again. But the idea is to be comfortable with change.
But how do I pick the right tools ?
Well there is no 3 step answer to this.
I think the easiest and most reliable way is to ask someone who has faced a similar problem before. Ask multiple people. There is a good chance that the tools someone used to solve a problem a while back is already outdated. But it will guide you in the right direction. Understand where to look.
Next is to simply Google it. The problem with this is that it is very easy to go into a rabbit hole, and get overwhelmed by the specifics. I am not saying details are not important. All I am saying is to not let the details take your focus off the problem.
Finally, I like to look at projects on GitHub created with those tools. It gives you a good intuition on how certain things are done, and the common patterns are implemented. Look for projects that solve similar problems to what you are trying to solve. Clone some repositories and go through the setup. This should give you some more clarity.
I wanted to keep this post light and vague. The idea was to look at Software Engineering from a different perspective. I think this is a reliable and more realistic way of thinking about this field, given the rapid pace it is moving in. It has helped me focus more, be more adaptable and not be bound to any specific tool.