Understanding New Technologies
As a software developer, it is important to continually cultivate an understanding of the tools available in the engineering toolbox. When faced with a problem, a developer with a broad landscape is better able to pick the most appropriate tool for the problem and constraints at hand.
But if one is not intentional about how they explore new technologies, they can fall into the trap of:
- Chasing after industry hype
- Choosing solutions based on popularity
- Not taking tradeoffs into account
To prevent that, the following is a framework for learning about new (and established) technologies in a way that highlights the context and trade-offs behind them.
First, explore the questions
- What problem was the technology created to solve?
- What is the historical context of the technology? (what was going on around the time of the technology’s creation)
- What are the alternative ways of solving the same problem?
- What are the trade-offs between the other options and this technology?
Then go beyond the surface level
- Read the paper, source code, docs, etc. to learn how the technology works under the hood
- Do a crash course
- Independently build 1-2 projects with the technology
At the end of the process, summarize the key learnings in a technical note. This prevents one from trying to memorize everything. Eventually, you may forget the details of what you learned. But when a problem arises that triggers the memory of learning the tool, you can go back to the note and asses whether the tool is a good fit for the problem.