This is going to be controversial, but if I could give you just one piece of advice for starting out on your mobile app development journey it would be this:
Don’t jump right in to the development process.
I am a firm believer that the best way to learn is by doing – by involving yourself in a project and getting your hands dirty. So my advice may seem paradoxical, but having gotten myself out on the wrong foot, I can testify that obtaining a minimum level of proficiency in Android development skills is essential in reaching your goals.
As lifehackers and self development gurus have noted, there is a distinct difference between Just-in-case learning and Just-in-time learning, with the later being considered (rather naively in my opinion) the hands-down winner in terms of efficiency and effectiveness. As usual, it is prudent to take a more nuanced perspective.
There is a trade off between Just-in-time learning and Just-in-case learning. A delicate balance must be struck in programming, because not knowing the fundamentals can really waste your time and/or get you in trouble. On the other hand, you can easily delay getting started by reading just one more blog post or doing just one more tutorial just in case it might contain something you might need to know. The best strategy is to learn the basics, then jump in to a project and figure out which of the details you need to pick up along the way. Trust me, you will thank me for this tip!
It is attractive to think that you can download the Android SDK, watch a couple of tutorials, download and peruse a handful of samples, and get started building your own applications. You can certainly do this, but what you create is going to be a messy, confused, hacky peice of crap that isn’t going to do you much good in the long run. If you are a persistent person who has a hard time letting go of bad investments, then you are going to want to fix this Frankenstein monster as you slowly and painfully learn by experience the right way to do things. Don’t get me wrong, no matter what you do you are doing to end up with a mess on your hands, but this one is going to be hard to move on from.
In reality there is a system of knowledge, that once you have it, changes the way you absorb the information that you are presented and vastly improves your ability to integrate it into your development repertoire. In the language of the medieval Trivium, you must first understand the Grammar associated with Android development before you can properly understand the Logic and subsequently synthesize an application (Rhetoric).
This is a list of what I consider the minimum requirements for getting started developing android applications. This can be thought of as the Grammar:
- Java – I highly recommend buying a book and/or going through the lessons and tutorials on howtoprogramwithjava in order to get started. You need to be able to answer at least these fundamental questions:
- What is Object-Oriented Programming?
- What is a Class?
- What is a method?
- What is meant by the following terms?
- Static
- Protected
- Private
- Public
- Package
- void
- null
- String, float, int, double, List, Map
- You need to know what these magic words can do:
- if/else
- switch/case
- for
- while
- break
- return
- XML – You should know in general how it is structured and specifically what it is used for within Android.
- Android – On Top of Java and XML sets the Android system, which integrates these two into the actual application. You should be able to answer these questions before starting out.
- What is the manifest and what does it do?
- What is the relationship between the Java files and the XML files?
- What is an Activity?
- What is a Fragment?
- What’s the point of the strings.xml file, and why should I put strings there instead of hard-coded into my application files?
- What is the application lifecycle?
- Android Studio – I highly recommend getting started with Android Studio instead of Eclipse. You should at least know what Gradle is and how the associated files are used to manage your apps dependencies and how you can incorporate different build variants of your application.
You also need to know where to go when you get stuck. First of all, and I realize that this sounds low-tech, I recommend buying a book to learn the basics of Android development. My personal favorite is The Big Nerd Ranch Guide, but there are many great ones out there I am sure.
The Google Documentation is a very helpful place to start and is the definitive source for information about Android Development that gets better every time I go there. But do keep in mind that you need to know the basics of Java and XML in order to comprehend the documentation. Be careful of the Reference documentation, which is well and good for those who know very well what they are doing and nearly useless for the beginner.
Stack Overflow is a powerful tool and a terrible master. Use it wisely. It is the definitive place to go if you know the ropes pretty well but have a very specific problem that you are trying to solve. I myself have been there hundreds of times, and without fail, someone has already asked the question that I am looking for. The major caveat with Stack Overflow is that, by its nature, it is not an integrative approach to solving your particular problem. If you don’t fully understand the code solution that is presented there and blindly paste it into your app, get ready to experience some problems sometime between today and 6 months from now when you have forgotten the details of the problem.
I also highly recommend bookmarking a few tutorial sites for your reference. Vogella is my personal favorite, but again there are many good options out there.