Should I Learn To Program iOS Or Android Devices?
HW_Hack writes "In my early career in the '90s I had a hardware tech degree, but also a strong interest in software. I completed software courses in assembly, Pascal, HTML, and C as I prepped for a CS degree. I then got my chance to do hardware design for a major US firm and went that direction for a good 18-year career. I now work in a good sized school district doing IT support work at a large high school. I plan to revive my programming skills this winter so I can write apps for the flood of mobile devices. I am very much platform / OS agnostic and I support on any one day OS X, XP, Win 7, Linux servers, and now iOS as we pilot iPads in our school. My question focuses on three topics: Which programming environment (iOS or Android) is easier to jump into from a technical perspective / number of languages needed to master? Which one has a better SDK ecosystem of documentation, programmer support, and developer community(s)? Where is the market and the money going? I do not expect to get rich doing this, but with my insights into K12 needs I hope I can write effective apps for that market."
you should.
"You'll get nothing, and you'll like it!"
If you don't already have a Mac, iOS requires Apple hardware for development. You also need to learn objective-C which doesn't get much play outside of a Mac environment. None of that is bad, just a hurdle.
Personally, while iOS is currently ahead of Android (user base, # of devs, apps, etc) I think before long it's going to start playing catch up to Android. Android has got a lot of momentum.
Working with both systems will give you a deeper understanding of each, as well as allowing you to sell to a larger customer base, should that be something that appeals to you.
Chu vi parolas Vikipedion?
You should never, EVER think platform, then app. Think audience, application, and THEN learn what you need.
Your school district is using iPads? Then learn iOS. You have an android phone at home, or have java experience? Learn Android. You want to just make something work? Get the Android, iOS, and WebOS SDKs, and test like @#% so your mobile phone works everywhere. (Heck, get Blackberry and windows mobile if you can.)
Why not aim to learn both iOS and Android? You'll please more people and incur the wrath of less. If you pick just one, you have to deal with the tens of percents that can't run your apps, which is difficult.
Yes, it will take more time and effort to learn to environments, but not much more. Most of your time will be spent designing and testing the apps, not implementing code.
Yes. You should hedge your bets and learn both. The smartphone wars are far from over, and most smartphone content producers are releasing for, at the very least, both iOS and Android. Some also simultaneously release for Blackberry and Windows Mobile as well.
Each platform has its relative strengths and weaknesses. Writing code on Android pretty much means learning Java; similarly, writing code on iOS pretty much means learning Objective C. Neither language is likely to become obsolete very soon. The startup costs for writing code on Android are a bit lower; you don't need to buy anything to write Android apps. If you expect to write iOS apps, you need a Mac and you need XCode. On Android, you need Eclipse and the Android Eclipse SDK.
But, like I said, I wouldn't learn just one.
My blog
I'm not a hardcore programmer (PHP/Perl... lite stuff), but I thought it would be fun to try out mobile app development. I happened to have an iPhone, mac, etc... so I started there. Even with the books and intro material, I found it very difficult to get into. My C and similar is very rusty, so that was part of the problem. For the heck of it, I tried android and that was MUCH easier to get into. My Java was never great, but better than my C - which again - helped. All in all, I much more enjoyed the experience of working on the Android platform because it tended to have lower barriers to entry (less hardware, less software, etc), be easier (Java _is_ a simpler language) and be fun.
Though get a good book for android. Last I checked, the official docs online from Google were for like 1.0-1.5 and we're on 2.2. In short, horribly out of date (usable in some cases, but out of date).
snowulf.com
Yes, iPod touches, iPhones and iPads still haven't really caught on with the mainstream consumer yet. Consumers can regularly be seen debiting the merits of a cell phone based on the openness of the product - not the functionality or usability. I believe Apple has sold some product units but i'm expecting all the millions of owners to ditch their iDevices any day now simply because Android is less proprietary.
First of all, given a C base you'll probably be a little more comfortable with Objective-C, because you can fall back on C when you need to. The language itself is a superset and the superset is a really different mindset than C itself is, but it's a very nice OO language with some great features.
But also, currently iOS has a ton of awesome educational material. Apple itself provides a lot of documentation, and if you pay the $99/year fee to develop for devices (you should) then you also get all of the videos from the past developer conference, plus of course there's the free iTunesU videos from Stanford on iPhone development.
There are also a ton of third party books and at this point probably local Cocoaheads groups you could attend meeting with questions.
I think for some time to come Apple is going to be the leader in the space of mobile development, but especially around education - there are a lot of kids applications on the iPhone and Pad and a ton of parents are buying these devices in part so that kids can use them. I have been astounded at how fast this has happened, especially with the iPad.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
I wouldn't say "dead end", but the fact remains that as long as Apple has capricious and arbitrary rules for their app store (which, knowing them, will probably be until the end of time), iOS development is a risk. There is a very real possibility that your app which you invest hard work into will be rejected for no real reason. At least on Android, you can sell your app to people even if it is removed from the market for some reason (and far less apps are unjustly removed from the Android market than Apple's app store).
"16MB (fuck off, MiB fascists)" - The Mighty Buzzard
If you're talking about the old PalmOS. The original Palm company was sold to 3M with the provision that Handspring (composed of the people who originally built and ran Palm) would get a license to continue building products with it. Third parties were never allowed to produce PalmOS devices.
It's not just Microsoft's strategy. All the old UNIX vendors withered under Linux, which could be run on commodity hardware.
There will never be one hardware vendor to rule them all. It just doesn't work that way. If you insist on tying a platform to a single vendor, it will die.
Saying it doesn't make it true. You know what? END USERS DON'T GIVE A DAMN. FOSS advocates need to come to grips with that. They don't give a crap if it's open or not. They want it to be simple and do what they want, and for most consumers, the iPhone fits the bill. Android may also fit for a lot of folks. Also, iPhone users spend more money on apps than Android users, so it's certainly not a dead end.
What is it about open source zealots that utterly blinds them to reality? FOSS is all fine and dandy, but end users usually don't know or don't give a damn. They'll buy whatever they think is nifty.
Apple is making exactly the same mistakes they made in the early desktop market: they're refusing to license their software to more nimble hardware manufacturers.
Here's a clue: which of the early makers of desktop computers survived the Wintel monoculture of the late 80s and 90s and is still an influential, if minority, platform today? Hint - it begins with "A". What happened to CP/M and GEM, MSX and Unix which were licensed to multiple manufacturers?
Anyway, Apple have already tried that. Twice, actually: Apple with "classic" Mac OS and Steve Jobs with NeXTStep before he returned to Apple. That went well, didn't it?
What has worked spectacularly since the release of the iMac in 1998 is tying the software to premium-priced "designer label" hardware (but not quite as premium-priced as the old NeXT cubes). But you're right - Apple should drop their winning formula and go with the one that has already been proven to fail.
The fly in the ointment is that "more nimble hardware manufacturers" don't care whether they ship machines with Windows or MacOS as long as they make their money (usually by selling upgrades, peripherals, extended warranties and finance rather than the computers themselves). They'll be more than happy to attract custom from existing Apple converts, cannibalizing Apple's sales, Windows users to switch. So you've got guaranteed cannibalization of Apple's existing sales but no guarantee whatsoever that the clone-makers and their resellers will aggressively promote MacOS to Windows users. Look at Dell and Asus's feeble efforts to sell Linux-based machines...
In a survey of 100 programmers, 111111 thought that duck-typing was a good idea.
I hear people on /. saying this all the time and I simply don't think it's true. I've been coding post-university for > 14 years so I consider myself a "senior developer". I used to know c way back in the day, and have done some Java coding and a bit of C#, but Objective C still to me isn't "a few late nights" simple.
.NET or iOS development, are the libraries and everything that goes beyond the bare syntax. Understanding what method to use where takes a LOT more than just a few late nights. Additionally, every language brings with it its own pitfalls, security issues, etc., that a newbie developer is just not going to pick up right away.
Sure, a few late nights will let you pick up the syntax, but the real value of a platform, whether it's JEE,
Sure, after a couple weeks of hard studying you can start to program in a new language. I'm not debating that. Additionally, some languages and environments are going to be easier than others. But the vast majority of developers are not going to be even nearly up to speed on a new language without having a severe impact on the timeline of a project.
www.clarke.ca
There's something stinky about flash on mobiles. They tried to make it the next big mobile platform before (aka Flashlite) and it flopped.
Three big flash developers Nitrome, Semi Secret Software and Astro Ape Studios, are rewriting their games for iPhone natively rather than using CS5, because flash is too slow.
http://www.gamasutra.com/view/news/30368/InDepth_iOS_Flash_Devs_Cautiously_Optimistic_Of_Apples_New_Tools_Policy.php
"My personal opinion is that Objective C is pretty tedious and annoying. The syntax is ugly and non-intuitive. Again, this is my personal opinion. But having done years of C, C++, C#, I find it bizarre that Objective C syntax is non-obvious. Not that it is particularly complex, but if you know C++, Java and C# seem pretty obvious, whereas Objective C is just very different in syntax."
How is it not obvious? Your complaint seems to be that it is different, while admittedly not complex. Different != not obvious.
Objective C is an old language, and when it came out, it was a possible competitor to the still pretty shiny and new C++. It's an old enough language, that when Java was written, Java took a lot of cues from Obj-C. Apple didn't go out of their way to make a different language because back when Obj-C was created there wasn't a standard syntax for OOP programming.
Obj-C is dead simple, and honestly, not confusing if you take the time to learn it. However, it seems many people these days are afraid of languages that look different and immediately write it off, when it's pretty gosh darn elegant. Every time I ask people why they dislike Obj-C, they can't get any further than the brackets. It just amazes me how many people write off iOS because they think Obj-C is hard (which, alone, is mind numbing, considering the biggest draw of OS X on the desktop for software engineers is how easy Obj-C is compared to C++).
If the ability to learn is dead in software engineering, we're all in a lot of trouble.
[citation needed]
Fair enough. Here you go. It's a bit outdated (being from March and all), but I doubt the situation changed significatively in the last 6 months.
I asked for a citation because I felt it was inaccurate. A quick google search proved your point, but with some reservations...
On 17 March 2009, there were about 2,300 applications available for download from the Android Market, according to T-Mobile chief technical officer Cole Brodman.
By December 2009, there were over 20,000 applications available for download in the Android Market.
By August 2010, there are over 80,000 applications available for download in the Android Market, with over 1 billion application downloads
. Recent months (in 2010) have shown an ever increasing growth rate, recently (in May 2010) surpassing 10,000 additional applications per month.
copypasta from http://en.wikipedia.org/wiki/Android_Market
In addition, that's just the "official" "app store". There are links to 3 "alternative stores" on that same wiki page. I would post a link to Apple's alternative stores, but there don't seem to be any that are available without jailbreaking your device. Apple appears to have failed at quelling the android uprising.
As of September 1, 2010, there are at least 250,000 third-party applications officially available on the App Store, with over 6.5 billion total downloads.
copypasta from the similar article for apple's "marketplace".
This data appears to contradict me, and reinforce your position. There are, apparently, more apps for iOS than for android. However, it would appear that Apple's momentum is slowing, whereas android's momentum appears to be increasing. Development of new iPhone apps appears to have dropped below 10,000 new apps per month, whereas android is now above that line, and continuing to increase.
I suppose the argument could go either way, if we want to get picky, but it still stands to reason that android is still picking up steam, and iOS is slumping - probably largely due to the bad press the iPhone and iPad have received as of late, whereas no one seems to have anything bad to say about 'droid.
And a parting shot:
If the number of available apps is your only beef with android, what will you do when the developers stop developing for iOS, due to the myriad restrictions placed upon the apps that even make it into the store?
This work is licensed under a Creative Commons Attribution 3.0 Unported License.