I don’t care if your cat just died

Advertisements
Posted in The Engine Team | 1 Comment

Object-oriented programming sucks

Posted in The Engine Team | 11 Comments

Moving to the US

I thought I’d put together a few notes on moving from the UK to the USA.  I’ve had a couple of people ask about the process, so hopefully it’s somewhat useful.  It also pretty much tells the story of what I did with my life for the whole of August and September.  Moving is a lot of work!!

This is very much a set of notes on what happened to me, rather than general advice of any kind.  Things may have changed, and everyone’s situation is slightly different.  I found the British expats forum to be an excellent place to get specific advice.

Immigration

I came in on an H1-B Visa.  I think that’s the most common for foreign software developers at the moment, but there are others (I love the sound of “Alien of Extraordinary Ability” – but you have to be as extraordinary as Alex Martelli!).  A few random notes on these:

  • This year, there was an annual quota of 65000 H1-Bs.  The quota began on 1st April, and being on this year’s quota, I couldn’t start work until 1st October.  In past years, the quota was sometimes used up within days, which was pretty silly; the last couple of years, it has lasted way longer (there are still 15000 left right now, in early December).  I kept an eye on the number at uscis.gov while I was applying.  I think I was lucky with the timing of Realtime Worlds’ demise – still some visas left, but 1st October wasn’t too far away.
  • The rest of my family are on H4 “dependent” visas, which in particular means my wife can’t work here.  As it happens, she has her hands pretty full right now, so that wasn’t an issue for us.
  • Simply applying for the visa, never mind providing relocation support, has a cost to an employer, both $$ and the extra complication.  Some of the places I wanted to apply didn’t bother considering foreign applicants.
  • Things that tripped me up and caused delays in the visa application process: needing to renew my passport so it was valid past the end of the visa period, needing to provide academic transcripts from my degree (CU usually take a leisurely 28 days to provide these!!), and needing to get visa photographs taken that were almost like passport photos, but subtly different.  There was also a fair bit of paperwork to do; some of it was O(N^2) in the size of the family, which hit me hard!!
  • The first step of the application process was Dreamworks submitting a “petition” on my behalf.  Once that was granted we had to go the US embassy in London to actually apply for the visa.  The “appointment time” seemed to be less of an appointment, and more of a first-come, first-served queue, so I wish we’d arrived earlier.
  • Overall timings went something like this: 2 weeks for LCA, 3 weeks for petition, 1 week to get appointment in London, 1 week to get visa, 1 week to book flights.  Plus a few extra weeks caused by me (sorting out passport, degree transcripts, and photos).  So it’s not exactly quick.

Salary negotiation and cost of living

I found the US employers I applied to far more direct about salary negotiation than I’ve been used to in the UK.  In some ways, it sounds a bit unfair that salary could be based on negotiation ability as much as, say, past experience or technical performance at interview.  But I didn’t find it too bad, even though the idea of a negotiation is slightly intimidating to me.  Overall, I prefer a conversation about salary to a take-it-or-leave-it offer.

As a quick aside, I highly recommend reading “Getting to YES”.  It’s a fascinating book in its own right with its tales of international diplomatic incidents.  But mostly, it’s highly practical and it’s reassuring to see that being a good negotiator isn’t just about extreme force of personality.  Wikipedia has a brief summary of the core material.

For example, there’s the idea of separating interest from position.  Your position is what you’re asking for.  Your interest is what you really want – the motivation behind your position.  There are plenty of cheesy examples to illustrate the idea, but the principle is important and can always be used, albeit more subtly much of the time.  Specifically, I made a point of mentally separating the salary I was asking for (the position) from what I really care about: the life my family and I are going to be able to lead on this salary.  So doing thorough research on the cost of living over here was really important.  If I hadn’t done this, I would have massively undersold myself and potentially ended up struggling to get by.  Going the other way, I’ve seen candidates in the past insisting on Bay-Area type salaries when applying to Realtime Worlds.  There really wasn’t any way we could proceed with the hiring process in these cases.

I also checked with some American friends what typical salaries would be for the area and my experience.  When that independently aligned with my cost of living calculations, I felt pretty confident with what I was asking for.  Armed with this information, I wouldn’t even call it a negotiation.  One company offered what I asked, and Dreamworks actually offered more.  But if there had been any negotiation, I was confident that I could justify $x.  There wouldn’t have been any arbitrary who-blinks-first haggling that is probably what I actually fear most when I hear the word “negotiation”.  Want to pay me much less than $x?  Ok, show me where my figures are wrong.  Did I completely over-estimate the average rent in your area?  Did I mis-understand the tax system?  And if we hadn’t reached agreement, I would have felt confident that walking away was actually the right thing to do.

Computing cost of living changes for a move within the UK is generally quite straightforward, as many of the costs stay the same or thereabouts.  I found looking at the US to require a substantial amount of effort, and I still find costs of things bizarre and surprising.  Petrol is cheap.  Our home electricity/gas bill seems to be about 1/4 of what it was back home.  But then mobile phones seem like a rip-off.  And food feels extortionate.

Moving household possessions

We sent a few things (essential baby equipment!) by air, and everything else by sea.  The sea freight still isn’t here after 9 weeks, although it’s very close now.  Given the cost of shipping it, we did a pretty thorough sort through our possessions, so packing up our stuff was the most time-consuming part of the entire move by far.

Shipping companies send someone round to your house, supposedly to estimate the volume of your possessions.  I was naively expecting them to bring a tape measure, come up with an accurate estimate and feed it into a published set of price-per-volume rates.  But they’re really a salesman.  They feed you a lot of BS, and while they do look at your stuff, I think they’re also there to size you up and figure out how much they can rip you off.  They do not have a published price list per volume.

So we a got a couple of them in and played them off against one another to get about 20% off what they first asked.  I would then say they did a great job at the collection end, but the delivery end has been poor.  I’ve detected an attitude of “well do you want your stuff back or not?” 🙂

Medical care

The US medical system was a huge concern for me when I started thinking about the move.  It’s still early days, but I feel a bit better about it now; at least, much of the fear of the unknown has gone.  There’s lots of new and confusing terminology to learn – we had to pick from a choice of 4 insurance plans, based on a big table of data full of words I’d never heard of … HMO, PPO, copay, deductible, out-of-pocket maximum … and various ominous-sounding phrases like “pays 70% of reasonable and customary expenses”, which leave you with absolutely no idea how much medical care is going to cost you.  Thankfully, the internet makes it possible to reach some kind of understanding.

On the good side, it seems as though there’s a much wider choice of levels of care, depending on how much you want to pay, and all the jobs I considered came with a decent level of care at a reasonable cost.  The service is generally considered more efficient and higher quality than public ones.  These are all the obvious benefits of a privatised system.

There still appear to be some major problems with the system.  The idea that some people can’t afford decent care is disgusting, as are the set of horror stories about people going to the nearest doctor in an emergency and being made to choose (if they can) between serious medical problems and financially crippling bills.  And there’s the whole pre-existing condition thing.  They have at least been working on these issues with recent legislation, I believe – but it feels as though the incentives can never be made to align perfectly with patient interest in a private system.

Anyway, I’ve wandered completely off topic.  In the end we went with a plan (one of the HMOs) that seemed simplest financially, and perhaps closest to what we’re used to back home.  It essentially boils down to a price list, so you can see exactly what each treatment costs (this is what they call ‘copay’) – none of that 70% stuff.  We’ll need longer to see how happy we are with it, but so far the results are encouraging: it seems lightning fast to get an appointment, no queuing when we go, more outside-work-hours options, and all the appointments have been cheap ($20) so far, including seeing some more specialised doctors.

Getting credit

One of the odd things about the USA is they have their own credit rating system and couldn’t give two monkeys about the rest of your life to date.  So we went from the maximum possible credit score to the minimum, overnight.  Supposedly, we have to work our way up from easier types of credit (store cards/car loans) to higher types (credit cards/mortgages), and people say this could take a few years.  In practice, it’s not been quite that simple:

  • I was actually denied a store card – they only allowed a tax return as proof of income, and I haven’t filed one yet.  I’ve not bothered to apply for any others given that I was only applying for one in an attempt to get some credit history, and I found being denied a store card pretty insulting.
  • We took out a small car loan, even though we could afford to purchase outright.  They didn’t seem to care much about our low credit score – it’s just a good excuse for them to slap on a punitive interest rate.  Given that we can simply pay the bulk of it off immediately, I’m not too bothered.
  • A couple of companies (mobile phone, electricity) simply asked for a few hundred dollars deposit up front.  We’ll get these back in a year.  This seems fairer to me than being denied or charged a ridiculous interest rate.
  • Getting a credit card, on decent terms albeit with a lowish limit, was straightforward.  I’m not sure if that’s normal – we got it through our bank, Wells Fargo, who, incidentally, deserve a mention for being outstanding.  They have an international application process so we were able to set up the account, wire money in and get our debit cards before we set foot in the US.  That process was pleasantly personal, with a single point of contact throughout who we could email as well as call.

Easier than expected

That’s about all I can think of.  Through all the complexity, and the apparent magnitude of moving internationally with 4 young children, it’s actually not been that big a deal overall.  One of the wonderful things about modern life is that you can do all these incredible things – like fly around the globe in a metal tube – fly – while your possessions share the cost of an ocean voyage with goodness knows how many thousands of unrelated items, and you don’t need to know the first thing about any of this, because teams of specialists do it for you.

I just have to get used to the funny keyboard layout and spelling “colour” differently in my code 🙂

Posted in Uncategorized | 2 Comments

The new gig

In some ways it’s quite horrifying how little thought I put into my first two jobs.  The VIS advert in the university careers service newsletter jumped out at me purely because they were in Dundee and made software (my then girlfriend, now wife, lived in Dundee at the time).  I thought I’d go and take a look, and the “Brave” concept art around the place hooked me in.  Without that chance sighting, who knows what I would have done – not games, I think.

I then stumbled into Realtime Worlds because I wasn’t enjoying certain aspects of VIS, and I knew a few people who had gone up the road. It seemed the best option in Dundee, and we’d just bought a house so moving wasn’t that desirable.

I guess what I’ve described is a pretty common human problem-solving technique: go with a gut feeling, a local, adequate solution, and see how things go. Change your approach if it isn’t working.

But earlier this year, for the first time in my life, I decided to be a bit more deliberative about the search my next job.  I realised that it was time to move on, that I care passionately about what my workplace is like, and that I am not the kind of person who changes job too often.  I asked myself, “if I could work on any software project, anywhere in the world, where would I choose?”

I thought I’d share the process I went through for anyone who’s interested.

The company

I never seriously entertained the thought of leaving software development, but equally, I never wanted to restrict myself to games.  So I came up with three fairly general criteria that I could apply to any developer:

  1. Must produce truly world-class product(s) – recognisable “brand names”.  I know this isn’t necessary for me to enjoy a job – because I know I’d love to work for the right early unheard-of startup – but with a young family, the time felt right for something more stable.  Once I started to look at established companies, I couldn’t face the thought of somewhere whose product was anything less than excellent.  Sub-standard things irritate me deeply and I want to be proud of what I do.
  2. Must be known for being a good place to work – good culture, talented colleagues.  The people I work with, and the types of interactions I have with them, are what make me happy to get up in the morning and go to work.  And I need time with my family, so sweat shops are out, even though some of them do amazing things.
  3. Must be innovative and ambitious, technically and/or creatively.  In other words, the work itself must be interesting.  Otherwise, you could name some rather mundane places that satisfy (1) and (2) – perhaps banks, although I’ve never worked at one, so that may be grossly unfair.  As a specific example, I worked my university summers at Data Connection (now Metaswitch), and they matched (1) and (2) without really inspiring me to go back.

I did not limit myself geographically.  I was most likely limited by my own awareness and knowledge of developers, and perhaps in a variety of subconscious biases, but I tried to search as widely as I could.  I decided to be really picky on all three criteria, and came up with a list of about 10-15 companies to start off with (4 of them were game developers).

The role

The next question was, what do I actually want to do?  After getting semi-accidentally sucked into management at Realtime, I felt that I needed to make a clear choice between going back to programming, or committing to the management path.  I honestly found this a tricky question.  My heart instantly said programming, because I love it unconditionally.  But my head couldn’t help wonder what the other path might hold.  Maybe the possibilities for career growth make management a better long-term option?  And there’s always the classic fear of being an old programmer, articulated here for example.

In the end, I decided on an experiment.  I would apply for management roles with some companies, and engineering roles with others.  I figured the interview process itself would help me to learn about myself and ultimately make a decision.  As a general rule of thumb, I tended to go “management” for the really giant companies, and “engineer” at the others.  I did this on the basis that I’ve already done the thrown-in-the-deep-end-with-no-help thing.  It would be good to experience somewhere that provided clear structure, expectations and guidance to younger managers, and an opportunity to be mentored well.  So I created two drastically different CVs for the 2 roles, and sent my applications off.  What happened next was wonderfully illuminating.

Option A

So the first reply I get is for a management role with a company that shall go unnamed, inviting me to their first-round phone screen.  The questions are slightly unsettling from the start:

“Tell me about a product that’s not electronic or electrical in any way that you absolutely love and consider to be well-designed”.

Ok, um, panic!! … looking around me … ah, my Moleskine notebook is sitting in front of me with a list of questions to ask at the end.  That’ll do.  I manage to give a semi-decent answer about why it’s a well-designed notebook.  Phew.

“Now, consider how you might make use of electronics to improve this product.  Describe your design to me”.

Oh, shit!

Just nothing.  Totally blank.  I half-heartedly stumble through some ideas and the interviewer, taking pity on me, takes one of them and turns it into some kind of portable pen that could scan pages for transfer to a computer.  I admonish them for what is, frankly, a stupid idea.  Ooops!  They point out that it’s just an interview question and leave awkward silence for me to give a better answer.  Eventually I blurt something out about how useful it would be to have a wireless device that could help you locate your notebook if you lost it, if such a technology were cheap enough.  A bit lame, and a bit sci-fi, but at least somewhat useful.

An hour later and I can finally hang up the phone, pouring with sweat and totally on edge.  Lucy asks me why I didn’t choose our cots (we have pretty nice cots).  Built-in baby monitors, toys that make lights and sounds, temperature monitoring … the possibilities for naff but plausible electronics would have been endless!  Damn!

A week later, for reasons I cannot fathom, they let me through to their next round of interviews.  I start sweating nervously on the spot.  Here we go again …

“Describe the design of an iPhone application you’d like to make”.  Great!  I’m in the middle of creating an iPhone game for a bit of fun.  Launching enthusiastically into my game design, they cut me short.  “Could you choose something that’s not a game, please?”

[I can’t face the embarrassment of describing what I came up with.  Let’s just say I finished this interview even more of a wreck.]

Option B

The very next day, I have my first engineering interview.  At this point I’m pretty terrified of any kind of interview, so I start off more or less trembling.

“If I write an empty class in C++, how many functions does it already have?”

I can do this.

“If I add a pointer-to-integer member, and assign a new int to it in the constructor, what else should I do to the class?”

I can do this too.

“If I change this member to a pointer-to-array-of-integers, what changes should I make?”

I suddenly notice that I’m completely, blissfully, relaxed 🙂

“What happens to your code if the memory allocation fails during the assignment operator?”

Doh!  But easily fixed!

“Could you describe all of the casting operators in C++?”

In my sleep.

“What do I mean by shadow mapping?”

I love interviews again!  Ask me more!

And so on.

In short, after an hour of non-stop technical questions, I know I have to follow my heart.  The unnamed giant company call back and ask for another management interview, and I tell them to **** off (nicely), because I am, conclusively, an engineer again.

And the result …

The outcome of all this is that I’m now a software engineer at PDI/Dreamworks.  Working on film graphics seems like a good way to learn something new but also make use of what I already know.  And my 3 criteria are definitely met.

I’ve only been here 2 weeks, so for now it’s still pure excitement.  A considered opinion will have to wait.  But whatever happens, I feel good knowing that I explored my options as best I could.

Posted in Uncategorized | 11 Comments

Realtime Worlds was an amazing place to work

While my previous posts on what went wrong painted a pretty bleak picture, it wasn’t all bad.  I arrived at RTW with relatively little experience, and had the opportunity to take part in growing the company from 30ish to 300ish.  The fast growth, the ridiculous technical ambition and the transition from programming to managing teams made these some of the most intense years of learning I’ve ever had.  It’s hard to find words to describe just how much I grew in that time.

“Never mind – we blew $100m, but we learned from it!” is scant consolation for our investors, our gamers and indeed ourselves, but for those of us who were on the rollercoaster, we shouldn’t let that take away from the fact that we did learn a lot.

We also shouldn’t let our failure take away pride from the things we did well.

Ambition

I was first sold on working for RTW when I saw the concept for MyWorld at interview.  They weren’t really sure what the project was yet, but it was clear that it was very, very different from the kinds of games I’d been working on at VIS.  These were games that aimed to change gaming, as opposed to games that aimed to keep the business afloat for another year or two.

Perhaps the most wonderful thing about working for Dave Jones was that his past success freed him from any desire to do something ordinary just to tick along.  Everything he did had to be ambitious in some way.  Arguably, we were too ambitious, because we were trying new things from both a technical and product perspective.  If you hold one of those constant, you can deal with the other: you can iterate fast on unknown product concepts when you have a stable technical base, and you can throw engineers at really hard problems if they know exactly what problem they’re solving.  We had no idea what we were making, and we had no idea how to do it.  Crazy, but exhilarating.

I didn’t include this in my “what we did wrong” because I honestly think we kept pace with the challenge pre-investment and had the chance to execute better.  The fact that we came quite close in some ways, that we did some of the hard things really, really well, and failed in some deceptively simple ways, is deeply frustrating.  But there’s no question that we set ourselves lofty goals, and shouldn’t be too surprised that we failed.  It was always going to be a possibility.

For my future, I am determined to demand challenge and ambition in whatever I do, because I found it genuinely thrilling, and would find it hard to go back.  The only caveat is that at RTW, the joy of the technical challenge blinded me to weaknesses in our product and business thinking, and I need to avoid a repeat of that.

Crunch time

“Management” is a generalisation, a big topic.  While my post-mortem has been highly critical of some aspects of the company’s management, it would be wrong to say “management” was bad and “developers” were good.  Our development leads managed a lot of our work extremely well, and we generally hit development milestones confidently and smoothly on all our projects.  We cultivated an ethos of working very hard during the day, but going home on time.

Whatever the end results of our efforts, I have seen enough evidence to suggest you don’t need to force a team to work crazy hours to build a great game.  On the other hand, I’ve also seen that people working long hours truly voluntarily, for the love of what they’re doing, bodes extremely well, and that a complete lack of it is a major warning sign.

I leave with a strong belief that I can realistically combine creating great software with spending time with my children, something that many programmers must come to question at times.

Deja vu

It’s frustrating that the lessons of our failure read like so many other startup failures.  Many people have written to me recently to say just how eerily similar it sounds to a past experience of theirs.  It’s sad that we couldn’t learn from other people’s lessons before we walked into them.  It’s a painful illustration of how much more you learn from personal experience than from reading.

I hope we can all use our experience for good in the future.  Realtimers, I will miss you all, and expect great things from you!

Posted in Realtime Worlds | 6 Comments

Where Realtime Worlds went wrong, part 3

Last time, I painted a fairly bleak picture of what it was like to work at RTW, leaving me with an uncomfortable problem: why did so many smart people put up with these problems?  There are fundamentally two reasons: complacency, and love of what we did.  In this post, a few words on complacency.

It’s perhaps best summed up by our own words, the blurb from the graduate recruitment section of our website.  It’s still on our website as I write this, but I’m going to quote it in full as presumably it will disappear at some point soon!

If you’re looking for your first job in games, it’s worth thinking very carefully about your future employer. Do you want to work on jaded, derivative titles that receive scathing reviews and go straight to the bargain bin? Do you want to work large amounts of unpaid overtime because your project is underfunded and poorly managed? Do you want to work on codebases that are messy and poorly-designed because there’s never time to do things properly? Do you want to live in fear of your company’s financial security?

It’s sad that these and other games industry horror stories are more frequent than they should be, but it’s not like that here. We only work on original, ambitious projects: our first title, Crackdown, was a number-one hit, winning critical acclaim and multiple awards, and our best is yet to come, beginning with our first online game, APB. And while making games is great fun, we take our work seriously. We pride ourselves on our unusually sensible, sustainable and professional development practices, resulting in smoothly-run projects and far less overtime than is normal for many game developers. We’re passionate about engineering and crafting our games to the highest of standards. We cultivate an open working environment where ideas are valued on their own merits, no matter whose they are. The growth of our company and size of our projects allows us to provide a wide range of opportunities. And the investment we’ve raised puts us in a strong financial position with security and creative control over our projects.

Ouch, ouch, ouch.  I don’t know if a comic writer could have hand-crafted a more deliciously ironic piece for us.  And yes, complacency did stray into arrogance at times.

From the creator of Lemmings and GTA!

For a long time, Realtime Worlds cultivated an air of success about the office.  Raising $100m sounds pretty cool on paper, we all walked past the Crackdown awards cabinet each morning, the press were excited about APB and we had Dave who apparently could do no wrong.

But after the investment, we lost our scrappy startup mentality and used our money to build this highly “corporate” culture, mimicking an established, successful organisation.  We lost our hunger, our fear of failure, our focus on staying lean and making do, on building the simplest thing that could possibly work.  The external signs of success were everywhere but the driving force was gone.  We forgot to tell ourselves that the investment was just a small step towards success, not to be confused with success itself.

The complacency showed through in so many ways.  We were complacent about game design, papering over APB’s obvious shortcomings and telling ourselves it would somehow come together at the last minute before release (an argument that was strengthened by the experience of seeing Crackdown do just that).  We were complacent about business planning, deciding to spend all our investment getting APB to launch, assuming that we would sell zillions of copies and over-spending on server hardware.  When we were told we were being made redundant, we were told something along the lines of “the market is just so bad right now … we could never have predicted this … even our worst sales projections were so much higher than this”.  I think that was supposed to be consolation but it was just complacent, and dumb.

It’s a gross generalisation to say the whole company was complacent.  It’s deeply unfair to a few pockets of incredibly passionate, hungry developers that worked their socks off and created some amazing stuff – like APB’s character customisation system, and its super-reliable back-end software, to name just a couple (apologies to all the other good examples of work I missed).  Sadly, it was not enough to overcome the problems.

The investment and Crackdown’s success were obviously contributors to complacency.  Another reason is that we forgot to wear tin foil hats … because

Dave has his own reality distortion field

I was reading “The Pixar Touch” recently, when I came across these passages about Steve Jobs:

We’d have to deprogram our troops after he had made a visit, because he has this charisma.  When he starts talking, he just takes people’s minds.  He would start talking to the Pixar people and I would just see their judgmental faculties go away.  They would just sit there and look at this guy with what I would describe as love in their eyes.

– Alvy Ray Smith

And yet when we would go down to a meeting with Steve, he would be so convinced that this [3D rendering] had Everyman potential that he would talk tough to you.  He would say how this was really like PostScript and that we can have it in every printer, we can follow the Adobe model.  So while you are in the room with him, you’re thinking, Well, yeah, that’s true … But when you get back to the real world, you realise, I know that wasn’t going to work.

– Pam Kerwin

There was something quite eerie about reading this, because this is exactly what Dave Jones does to people.  I hadn’t heard about it before, but it turns out Steve Jobs’ “Reality Distortion Field” is famous.

Dave’s version was also famous, amongst people who’d worked with him before.  There was a running joke from the old DMA days, that everyone should don their tin foil hats when Dave entered the room, to block his mind-control rays.  There’s an old picture from the DMA office of them all sitting with tin foil hats on, although I couldn’t find it.  If anyone has it, send me the link and I’ll do an update and stick it here because I seem to remember it being pretty funny.

Unfortunately, Reality Distortion Fields do not provide total mind control.  They can convince people to believe anything, but they cannot direct people’s efforts.  Once we became over-sized, I think Dave really struggled to direct our projects as he’d have liked.  Our best efforts were in our early days when we were small – Crackdown, the early builds of APB including the core of the customisation system, and the prototype of MyWorld that essentially won the initial investment.  That last prototype was built by Mike Dailly all on his own, and represented perhaps the best outcome-to-effort ratio of anything we ever did.  The contrast with our 20-person committee meetings to review APB builds could not have been more stark.  I genuinely felt sorry for Dave in some of those.

The Reality Distortion Field was a double-edged sword for us.  I’m pretty sure it was a big part of us raising $100m.  It also obviously contributed to our complacency.  If anything ever reached crisis point, Dave was always, always able to convince people that everything would be ok.  I think at times this prevented us from actually taking problems as seriously as we should have.

I don’t blame Dave for that though; it’s a brilliant skill to have and I don’t think he ever wielded it maliciously.  We were the fools for not staying hungry.

Finishing up

I’m going to put together one more post.  As I mentioned at the start of this one, part of the reason we put up with the bad stuff is that we loved what we did.  For all the frustration that I’ve poured out over the last three posts, I had an amazing time over my 6 years at RTW.  While I regret not doing more to help fix our problems, and am deeply disappointed by our failure, I don’t regret taking part in the adventure.  I learned a huge amount, met some incredible people, and fully intend to leave my retrospective on a high note 🙂

Posted in Realtime Worlds | 80 Comments

Where Realtime Worlds went wrong, part 2

Last time, I touched on some of the crazy walls we put up between different groups in the organisation.  I focussed in on the Community team because it happened to fit with the other stuff I had to say about our relationship with our gamers, but it would be unfair to give the impression that the problem was limited to their group.

From the moment we took the investment, our organisational structure developed in a number of unhealthy ways.  These problems detracted from the quality of product and experience we were able to deliver, destroyed internal motivation and passion, and also caused us to burn through our cash much faster than necessary – all significant factors in our ultimate failure.

Spend it all!

Let’s start with our attitude to the investment we raised.  We fell foul of some kind of modern version of Parkinson’s Law:

A Realtime Worlds project will spend the funding available to it.

When we received the initial $30m to develop MyWorld, management literally reverse-engineered a “hiring curve” (a graph of team size against time) from 3 parameters: the budget available, the desired launch date (set by the investors), and our internal figure for the maximum rate we were able to hire people at (this was the only good part of the plan – Dundee put the brakes on for us!). There are obviously far better ways to plan a project, and I could spend a whole post discussing just that, but for now I just want to focus in on the unquestioned assumption that we should set out to spend all the money.

This attitude infected our company culture at many levels. Almost everything we did, we sought to throw people at, and our hiring created inefficiencies all over the place.

More people in one team created knock-on effects elsewhere: more programmers needed to support more artists, more IT, QA and admin staff needed to support everyone else, more project managers needed to manage everything, and more recruiters to hire all these staff.  We hired a whole “business development” group that did, well, nobody else in the company got told what they did, except they hassled development constantly for “executive” progress reports (of course, making reports takes time, so this probably contributed to further hiring).  Then we hired a director of development, who while certainly helping us focus on on-time delivery, was sadly forced to spend much of his time fending this senior management layer off our backs.  Then we added a “program manager”, reporting to business development, to fulfil a nebulous floating cross-company communication role.  Someone above us came up with a “patent strategy” initiative; the engineers dragged along to the meetings managed to fend that off long enough for management to get distracted and forget the whole thing.  We hired a “live production” team, whose entire job seemed to be to pass messages between operations (the folks who run the servers) and engineering, on the basis that these two groups were struggling to communicate.  Unfortunately, they struggled to communicate with either group, and spent a lot of time creating Processes for how to pass these messages around.

All these layers, of course, generated extra meeting upon meeting.  When I worked on APB, my Outlook calendar looked like a game of Tetris, the day stacked full of meetings, usually with a triple-booking somewhere and several double bookings.  Hardly any of them held sufficient value for the time spent.

I don’t mean any of that to be a criticism of the specific people in those roles.  Many of these folks were wonderful, talented people, and many of them realised the problems they were part of and fought hard against them.  I was as much to blame as anyone.  I built a technology team that was too big for its goals.  I also spent a year in a nebulous “technical manager” role on APB, and didn’t do enough to fight the cultural problems, including the question of why I was there at all (and why I had so many meetings).

Good vs Evil

The layers and walls between groups all came from a smallish group of powerful people (who we’ll label ‘Red’ for the sake of argument), that wanted Realtime Worlds to become more “corporate”, lazily imitating big companies in a superficial way, at the expense of critical thinking and focussing on our true goals.  Here’s a typical Red quote (I may not have the precise wording down but you get the idea – and I’m omitting the name of his previous employer because my point here is not personal):

Producers are how you drive accountability and make sure things get done.  <Company X> [who they worked for previously] understood this.  If we were adding a feature to the game, the first question would be “who’s producing this?”  If the floor needed cleaning, the first question was “who’s producing that?”

Opposed to Red was a group that for the sake of argument we’ll call Blue, with diametrically opposed views.  Quietly and subtly, perhaps without many in the organisation noticing, these two groups fought for the company’s culture.  Ultimately the Blues were destroyed.  While probably numerically greater, they held less org-chart power and were forced to work hard for even small concessions.  And while the Red relished the meetings and political fighting, the Blue were passionate about getting on with real work, about making our product better, and for the most part gave up the fight to focus on that.  The Red weren’t averse to dirty tricks either, such as paying a key Blue to leave (that’s org-chart power for you).

So a key piece of advice to any company receiving a large investment would be this: be very, very careful about who you hire to manage your fast growth.  You need someone who “gets” lean startup culture and is not trying to turn you into an identikit corporation where everyone talks bullshit management-ese just for the sake of it.  If you become big and successful, you might turn into that anyway, but if you try to be that way first, you won’t become big or successful.

Don’t get me wrong – I’m not against big corporate culture per se.  It has its proper place, as the natural result of refining a successful business to reproduce and continue that success as efficiently as possible.  But copying it cannot possibly be a driving force towards success in the first place.

Chalk and cheese

One of the most harmful organisational walls we built was between “business” and “development”.  Once we took that investment, responsibility for anything with a £ sign in front fell to a small group of “business” people, most of them in our US office.  We’d ask these people how much gameplay bandwidth cost us on APB, in case we needed to optimise our usage to make the game profitable.  We’d ask how much patch bandwidth on our CDN cost, in case it was worth adding bittorrent support to our patching system.  We’d ask how much running a server cost, in case it made business sense to spend more time on server code optimisation and reduce the number of servers we needed.

Every time, we’d be met with a condescending pat on the shoulders.  “Don’t you worry about that, son, you just get on with making the game.  Let us take care of the money.”  We asked, and we asked, and we asked, and were eventually point-blank refused, and later just ignored, on these and other important questions.

It wasn’t just about the questions we were asking.  The questions we didn’t ask were just as harmful and more.  How much are we actually spending on this game per month?  If we launch on this date, how much cash will be left in the bank?  We got so fed up of the small battles that we gave up and stopped asking important questions.  We wouldn’t question the financial prudence of an additional hire because we were tired of being shut out of that conversation.  We just asked upwards for permission and washed our hands of financial responsibility.  Of course, the people we were asking didn’t understand the importance of the hire, so we had to justify it to them.  But we did so without any context of how important it might be to save money.  It turns out, if your goal is simply to justify a hire to someone who doesn’t understand its importance, you easily find reasons to convince them.

We built a culture of treating development as completely divorced from the business we were running.  It doesn’t help that game developers are not used to thinking about the money.  Traditional publisher-developer relationships mean that the publisher worries about the money, and all a developer has to do is hire the number of people the publisher says they’ll pay for.  Everything else is taken care of.  We let ourselves sleepwalk into this attitude when we were spending our own money.

When we were asked to talk about money, the conversations were ridiculous.  Our finance guys thought we should cut the free fruit.  I had to wait 2 months for a pinboard because everything went for approval to the very top level for a while, apparently to help get a grip on our spending.  We cut all conference visits for my last 18 months there – a paltry amount next to our salary bill.  I spent 3 months arguing to upgrade some of the APB developers’ PCs in the name of working more efficiently; our wonderful build engineer, Phil, even put some hooks into the build system to automatically track how much time each developer spent compiling code in a day and collect all the data centrally.  We could prove that the whole thing saved us money in a couple of months, but nobody was interested.  They wanted to stick to a supposedly pre-agreed budget, which it then turned out they could change at will to suit their position.  I wasted weeks arguing about this.

With hindsight, I guess we were about to run out of cash and any expenditure was a problem.  But if this was the case, why on earth weren’t we trimming down our massive salary base at that point, or earlier?  Why did we waste time debating pointlessly small amounts of money?  Why did we force our talented development leads to spend their time on silly internal arguments instead of focussing on the product?

Developers might not be experts on money, but they’re incredibly smart people, and the parallel between spending in an organisation and optimising code is obvious.  Measure where your resources are going and focus on the areas where you can achieve the most benefits.  You don’t talk about cutting fruit bowls when you have 300 staff and are still hiring more.  I also don’t see how you can spend intelligently unless you hold plenty of open, intelligent conversation between the two groups – or have someone who understands both development and finance run the show.

If wonder if the finance guys were equally hamstrung.  Maybe they wanted to cut the staff size but were told to stay clear of that.  I can’t think why else they appeared to be so interested in the petty savings (the only other logical explanation is personally unpleasant towards them, and I’m trying to stay clear of that, especially for people I hardly know).

I wonder what would have happened if we’d had a different relationship with finance.  Or if we’d been given financial responsibility ourselves.  I’m pretty sure we wouldn’t have come up with a plan that involved letting our cash reach almost zero at the point of APB’s release, with ongoing costs of 300ish salaries.  I’m also pretty sure we would have trimmed our feature set differently, and structured our teams to be leaner.

What I’ve said so far sounds so unbelievably incompetent that you’d think we were all just a bunch of idiots.  But I still contend that Realtime Worlds had an unbelievably smart, talented staff.  I can’t prove that with words, but even if you accept it only hypothetically for a moment, it raises this question: why would a bunch of smart people put up with this crap?

Next time, I’ll try to answer just that.

(Part 3 now up).

Posted in Realtime Worlds | 31 Comments