Saturday, November 29, 2008

Allow me to break the ice. My name is Freeze. Learn it well. For it's the chilling sound of your doom.

If you don't play World of Warcraft I'd suggest skipping this post. It probably won't make any sense.

I have a Death Knight on the server Ravenholdt. After starting as 51/0/0 spec I decided to experiment. I liked the longevity the build brought with Rune Tap, MoB, VB but the build wasn't very exciting. I was having a very hard time finishing in PvP and just wasn't seeing the numbers that I wanted.

I read the wowinsider and wowwiki posts on builds and thought that x/x/31 was going to be the way to go for me. I've always enjoyed pet classes and the perma-ghoul / gargoyle combination looked perfect for me. On a lark I decided to try Frost just because no one seemed to like it. It was considered the tanking tree. The tree looked a little bloated and lacking in flash.

No increased self-healing, no perma-pet, and what looked like a bunch of defensive abilities. I will still say that I don't get a lot of use out of Unbreakable Armor or Lichborne. They come in handy when soloing elites, and definitely in trying to gain the edge in 1v1 PvP. They won't stop an assist train, but they will slow it down. Combine with Icebound Fortitude and Anti-magic Shell and you can take a beating for a while.

So, if this is all that Frost has going for it, why am I so ardently dumping points into the tree (I'm 0/57/0 at the moment)? I'll tell you why. Crits. Crazy Crits. Huge Crits. Controllable, On-Demand Crits. That isn't all of course. Howling Blast has become my bread and butter. Frost Strikes is a much better runic dump. But what really draws me is seeing the big numbers coming rolling up. Oh and the 10 second AoE Crowd Control doesn't hurt.

I tried going to 0/0/5x. I really did. I even got Anti-magic zone. I got the perma-ghoul. But, the numbers just weren't doing it for me. I'm sure my rotation was miserable and sub-par. I'm sure I didn't understand the talent/ability synergy. I didn't get how Scourge Strike was anything good at all. In the end I don't care. I'm addicted to my big fat crits.

Admittedly the power hasn't grown much. I was getting the rare over 2k HB crit at 62. Now I'm still not breaking 2k by much. Maybe I need to update my gear. Maybe I've passed the heyday of Frost. Maybe the Frost Resist of things in Northrend will drive me to try a 3x/0/2x Hybrid. (I know that trying to fight water elementals as Frost was the most frustrating thing I've ever done on Waltyr)

I certainly hope not.

Process Improvement

I used to think Process Improvement was a meaningless buzzword phrase.

On more reflection, most buzzwords generally seem to come about because of a good idea however that good idea gets lost when people don't understand the core idea. They try to slap it on like a band-aid and put some semblance of the idea into practice.

For instance, with process improvement, it is easy to say "Checklists improve performance, therefore let's make lots of checklists and force people to use them". Another example would be "Statistics help us understand what we're doing, so let's go get tons of statistics."

What it really all comes down to is quality. We want to improve quality and or maintain costs. This improves the value of whatever it is we are working on.

In my job I have implemented some checklists in my programming routine. Every time I get a new assignment I create a workspace, a set of other checklists, a design document on the wiki, a test plan on the wiki, a notes file, and I take control of the assignment. This helps me get organized and guarantees that I approach every problem consistently. I am programming myself to respond to a common problem with a good response.

My boss gave me a performance review last year and one of the things he mentioned was a problem I had been having with a certain aspect of coding. I was occasionally leaving debugging information in the code. This is sloppy for a number of reasons that I won't go into.

I now have two new checks in place in my checklists because of this. I check the file diffs and I rerun the software immediately before committing it to version control.

So, I made a checklist. The checklist itself didn't help me, it is that I have the right checklist. How did I make the right checklist? By using feedback from my boss. I'm making a specific change based on a specific problem. The issue I see in plenty of places is that people implement broad shotgun-like changes and expect that to fix everything.

Specific issues I have fixed:

I never send out an assignment without a test plan. The solution was to always create a test plan before starting work on the code. Specific problem. Specific solution. This helps in so many other different ways.

I never send out an assignment with debug code still in it. I'm proud to say that since my review last year I have had no assignments returned because of debug code. The process works. Put in the checks and force yourself to obey them. If you don't rigidly obey the checklist you might as well not have it. It definitely makes things slower, but it improves quality and that is worth the tradeoff.

I will occasionally spend 30-40 minutes setting up everything for an assignment only to spend 10 minutes researching the problem to find that the solution is something as simple as retranslating a file. It sounds like I wasted 30-40 minutes doesn't it? However the time I save in all those other cases where by habit I've ingrained this discipline more than makes up for the time lost on the rare easy assignment where the checklist is overkill.

In the end my opinion from the last year's work is that rigid adherence to quality control wastes time in the short term sometimes, but in the long term it pays large dividends.

No more having to read assignments again a month after working on them because I didn't write a test plan when I wrote the code.

No more having two or three extra revisions causing version control conflicts because of left in debug code.

No more searching through unorganized text files for information on an assignment's progression. Just look at the checklists and you can know what stage it is at.

While "work smarter, not harder" can definitely be an over repeated, nonsensical phrase for some people you can actually improve your work process. It requires critical thinking to identify weak points and coming up with solutions that can be easily implemented. A thorough systematic approach is the best way to improve your quality of work.

Analyze Thoroughly.
Document Specifically.
Implement Consistently.

Purpose

I'm starting a new blog. The old one was very infrequently updated and I'd like to start from scratch.

This blog will function as a collection of random thoughts and a place for me to muse.

Feel free to respond with comments.

I will guarantee at least one new post every week. I will be trying to make a habit of organizing my musings at least once a week.

There may be philosophy or technical musings.