Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

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 ?

share|improve this 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 Hopkins Feb 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. –  giulio Feb 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. –  giulio Feb 25 '11 at 1:23

7 Answers 7

up vote 17 down vote accepted
+25

There are several facets to this question:

From the technical point of view, answering the "How ?"

There are several technologies to master plus a number of "nice to have".

  1. Number one is Java. The Android SDK is based on the assumption that all apps are written in Java. Although arguably there are some emerging third party solutions to develop in .net (see monodroid), after all, the underlying OS is Linux.

  2. 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:

  1. SQLite

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

  3. OpenGL drawing.

  4. REST based Web services, XML or JSON.

  5. 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 ;-).

  1. teach your kid to draw and read.

  2. flashcards to learn foreign languages.

  3. UK-FreeSat TV-guide + remote control.

  4. yours here (cuisine recipes... etc).

share|improve this answer
    
+1 for lots of useful information (and that last list is identical to mine...) –  Gary Rowe Mar 1 '11 at 10:43
    
I like your answer, can you provide some links that you have used for SQLLite, Webservices/REST/JSON and OpenGL ? –  giulio Mar 7 '11 at 3:35

To be honest, I think you need to just Google and do some research.

Here are some interesting links I found, which may offer a good starting point.

There are many others in additon to the Google documentation you discussed.

Hope this will get you started off, finding the details you want!

Good Luck

share|improve this answer
    
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 Sellers Feb 24 '11 at 13:29
    
+1 to counter the negative. Plus it gives some good links :) –  Darren Young Feb 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 Sellers Feb 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 –  giulio Feb 25 '11 at 0:58
    
@giulio - thanks, hope you find the info your are looking for. –  Scott Sellers Feb 25 '11 at 6:40

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.

share|improve this answer
    
Thanks have been looking at Titanium. I have updated the question to help respondee's with what I am looking for in an answer. –  giulio Feb 25 '11 at 1:26

Google's Official Developer Guide

I'd take a look at Google's dev guide for Android, which includes best practices and guidelines for making your app consistent with the look and feel of an Android app.

share|improve this answer
    
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. –  giulio Feb 25 '11 at 1:00

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).

  1. 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.

  2. 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.

  3. 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.

share|improve this answer
    
intteresting.. can you provide any references to sites that cover those topics ? –  giulio Mar 3 '11 at 0:26

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.

share|improve this answer

I trained my Juniors in this following Manner.

Step 1: I ask them to see some free Application in Android market and also the API demos because they are also they can grab some ideas.(http://developer.android.com/resources/samples/ApiDemos/index.html) and also http://www.androidpeople.com/

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.

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.