In 2008, while drowning in debt and yet another sticky Orlando summer, I decided I would change my career.
I would get a job making software for my iPhone.
The path forward wasn’t especially clear. My route was imperfect and entirely improvisational. I didn’t even realize I’d end up in San Francisco. Within five years, though, I would build and launch eight separate apps. The last three were under the aegis of venture-funded startups.
If you told me back then how many people would download and use my work, I’d have shit myself.
Sometimes people ask me how I managed to make this happen. Shared below is what worked for me. This is not comprehensive or universal advice. Nor is it the only way to get a job in this industry. It may not even be relevant any longer, given how much time has passed since I began. Timing may have been critical to some of what I tried. Standard warnings of survivorship bias apply.
Still, there’s a lot of possibility in careers like these. If there’s any part of my adventure that might help light your way, I’m happy to share.
Decide on what you want
You need to start with a goal in mind.
I want a career in tech.
Nope. Too broad.
Decide on a specific area of work you want to be doing. For me, this looked like
I want to make iPhone apps
because that was exciting! Little computers in your pockets with beautiful, full-color touch screens and constant internet connections. The possibilities seemed endless.
I think you probably need to pick something you find personally exciting because the road is long. If you hate the work the journey won’t seem like it’s worth taking. Intrinsic reward keeps your chin up.
Identify the very next thing you can do to move forward
For me, “making iPhone apps” was an excitement mostly driven by interface design. I was always fascinated by computer interfaces and I wanted a chance to create more of my own.
But a UI won’t program itself.
If I wanted my designs to do anything, I’d need code to bring them to life. With plenty of debt and no savings, that left only one option:
I was going to have to learn how to program for the iPhone.
At first I wasn’t sure that was a plausible ambition. I asked a couple friends who were web developers if they thought I could figure it out.
You might want to try something a little simpler to start. I’ve heard it’s hard.
And they were right. It was pretty hard. The good news was that, years before, I had tried something simpler.
With 18 months under my belt coding for the Second Life scripting engine, I knew about variables, types, functions, loops, arrays and more. The very next thing I could do to advance my goal was to learn iPhone development.
With that knowledge, I could make an app. Which was what I wanted.
Learn relentlessly and without excuses
I decided that every night, no matter what, I’d spend an hour with a programming book. Not every night was wildly productive but constant exposure to the material prevented the rapid atrophy that would have otherwise destroyed my new programming muscles.
I moved slowly, but I never lost any ground.
Beyond discipline, though, lay a more practical challenge: at the time that I decided I wanted to learn about iPhone apps, Apple had imposed a non-disclosure agreement upon everyone who knew anything about the subject. No technical books could be published, nor blog posts, nor screencasts.
The only authority publishing anything about the iPhone was Apple itself. Which had things like this to say:
This table has entries that associate method selectors with the class-specific addresses of the methods they identify. The selector for the setOrigin:: method is associated with the address of (the procedure that implements) setOrigin::, the selector for the display method is associated with display’s address, and so on.
Which was always good for a
What the fuck?
Waiting for books to turn up would have slowed me down by almost half a year. I was impatient.
I was also in luck.
iPhone development had a language, toolchain and more than a few frameworks in common with another platform: OS X. By 2008, OS X was nearly a decade old. Plenty had been written about making software for your Mac.
So I resolved to learn Mac development until I understood enough to decrypt Apple’s documentation, or until someone could publish a book.
I kept moving forward.
Choose a project, then finish it
I first cracked Cocoa Programming for Mac OS X in July. By October, I’d learned enough that I could puzzle out how to do things for the iPhone. Sorta.
My first project was a game. The deal was, I’d show you four things and one of them wasn’t like the others. Pick the odd one to advance. Faster answers earned more points. Difficulty scaled by increasing to six options, then eight, then 10.
Straightforward parameters. A clear idea of when it was done.
The important thing was getting it done: it wasn’t enough to noodle. Choosing a project forced me to learn a variety of new skills and subjects. At the beginning, I didn’t understand the technical underpinnings of the basic rules I’d decided on.
By the end, I’d learned about timers, animation, managing collections, button styling, the modulo operator (!) and countless other topics. Projects force you to blaze a path in the dark. You’ll find treasures in there.
The only way to guarantee thorough explorations is to agree with yourself that you’ll finish the project. Without that expectation, it’s easy to waltz around doing what’s comfortable, while avoiding the stuff that makes you uneasy.
The uneasy stuff? That’s what you need to grow.
Then choose another project and finish it, too
I sold my first app in the App Store for $2.99. I made $322.14 in its first month of sales.
Not bad, but I couldn’t pay my rent on it.
Nor was anyone going to offer me a job on the strength of one project alone.
Once the first app hit the store, I went to work on a second project. This one was about counting – I’m bad at mental math. Within three weeks, the 1.0 was released on the App Store. 1.0 pulled in about $220 in the first two weeks, which felt pretty good.
I liked the app, so I spent a couple more weeks working on an update to add a few features users had asked for.
Apple liked this and put my app on the front page of the App Store. Total earnings that month exceeded $1,500.
By getting projects out the door, I was getting useful feedback about my work. It was also satisfying to know people were really using it.
Most importantly, it was an ongoing test. Earlier, I’d said,
I want to make iPhone apps
With two apps in the store, one thing was certain: I had been right about what I wanted.
Find a way to network (also without excuses)
A network is critical to success in any field. So it is with technology. Your network will pass along opportunities. Your network will help you learn. Your network will keep you up-to-date on important news.
I suck at networking.
I kinda suck at people, in truth.
Making friends is hard and, as an introvert, it comes at a certain energy cost. Here I got lucky: someone published a Python script and companion data source that would auto-follow hundreds of iPhone developers on Twitter. I added myself to the data source and figured out how to use the Python script.
Overnight, I had dozens of people eager to chat about iPhone development with me in realtime. For months, I’d been toiling alone.
Suddenly, I was part of a community. It would make all the difference in the world.
More than once.
Find a co-conspirator
My girlfriend at the time was effectively a vice president in my fledgling software enterprise. She helped with product names, gave honest feedback on design, and did internal QA on builds before they were submitted to Apple. Having someone who could consistently participate in the process made things a bit less lonely, while ensuring my blind spots got a regular check.
She also co-authored the fast-evolving plan to escape Orlando.
Hire yourself
By the summer of 2009, one year after committing to a future in iPhone apps, a lot had changed.
I had recurring, passive income from the App Store totaling about $1,000 per month. I had published three apps – the third being a travel data organizing tool that read your data from TripIt. I’d written thousands of lines of Objective-C and had begun to grok object-oriented programming.
What hadn’t changed was a desire to make iPhone apps. I wanted it more than ever.
No one was offering me a job, though. No iPhone jobs existed in Orlando. My resume was too thin to win the attention of further-flung hiring managers.
With the financial crisis looming, I did something pretty crazy: I left my employer of six years.
It was a great gig. My leadership respected me. They paid me generously. The challenges were varied. The lunch was free. I had it pretty good.
But I wasn’t making iPhone apps.
I reasoned that I’d need someone to hire me at least once in order for anyone else to think it was a good idea. I decided I’d roll the dice and hire myself. So I moved to a small, cheap, beautiful town on the west coast and made iPhone development my full-time occupation. A big part of me hoped I could make it all work on my own, employer be damned.
I couldn’t.
Use that network
I went all-in on both Bend, Oregon and on iPhone development. Between the recurring income and over $17,000 squirreled away from six months of frugal living, my then-girlfriend and I figured we could last 18 months.
If we could find part-time jobs.
It turned out picking up a few hours of part-time work was next to impossible against Bend’s 19% unemployment rate. Seven months after arriving in Bend, we were nearly out of money.
Weeks from living in my car.
Shit was scary. Moving was definitely necessary, but I wasn’t getting too far with my remote job hunting. I knew a guy on Twitter who’d liked my counting app, and he’d founded a startup.
In the nick of time, I had an offer with a relocation deal.
Thank god for networking.
Have a plan for being discovered and understood
My first startup job was complicated. I don’t think they knew quite what they wanted from the role. I wasn’t in a great position to help them figure it out – it being my very first startup job. Making matters worse was that I wasn’t actually making iPhone apps. I didn’t pass their technical assessment for a development gig, which was rooted in a lot of game design and hard CS stuff I wasn’t good at.
So I was making documentation to help other people make iPhone apps.
Which was sort of the same but not really at all. I had narrowly dodged the bullet of running out of money but in the process, my career had stalled.
I still wanted to make iPhone apps. So I job hunted for months. I crafted a weak application to Y Combinator.
I didn’t get anywhere.
In a fit of frustration, I took to my blog to write a love letter to Hipmunk, then a new startup whose approach I really liked. The post got their attention and I got an email.
I parlayed this into an in-person meeting. I made it clear I wanted to build their app. Afterward, I sent a series of mockups to really make the point and stand out from the competition.
The Hipmunk guys went to my website and found product pages for four apps, with screenshots. They found positive reviews for those apps when they downloaded them from the store.
A couple days later, they gave me an offer. They never even asked for my resume.
The critical pieces here were a body of work and a strong showcase of that work. I had to connect the dots as completely as possible. I had to show that I had the experience and knew how to do the project from start to finish.
Hiring can be a big gamble to a young company. Once you have someone’s attention, reducing the perception of risk is critical to getting that first big break. Hipmunk rolled the dice on me and we had fun getting to the front page of the App Store several times during my tenure.
It was great to finally get in – and to have enough experience to really deliver once I got there.
That’s all a long way of saying it’s up to you
You have to decide what you want.
You have to figure out what’s between you and getting there.
You have to learn and build continuously.
You have to finish the projects you start.
You have to build relationships.
You – probably – have to assume some risk.
You have to do the hard work of demonstrating what you can do, in person and online.
You have to make hiring you a no-brainer, no matter how different your path into the work may seem.
There are probably other sequences and strategies you could follow that would get you where you want to go. This is just what I used to get what I wanted.
And now I make iPhone apps.
I hope you find the examples helpful on your own journey.
Good luck.