The Zen of Warcraft
There seems to be a deep divide between those that think that our classes’ rotations have become too complicated ((AKA “Button Bloat”)) – and thus welcome the upcoming changes to our rotations in WoD, and those that think that reducing the count of abilities is somehow “dumbing down” the game ((AKA “elitist jerks”)) and thus are very annoyed at the upcoming changes.
This is not a topic with simple answers. I’ve tried, multiple times, to explain my thoughts on this topic in a venue in which I feel is ill designed for such discussions – that being Twitter. In fact, I have in the past unfollowed people that absolutely refuse to take long, wandering Twitter diatribes and put them in a blog post where they can actually sound semi-intelligent ((Every one of them being people with mostly neglected WoW blogs, by the way.)). Since I can’t unfollow myself, I have no choice but to go the blog route, or never speak to myself again.
Part of my day job is being a programmer. I am, when I program, primarily a Python programmer. Python is a beautiful, productive, and exceptionally fun to work with programming language that has, at its core, a set of principles that all programmers should heed, even if they aren’t programming in Python. To wit:
>> import this ((Yes, if you open the Python interpreter and type “import this” you will get exactly that output.))
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Special cases aren’t special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one– and preferably only one –obvious way to do it.
Although that way may not be obvious at first unless you’re Dutch. ((The inventor of Python, Guido von Rossum, is Dutch. He’s kinda our Linus Torvalds.))
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it’s a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea — let’s do more of those! ((Yeah, that one’s hard to explain if you’re not a programmer, and if you are, you probably already get it.))
Okay, the part I want to draw your attention to is this.
Simple is better than complex.
Complex is better than complicated.
The idea here is, simple code is easier to maintain than complex code, and maintainability is everything in the software world. You may not be the next person to work on this code, for example, so think of the next programmer in line. And, as a famous saying goes, “any code that you haven’t seen in six months might as well have been written by somebody else.” In this case, the next person might be YOU.
Of course, there are times that complexity can’t be avoided. If your web server wants to support multiple web browsers, for example, you need to bake a little bit of complexity in to cater to specific requirements of various browsers. You can do complexity and still uphold maintainability if you do your job right.
But complicated … well, there we lose the thread. Maintainability goes out of the window. You need a roadmap to even keep track of your own code. Often, you end up guessing because keeping track of it all just wears you out. Want a good example of complicated? Log in to Facebook using any browser you can get access to, including obsolete ones that nobody else supports. They’ve baked more than complexity into Facebook, and it shows, every time you use it. Often it even corrupts modern browsers to keep it open too long. It’s so complicated that it even damages the internet – not intentionally, mind you – because there are parts of it that are just harmful and broken.
How’s this pertain to WoW? Well, it’s all about the difference between simple, complex and complicated.
Let’s shift gears for a moment. One thing I was taken to task for was expressing that I missed the old, pre-Cata talent trees. I was called on this, “You claim you want to reduce the number of abilities but you want the more complicated talent trees! Hypocrite! LIIIIIAAAAR!!!!1”
But that’s just not comparing things fairly.
You’re gonna point and laugh at talent calculators, aren’t you? AREN’T YOU?
The old talent trees, for all their complexity, gave flexibility. You could put together a Holy Hybrid priest that was 3/4 Disco and 1/4 Holy that pretty much was indestructible and pretty good at healing, to boot. You could create a “Shockadin” that utilized elements of Holy and Ret Paladins ((See here for more good examples if you care to read it. I think you should.)). You could do a lot with a complex talent tree that was useful and functional.
Button bloat, however, offers none of that.
First of all, unless you get really clever and complicated in your keybinds, you have around twelve abilities that are easily available – or if you’re like me, maybe sixteen ((I cheated.)). The rest are going to always be a stretch to find and use. Adding more abilities just makes this worse. You weed out those that have no immediate purpose, and maybe don’t bind them at all. Maybe they stay in the spellbook.
What’s the difference between twenty unused talents and twenty unused abilities? Probably that the unused talents have the potential to actually be USED. But chances are, if your spec has twenty abilities that you don’t use, they’ll NEVER be used.
Once you go Warlock, you’ll never go back.
It would be a whole different story if you had twenty extra abilities or spells that you might use as effectively as the twelve you have bound currently, but those twelve are bound and those twenty are not for a reason. Those twenty unused talents, however, have probably some chance of being used at some point if you want change your build. But no matter how hard you want, you won’t change the effectiveness of those ineffective abilities.
There’s an obvious fallacy here, though.
The astute reader might realize that I’m not exactly comparing equals. I’m comparing twenty potentially useful talents to twenty mostly useless abilities. That’s because of the source of what I’m comparing – I’m comparing the state of talents at the end of WotLK to the state of abilities at the end of MoP. That’s not entirely fair, but it is the hand I’ve been dealt for this discussion.
Obviously, the answer to the twenty useless abilities is to get rid of them and replace them with twenty useful abilities, right?
But here’s the one glaring difference between abilities and talents. Abilities are in your face, on your ability bars, and used in real time. Talents are not, except when they actually “produce” an ability. But for the most part, you choose your talents, you adjust your rotation appropriately, and for the rest of the expansion, they’re out of your face.
In the end, I stand by this. Lots of talents ((And/or glyphs, and/or stats, and/or gem sockets, and/or weapons, and/or armor.)) gives you the ability to fine-tune and individualize your character without necessarily causing your contribution in (raiding | PvP | cooking) to suffer overtly. But too many abilities can get in the way, make your life more complicated, make it more difficult to contribute to your favorite activities.
Well, naw, that’s pretty much a fallacy, too.
Let’s be honest. Your rotation will be whatever you see on Icy Veins.
And what will they tell you? Of those 50 abilities you have, here are the handful that you must use. And those others? Use them at the ren faire. Maybe somebody will applaud.
For the most part, the same applied to talents back in the day, except that instead of one true way to use them, there were multitudes, often dependent on levels and gear and what you wanted to do with your character. In terms of abilities, however, you have one of three tasks, now – DPS, heal, tank. And there will be probably two rotations – single target vs multi. And that’s pretty much as you’ll ever get from abilities now.
I fail to see the virtue of twenty good extra abilities when there is zero chance that they will be used. Twenty extra good talents, however, have potential to be used, without getting in the way.
The difference between the two is the difference between complex and complicated, and it’s all the difference in the world to me.
Your keybinds, your ability setup, your macros, that all amounts to the same sort of package as the average software project. You have to set it up, maintain it, use it. If it’s an unpalatable glop of buttons and half-hidden macros, I doubt the author is performing to her or his potential. Unlike a complex talent tree, you don’t have the time in the midst of battle to go looking for stuff or reading up on Noxxic when you forget just what the proper set of mostly unused actions are that you need for this particular situation (whatever that is). The more towards simplicity we go with this, the more towards goodness. Let’s move the complexity where it belongs, which is to say, not in the real-time aspect of the game.
So, no, I’m not talking out of both sides of my mouth on this topic. I see a substantial difference between a rich talent tree and button bloat. I’m not a big fan of the current talent system, but even less of a fan of having a dozen abilities I’ll never use.
Maybe I can’t bring other people to see that difference, but at least I didn’t leave it in Twitter.
And the Zen of Python? Maybe Anaheim should think about adopting it as a core principle as well. The Python runtime achieved a Coverity defect density of .005 this past year ((I know, you’re thinking “This means what to me, exactly?” Trust me, from a software engineering perspective, it’s a very good thing!)). A culture that eschews complexity – while still allowing for it when necessary – seems to work out to high-quality software, something that impacts anyone that uses it.