Here are some important lessons I learned along the way.
Don’t use Eclipse. Eclipse runs slower than snail crap. I ended up using Notepad++ and the command line tools.
And certainly don’t use the Eclipse emulator. How the Eclipse developers managed to make such an abysmal emulator is beyond me. I could draw my screens on a piece of paper faster than the emulator would take to render them.
If you must use a GUI, use IntelliJ. It has a slightly better emulator. Actually, it’s better to just use IntelliJ from the start. Later importing a project to IntelliJ can be a hassle depending on which external libraries you’re using.
Get a real Android phone. Most Android developers probably own a phone, but I relied on the emulator. Buttons that were easy to point-and-click on a screen turned out to be ridiculously small on an actual phone.
Design for UI first. A mobile app is really nothing more than an interface to the server. In fact, if the UI is sufficiently beautiful, users won’t care if it does anything at all. Functionality-first is not a good strategy.
I ended up spending most of my time on layout, especially since I had to redo everything after seeing it on a physical device.
Good grief, layouts. Don’t even bother with
layout_weight or trying to make a one-size-fits-all design. Android lets you specify different layouts and values for individual screen sizes. Believe it or not, it’s easier to just create separate designs for different devices than come up with something that looks good everywhere.
Build an iPhone app. Most users are on iOS. Who cares if Android has greater global market share; you’re not designing apps to run on a $40 Chinese MiniPad. I live 500 meters from Google’s main campus and it took a whole week to find someone who owned an Android phone. Android should be an afterthought.
It’s also easier to start with an iPhone app, because you’re designing for 3 different devices as opposed to 80 bajillion different devices. Android developers command a higher salary than iOS developers. Why? Because Android development is harder.
Objective-C was created for app development and is conducive to rapid-prototyping. Java was created for enterprise software and is appropriate for large mismanaged development teams.
Saying that Java is good because it works on all platforms is like saying anal sex is good because it works on all genders.
And don’t use Windows. Windows wasn’t built for developers. I don’t even think it was built BY developers.
Finally, Android has Google behind it, and Google is fighting like hell to make it the default platform. I believe they will succeed and I have high hopes for Android Studio. This is another reason to use IntelliJ instead of Eclipse — IntelliJ forms the basis for Android Studio. AS currently has such limited library support that it is functionally useless, but Google is crapping out an update every few months.
As far as employment prospects go for the next 1-2 years, Android is probably a pretty good bet.