Is your current job awesome? Or could you be doing better?
I’m lucky enough to have what I consider to be an awesome job – I’m a web developer on the Stack Overflow Careers team. I’ve been working for here for 18 months now and I still love it.
This is unusual for me – in the past, the honeymoon period for my jobs has been short, and after only a few weeks I’ve been sick of them and dreaming about the next thing. But here at Stack Overflow I’m doing work I believe is important, it’s exciting and challenging, and I’m surrounded by wonderful smart people.
So if you’re currently stuck in a non-awesome job, how do you upgrade? Note that I’m not necessarily talking about how you can get a job exactly like mine – this is about how you can get a job that is awesome for you.
I have a theory. My theory is that having an awesome job is part of a self-fulfilling cycle, which I like to call the “cycle of awesome”.
The cycle works like this:
This is the self-perpetuating “cycle of awesome”. If you can break into the cycle somehow, you’re set. But what if you’re outside the cycle, in a crappy job building stuff that sucks?
Five years ago my day job was working on a large Windows desktop app for fund managers, which was largely written in VB6. It looked very much like an enormous Excel spreadsheet, and I don’t think a designer had ever been near it. The code was split across maybe 300 different projects, and the limitations of VB6 meant you could only ever load a small handful at once. It was the kind of “line of business” application that a small number of people absolutely depended on, but I doubt many of our users could honestly say they loved it.
The year was 2010, and we were using technology from 1998. To me, this was an emergency level of technical debt, but the management didn’t see it that way. We had started building a few new components using .NET 2.0 (by 2010, only five years old), but this was only adding to the already enormous complexity of the application, and there was no sign of the fundamental VB6 foundations of the software being replaced any time soon.
Looking at the world outside the company, it was clear the way software was being written was changing. New applications were being written for the web and mobile, not Windows desktops. The company could not expect to keep acquiring customers, and hiring and retaining developers, if it carried on like it was still the early 2000s. But they had no desire to change.
I could possibly have coped with the glacial pace of technological change if the company had been a really great place to work. But it was the kind of heavily corporate environment bogged down with procedures, timesheets, pointless meetings, a dress code, locked-down PCs and heavily filtered internet (when Stack Overflow launched I had to put in a request with the IT department to allow access, which my boss had to approve).
So I was stuck in something more like the “cycle of suck”. I was building stuff that sucked, my CV was not going to get any better, and so I was trapped in my sucky job.
How do you break out of the cycle of suck, and hop on to the cycle of awesome?
There are three places in the cycle you can try to start, but I think there’s only one that really works:
So that’s what I did – I decided to build some awesome stuff. In 2010 I quit my job and threw myself head-first into building the things that I wanted to build.
I’d been spending much of my spare time working on my open source project Quest, a system that lets non-programmers write text adventure games, and I knew that teachers were starting to use it in their classrooms, so I thought there might be some opportunity there to make some money out of it.
To be honest, quitting my job to focus on building a text adventure engine did seem kind of silly – but the iPad had just been released, and I was wondering if interactive ebooks might become a thing. If so then maybe I would find myself in the right place at the right time. All the best ideas are kind of hard to distinguish from ridiculous ones, and there was only one way to find out on which side of that dividing line this fell.
And that was really the extent of my “business plan” – I didn’t think it through in more detail than that. It was more a case of “what’s the worst that could happen?” And the worst case scenario didn’t seem too bad – I’d quit my job working as a VB6 developer, but if I wanted another crappy developer job then it wouldn’t be that difficult to find one. What I wanted was a good job, and the best way to find one was to increase my skills.
Being quite a frugal person I happened to have enough money saved up that, even if I didn’t have any income for a year or so, it wouldn’t be a big problem.
So I spent most of the next four years doing various things with Quest and interactive fiction:
I made small amounts of money here and there, with a larger amount of money from a few months of contract .NET developer work to top up my finances. Ultimately though, my money ran out.
I had failed to build a successful business, but I had spent years doing work that I enjoyed, and I now had a vastly increased set of skills and a much more interesting CV. I had built some awesome stuff – now I just needed to follow the cycle around, to tell people about it and try to get an awesome job. That’s what I’ll be talking about in part 2 of this post.
Just in case you think the only way to build awesome stuff is to quit your job and spend four years trying to build an entire business – you don’t have to be as batshit insane as me. You can build stuff in your spare time – I still do, it just takes a little bit longer. Build something you’re interested in building, something you can be proud of, and ship it. It’s the best way to learn, and it’s the best way to upgrade your CV.
If you want a sneak preview of what I’ll be talking about in part 2, you can watch my talk “How to be awesome” which this post is based on:
UPDATE: Part 2 is now available here