I have been putting together a course for beginning game designers. It’s called Design a Game, and it‘s a perfect way for anyone who wants to start making their own games to get started.

The first part of the course answers the question, “What makes a winning game?” My answer is that all great games are fun to play. That begs the question that you clicked on to read this post. Namely, what makes games fun?

In the course, I describe a set of qualities that make games great. One of those qualities is improvement. Great games allow players to get better at something, presenting rewards and unlocking further advancement when they do.

Yesterday, I found an article that describes the concept of skill chains. Imagine that every attainable skill is an atom, a self-contained building block of something a player can learn to do. That “atom” can be used to achieve higher-order skills, which in turn can be used to learn more skills.

According to the author, it’s the process of gaining skills that makes games fun. Everything else is secondary.

Here’s an example. Back in the 80s, Apple introduced Apple Panic. The game featured a simple 2D world with crazy, man-eating apples running around, and you with a shovel. You could dig holes in the floor, and if an apple fell into a hole, you could smash it over the head a few times to kill it.

So there were two things you could do with the shovel: dig and smash. To activate the shovel, you pressed the spacebar. That skill is pretty easy to acquire. Want to dig a hole? Hit the spacebar. What to smash an apple stuck in the hole? Hit the spacebar.

Now, is that one skill or two? For argument’s sake, let’s say that smashing is an advanced form of digging. After all, you have to dig holes first. Then you have to learn how to get those pesky apples to fall into a hole, and to be close enough when it happens to start smashing it. Smash too late, and the apple wriggles out to eat you.

Skill chains for Apple Panic

Apple Panic had a few other skills to learn. The movement skill was pretty easy to acquire, too. Just use the arrow keys to go back and forth on a level or up and down ladders.

Avoidance was a more advanced form of movement. You didn’t want to get stuck between two advancing apples without enough time to dig a hole on one side or the other.

Finally, the crowning skill was learning how to coax an apple into a hole by jumping into it yourself. The attacking apple would follow you down and get stuck, as you sailed on through to the next level down. Then you’d have to run back up quickly enough to smash it before it escaped.

Fun stuff. I remember having a blast in the computer lab.

In those days, time at the computer was precious. Yes, boys and girls, there was once a time when a “personal computer” was a new concept and getting 20 minutes to play a simple game like Apple Panic was pure heaven.

As a result, I never had a chance to get bored with Apple Panic. Regardless, acquiring skills is clearly a big part of the fun of playing games.

As for the claim that everything else is secondary, I have a different take. The blend of a number of qualities is what’s important, and acquiring skills is just one of them.

If you want me to write more about this topic, show me some love, and clap a few times.

At most software companies, that’s called normal. Software development is a blend of science and art, where the normative state is for things to be at some level of disarray. Even the best teams are composed of people, and everyone makes mistakes. Besides finding the balance between crossing every ‘t’ and releasing sometime this century inevitably leads to shortcuts.

Assuming you do everything correctly, you will still end up with a pile of code that is not structured correctly for some future demand. As long as you are successful, you will have many future demands. More likely, someone else will have demands to satisfy on your pile of code. It’s tough to jump into another person’s art and “take it from there.”

So given the way things tend to go in software, the mess I stepped into was not too surprising. In fact, it was a great time to be hired because there was a serious problem to solve, which gave me a chance to be part of the solution. Also, the management was committed to do the right thing, even if it meant (as it turned out) taking a year to overhaul the architecture. Kudos to the management.

Through that year of intense development, I became an expert. While we were pounding the software into shape, my enterprise software expertise was forged. I wasn’t alone. That experienced turned out a dozen experts who went on to lead other initiatives and teams.

That’s one way to become an expert. Take on a difficult challenge and see it through. By being directly involved, you gain knowledge and insight that no one else has. Congratulations. You are now the go-to person for maintenance issues and sales people who want to push the limits of what they can promise customers.

That’s expertise.

When our year-long recovery project was over, we decided to fix our development process to avoid the mistakes that caused the architectural problems in the first place.

Despite preaching agile to customers, the development team was following textbook waterfall development methodology.

Write a complete requirements document.

Hand off to developers to implement their interpretation of the requirements.

Hand off to Quality Assurance testers who immediately would find ambiguities in the requirements, bugs in the code, and gaping holes where entire features were missing. Turns out that some of the features were deemed “stupid” by the developers, so they didn’t bother putting them in. They also didn’t bother to tell the PMs about it. They were avoiding a fight, or at least deferring it.

Kind of dysfunctional.

So we decided to adopt an agile methodology. That’s with a lowercase ‘a’ to emphasize pragmatism over dogma. Agile was in its early days, and we needed an expert to show us the way. Luckily, a leader of another product team was said to be an agile guru. For the sake of the tale, let’s call him Bill.

Bill is the kind of expert that is book smart, and he loved to preach things by the book. The problem with Bill was that he wasn’t great at following his own advice. That’s because pure methodologies tend toward being impossibly perfect, and perfection is unattainable.

The same is true of design patterns. They show how to put together some code for a certain effect, but they leave out what to do at the fringes because they’re just patterns. Not instructions on how to assemble the whole quilt.

Bill was the kind of guy who would spend hours and hours reading up on the latest theories, which is how he became a “guru.” He just never applied the knowledge to see if it really worked. Often in a follow-up discussion with Bill, I would learn that what used to be an “essential” step in the process was now considered to be an anti-pattern, something one should avoid at all costs.

Bill is a bleeding-edge, book-smart expert. He stays up with his reading while you fall behind trying to follow his advice.

That’s not a total knock on Bill. There’s value in being pointed in a good direction. We were able to extract a pragmatic approach out of his purist advice without too much trouble. That new process served the team well for many years.

Another way to be an expert is the fake-it-till-you-make-it way. That takes chutzpah or nerve to boldly declare that you know the best way, while your confidence is based more on optimism than expertise.

Hey, I suppose I have used that strategy to reach some of my proudest moments. At that same company, I led the charge into cloud computing without quite knowing how it would turn out.

The cloud became an obvious thing some six or eight years ago. At that point, Amazon had been working on their API-only strategy for a decade or more, Salesforce opened its APIs and hosting with sforce, Google was installing data farms for its cloud offering, Microsoft had Azure going on. The skies were dark and stormy with so many cloud solutions overhead.

Meanwhile, our company was still debating it. Success makes one cautious, so having a debate was not unreasonable. But at some point, it’s time for action. So a few of us charged ahead, and as a byproduct, we became the experts in cloud-based software development.

That’s chutzpah, with a ‘khuh.’

Chutzpertise!

Now I am at it again. I left that company and have been working toward starting Happy Spirit Games for online games and training. Play as you learn. Learn as you play.

What do I know about games? I have been working on my own games in my spare time since I was a teenager back in the 1980s. Nothing too fancy, but good enough to play. I even sold a few copies of an original that I wrote in the mid-90s for Windows 95.

After that, I got busy working on “business solutions”: information systems, online advertising, insurance platforms, and so on. All very important. All very serious. I used my game coding time as a way to keep up with technology that was too experimental for work. Once I became a big-shot manager, I used it to keep my coding skills reasonably current.

But now, through an act of sheer chutzpah, I am a full-time game and course producer. My first game is StoryTime — and I will warn you that it needs a major overhaul. Still, it’s playable and you might enjoy poking around on it, if only to spark some ideas of your own, or for future bragging right that you got to play the original.

My first course is called Design a Game, and it’s almost ready. The course is designed to help beginners get started with game design. For anyone starting out, taking the course is a great first step toward becoming an expert in your own right.

Since you are still reading, here’s a quick recap of how to become an expert.

Spend time solving a major problem. By the time you are done, you’ll be one of the leading experts in that solution.

Read incessantly, always staying up on the latest thinking, even if it turns out to be a bad idea. No one will fault you too much for being ahead of the curve.

Apply chutzpah, or nerve, or guts and imply that you know more than you do until you really do know more than you did. Ha. This way is the most fun.

A few years ago, I read The 4 Hour Workweek by Tim Ferriss. The book tickles my get-rich fancies by defining a new category of rich, aptly named the “New Rich.” While few get to be as wealthy as Daddy Warbucks, no one really needs that level of opulence and control. Anyone can become one of the New Rich by earning enough to live comfortably while gaining control over your schedule. Okay, sign me up.

One of the key ideas of the book is to take mini-retirements throughout your career, rather than the traditional approach of saving it all up for the end. You never know if you’ll make it to 65, let alone whether you’ll be healthy enough at that point to enjoy yourself. Lots of people work too hard and drop dead in the first year of retirement. So the advice is to arrange a few breaks along the way.

Tim claims to have coined the phrase “mini-retirement,” and the first time I came across it was in his book, so I believe him. Of course, he earned himself a mini-retirement by writing about them. Smart guy.

So that notion had been bubbling in my brain for a while, along with a growing list of feature ideas for StoryTime (my game platform for interactive fiction), and the fact that my oldest child is a high-school senior and heading off to college soon. Then I took a course last August on how to build an online business, the kind of business that could, eventually, be automated and free up my time, just like Tim talks about in his book.

I have written about the circumstances surrounding my decision to finally make my move, so I won’t repeat that part of the story. Go read about it if you need to catch up. Then come back to find out how this turns out.

Right, as I was saying, I finally decided to take my first mini-retirement, or pre-tirement. It’s not that I can afford to stop working forever, especially with my first born heading off to college and two more in her wake. On the other hand, I had saved enough to afford at least a few months of schedule freedom. So I spent a few care-free months working on StoryTime.

In that time, I got to go on hockey trips without having to ask for days off, to chaperone a couple of school field trips, and to exercise in my living room in the middle of the day five days a week. I kept to a reasonable 6- to 8-hour work day of blogging and coding, and I was able to reach a milestone in StoryTime in early April, a week before tax day.

I also managed to achieve the other thing retired people do, which is to annoy my spouse by being home all of the time. Oops. Guess I didn’t realize that chiming in on every little decision and squabble (between the kids, or one of them and my wife) could be aggravating. Or that using my newfound free time to help with all of the kids’ activities would deprive her of much-needed, non-spousal, social interaction.

I thought I was being helpful. Well, now I know. Time to dial it back a bit.

For the past month, I have been working on the next phase of pre-tirement, called employing-myself-to-see-if-I-can-get-paid-for-providing-what-I-want-to-offer-the-world. Hmm, it might be easier to say that I am starting a company or that I’m bootstrapping a start-up. That’s what I’m attempting, anyway, although it sounds like such a long shot.

No matter, for the last month I have been busy creating an online course to teach beginners how to design a game. The course is called “Design a Game.” Creative name, right? I am following the sage advice of my business advisor, Ramit Sethi, from that course I took in August. He says not to get fancy with course titles. I agree, since I wouldn’t want to mislead anyone.

While I am a big fan of quick deadlines, this is somewhat new to me, so I am being lenient with myself. Also, we’re heading into a busy time of spring hockey, graduation and vacations. Ahhh, pre-tired life is nice. So I’m not quite ready to turn up the heat on the business.

That means you still have plenty of time to sign up for my course before it’s launched to the world. Why not do it now? That way, you’ll know the moment it’s ready. I’m thinking about a one-time discount for people who are subscribed at the launch. Show me your interest by signing up.

Not sure if you want to design games? Sure, that makes sense. Most people just want to play them. I’m looking for people who are bored or frustrated at their day job and want to have some creative fun in their free time. Or anybody who wants to get a start creating games. Eventually this will lead to another course on programming games. Look for that later in the year.

As for my mini-retirement, I’ll say I’m in transition between that and my next paying gig. Whether I can make enough “by myself” is a question to be answered over the summer. If not, I’ll return to corporate life and look for a nice cubicle to park myself in while I earn a steady paycheck.

My bet, though, is on building a profitable business around games that will last many years and make lots of people happy. Maybe in 5 years I’ll be able to take another mini-retirement, just in time to see my son graduate high school.

Once in a while, you can expect to need a little extra effort to roll out of bed and into the morning commute. If that’s a daily occurrence, maybe something is wrong.

Are you stuck doing the same things over and over? Some uninspired pencil pushing? Or pressing on a keyboard?

Do you daydream through mandatory meetings that don’t really need you to be there?

Do you get tired of answering all of these questions?

Okay, sorry about that. It think you get the point. Sometimes the things you have to do to get by are not that exciting. You still have to do them, or something like them. Keeping a steady job has a value to it — the paycheck, to be literal.

After years of playing it safe, maybe you have found yourself a little bit stuck. The routine is not so bad. It’s just not what you imagined you’d be doing when you were a kid.

I have been lucky in my career. Then again, I have also had a low tolerance for boring, repetitive, “safe” work. My favorite move has been to join a start-up, or begin one of my own, and see how it goes.

There’s one thing that start-ups are not, and that’s boring. There’s another thing that they’re not, and that’s safe. Or stable. So I spent many years bouncing from one to the next. For me, it was fun and exciting.

I am certain it would scare the pants off of most normal people. I am not judging, just saying that my tastes may be a little on the risky side when it comes to working.

Anyone who has been following this blog knows that I left the safety of my long-time employer, Guidewire, in December. It was a great run of 11 years, and it got waaaaay too safe for my tastes.

That’s just how big companies are because they have to be or they would go out of business.

Guidewire is doing really well, at the opposite end of the “going out of business” spectrum. For that, I am grateful. Their continued success is funding my start-up, albeit indirectly.

(I own stock that I earned while I worked there. Just spelling it out in case anyone missed it. Sometime start-ups pay off in more ways than job satisfaction.)

So here I am, at it again, at the cusp of launching a new start-up. You might think that I already have with StoryTime and this blog. However, until now, I have been taking it easy, not worrying too much about how this is going to pay the bills and put my kids through college.

Now it’s time to get serious.

For the past few weeks I have been working on a course called Design a Game. It’s for anyone who wants to break free of the doldrums at their regular job. Rather than give up the safety and comfort of the steady paycheck, sign up for my course, and put that spare time to good use. Start of a hobby creating games. I’ll show you how.

Anyone interested? If you want to learn more about it, check out this page. You’ll find everything you’d want to know about the course to get started living the dream of being a game designer.

It’s for beginners. Everyone has to start somewhere.

And it’s also my big start at creating courses and helping people get more out of life, without the risk.

If you are wondering why I have been quiet, now you can see for yourself. I have begun production of my first training course, called Design a Game. Today I posted my first video. This is the introduction.

A couple of weeks ago, I scheduled the release of StoryTime that went out yesterday afternoon. The latest includes a means for authors to publish their story-games, completing the story-creation arch, so to speak.

Getting this done required the usual moments of despair, grind through difficult and tedious bits, and adjustments to scope. The original plan included publishing and a review process so that I can keep an eye on what people are sharing. Ever ambitious.

Within a few days, I realized that publishing on its own was plenty of work for two weeks, so I decided to skip the review process for now. Whatever people publish will be out there instantaneously. I’d be happy if anyone tries it. Blocking my brave early adopters is not a priority. Also, I have ways to turn off specific story-games if I need to, say, if someone violates my reasonable terms of authorship.

Scope always finds a way to expand. This release was no exception. Even after deferring one of the two major features, I found plenty of ways to do more than I originally thought about. For example, I implemented a neat trick for storing code look-ups that I learned from one of the best DBAs I ever met back in the early 2000s.

I could have had a separate table for each type of code: e.g., content ratings, genre, status codes, and so on. Instead, I have just one self-referential table with separate views for each type. That standardizes the data for look-ups (code, display name, sort order) and allows me to have a single method in the API to access any type of code.

In layman’s terms, I did a little extra work now to make things simpler overall and save myself a lot of work later, assuming I continue to work on this project. These trade-offs presume future work. Otherwise, I improved the parts no one else can see for nothing.

By the last days, having a deadline saved me once again. In my growing fatigue and scramble to get things in, I was tempted more than once to fix this or that non-critical problem. I pulled myself back with a gentle reminder of my fast approaching deadline.

Here’s a summary of how I manage on-time releases:

Plan somewhat ambitiously, expecting to adjust scope once I get into it.

Counteract the panic that I’ll never finish by focusing on the most important next step.

Finish that step, while considering which of the least important parts should be deferred.

Allow myself the chance to pick up a few improvements that are in the path of what I am working on.

Build things in a way that is backward compatible with what’s running.

Ideally, releasing is only a matter of a quick database backup and deployment through my environments.

Keep the release process simple.

I release to “staging” first to find problems that don’t show up in my development environment.

Once I have fixed all of the critical problems in staging, I click the button to promote the code to production. Takes about 2 seconds.

Send a notice to my subscribers. Then sit back, take a deep breath, and bask in the warm feeling of accomplishment.

So there you have it. Alright, that’s enough of how the sausage is made. Go play StoryTime. Write and publish your own story-games. Then you can share your game with your friends. It’s fun. You’ll see.

Fair warning: The user experience needs some serious improvements. Start with a small story, and try not to get too frustrated. Send me feedback about it using the Contact form in the game or on this website.

In other news…

Are you a software developer? You might want to subscribe to the Insider Newsletter. I’ll be creating some training materials next. My course ideas include:

How to Design an Online Game—from game concept to system design; good for people working on non-gaming apps, too.

Building an Online Game—everything you need to know to build modern web-based systems.

StoryTime Walk-through—where I share how StoryTime was designed and written.

If you are interested in any of these or have some other interests, let me know using the Contact form.

Spring is the time for planting. California gets a head start, since most of us have a milder climate than, say, Upstate New York where I grew up.

My grandfather had quite a green thumb. Every year, he carefully planned and planted his garden. The effort started while things were still frozen outside. He might get some tomato plants going using those little starter pods.

These things.

You put these in a plastic tray with a quarter inch (about a centimeter) of water, and they puff up. It’s kind of fun to watch them “grow.” Once they’ve expanded, you stick seeds in them, one per pod. The tray goes under a lamp or in sunny window (if you have one), and before you know it, you’ve got a bunch of tiny plants growing.

Then around the end of May, things have usually warmed enough that you can move the plants into the ground.

Like I said, in California, things warm up sooner than that. My seeds went directly into the ground. The rain we’ve had over the last week or two was enough to get my seeds started. Now I have little shoots of beans, sugar peas, carrots, radishes and pumpkins poking out.

Now watch while I turn this into a metaphor. Do you see what’s coming?

I have been preparing the Happy Spirit Games garden bed since December. First, I’ve been writing to you faithfully, at least once a week, often twice. I hope that’s kept you at least mildly entertained.

Second, I have been building out the StoryTime gaming system for choose-your-adventure style games. The next release is literally days away. Just a few final adjustments, and authors will be able to publish their stories.

I have at least one active author who will appreciate being able to publish. Keep working on that story, Dad.

So, now that it is spring, the time has come to plant some seeds. Happy Spirit Games is meant to be more than a hobby. I intend to turn this into a business, and that means I need to sell something.

Well, no one would pay to play StoryTime. That’s not realistic at this point. Someday people will be handing me fistfuls of twenties, but not yet.

Instead, I will sell my expertise in the form of online courses. I have a few ideas in the works.

I am also thinking of producing a few videos where I upgrade some part of StoryTime while you watch. Coders might like that. Everyone else might rather find a good game to play.

Do you know anyone who might be interested in what’s coming? I’d love to bounce my ideas off of people would are keen on learning. That way, I can be sure to cover what people really want to know, not just what I think they’d want to know.

By the way, I spent some time today on this website. Well, you’re on it, so look around.