Ask HN: iOS or Android for a beginner?

9 points by Eduardo3rd ↗ HN
I'd like to build a mobile application for a personal side project, but I've never done any app development before. I don't really care which platform I use. I'm just looking for the one that will be the fastest and easiest to pickup. There seems to be a lot of disagreement on the web so I thought I'd ask here.

The core parts of the app will be parsing a QR code and accessing GPS to relay the user's location.

If it is at all relevant, I have a MS in mechanical engineering and I've done a fair amount of C++ and Python coding for other projects. I would say I'm probably just past the beginner stage for HTML/CSS/jQuery, but not comfortable enough to go write a web app without a lot of questions.

Thanks in advance for input.

20 comments

[ 3.3 ms ] story [ 58.8 ms ] thread
Because you know a little bit of HTML/CSS/jQuery, why don't you try to build it as a cross-platform HTML5 mobile web app using Cordova/PhoneGap?

There's a bar code scanner plugin for Cordova:

https://github.com/wildabeast/BarcodeScanner

And location can be accessed using the standard geolocation plugin for Cordova.

Because it's a side project, it won't matter that the user interface is non-standard/quirky.

Go with Android.

1) The fee is less for publishing ($35 vs. $99) and you're guaranteed tobe able to publish.

2) You can use Eclipse or Android Studio (intellij) and not have to learn XCode.

3) If you didn't want to learn java, you could write your android app with python or use a wrapper and just use HTML/CSS/JavaScript.

You forgot the required $62/year for a PO Box since your address is published on your Play store page ready for easy Swatting, Pizzering, or other harassment from strangers you upset.

Also the $35 is one off, the $99 is per year. The $62 is per year also however.

On the other hand, as an iOS developer, you can use Xcode and not have to learn Eclipse or Android Studio. I'm no fan of Xcode, but if big IDEs are completely alien to you, I wouldn't claim that Eclipse would be a comforting environment either.
If you can, do both. If it's just to learn though, i'd do whatever has the lowest barrier to entry for you. Which phone do you have yourself? Make it for that. Good luck!
I think the following should be considerations:

What phone do you have? What phone do you think your testers and users will have?

Do you have a Mac? You will need on for writing an iOS app.

What languages do you favor? For iOS, mainstream ones are Objective-C and Swift (arguably not yet, but it likely will be fairly shortly). For Android, Java. You can use C++ on both, but you will need something else for the UI on iOS and, I would guess, on Android.

Did you google for libraries you would want to use? AFAIK, iOS doesn't that overly parse QR codes; Android may or may not.

If you have a Mac then iOS is practical. Otherwise, only Android is practical. Android is also practical of course if you have a Mac. Having an Android device is another reason to look at Android programming.

In my opinion, a web app is probably easier to write than a mobile app because:

+ Web apps have a longer history and therefore more information about their design and construction.

+ There is more choice of frameworks and more choice of language e.g. something as simple as Bottle for Python [1]

+ Basic web apps can be written without learning a framework, just some library calls.

Of course, getting GPS and QR codes directly isn't really possible for a web app. Though processing them is.

[1] http://bottlepy.org/docs/dev/index.html

Full disclosure: I'm biased as I'm primarily an Android engineer. But, I've led teams and developed extensively for both platforms, so I'll tell you a couple things I've observed.

1. If you already own an iOS or Android as your primary device, that should play big into your decision. You'll have a much easier time maintaining interest in your project as well as being more likely to create a more compelling product if you live on the platform.

2. Google's Android documentation and guides are on a completely different level than Apple's for iOS - Google's is just so much more extensive. It's really not even close IMHO. If you're a beginner I think this will make a very large difference.

3. The iOS developer program and provisioning system is a PITA, even for experienced developers. Often times when learning something new, all it takes is a small roadblock to become frustrated and lose interest. With Android, building apps for you and your friend's devices is very easy, and submitting to Google Play is much easier, with no review process and again just one guy's opinion, but despite a recent (and dearly needed) makeover, iTunes Connect is still inferior w.r.t usability compared to the Android Developer console.

4. I used Eclipse + the ADT plugin for years and while it wasn't terrible (I was come from J2ME development for BlackBerry so the bar was quite low), I was always jealous of Xcode. Google has now addressed this with Android Studio. It's still a bit of a moving target, but I now consider on par or better than Xcode.

5. Don't let the haters scare you away with the fragmentation arguments. "Fragmentation" is a feature :) Truthfully, if this is just a side project, I would set a minSdk for your app a minimum 14, or even 19 if you want to, and be amazed by how your app works so well on the 100s or 1000s of devices out there that it supports.

Couple words on iOS:

1. Whereas with the x86 emulator and Genymotion, the Android emulator has dramatically improved, the iOS simulator is still superior with respect to ease of use and pace of development.

2. If you go the iOS route, I would strongly suggest to go directly to Swift. It's where the puck is going and you've got a chance at this point to be a relative expert among a sea of objective-c developers, who will need to learn it as Apple increasingly shifts the platform.

3. This is very subjective and nebulous, but after using both platforms extensively, I've found the iOS APIs are simply better. You'll find things just work and you'll be continually surprised to find the puzzle pieces just fitting together. (ie "hey I wonder if there's a way I do X...oh perfect there's just a simple method call for it")

4. As others have noted, if you don't have a Mac then the point is moot, Android is your only option.

Hope this helps!

While I mostly agree with what you have said, I just want to clarify #3. Now with TestFlight, I've found it to be very easy to get apps on other people's devices and update them whenever I want.
Sure, testflight makes it easier (it's been around for years...). But you still have to invite people to testflight, after theyve signed up and added their device, you can provision the app for each device, after adding it to your developer account. Finally you can upload the build and have people install it. Obviously the process gets easier with time, and if you're not adding new people to the team.

But, with Android you build the APK and send out as an email attachment to whoever and you're done. Set up a shared directory on dropbox or google drive or w/e if you want.

I apologize for the delayed response. HN really needs reply notifications like Reddit. Anyway...

Apple bought testflight. No more provisioning on up to 1000 devices. Android is still much simpler, but I was just pointing out that you don't have to provision devices or add their udid anymore.

Thanks for the detailed response! I've switched back and forth between Android and iOS over the years, so that's not much of an issue. I also use a Mac, so I can develop for either platform. I probably should have mentioned that in my initial post.

I like the point about Swift and iOS APIs. I'm hoping to be able to use APIs for most of the app functionality, but I guess that's another piece that I should dig into before making the final call.

While i agree with most of your points. I'm an veteran android engineer learning iOS. And i have to say, the xcode storyboard functionality makes it very easy to write a simple app. However you have to learn all the drag-n-drop options to get started. But it might be an argument for starting with iOS.
I'd recommend Android for the following reasons:

1) The official documentation is way better and much more extensive.

2) It's $35 one time vs $99 a year. Maybe not a big deal to you but something to consider.

3) In my experience it is much easier to get 'Hello World' up and running on an Android device than on an iOS Device. You can use Eclipse or Android Studio on any platform rather than having to learn XCode.

4) Publishing is WAY easier. You can finish your app and have an apk live on the Play Store within an hour. With Apple this process takes ~1 week and you might get rejected.

5) You get to code in Java. While it may or may not be a 'better' language than ObjC it is definitely better documented.

For fairness, here are some advantages of iOS:

1. The simulator is much faster if you don't have a physical device.

2. Layout design is definitely easier because of the small number of screen sizes and form factors.

3. If your goal is to make money, iOS is still ahead.

I'm surprised people are putting emphasis on programming language. You can use frameworks to code in LUA or C# for either IOS or Android.

As others have mentioned, to compile for IOS you'll need a Mac. Personally I develop for Android, but use a Mac. My recommendation is to look at which devices your consumers (including you) have and go with it.

Read as others commented regarding Amazon's annual fee vs. Android's one-time (lower) fee. The PO box comment is interesting, but only if you're going to sell your app or have in-app-purchases - free apps/ad-apps do not require any address.

*Apple's annual fee
Thank you, I'm preparing app for Amazon, and it's just on my mind.
Thanks for clarifying the PO box thing - that was news to me. I'm glad to hear I won't have to worry about it for what I'm putting together.
It doesn't matter. :-)

If your criterion is "fastest and easiest to pickup", the expected marginal advantage of one or the other is smaller than the time you'll spend choosing between them. The only way to really find a preference is to dive in, learn one, and then maybe learn the other later.

There may be some other criteria that decide the issue for you, e.g. market conditions or owning a Mac. But really I'd just pick whichever gives you greater enjoyment.

Best of luck!

Edit: I did want to say that if you go with iOS, the O'Reilly book Programming iOS by Neuburg is excellent. I felt their Android book was pretty weak.

It's a coin toss, but I went with iOS and don't regret it. The biggest reasons I don't regret it have nothing to do with the platform itself and have everything to do with having resources like raywenderlich.com and the articles on that site. I found that community and environment to be very very helpful.

The only frustration I really had was that, in the Apple world, things change fast. When I'd Google something, I'd find some code from 4 years ago that would show ways of doing things that were outdated. There are also minor disputes here and there on what's "the best way" to accomplish things, but overall, coming to -a- solution in most cases never took more than a day or two of frustration.