Android and mobile development is an exciting area of development. As it is a new discipline, what would be expected of an android developer to build commercially robust applications in terms of skills ? The problem that I and, i think, many other "noobs" into the technology would like to know are the areas of technical skills and the progression to the required advanced topics that goes beyond the the very basics provided by Google.
There is a lot of information that's quite useful but its not organised into categories of discipline nor order.

Update : Look at it this way. If you're a senior dev, and needed to get a fellow colleague upto speed on Android for a particular project, (at your discretion for this question), what would you do ?

There are either too many possible answers, or good answers would be too long for this format. Please add details to narrow the answer set or to isolate an issue that can be answered in a few paragraphs.
If this question can be reworded to fit the rules in the help center, please edit the question.

By commercial do you mean "commercial quality" or "to make money" and if the later do you mean by getting a job in the area or by writing and selling apps for yourself?
–
Jon HopkinsFeb 24 '11 at 14:19

@Jon. Not excluding any of those areas. But (I think), there are alot of developers out there like me who want to extend their current organisation effectively onto devices. So, that doesn't actually involve "making money" or getting a new job, simply extending the enterprise for information hungry executives/Road warriors.
–
giulioFeb 25 '11 at 1:03

What I am looking for is advice from the senior developers in Android who have the "ooh! You should read this first, and then this for HTTP, or this for appealing Interface design and this for drawing 2D/3D..." moments. I have updated my question to reflect this.
–
giulioFeb 25 '11 at 1:23

The second is eclipse. Although there are a number of 3rd Party SDKs around, some betters than ADT, on Intellij, or on Netbeans, Google's efforts are officially focused only on eclipse for now.

In the android architecture, there a number of building blocks for which a little bit of exposure will always be helpful:

SQLite

General notions of video and audio streaming, codecs. For OpenCore (android.media).

OpenGL drawing.

REST based Web services, XML or JSON.

Notions pertaining to the ARM architecture for Native Code development.

Plus, reading in my crystal bowl, Android developers should also know their Linux and be proficient in native languages for the day when Google ditches Java and substitutes it with go or some other stuff they might have brewing somewhere (see their "Native Client" initiative in the browser domain). Google have already release a NDK (Native Development Kit) for c and C++ using standard JNI mechanism to complement Dalvik.

From the commercial point of view, answering the "What ?".

Android developers should be Android users themselves of course. However, not just standard mobile phones users but also tablet users. They should actually adopt a Jobsian attitude - always asking themselves "How could I do that better with my phone, my tablet or any not-yet-on-the-market-consumer-electronics-appliance ?".

There are plenty of android application that have no market leader yet, not necessarily related to mobility (or the usual boring "where-is-the-nearest- pizza ?" app). Here are a few ones I can't get out of my mind personally (until I have more time ;-).

hi, sorry if this is silly but I am new here! Why would this be voted down? The reason I ask is that I noticed no-one else answered this question and sometimes (I think so anyway) you just need to go away and work out the answer yourself. Thats all I was suggesting with some basic start points, so whats wrong with that?
–
Scott SellersFeb 24 '11 at 13:29

+1 to counter the negative. Plus it gives some good links :)
–
Darren YoungFeb 24 '11 at 13:46

@Darren Young - thanks, but I was just interested in why it may get voted down. So I can use the site better but the +1 is always welcome!
–
Scott SellersFeb 24 '11 at 13:58

@Digger. Thanks for that info. This is the entry level stuff that I have managed to find already. I was hoping that the more senior developers would/will jump in and take this answer a little further. +1
–
giulioFeb 25 '11 at 0:58

Thanks. I have already discovered the Google SDK and dev guide ( developer.android.com/guide/index.html ). But found that there is alot missing for commercial grade applications development and deployment.
–
giulioFeb 25 '11 at 1:00

Two things I would look at. One is Apples design guidelines for building apps. I know that the question was about Android Apps but the overarching principles apply and get you thinking in a 'App' design manner, which is actually quite different from a desktop app design perspective.

Also I would take a look at Appcelerator Titanium which is a tool which allows you to port code from a javascript / web dev type environment to native code on iPhone, iPad and Android. I have found it a useful way of making small apps quickly. You can download the 'Kitchen Sink' example which does, as the name implies, demonstrate all the native functionality available. I would definitley recommend this as a place to start.

I often find 3 things missing in new mobile developers, after basic skills with the required programming language(s), and knowledge of the SDK tools and libraries (which are not rocket science... 14 year olds have reportedly developed apps).

Developing for constrained environments. CPU, memory, display pixels, and available battery power are all much more constraining on mobile devices. Some programmers have never been exposed programming fast and tiny. You just can't think the same way to solve problems as you can when you have a rack with 5kW of power and cooling available, etc. Relearn some of the tricks that old-timers used to code great games on an 1MHz CPU with 48kB of memory, or some such. Maybe practice coding on an Arduino or other tiny controller.

UI familiarity. A user typically interacts with their mobile device in different ways from desktop systems. Carry one around. Maybe several models. Use them. Use lots of apps and critique (not features, but) how easy they are to use, in bad lighting, in bouncing moving vehicles, etc. Read and reread all the various mobile HIGs. Know what users like and don't like about the particular UI platform for which you are coding.

Quirk familiarity. Some of the tools and libraries are new and have "quirks". Read the developer boards for problems and solutions so you don't get stuck making the same mistake that zillions of other developers have stumbled onto. I see to too many questions on stackoverflow about how to do stuff that the hardware, the APIs, or app distribution models don't even allow. Whole companies have wasted their time trying to do the impossible for the iPhone App store.

For Instance: The IBNLive app for
Android Because when they see this
application, they can get an rough
idea that these are things are
possible, why we can't cerate /use ,
design or controls or functionality
Like this.

Step2: Once they got an Hope, By
Seeing the Existing Application, they
can search Google as well as the
Android developer Guide, which act as
Bible for Android, and came to know.

For Instance: My Juniors got an Idea,
of Expandable List View and Push
Notifications , then searched , how we
can do these things, then they find
for Push Notification , we can use
Cloud 2 Device Messaging, then they
studied about that and did it in a
Excellent manner.

Much more important than the technicalities (which can be learned and shouldn't be too hard anyway) is to know what to do, for whom, and whether you'll be able to sell enough of it. That last part is still kind of a problem on Android, as opposed to iOS.

So, before starting to learn android development, form a clear picture of what you want to achieve, how to achieve it, and whether that's actually sustainable.