Understanding what tool should be used for particular task or project has been one of the most crucial aspects of software engineering. Once I had a classmate who was very fond of Blockchain technology. No doubt, he was very good at it too. But unfortunately, this led to him seeing every problem as a blockchain problem. For example, once he had to build a simple CRUD application for a public organisation. The use case where a simple HMAC based verification of data could have solved the problem, the guy added smart contract and what not. This is what I feared the most. To a man with a hammer, everything looks like a nail.
I had been fortunate to be around people who made me understand the need of a tool. In my (as of now) short but fast-paced career,
when to use what has been the best learning. I have seen evaluators asking the right set of questions while deciding on a technology. Some of the best ones are —
- Does this tool solve this problem?
- Do we need this tool to solve this problem?
- What is the cost of this tool?
- How easy it is to add this tool in our current system?
- If the situation occurs, how easily can we drop this tool from the system?
Below I am dropping a volatile list of the tools I use in my day to day life. I will try my best to keep it updated and openly welcome any suggestions towards it. This list did not emerge in one day. I chose some tools. Some tools chose me. And some tools were thrust upon me. By no means the list is perfect. In fact, it is a trash can. But it's mine and I love it.
Programming Languages
C++, Python, Go, JavaScript and Bash have fulfilled all my needs till date.
Apps and Frameworks
This part really depends on the project and the team. Most of the times I am not even the person taking decison on this. A lot I am still not skilled at. Still, here is the most recent frameworks I worked with.
- Django, Gin and Express for servers
- HTML, CSS and vanilla JS for small frontends
- ReactJS, Angular and NextJS for bigger websites
- Android and React Native for mobile development
- SQL, Mongo, Redis, Elasticsearch, Kafka
IDEs and Editors
PyCharm, VS Code, Sublime Text
Terminal
iterm2 with ohMyZsh on MacOS. Default terminal for Ubuntu.
Hardware
MacBook Pro 2017 and custom desktop to run Windows and Ubuntu.
Note Keeping
Notion for work along with scratchpad.txt file in my Sublime.