Learning how to build a mobile app

Sometime around the middle of college, without realizing it, I fell victim to the idea that I’d reached my capacity for programming abilities. I figured I was just not capable of adding any new programming languages to my repertoire. My brain was so entrenched in the way PHP worked that learning anything new was an exercise in endless frustration and eventually giving up. This meant that I never learned Ruby or Objective C or NodeJS or any of the other “cool kid” languages. Which was fine. I had enough tools to work with. Even if it meant yet another project built in the same PHP code I’ve been recycling and tweaking for years.

It’s not like I didn’t try to learn new languages: I have years worth of partially started XCode and Rails projects that never really got beyond the first print statement.

A few weeks ago I was reading Execute and one point stuck with me: the idea that when you’re struck by inspiration and want to build something, you should use whatever you know. Trying to learn something new will kill that inspiration and the frustration of not being able to build what you want will kill the project. Learning new things is reserved for times where you want to expand your creative sphere or are feeling stuck/uninspired with your current toolkit.

That was the problem. I was trying to learn at all the wrong times. Around that same period, something switched. Instead of being frustrated by not being able to learn new languages, I became frustrated by having to use the same language all the time. I guess a good analogy would be painting for 5 straight years and only having 3 different shades of blue at your disposal. I imagine you’d get tired of blue and all of your work would start to look the same.

I’d been dying to build an iPhone app for years. Whenever I’m asked in interviews or panels what the one thing I’d like to learn in my next role is, my answer is always “mobile.” I’ve never had the chance to do work around native mobile apps and felt like I was totally missing out on all the fun.

So I buckled down. I found and bought a great tutorial series and spent my flights to/from Seattle absorbing everything I could. It wasn’t easy, but for the first time in years, I felt like it was actually possible.

I knew what I wanted to build, but this time it wasn’t about trying to build that app. It was about learning something new, about expanding my skill set and, more importantly, proving to myself that I could actually do it.

About 8 days later, I had my app*. The code wasn’t pretty, but I did it. It worked. And it was in the hands of the App Store for review. I hadn’t felt that proud of myself in years.

And in an interview a few days later, when asked what I wanted to learn in my next role, I caught myself mid-way through my usual “mobile” response: I’ve now learned what I’ve wanted to learn for years. I needed a new response.

All this is to say: Maybe it’s time to re-evaluate the things you thought you couldn’t do? Maybe you’re approaching it from the wrong angle. Or maybe things have changed since you last tried and you’re actually more capable of doing it now than you were before. Don’t let old ideas of what you can/can’t do stop you from trying again.