Function Vs User

I’m at the end of our 3rd week of my coding bootcamp and I’ve been wrestling with an ugly spectre from my past. How to balance quality of product against a looming deadline.

A Little History

My friend Sherman and I ran a tiny game development company for several years and built an online space strategy game - Tales From The Strange Universe.

One of my biggest takeaways from my time on TFTSU is how big a distance there is between having a program that is fully functional (all features implemented and work) and having a program that is actually usable. Can my tech friends sit down and understand how to navigate the features? Can they see all the options, select one, and be walked through completing it without confusion?

Okay, now how about my mom? Or a 10 year old? Or just my non-tech friends?

Over and over, it hit home that functionality isn’t nearly enough. The difference between a happy user and a user who never comes back is about 30 seconds of confusion.

Assignment: Build A Game

Imagine my glee when our instructors gave us an assignment to build a text adventure game. We were to build it using the Python coding language. No frills. Just something that you can run in a terminal.

For those of you who didn’t grow up playing Hitchiker’s Guide To The Galaxy, a text adventure is a game with no graphic elements. All you have is a page with text and a command line that you can give orders from. “Look”, “move south”, “talk”, “help”, etc. Or even just “1”, “2”, “3” to choose options from a menu. Text adventures are typically laid out much like the old Choose Your Own Adventure books with branching story lines driven by user choices.

Our assignment had a very simple requirement set.

  1. Work.
  2. Progress through a few rooms.
  3. Have some form of interaction with someone or something in the game.
  4. Have a winning scenario and a losing scenario.

This is when a demon from the outer ring of the 7th level of hell (home of violent murderers and game designers) possessed my body and took control of my mind.

Sure, It’s Pretty…

I spent most of the first week wrestling with layout and flow, sub menus, action confirmations, and screen layouts.

At the end of this, what I had was a very pretty, very usable program that would let you choose a player name and describe the first room you find yourself in.

No other features. But wow, did it look nice. And then it was due.

A Better Balancing Act

This seems to be a straightforward lesson. Build the basic features first. Once they are working you can improve usability after.

My mind balks though. 30 seconds of confusion and the user walks! Usability IS a basic feature!

But what good is it if the program isn’t complete?

Clearly, I’m going to have to find a balance between the two. What I’m looking for is a good structure for my basic features that allows me to expand usability functions later - a design that allows growth without having to rewrite my code from scratch.

I don’t know enough yet to know what that looks like. But I’m working on it.