Had to re-read that title a few times? Yeah, me too.
Starcraft is a big Esports game which has it's competitors put out crazy amounts of coordinated keyboard mashing to out-mash their opponent. The main metric defining the damage they're doing to their keyboard is APM, or Actions Per Minute.
APM tells us how many mouse clicks and keyboard presses the player is doing per minute.
The average Joe will be doing around 100 APM, and while it's not the only indicator of player level, it's still a decent metric. The best of the best go upwards of 300 APM, with some going over 400 APM, especially in intense micro battles.
To give you an idea of what that means, the average person that can type on their keyboard without looking at it is going to be doing between 100 and 200 characters per minute. Now, take a look at this guy:
Take into account that the 300+ APM is used to manage multiple simultaneous in-game battles, as well as the players economy, and you'll realize that it's a lot more than just random button mashing.
Getting up to those kinds of numbers, and making those numbers win you tournaments requires a lot of practice.
Programmers and Starcraft players spend a lot of their time on their keyboard, and while the key mashing speed is not comparable, there are a few other parallels that we can draw.
The most glaring difference between someone just starting out with a computer and someone with more experience is the ratio of mouse to keyboard usage. Technically, you can play Starcraft with just the mouse, but realistically, the more you use keyboard shortcuts, the better your overall performance will be.
In Starcraft you can group your army units so they're easily selectable with the numeric keys. You can do the same for your production and research structures. Otherwise you'll be using your mouse to move the game camera, then to select the units or buildings, to then pick what to build or do with your mouse. Add that other actions like attacking and spell-casting, and you're spending a lot of time moving your mouse across the screen.
To an experienced player this is painful to watch. It's like when you're watching your computer-challenged parent copy files:
"OK, I want to copy all the photos in this folder, so I click in the top left corner and start dragging." scroll scroll scroll "Gosh darn it, I didn't mean to pick this last photo, let's start over." scroll scroll scroll
Yes, it's that bad.
In programming, it's the same if you're moving through your files, cycling tabs, saving files, running builds etc with just your mouse. By switching to your keyboard, you'll save seconds on each of your actions. And while these may add up only slightly over time, more importantly they let you focus on the work you're doing. This is why some programmers are switching to Vim and giving term keyboard warrior a new meaning.
Creating muscle-memory for keyboard shortcuts let's you focus more on your code than on navigating the UI of your editor.
If you're looking at getting better fast, you need to practice every day. Most programming beginners make the mistake of taking big breaks between code-learning sessions.
For example, if you take a break for an entire week, you're going to outright forget a lot of stuff you've learned recently. You need to keep learning every day, even if it's just for an hour or two. Of course life gets tends to get in the way but you should be actively fighting to create a consistent schedule.
In Starcraft this usually means that you'll start forgetting the more minute details of the strategies you want to use and you'll start making several mistakes. This adds up and may end up costing you the match.
In both cases, this doesn't mean you can't mix it up a bit. You could be reading strategy guides, blog posts or discussion forums to stay in the loop. Or you could watch others code or play in real-time - there's actually a lot of programmers streaming on LiveEdu.tv, although it's going to be a tad less exciting than watching someone play your favorite Esport.
Whether you're just learning or are already a professional (ie. your keyboard mashing is earning you money) surrounding yourself with like-minded people is going to help propel you forward.
In South Korea the concept of a Team House is relatively common in Esports. It's basically a frat house with less jocks and more nerds. The idea is that you're practicing Starcraft day-in and day-out, making it a full-time thing.
Of course you can do this at home, but you're going to be spending a lot more time explaining to Mom that "I can't pause, it's an online game!".
Even though you'll be surrounded with friends, you'll be less likely to just slack-off, because, at least theoretically, they take their work seriously and this is going to put subtle pressure on you to stay productive and not open YouTube after 5 minutes of practice.
Coworking is the Team House equivalent for learners and remote workers. Even if they're not all programmers and it's a mix of different types of work, like design or content-writing, the important part is that you're surrounded by people that are there to stay productive.
As an added bonus now you have someone to play a few casual games with, whether it be Starcraft or Ping-pong. You can let yourself unwind a bit and still be more productive than you would be sitting alone at home.
While Starcraft skillz don't translate directly into programming there's a lot any coder can learn from the habits of the pros. And the next time your CS teacher catches you playing Starcraft in Computer class, just tell him you're leveling up your APM!
Stay tuned for a follow-up post! Follow me here or on Twitter, @nebojsac.