Should I Learn To Program iOS Or Android Devices? 403
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."
Yes (Score:5, Insightful)
Android (Score:2, Insightful)
iPhone is too proprietary it is a dead end.
Go Android (Score:5, Insightful)
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.
Learn them both. (Score:4, Insightful)
App first, platform second (Score:5, Insightful)
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.)
Yes (Score:2, Insightful)
More is more (Score:4, Insightful)
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. (Score:5, Insightful)
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.
Re:Android (Score:0, Insightful)
Thing is, this can be an upside if you look at it from a funny angle. The entire hardware/software stack is tightly controlled and the range of devices limited, so there are fewer edge cases for developers. It really does help.
Disclaimer: I enjoy writing for iOS devices. It's fun!
Re:Android (Score:2, Insightful)
Re:Yes (Score:5, Insightful)
Having the knowledge to develop for both platforms is a wise idea. There are some who think that Apple's proprietary-ness will lead them to their doom. I don't think that's the case at all. I know that with "walled garden" of iOS, my apps are checked for proper behavior before being placed in the wild. And, there is a system in place to sell apps and collect revenue. Granted, Apple takes a nice slice for the privilege - but its a thriving environment.
The language you need to learn is currently Objective-C. Apple has recently changed their development tool policy - so, expect other languages to become available that cross compile down to Objective-C. We'll see. Documentation is very good and there are plenty of 3rd party books out there also.
Android requires Java and knowledge of the Android SKD. It also has a large community following. Gartner groups predicts that by 2014, Android based phones will outsell iOS phones - simply because it will be on more platforms.
Android has a hidden danger - malware has already been found in the wild that attack Android phones. And, if the code keeps forking for each device type out there, you will have to know all the nuances of a given platform. This is something you don't have to worry about too much with iOS. I am not familiar with the selling of Android apps - how that ecosystem works - maybe, somebody else can expound on that.
A third contender will be Microsoft with Windows Phone 7. We'll have to see if their system catches on - the first devices are due out in October. It may be too late for them.
Blackberry? Well, they have too many devices and versions of their OS. Testing our app for Blackberry required the hiring of service to provide access to test devices and separate builds for each device type. I would discourage Blackberry development.
If you plan to sell to your services to the business world, learn both environments. There's where the money is to be made - the days of the "big app" making your a zillionaire are pretty much gone.
Re:Yes. (Score:5, Insightful)
I suggest picking one of them and learning it well. If you make something that seems to have potential, hire someone to port it -- or then take the time to learn another platform.
Just my suggestion. Trying to learn both at once can be quite overwhelming.
Re:Go Android (Score:5, Insightful)
Re:Go Android (Score:4, Insightful)
Java might not be the best language around, but I find it much better than Objective C. What part of Objective C do you prefer?
Re:iOS (Score:3, Insightful)
Except one 99c app like angry birds netted the developers more than the gross of the entire android marketplace..
remain agnostic (Score:3, Insightful)
Re:Android (Score:5, Insightful)
Re:Go Android (Score:3, Insightful)
I've never used Objective C. It may be rubbish too!
You're right though, my main objection is with Eclipse, which is one of the... no it *is* the worst IDE I've ever used.
Re:Yes (Score:4, Insightful)
Re:Yes (Score:2, Insightful)
you should.
Good enough, didn't answer much of his questions as far as languages, communities, environments, market and so on though.
Also what about QT? 4.7 just came out:
http://qt.nokia.com/products/whats-new-in-qt/ [nokia.com]
Re:Android (Score:5, Insightful)
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.
Re:I wouldn't invest in iOS development (Score:4, Insightful)
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...
Not true (Score:5, Insightful)
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.
Re:Yes (Score:3, Insightful)
- ActionScript is the place when good language design went to die
You're talking about ActionScript 1. You should check out ActionScript 3, the current iteration. It's for all intents and purposes, the same syntax as JAVA. ActionScript 2 is a variant of JavaScript (it's an ECMAScript implementation).
Re:Android (Score:3, Insightful)
[citation needed]
Fair enough. Here you go [gizmodo.com]. It's a bit outdated (being from March and all), but I doubt the situation changed significatively in the last 6 months.
Re:Android (Score:3, Insightful)
FOSS is all fine and dandy, but end users usually don't know or don't give a damn.
... because FOSS advocates aren't end users? Interesting viewpoint...
Bollocks (Score:3, Insightful)
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 [gamasutra.com]
Re:If you're only going to learn one... (Score:4, Insightful)
"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.
Re:Bollocks (Score:2, Insightful)
Now, since the desktop and mobile versions of Flash are essentially the same, this is no longer as bad a problem.
As I mentioned before, you'd get optimal performance results on native code, but depending on the needs of your App, Flash should be enough. The Eco Zoo [ecodazoo.com], a really cute and impressive full-3D Flash site with N64-level polygon graphics (built by Masayuki Kido aka ROXIK on his custom Sharikura 3D Engine) runs pretty fast on the Google Nexus One (and this is surprising because it wasn't targeted at mobile at all! See what real optimization can accomplish? Those Japanese coders are really crazy good!). This videoblog review by Thibault Imbault [bytearray.org] will show you actual Flash 10.1 performance on the Nexus One.
Also, you mentioned you're doing this in the context of K-12. You can't go wrong with Flash then as it's the de facto standard for building multimedi animated and interactive e-learning content.
Re:Go Android (Score:3, Insightful)
Org mode. It was that compelling for me.
Re:Yes (Score:1, Insightful)
Android also uses FreeType and was probably vulnerable to the same thing; the difference is visibility.
Re:Not true (Score:3, Insightful)
Spot on.
I have been programming since I was 9 years old (LOGO, GWBASIC, Pascal, C, then C++ then Java) around 1988) and if someone asks me in what languages am I fluent I would just say Java, and C, because these are the ones I have used *for work* in the last 5 years (granted, I have also used a plethora other languages ,like PHP, python, ASM, some SQLs and whatnot).
Some time ago I read an article by Joel Spolsky regarding this topic (can someone whore some Karma by posting the link? plz). The problem is that "newbie" programmers think that knowing a programming language is just a matter of knowing the control flow instructions, memorizing the keywords and maybe learning one or two library functions.
However, the truth is when using a language for *production* code, there really is a difference between a guy who knows the ins and outs of the language, the subtleties, and just reading a book and doing a bunch of hello worlds.
Re:Android (Score:1, Insightful)
The problem with arguments like yours is that they rely on the false premise that "most consumers" have, want, or like the iPhone.
The problem is, there's only at most 55 million iPhones out there out of a total 4.6 billion active mobile phones across the world. The actual number of active iPhone users is likely to be less, as that's the total sales figure for all iPhone sales, which, on 2 year contracts, will often have been replaced by later versions of iPhones with the old models being left inactive- particularly many of the 6 million first generation devices, which aren't even really supported by Apple anymore.
So when you say "end users", what you actually mean, is little over 1% of all cell phone users. The fact is, the iPhone is still absolutely dwarfed by JavaME and other mobile platform based devices.
It's an absolute fallacy to pretend that the iPhone has somehow captured the mindshare of the consumer, to imply the majority of people like the iPhone and it's methods, they don't. It's a very small clique still.
So to counter your point, what Mac fanboys need to grasp: END USERS DONT GIVE A DAMN ABOUT APPLE AND THEIR DEVICES, yes, I know Apple's PR machine is incredibly good at getting Apple mentioned so frequently that anyone would think they're ruling the world, yes, I know fanboys think that higher market cap than Microsoft despite still being about a 3rd the actual size in terms of equity, assets and revenue means they're the largest tech company in the world, but none of it matters, Apple is still nothing more than an irrelevance in the global phone marketplace. Slightly less of an irrelevance in some arbitrarily made up to suit definitions of "smartphone", and slightly less of an irrelevance in terms of mobile gaming (despite Steve Jobs outright lie that somehow iOS devices outnumber Nintendo and Sony's mobile gaming devices at his last conference).
To paraphrase you: What is it about mac zealots that utterly blinds them to reality? Apple stuff is all fine and dandy, but end users usually don't know or don't give a damn. They'll buy whatever best suits their needs. Most the time, that is not Apple.
Note that I'm not saying Apple products are crap, not at all, they're nice, but I'm absolutely sick of hearing this fantasy that they're somehow the most popular thing in the world, that they're somehow a market leader, despite things like MMS, Apps, Exchange, GPS, 3G, and so on and so on being added to the iPhone long long after their competitors had them. The iPhone 4 had a massive engineering defect that can only come down to sheer incompetence, there seem to have been more vulnerabilities on the iPhone than pretty much any other phone platform in history. Sure the iPhone really pushed phone UI's forward, but please don't lie and pretend it's done anything other than that whatsoever.