Game Design, Programming and running a one-man games business…

Rethinking the game dev productivity gap

Its really only in the last six months I’ve realized this, and I’ve been an indie for twenty+ years and coding for 39 years, so yeah…this took a while to sink in.

I am frustrated on a CONSTANT basis by the lack of productivity of almost everybody in the universe. I am especially irritated by the low productivity of most people in game development, and most indie devs. I almost never read about the development schedule of a game, (mostly through post-mortems, interviews or chatting to actual humans), without being shocked at how long it took to do stuff.

For most of the time, I have attributed this to an attitude. I work pretty much every day, and for most of the day, although my schedule these days is deliberately lighter than the early years. I’m prone to going out for lunch or to coffee shops, but then I’m prone to working all day Saturday and Sunday, so YMMV. I also often reply to forum posts, youtube posts, blog posts and emails in the evenings from my laptop. I’m often thinking about code when I’m not writing it.

Because of this, I find talking to people with a less work-centric attitude to be infuriating. It boggles my mind how long it takes most devs to add what seem like easy and simple features to games. I am constantly told that I am woefully inefficient because I don’t use unity, but still seem easily capable of working faster in terms of adding features & content than the very people who berate me for not using such productive tools.

So yup, I often think such people are just lazy. Or do not have the same attitude as me, or do not realize just HOW HARD it is to compete in this industry. In other words I think that their mindset is less focused, and its a personal weakness on their part, because yup…i’m a bit obsessed.

But now..I’m thinking there are two other things that explain the disparity better.

First thing: Lack of distractions. I have 3 cats, and live with my wife and these 3 relatively-low-maintenance pets, but no kids. I have a hobby of playing the guitar, which I make myself do a bit each day, but thats it. I am not having to take time out to walk the dog, pick kids up from school, drop kids at school, answer questions from kids, sort out other stuff for kids, walk the dog again, and so on. My wife is a writer, so has the same introverted ‘happy to be alone with a keyboard’ daytime work schedule as me.

Nobody ever phones me, unless its an elderly relative. I have a call screener device to prevent phone spam, and we live in the middle of nowhere. Nobody knocks on our door trying to sell us anything. There is very little noise. Its the perfect set up for zero distractions. If you possibly can do ANYTHING to reduce the distractions in your day, do it.

The second thing: experience.

This is the big one. I’ve been coding for 39 years. Thats an AGE. When I first started learning computer programming, this person was US president:

Image result for jimmy carter

Yup, exactly.

That means any silly mistake you can make when designing code…I’ve done in thirty times. 95% of my conversations with fellow devs when I’ve hit a bug go like this:

“Could be a memory-bounds issue…?”

Me: “Nope”

“Could it be that you deleted the object?”

Me: “Nope”

“…Maybe its a multi-threaded synch issue?”

me: “Nope”

…and so on.

Now that sounds super arrogant, like I think I’m the bees knees at C++. Actually I am not. I am not that good an all-round programmer *at all*. I am VERY good at learning in excruciating detail about the elements of C++ that I use, and nothing else. Because I work for myself I have no marketable need to be an all-rounder. I don’t need to learn ‘agile’ or ‘scrum’ or ‘.NET’ or RubyOnRails or whatever the hell jobs ask for this week/month/year. Its irrelevant to me, so I can be VERY good at VERY few things. This is hugely efficient.

Plus… again, trying to put my arrogance in context here… language proficiency is language proficiency, whether its English or C++. C++ is way less forgiving than English, but still…how good at English were you when you had been speaking it for just five years…versus thirty years? Hardly an exact comparison I know, but I think its a good mental exercise. I get better at C++ every year, but in a way that is not exactly how you would think:

I do NOT know more ‘clever tricks’ than a newcomer to C++. I do NOT have a better memory of the syntax of C++ than a newcomer. I do NOT type *that* much faster. I do not make use of a wider range of the standard C library than anybody else. I don’t do any of those things. What I *do* better, is that I have just learned from my mistakes.

A lot of mistakes.

I used to take the odd coding test in job interviews back in the day. These tests are good for one reason: to see if the candidate has any clue about syntax. Thats pretty much it. The amount of code required otherwise renders the test pretty much useless.

The trouble with C++ is that it attracts hotshot coders. These are people who think a super-complex algorithm, or the algorithm that uses the most clever combination of features will somehow get them more sex/money. This is predictable and sad, but not useful in terms of real productivity.

The best code, is the combination of three things:

Simplicity, Performance, Readability.

A lot of really, really good code looks fairly boring, because boring is often simple, fast and readable. The worst possible insult you can get from a senior/lead programmer with experience is this:

“That looks a bit over-engineered”

Its truly a damning insult, but you only really realize how insulting it is after about thirty years of writing crappy code. I wish I knew of an easy way to help people fast-forward those thirty years and develop the skills you have at the end of it, without those thirty years but I don’t think I can. The only advice I can offer is this:

  1. Write as much code as you can. Not over-engineered nonsense, but just code a lot. Put the hours in. At least the thousand obviously, but likely way, way more.
  2. Get a job with a really experienced coder and ask for criticism of your code. Only someone who works with you all the time will read enough of your code to really give you structural, high level advice on why your code sucks.
  3. Read code-complete at least twice, if you have not done so already.
  4. Get cats not dogs. Cats don’t need a walk.

Hope that helps someone :D

Avoiding facebook

As an advertiser for my games, I like facebook. Its targeting is very easy to use, and very effective. That might sound sinister, in a ‘cambridge analytica‘ way, but I’m not harvesting anything dodgy or being cynical, just showing ads for my PC strategy games to… people who have tagged pc strategy games as interest, and who speak a language my games are translated into, and who live in a country where people tend to buy online games. That works quite well.

In theory, I like facebook. What a great way to stay in touch with people! and because I try not to fly much, staying in touch with friends I have in different countries is especially nice. Its cool to see people celebrating cool stuff they are doing, its great to get a different viewpoint on the things happening around the world. So easy to share holiday snaps, or opinions on the latest movie etc.

But facebook have fucked it up.

I’d happily pay $80 a year to be a ‘member’ or ‘subscriber’ to facebook, but this is not an option. If you can’t see the product, YOU are the product, and we all know that facebook is VERY into collecting data on us, and storing it, and monetizing it. This goes on to an incredibly invasive and sinister degree.

Image result for facebook memes

TBH I have the same feelings about youtube. Its like I find myself having to think ‘do I REALLY want to watch this video, and have similar videos spammed at me for the next six months?’ every time I click on a youtube thumbnail. I’m all for curating the experience to match my tastes but jeez… back off a little and don’t seem to obsessive and creepy ffs.

I’m not a full-on tinfoil hat wearing 9-11 was an inside job conspiracy theorist kind of dude, but I do find it really sinister how much information these tech companies have on me, and their casual approach to letting us know what they are up to. A recent example is avast. Who would have though you couldn’t trust an antivirus company eh?. /sarcasm Oh and the irony… that avast link is a new website with 21 (yes TWENTY ONE) tracking cookies on it…ffs.

So I decided recently I had enough of facebook, after being dragged into an argument with a swarm of likely fossil-fuel-company hired shills trying to argue that people were ‘demonizing carbon dioxide’ and that there was a CO2 shortage, and we would kill plants if we stopped emitting it from cars… FFS.

(another exciting facebook post everyone needed to see!)

I still use facebook for business, and have pages for each of my games, and a bunch of local friends contact me through it (basically people in my village my age or older), so I’m not deleting my profile, but I ditched half my friends, deleted every ‘like’ I could, left every group, and started systematically deleting all my posts. (Facebook makes that close to impossible BTW…and I’m not kidding myself they are really deleted either).

BTW one thing that I think is worth mentioning which isn’t conspiracy or liberty-related, but is another good reason to quit facebook, is that it essentially kills conversation. When you meet up, in real-life with your friends, you are drained of any real ‘news’ or opinions. Everybody knows what you have done, where you went, what you did, and how you feel. Why bother?

“Hey I went to Boston recently on holiday”

“Yes we know. we saw all the videos, and pictures, and check-ins, and status updates…”

“…*silence*…”

Quitting facebook means I’m *more* keen to see my friends, not less, because we can ‘catch up’. Thats great. I’m as nerdy an introvert-programmer as the next sheldon cooper, but we are still apes, and underneath it all, we still want to physically meet up for our own mental health.