Picking the right tool for the job is a mindset that every professional needs.
Each tool has its strength and weakness. Using the correct tools for the job will help with time to deliver and the overall quality; having the wrong tools could hinder us from reaching the end goal.
Every profession has its tools; for us, software engineers, the tools are (and not limited to):
- Architecture patterns (i.e., EDA, MVC, microservices, etc.)
- Coding languages (i.e., Java, JS, go, python, etc.)
- Databases (i.e., MySQL, Postgres, MongoDB, etc.)
- And many more.
So, how do you pick the right tools? My recommendation is to consider the following points:
- Pros vs. Cons: Like mentioned above, each tool has its strength and weakness. Knowing them and what we need to do will point us in the (vague) direction. Need a web server that needs to have a lot of concurrent connections? We should look at node.js. Is it mission-critical to respond in (near) real-time? We should look at C/go.
- Familiarity: The team's understanding and existing experience with the tool is a crucial factor to consider. Can we start developing from day 0, or should we invest time in learning the tool?
- Consistency: Last and most controversial one, it's better to be consistent. Introducing too many tools can slow down the development process, hinder the overall quality, create knowledge siloes, and more nasty stuff we want to avoid.
What are your tips for picking the right tools?