writing > Software > Mobile Development
Last Updated:
7 minute read

Mobile Development

Getting into Mobile Development

Last Updated: May 2014

"I want to switch careers. I want to get into mobile apps. Thoughts/help/guidance?"

A friend asked me about this recently, and I realized it is a pretty important question to have a good answer to. Let's first check your reasons to be here are good.

Reasons mobile matters

Major tech companies are known for firing otherwise successful CEOs for lacking a "mobile strategy". I am no genius at predicting tech trends, but you don't need to be one to tell that as of today, if you want to stay relevant in the tech scene, you need to know what's up with mobile. Personal computers may not be fully replaced, but the barrier to owning a smartphone is a lot lower.

Reasons mobile doesn't matter

You're counting on single-handedly building a hit and making mad bank overnight. You want to "build apps", rather than fulfill a vision or create experiences. You want to work in "social media" and not know why it has to be mobile. You want an easy $80+k salary and recruiters knocking on your front door.

These things come and go. Mobile Dev has been in the spotlight long enough that these things are barely possible anymore. If the above are your priorities, you should consider a more new-age space such as The Internet of Things. The risk of an unverified market and technology shift is what unlocks the above payoffs. MobDev is getting more and more like traditional software - you need to be driven, have a good team, provide true value, do real marketing, and have a meaningful vision to be successful.

The Best Parts

I have tried to make these specific to mobile. However, some of them are "Best Part of Software," and a few broader ones "Best Part of Tech."

  • Instant gratification: your first real app is not that far away, and the gratification loops get shorter from there
  • Constant evolution: learning continuously is not a career chore, it'll be a central part of your life
  • Stimulating and challenging: as you pick new things to work on, new spaces to attack, you'll never find yourself doing "the same thing everyday."
  • Tight feedback loops: write code today that your users can experience tomorrow and give you feedback. This is rare and valuable and amazing [[coming soon: essay on feedback loops]]
  • Reach: You are given the opportunity to touch thousands of lives within a few years of setting foot in the space
  • Career Flexibility: You can start out solo and then work at Pinterest, or you can go the other way, and it only gets better however you spin it.

I'm not a programmer. I don't know what to do?

Are you sure about that? Chances are pretty high, if you're born after 1985 that you're probably a programmer at some level. Please take a moment to think about that, or if you may be subject to Imposter Syndrome [A lot of people talk about this topic more lucidly than I can]. You may not be a programmer by job title today, but you might already have the basics in place to go down the "yeah, I think like a programmer" route here. Go on, skip the rest of this section.

If you're still reading this I assume you can't shake the feeling that you are starting from way behind. People who consider themselves a programmer see moving from writing enterprise apps to web javascript to arduino code to mobile to whatever-fancy-thing-you-bring-up as just learning another language and market space (which is pretty close to accurate). But that doesn't mean it's any easier for programmers just because they see it that way. However, it's a thing we're used to encountering, and know how to go about it -- start googling, and brace ourselves for some frustrating frustrating late evenings after our day job.

Onto useful things. Learning to program is not like learning other fields of academia. It's perfectly ok to learn just the subset that applies to whatever you want to do now, and be functional career-wise rightaway. Pick up other things as you need and see them. I am still learning every day when it comes to programming, and it keeps it damn exciting. Start with this FAQ from Paul Graham.

The most important suggestion there is the first paragraph. Tell your friend you want to get started making mobile apps. Get up and running with help. Nothing weak or dishonourable in that. I cannot stress this enough.

DO NOT get discouraged from coding because you can't get your first app rolling in the first evening. Setting up your environment is *guaranteed* to be a giant pain in the butt.

If you can't find a friend nearby who is willing to do this for you, reach out to me, I will do what I can for you remotely.

Android or iOS or...

This is a common question. If you own an iOS device and a Mac computer, I strongly recommend starting there. Most significantly, the ease with which an app that works on your test device will work on nearly any iPad, iPhone or iPod of the same generation or newer is worth a lot. This keeps most of your time on the app focused on improving the experience for everyone, rather than trying to fix a bug for a small subset of users (see Android trouble below). The iOS libraries are robust and the developer resources very reliable.

Android's main strength for new developers is in how much lower the barrier to put something on the store is. But this is more than negated by the fragmented device and OS ecosystems, carrier-integrations, audience income brackets, international store policies and manufacturer quirks. This makes taking an app from "it's on the store" to "yes it will work for you from the store" terribly annoying - this has been the worst part of my job as bitgym's Android Lead. It took nearly 50 days of dedicated full-time work to take BitGym from working consistently on my Nexus5 dev phone to working on 90% of 4.1+ Android devices.

However, if you own an Android device and a PC, and don't want to plonk the ~$300-$500 for an iPhone/iPad and ~$1k for a decent Macbook that you don't already have, Android is a perfectly reasonable place to start your foray into mobile dev. You can definitely focus on just a single device to make your app experience ideal, and slowly progress from there as you gain experience. Hey, it's how I started out in mobile development, building a music player for the HTC Dream/G1 (Android 1.5) back in 2009 while I was at Olin.

There is talk since Nadella became CEO of Microsoft that Windows Phone will become a better and better platform to develop on. However, for the upcoming 2-3 years, MS has too much ground to cover before it is worth it for fresh recruits to invest in them -- Porting an app to Windows Phone is still just an afterthought for most of your potential employers.

There are a lot more subtle points to note about all the different platforms and OS's and devices, but this is really all you need to know now.

Resources to jump into

I will keep updating this list of resources as I get the time. I will probably also try to keep the rest of this post up to date.