What Programmers Can Learn From Starcraft Pro-gamers
Tags: programming, games, productivity
Published: 2018-02-13 14:50:56

---
title: What Programmers Can Learn From Starcraft Pro-gamers
published: true
description: Productivity lessons from professional gamers.
tags: programming, games, productivity
---

_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](http://us.battle.net/sc2/en/profile/5164266/1/Zinger/) 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](http://us.battle.net/sc2/en/profile/1786820/1/DarK/) 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:

![Keyboard Mashing](http://i.imgur.com/mKO8klk.gif)

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.

## Keyboard shortcuts up your game

![Starcraft army movement](http://i.imgur.com/Z5EI5Fd.gif)

**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.

![Keyboard Shortcuts](https://thepracticaldev.s3.amazonaws.com/i/9rcmksjk32bdnkd9ln83.jpg)

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.

## Consistency is key

![Github streak](http://enetdown.org/outgoing/posts/2016/06/19/gfx/github-streak-1000-days-20160322.png)

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](https://www.liveedu.tv), although it's going to be a tad less exciting than watching someone play your favorite Esport.

## Team Houses keep you motivated

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.

![Team House](https://i.imgur.com/tg3Wm.jpg)

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](https://www.youtube.com/watch?v=dQw4w9WgXcQ) 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.


## Conclusion

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!


## References:

* [_Team Houses and why they matter_](https://www.eslgaming.com/article/team-houses-and-why-they-matter-1676)

* [Image of Github streak taken from http://enetdown.org](http://enetdown.org)

* [LiveEdu.tv](https://www.liveedu.tv)

* [Keyboard shortcut image found via Google on appletree.or.kr](https://appletree.or.kr)

* [Starcraft recently became Free 2 Play, if you like RTS games, grab it](https://starcraft2.com/en-us/)

* [The best place to ~~argue~~ learn about Starcraft is on Reddit](https://www.reddit.com/r/starcraft/)

_Stay tuned for a follow-up post! Follow me here or on Twitter, [@nebojsac](https://twitter.com/nebojsac)._