Strategies for Success: Lessons from Dota 2 for Aspiring Software Engineers
I recently decided to retire from Dota 2 to focus on my career.
During my peak, I topped out at around rank 300 on the North American leaderboards.
I've learned a lot of lessons during my rank climb that I've found applicable to software engineering.
The better you are, the more intentional your moves are.
Once I became highly skilled at Dota, I realized that every move the best players made had a reason behind it. And I truly mean every move.
In Dota's laning stage, a lower-skilled player would use their abilities against the enemies with weak reasoning. They would walk into lane against the enemy heroes and cast their spells randomly. There isn't much consideration for other variables in the game other than what's directly in front of them.
A professional player, in contrast, is intentional about everything. When they cast their spell, who they target, why they're casting it, where they're positioned, and what objective they're playing for.
The same applies to everything skill-based, which includes software engineering.
Junior engineers have a small scope within their projects. They might consider maintainability within the project but not across the team. They might have some design patterns in their toolbox but apply them randomly.
A senior engineer might consider the following when reviewing the junior's code: Should this code be written? Should it live in this project with this team? How does this feature relate to the business's needs? Etc.
The higher your skill is, the more intentional you are.
Knowing this should make the path to improvement in any skill clearer.