Apps are awesome, and when you have an idea for one it’s all to easy to dive straight into an IDE and start hacking away. For a seasoned pro this approach is inadvisable (not to mention unlikely…), but for a beginner it can be a really fast way to destroy any enthusiasm that you have to learn, and that just wont do.
Here are five pointers to help make learning Android mobile software development easier:
1. Do your groundwork
One thing that those trawling through quick and dirty web tutorials miss entirely is that in order to develop Android apps, you don’t learn “Android” itself. It is an operating system and a platform, that is to say it is a collection of languages and tools that all work together. To illustrate, in your average app development project you’re looking at:
- Programming Logic (Java)
- UI components (XML and Java)
- Data storage (SQLite, HTTP)
- Connectivity (HTTP, XML-RPC)
- Compiling (Gradle, ANT)
..and some others that I’ve probably missed, so you need to do some homework – just knowing Java is not enough. However learning to code in Java by making an Android app is not advisable because you’re going to encounter issues that have nothing to do with the Java code that you’ve just written. Instead, break it down:
- If you don’t know Java, start with the official Oracle Java tutorials.
- If you don’t know XML, W3Schools have an excellent and thorough tutorial section.
- If you want to make a Google Maps app as your first project, learn how the API works on its own, before starting to integrate it into an app.
Once you have a grasp of the individual concepts you can bring them together in a much smoother way than if you were hacking away trying to figure out if you are looking at an XML syntax error or an actual Java exception.
2. Get to know your tools
Android is a mature platform these days, and there are many tools available to help you. You would be surprised though (or maybe not) at how many professional Android developers don’t use or don’t even know about all of the tools available to them.
You can learn a lot from broken code, but not if you don’t know how to read the signs. Get acquainted with the Android Debugging Bridge (ADB), the Dalkvik Debug Monitor Server (DDMS) first of all, then move on to the more advanced features of Traceview and dmtracedump when you are looking to learn how to make your apps run smoothly and make efficient use of system resources.
It is also important to make sure that your IDE is set up properly, as Source not found messages aren’t helpful when you’re trying to get to the bottom of a Force Close situation. Android Studio is simple and integrated in so far as installation, and check out Vogella’s excellent tutorial if you decide to go down the more involved Eclipse route.
3.Learn to search
As with any software development task, knowing where to find the information that you need is the most important skill to develop. Learning how to find the right answers to your questions quickly will smooth out the learning curve no end. Here are some starters for some general questions you might want to ask as you progress:
- How does this specific component work?Check out the official Android Developer documentation, and use the search box. Every component available out-of-the-box so to speak is described in the documents, and there are usually code examples.
- I’ve got an error, what does it mean?! StackOverflow is such a useful resource for finding answers to this type of question that it’s become a running joke in the software industry. Copy-paste the error, and someone has probably already found the cause.Note: As you learn more, it’s better to try and make SO a last resort rather than a first one – you will learn more about what is going on in the software if you use your tools to try and trace the fault yourself.
- I like that expanding list thing, what is that? Where do I start, and what’s the best way to use that?Check out some video tutorials, from the actual Android team! If they don’t know the best way to achieve something in Android, who does?
- There seems to be more going on here than what I’m seeing…Like, what’s a Dalvik? Should I have one of those?The Android OS is a complex beast, and the layer that you normally work on is abstracted a long way away from the core bits and bytes. If you really want to go down the rabbit hole and learn about how the OS works, check out the source code itself; GrepCode allows you to browse the codebase online, by Android version, so you can see exactly why you can’t put that Double straight into a TextView.For a more historical view of the Android, be sure to read ArsTechnica’s comprehensive history of the platform.
4. Be socialable
Sign up to a developer forum or interest group on social media. It’s a great way to keep up to date with the latest developments within Android, and there is usually a “beginners” subgroup that you can join to get in contact with fellow Android newbies to share tips, frustrations and links. The Android Developers Google+ community is always busy, and other forums such as CodeProject, DevShed and CodeCall have sections for Android-specific discussions. Also sign up to the Android Developers channel on YouTube, it has some great video tutorials that explain the concepts – it’s a great resource for when you’re just getting started. You could even join the Android Developer Office Hours hangouts to ask the team directly!
Learn to search is deliberately above this point in this article, as asking a question that has been asked hundreds of times before on the same forum, and for which the answer is easy to find is the #1 best way to get a bad reputation with your first post…
Someone out there has probably already asked the question that is causing you difficulty. Likewise if you encounter a problem that you don’t think anyone else has yet, ask the question – the answers that you get will help the next person in your shoes that is trying to figure out that same problem.
If your goal is to become a professional developer, you will have to work in a team at some point, even if that is just with a graphic designer or marketing team, so getting used to working on a shared codebase is a useful skill, and working with developers who are already experienced is a great way to learn. Get involved in a community open-source project; check out GitHub and find an open source project that interests you.
5. Have a project
Better still: have lots of projects! Nothing is a better motivator than having a target to achieve. You could spend days, weeks, months ploughing through tutorials and achieve very little that is useful in the day to day. Worse still, you could try to create a fully scalable multi-language, phone and tablet-ready social media platform in a weekend for your first app. You’ll fail, an you’ll feel like you’ve failed.
Instead find a problem that you can solve with an app, it doesn’t have to be new. Do you want a custom calculator that can send the result to your emaill address? Do you want a one-shot Tweet app? A soundboard of fart noises? Whatever it is, it needn’t be a viable product or groundbreaking app when you’re done, it just needs to be a project that you can work towards.
Once you’ve decided on that, break it down into smaller sections; an app that plays a single MP3 file, a button that changes colour when you press it or an asynchronous image downloader. Make each of these work before you try and build it into your larger project.
This way will teach you how to work modularly, an invaluable skill if you’ve never worked on a true OO project before, and it will give you a finished mini-project at the end of each coding session to look at and say: “I made that”