20

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 ?

angryITguy
  • 253
  • 2
  • 11
  • 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. – angryITguy Feb 25 '11 at 01: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. – angryITguy Feb 25 '11 at 01:23

7 Answers7

15

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.

Edit : As of Jan 2016 Google is officially supporting Android Studio as its official IDE.

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

Akash
  • 103
  • 2
Alain Pannetier
  • 921
  • 7
  • 8
  • I like your answer, can you provide some links that you have used for SQLLite, Webservices/REST/JSON and OpenGL ? – angryITguy Mar 07 '11 at 03:35
11

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

  • 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? –  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! –  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 – angryITguy Feb 25 '11 at 00:58
  • @giulio - thanks, hope you find the info your are looking for. –  Feb 25 '11 at 06:40
  • Lots of interesting articles/code bits on codeproject http://www.codeproject.com/KB/android/#General – angryITguy Mar 01 '11 at 23:25
5

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.

Ryan Hayes
  • 20,139
  • 4
  • 68
  • 116
  • Thanks. I have already discovered the Google SDK and dev guide ( http://developer.android.com/guide/index.html ). But found that there is alot missing for commercial grade applications development and deployment. – angryITguy Feb 25 '11 at 01:00
3

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.

AlexC
  • 1,337
  • 1
  • 11
  • 18
  • Thanks have been looking at Titanium. I have updated the question to help respondee's with what I am looking for in an answer. – angryITguy Feb 25 '11 at 01:26
2

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.

hotpaw2
  • 7,938
  • 4
  • 21
  • 47
1

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.

0

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.

fzwo
  • 631
  • 3
  • 7
  • 12