It was about the same time when I got into the amazing worlds of programming and strategy games, when I was about 16 years old.
Ten years later, I’ve figured out some astonishing similarities between them.
Of course, these two naturally go together because they all require a computer to begin with. The similarity though are the shared concepts within.
It goes without saying that both require a huge amount of brain work to strategize in order to perform well. In both worlds, strategies are formed around at least three areas: Evaluation, Conceptualization, and Materialization.
This very term applies to both worlds, and both in broad senses. For example, professional League of Legends players and teams would evaluate themselves and their opponents, backed by statistics and recent replays to identify strengths and weaknesses at scopes of individuals and teams.
In software engineering, the same should be done, except that most of the times we are just facing hard problems to solve, not the other human-beings to defeat.
Conceptualization is about forming the core visions and directions of strategies. At the highest scope of LoL game play, it applies in forms of game balancing changes, and “metagame” formation. Onto the battlefield, it involves character pick (for yourselves) and bans (against opponents) to form confident team compositions.
In software engineering, the pace of “meta” changing is rather slow, but conceptualization applies equally heavily in terms of design, architecture, modularization and more.
In games like League of Legends, materialization is the in-game portion of strategy play. It’s about placing priorities on objectives, carry protection, vision control, itemization, etc.
In software engineering, it’s about development process management, choice of technology stacks, workload distribution, tasks priorities and many more.
Or maybe, these are just my made up excuses to play LoL ;)