Level System & Core Philosophy
You're probably wondering what is up with the odd level naming system and what the letters stand for, and why the pages of this guide are so hard to navigate to prevent skipping. This overall guide is not just another tutorial. It's meant to be a solution to a larger problem that plagues the software industry job market. In order to clearly explain the nature of this problem and the overall philosophy of this guide, I first need to present and explain another problem.So let's talk about Starcraft 2, a competitive multiplayer game which was released as a trilogy by Blizzard Entertainment. The first installment of this trilogy, Wings of Liberty, was released in 2010.
Starcraft 2 was highly anticipated and experienced great success upon its release. While it has a single-player mode, its most popular feature is 1-vs-1 online competitive play. The specific rules of the game don't quite matter for why I'm bringing this up. However, the way pairs of players are matched together to compete is important. To start a game, a player presses a button that simply says "Start game". The player sits there for a few seconds while the server searches for another player somewhere in the world who is also waiting to start a game. When the server finds another player, it matches them together and starts the game. They play. One person wins and the other loses.
While there can be some amount of luck involved with Starcraft, for the most part it is a skills-based game. A highly experienced player will almost certainly win against an inexperienced player.
Now imagine if the pairing system was completely random. This would be frustrating for new players as they would certainly lose every single game. There would be no opportunity to learn or experiment with what works well and what doesn't. Players would leave and the game would die off. That's not good for business. Therefore Starcraft, like many similar 1-vs-1 competitive games, implements something called a Ladder.
Each player's account is given a score called an MMR ("Match Making Rating"). When you win games, your score goes up. If you lose games, your score goes down. When you start a new game, the server pairs you with someone who has the most similar MMR score. Basically it sorts the players by skill level. After playing several games, your MMR naturally adjusts to a reasonable level such that you're roughly guaranteed to win about 50% of your games. New players get paired with other inexperienced players. Highly advanced players are paired with worthy opponents.
As the MMR scores of all player profiles create a wide range, names are given to specific ranges. The names of these MMR ranges are called leagues and have the following names: Bronze, Silver, Gold, Platinum, Diamond, Master, Grandmaster. These leagues are further partitioned into 3 tiers for finer granularity. For example, Diamond 3 (lowest), Diamond 2, Diamond 1 (highest). Why the granularity? Because it's pretty satisfying to see your improvements rewarded with a dramatic promotion screen and a new shiny badge on your profile.
This ladder/league system creates a mostly fair system. Mostly.
As previously mentioned, this game was released in 2010 and was highly anticipated. There were many players of all skill levels. The next two installments of the Starcraft 2 trilogy were released in 2012 and 2015 but for the most part, this did not attract that many new users to the game. Like most computer games, many players stop playing after a while, but some players are die-hard fans and keep playing to this day. This created a flaw with the league system.
Since almost all players had been playing for several years, the Bronze and Silver leagues were no longer the league for new, inexperienced, or casual players. These lower leagues became fairly competitive as well, at least from the perspective of new players, who get frustrated fairly quickly and generally leave, stifling growth of the user base.
Even people who have been playing the game for years are unable to rank up through the ladder and get to Gold or Platinum, unless they have a particularly unique knack or talent. This created a bit of a skill chasm in the game. Those who fundamentally understand how to play at a high level and those that are stuck on the bottom end of the leagues.
An unrelated thing happened in 2010: everyone decided it was a great time to learn to code and get jobs as software engineers. The number of software jobs available exploded around this time and salaries were ridiculously high. Hiring couldn't keep up and this created a proliferation of coding bootcamps to churn out people that knew just the very basics of software engineering to fill the demand of companies that just needed the basics.
Software job interviews are a ranking process where several candidates compete and are ordered from best to worst. In fact, the entire job market is like one giant ranking system where only those above a certain league are able to secure jobs. As dark and hopeless as that sounds, it is useful to think of it as the same as Starcraft's competitive ladder system, because it has the same problem caused by the same reasons.
Most of these software engineers are still employed today, but the number of jobs hasn't grown quite as fast. This previous generation of coders have been building their skills this entire time and they aren't retiring any time soon. Bootcamp and even University graduates are not experiencing nearly the same success as their predecessors. The expectations of new hires feels impossibly high for people who are trying to break into the industry. And yet, these positions with seemingly impossible expectations get filled. Much like the Starcraft ladder, there is a skill chasm, and those in the somehow-highly-competitive lower leagues are stuck there. Jobs are always given to those that are able to break past a certain point on this ladder.
Purported solutions to this problem include the following adages that you may have heard: "Make a project", "Go practice leetcode problems", "Take a course on data structures and algorithms". These rarely seem to make a difference nor fundamentally improve the quality of your core skill set, and feel like a waste of time. Without having actual experience, it's difficult to gain more real experience. People are just stuck.
Starcraft 2 is now an old game. Blizzard Entertainment maintains the game but does not invest any more effort to fix its problems. Why would they? An increase in future profit is unlikely with a game this old. In much the same way, companies are still able to fill positions and have no incentive to fundamentally do anything about where their new hires come from or what kind of experience those entering the job market have. They have no reason to change as there is no benefit for them.
Similarities between Starcraft 2 and the software engineering job market:
- Same type of skill-based measuring and ranking system
- The skill and experience demographics follow the same historical pattern
- Both occurred along the same timeframe
- Both ran into the same problem
- Neither problem is being fixed by the companies that impose this system.
When this "skill chasm" problem became more pronounced, there was a proliferation of tutorials that followed a specific format called Bronze to Grandmaster. What made these tutorials special was that they recognized that players within certain leagues were not just "worse" or "better" than players in other leagues, but that they were doing things fundamentally different. They approached problems differently and had different priorities. Once a player mastered a specific set of skills, they would generally rank up into the next league, which would require mastery of a fundamentally different set of skills to progress. Trying to master these skills in the wrong order would not lead to any success as the more important problems and priorities were not being satisfied. These guides would clearly identify the skills required not just at each league but also at each tier of each league and actively instruct players to ignore the skills required at higher leagues and tiers as those only served as distractions for measurable improvement and long term success.
In other words, there's a very small chance that broad context-free advice that worked for someone else might be good advice for you. But there's a larger chance that it's useless at best and actively harmful at worst. Context of your current skill set is everything. If someone tells you to "practice leetcode problems" or "make a project", it is unlikely that this is actually what you should be doing to improve.
This guide is intended to be the Bronze-to-Grandmaster tutorial of software engineering. It is an ordered list of skill mastery that are necessary to progress forward. In essence, it is the written list of the unwritten rules. Skipping skills and attempting to learn things out of order may produce short term results, but ultimately you will be trapped at the same level longer than necessary. Even if you're familiar with the types of skills listed for each level, it can still be useful to start from the beginning to understand how to fundamentally think about problem solving and demystifying concepts that were presented in a compartmentalized or hand-waving way. If you truly understand the skills at the lower levels, you will move through them quickly anyway.
The software engineering job market is brutally competitive. It has notoriety for being unforgiving, unfair, and unpredictable. And yet, there are those at the top that experience success and the few that are able to break across this barrier. Every competitive scenario has a set of basic rules for how one competes, whether it's a game or a job interview. These written rules are simple: don't cheat and try your best and the best candidate will surely prevail. But it's the ones who understand the set of unwritten rules that win.
Is labeling people with skill leagues bad or demeaning? There is a tendency to ascribe an unforgiving and unpredictable system as being full of gate-keeping and elitism. This isn't an entirely wrong assessment because there are clearly many who stand to benefit by making sure those who are at the top stay at the top. In the context of a bronze-to-grandmaster guide, a label for a skill level is not about keeping those at the bottom at the bottom. It's about clearly identifying the skills necessary to move to the next level. It's about avoiding harmful gimmicks that claim to be shortcuts. It's about navigating the noise and understanding problems in the context of your own journey.