Is Software Engineering a Game of DotA?

I've recently learned from Chao Qin about an analogy that compares Software Engineering to DotA.  It sounded outlandish at first, but upon closer examination, these two activities shared striking similarities and I'll try jot them down. (For those of you who's never heard of DotA, this article is probably very hard to understand. In short, DotA is a Role-Playing Game (RPG) where players of two opposite teams farm gold and level up, eventually try and destroy the opponent's base. )

1. Farming (DotA) = Tasking (Software Engineering). DotA players will try compete for last hits on endless lane creeps in order to gain gold and experience. They occasionally take on jungle creeps to collect bigger rewards. Software engineers finish small tasks streaming in everyday to gain experience and earn salary, while occasionally take on side projects or participate in "Hackathons". 

2. Change lane (DotA) = Switch team (Software Engineering). DotA players might find it helpful to move to another lane in order to farm quicker and safer, while software engineers might have an urge for switching to another team. 

3. Level up (DotA) = Promotion (Software Engineering). DotA heroes level up by cumulating experience. Software engineers become more and more proficient until getting promoted to the next level. 

4. Pushing (DotA) = Big Rock Project (Software Engineering). In DotA, each team's main objective is to snipe enemy heroes, clear enemy creep waves and eventually take down enemy buildings. When an enemy tower goes down, every player on the team is rewarded with the one last-hitting getting the lion share. Similarly, finishing a Big Rock project in the software engineering world is what keeps the team moving forward. If the project is successful, the whole team will receive the credit while the engineer leading the project normally gets the most applause. 

5. Team Lead (Dota) = Engineering Manager (Software Engineering). Whether it's during pushing, ganking or team fights, a DotA team requires a lead player to actively provide guidance and issue orders while fighting within the team. In a tech company, engineering managers are responsible for supervising engineers, overseeing product development and "code 30% of the time" (Eliot Horowitz, founder of MongoDB).

Do you agree with my list? What analogy do you have for your line of work?

Originally published: https://www.linkedin.com/pulse/software-engineering-game-dota-maxwell-zhou