Get Good At Learning

When I think about the most impressive and impactful engineers I've worked with the most common trait they share is their ability to learn. It's not just that they have deep technical knowledge in useful areas, though they often do, it's that when presented with a problem in a new area they're able to approach it and gain enough understanding to come up with a good solution.

So how do you get good at learning? While this is a huge topic that fills entire academic disciplines there are some basic things you can do. When approaching an unfamiliar problem or codebase you can approach it like a scientist; take notes, make hypotheses, test them.

Get good at forming questions and use what you already know to compare and contrast with the area you're learning about. If you're trying to better understand NoSQL databases, think about what you know about traditional SQL databases and figure out what is the same and what is different. Use coworkers, online resources, or even chatting with AI agents to confirm your understanding of these new concepts.

This is where learning becomes a virtuous cycle. The more you learn, the more information you have to use as a basis for analogy and contrast.

By it's nature, software development involves encountering a lot of novelty through unique problems and ever-evolving technologies. Being able to approach a new system and learn enough to make good decisions about it is the foundational skill of the field.