On Feature Creep And Spec-Sheets

So I’ve been working on a project relating to Bungie’s game Destiny and it’s been an interesting project and process so far.  It’s my first project of this scope and size, and it’s also a project I’m not getting paid for (both because I’m an idiot and because I like a challenge).  I’ve learned a lot so far, especially about PHP Objects, Laravel (because my roommate won’t shut up about it [Sorry Nick], but it does sound really cool in his defense so I get where he’s coming from), CSS, and Javascript.

Reader beware, you’re in for a scare.

All that being said, there are two things I’d like to caution people about:

  1. (Schemers) Have A Spec Sheet
  2. (Back End API Designers) Make a rational API please
  3. (Developers) Get A Spec Sheet
  4. (Both) Stick to the Spec Sheet

I say this because last Thursday I was all set to roll out a basic design to test a part of the project – this was suddenly stonewalled by a change to the Spec.  The change in the Spec was because I didn’t communicate well with the project vision of the person who came up with the idea.

That is to say: I thought it was going to be A, but it turned out to be B.  Mea Culpa (but kind of on them too).  I made a few sample missions, ones that could follow arcs and the like.  I showed it off.  People seemed happy.

Then they sent me a huge quest line.  I looked at it.  I looked at my Spec sheet.  None of it was on there.

I thought we need to track X, Y, and Z.  Turns out we need T, U, V, W, X, Y, Z, and sometimes A, B, C too.  A, B, C: I don’t even know that I can track.  T-Z: sure, I was already doing W, X, Y, Z.  I knew how to do T, U, V.  Just hadn’t implemented it because I didn’t think it was going to be involved.

So I ripped the whole thing apart and started again.

And here we are.

Back to the drawing board.

I mean it looks good so far.  The design has changed a few times.  I just added the Ghost icons (which change to the Ghost Shell you have equipped once you select a character) which I thought was a neat little touch.

I need to work on adding more stats.  I also need to keep track of the gear people have, which is going to be a little tricky I think… But I am figuring it out.  I think.

This is a bit larger in scope than I had planned.

If it takes off as much as I think it might, it’s going to have to leave my little Digital Ocean droplet, for sure.

I mean, realistically, it should move off that period because reasons.

The moral of this rant is to stick to the spec sheet.  The spec sheet is god.  Work on the spec sheet to the letter.  Present the product.  Change as necessary.  Iterate like that, instead of iterating at each step.  Or you’ll end up at feature creep like I did.

Don’t get me wrong, I am loving the project.  I get to write snippets like these:

$items = $data->Response->definitions->items;
$aCharacter->EquippedItems = $items;
foreach($items as $currentItem){
    switch($currentItem->bucketTypeHash){
        case 4023194814:
            $aCharacter->GhostIcon = $currentItem->icon;
            $aCharacter->GhostName = $currentItem->itemName;
    }
}

It’s fun, it’s entertaining.  I am learning a lot.

But it’s going to take a lot longer than expected to get this working the way I think it can work and how they want it to work.

Compromise.  That’s the name of the game.

Actually the name is Destiny, but that’s neither here nor there.

-M, out

Leave a Reply