Tuesday, June 21, 2016

The Path to Mobile App Developer: How and Why

If you're a small or independent software developer, you're probably not making a lot of money by writing desktop software. Sure, there are the outliers who happen to hit upon a big title that carries them to profitability but, overall, it's amazingly difficult to make money on the desktop. Add to that the fact that just about every major metric used to measure Internet usage says that more and more people are using mobile devices instead of laptops and desktops and you can easily see a trend away from the desktop and towards mobile. Many of us don't go anywhere without our mobile devices and we even feel a sense of loss or unease when we forget them at home or at the office. For better or for worse, we're in a love-affair with our mobile devices and we're constantly tethered to them.

This presents an amazing opportunity for software developers who are willing to invest the time and money to move away from the desktop and start to think about the mobile space. It's an exciting place where, even with over one-million apps in the Apple App Store, still isn't saturated and still presents opportunity for innovation and, most of all, income. But making money on mobile isn't always easy. It's not a platform you can move onto without considerable learning and, sometimes, a considerable investment in hardware. Depending on the platform for which you've chosen to develop, there's not much you can do about the hardware costs. But I'm writing this post to help those interested in moving to mobile development save a little bit of time on the learning side.

Which Platform Should I Choose?

There are basically two mobile platforms in widespread use today: Apple's iOS and Google's Android. Sure, there are others like Blackberry and Windows but their market share is really too small to matter and you're basically wasting your time and effort if you develop from them. There's just no market there anymore.

Out of the remaining two dominant platforms, your choice for which you want to develop comes down to three things: number of users, ease of development, and return on investment. When looking at Android and iOS, you have to ask yourself which platform has enough users who are willing to buy your app to make spending the money on hardware or development time/tools worthwhile.

While both Android and iOS have massive amounts of users, I'd put forth that users, while certainly larger in number, don't pay for software nearly as much as iOS users do and, when they do, simply aren't willing to pay as much. Android users tend to gravitate more towards free apps than iOS users and seem to bristle a bit when asked to pay more than a few bucks for an app. I personally know Android users who've spent an hour looking and trying free apps just to avoid paying $.99 for an app they needed. iOS users tend to be much less shy about shelling out cash for the apps they want and, for that reason, I believe iOS is really the only platform you should focus on if you're a serious mobile developer.

A second thing to consider when looking at Android vs iOS is the time it will take you to develop and test your application. There are literally hundreds of Android devices that can run your application. The majority of them, unless you've done extensive testing and tweaking, are going to either run your app very poorly or it will look like absolute crap on the device. Android is a very fractured platform that boasts everything from $30 devices running ancient versions of the operating system to high end $800 devices that sit on the bleeding edge. This presents a nightmare for indie developers who want to reach as broad of an audience as possible since, even developing just for the high-end, often involves testing on a dozen or more devices all at a costs of several hundred dollars each. Even then, there could be 'gotcha' issues that harm your app and all of that translates into negative ratings on the app store and less exposure of your app to the market.

iOS on the other hand is unified. You only need to develop for two devices: the current iPhone/iPad and the previous iPhone/iPad. By the time you're three generations of device out, the market becomes so small that it's insignificant. This, of course, not only simplifies your development but also greatly reduces your overall costs.

So, for all the reasons listed above, my strong advice for a developer starting out in mobile is to ignore Android and focus entirely on iOS. It's where the money is and it's where you should focus your entire effort.

OK, I'll do iOS. Now What?

Deciding to develop for iOS is an easy decision. Actually developing for the platform requires a bit more thought. Primarily, you're going to face three major hurdles when you're getting started: hardware, learning the platform, learning the development tools. Let's tackle each of these independently.

1. Hardware

If you're going to develop for iOS or MacOS, you're going to have to use Apple hardware. That means the Mac and the device for which you're developing. Apple hardware can be rather expensive with a decent Macbook Pro costing at least $2300 and, with often approaching or exceeding $3000. For an indie developer, this can be a significant hurdle to getting started. If you're used to paying $800 for a Windows or Linux development machine, handing over that much money can be a tough decision to make. Nevertheless, it's one you're going to have to make if you want to get into mobile development on iOS.

Thankfully, there are a few options available that might help you save some money. The most common route new developers take is to buy used hardware either privately or on eBay. While this can be a bit risky it often gives you the best bang for your buck if you're careful and do some due diligence before handing over your cash.

Next, you could consider renting a Mac from one of your local 'rent to own' shops. This will often provide you with recent hardware for about $35-$45 a week. This isn't the best option but, depending on your project and how long it will take to finish and test, it could offer you some cost savings over buying new.

Lastly, you could rent  a 'Mac in the Cloud'. This service is offered by several providers and usually costs between $59 and $69 a month for a basic Mac configured with your development tools. You access it over the Internet using a program like RDP or VNC.

Which should you choose? Honestly, if you're not a full-time Mac user but just trialing iOS development, I'd strongly suggest you look at the last option. It gives you the chance to develop a real project and sell it without the commitment that comes with buying a $3,000 piece of hardware every few years.

2. Learning the platform

Each platform for which you develop does things its own way. iOS is no different. Apple has created a unique and often confusing set of application programming interfaces (API) that you will have to learn if you want to develop cool software for the platform. If you've developed software for other platforms, even desktop ones, this won't present too difficult of a challenge for you but it does present a learning curve nevertheless. While you could develop software without delving too deeply into the API's, you're not going to develop anything amazing and it definitely pays to learn to do things "The Apple Way".

As you might expect, all of the documentation is available for free online but, if you're a new developer, it might help to get a book to help you get started. This is the one I currently recommend. You should note that it is specific to iOS 9 and, as of this writing, Apple has announced iOS 10. This book won't cover the new features of iOS 10 but it will still give you a great grounding on iOS development that will allow you to easily pick up the changes in the new system.

Spend some time working through the example code and applications. Don't just cut and paste but really learn the platform. It'll seem tedious and useless at times but it will pay off in the quality of the applications you develop.

3. Learning the tools

Lastly, we come to what some new developers consider the most challenging part of iOS development: learning the tools. Apple provides a development environment for free to developers called XCode. XCode is technically the only tool you need to develop your applications. It provides a way to do everything from writing your code, testing it in an emulator, cryptographically signing it, and even submitting it to Apple for review.  It's a "decent" tool but requires you to learn either Swift or Objective-C.  I actually recommend something slightly different for new developers: Xojo.

Xojo is a cross-platform development environment and language that can be used to develop web, desktop, and iOS applications. It's language is simple to learn and it's syntax is similar to Java or C#. Using Xojo, you can easily develop iOS apps that are native to the platform and are indistinguishable from apps designed in Swift or Objective-C. Best of all, it doesn't require you to learn Swift or Objective-C and is easier to learn than either of them.

Using Xojo will sill require XCode so that means you will still need a Mac. It also will add to your overall costs as it will cost you $299 a year. In my opinion, it's a fee well worth paying so that you can get your apps out quickly and with few bugs.

Last but not least, you're going to need an Apple Developer account. Basically, the developer account allows you to publish your apps to the App Store and provides you with additional testing tools that help make your apps as bug-free as possible. It also gives you a code-signing certificate that you'll need in order to sign your applications. You cannot publish to the App Store if your app is not singed. That means you don't have a choice but to sign up for a developer accounts. It's $99 a year and you buy it directly from Apple.

That's it! Once you've gotten everything set up and you've take the time to learn a little about how to develop apps properly, you're ready to start designing and coding! Not everyone will make the next million-dollar app but you just might. One thing I can tell you is that the iOS platform currently offers the best opportunity for developers to make money and, even if your app doesn't make a million, you could end up making a comfortable living from it.

This article isn't intended to cover every nuance of developing for iOS and you'll no doubt learn a lot as you go through the process. Remember that there are vibrant, passionate, communities out there willing and ready to help you with almost any problem. Take advantage of them and get involved.

Now, your time has come. Get ready and go get started. Your mobile dev future awaits!