I have been asked this question umpteenth number of times now: Where to begin in Android Development?
Somehow the field of development has garnered a lot of interest in the recent years and I for one appreciate the efforts made by newcomers in trying to grasp as much as possible. The concept of hackathons and start-ups needing beginner level developers has put a meaning to all the work done and prove a worthy motive for developers in wanting to up their game.
I will try my best to provide a flow of learning and the important things every developer should know. This list may not be perfect, far from exhaustive and a little more than a guide. (Disclaimer)
First Lesson Of The Day : Learn to Search! Stack Overflow is your best friend in development! Google Google and Google some more for every problem you have. Mix and combine the answers, copy paste and always make a thorough search before asking your own question. Also when asking a question try to be as specific as possible. Almost everything you are trying to do has had people try it and fail at it. So the answer will be out there somewhere.
Lesson Number Two : Learn to Read Other’s Code. Stuck at implementing a feature? A library guide seems incomplete? Go through the source code, check the flow and see what you missed out. Developers are lazy people when it comes to writing so you’ll seldom find a wiki or guide that is complete or updated (I have encountered so many where they change variable names and forget to indicate so in the wiki.) So read the source. This will not only make you comfortable working on team projects but also give you an idea of how to write code so other’s can understand it easily. Very rarely will you be building a project alone so let’s learn to be a team player 😉
Out of Clever Lessons Now, so back to boring guide for Android. I won’t be providing links to specific tutorials but rather a list of what you should learn (you can go ahead and apply Rule Number 1 to find the tutorials and also because a lot has changed since I first learned Android). You should be able to compare code side by side and judge which is best for your situation, so open a couple of links on every topic and try to decide which one taught you the best and follow it.
The basic lessons to go through (and some not so basic):
- Learn about the file structure of an Android Project and where everything goes.
- Learn about basic layouts, toast, Activities and click events. www.raywenderlich.com/78574/android–tutorial-for-beginners-part-1 is a good guide to follow, the whole series is excellent.
- Learn about intents, extremely useful, sending data through and fro from activities and how to open them.
- Networking, learn how GET and POST requests are made, through basic HTTTP URL connection then through a networking library like Volley, Retrofit whatever seems best. Almost all applications need to be connected to the net and function in real time.
- Image handling,take care not using too much memory and rendering problems. Give Picasso, Glide and Ion a look.
- Data storage : through shared preferences then local database (both have very different use case) then learn to use an ORM like Sugar or any other that seems better.
- Fragments – perhaps the most difficult topic there is for beginners, create view pager, and navigation drawers on your own (then use libraries in the future – Neokree, MaterialViewPager)
- GCM : Google Cloud Messaging (Advanced): Learn how to do it on your own and then using helpful tech like Firebase. Can also implement the chat application with Firebase as a fun exercise.
- Being able to integrate available APIs especially Google APIs like Maps. (Advanced)
- Learn to interact with the camera and the gallery and handle edge cases on devices of various APIs (best to use libraries later for fast and effective implementation)
Once you are through with the basics or want to test your knowledge you can do one or all of the following:
- Build a basic To-Do application
- Build a tic-tac-toe game (Human Vs Human or include AI as an extreme challenge)
- Follow the following tutorial for a hangman game : http://code.tutsplus.com/tutorials/create-a-hangman-game-project-setup–mobile-21797 (Built in Eclipse but should be easy to replicate in Studio)
- Create a Music Player : http://code.tutsplus.com/tutorials/create-a-music-player-on-android-project-setup–mobile-22764
- Build a project with your friends, there is nothing that teaches you more than thinking about every component of the application from the scratch and redoing it till it meets your satisfaction.
Now for Some Side Tips : (Heads Up on things that become apparent in given time)
- Android Studio is a genius invention, let it help you as much as possible. Learn about all the shortcuts available for code completion and jumping between files.
- Do Not and I mean DO NOT stress about the Java implementation of everything. Why did the hardworking chaps in Google do all the hard work if you had to go ahead and spend your head at it. Accept things as they are.
- A word of advice to Windows users, shift to Linux. You will be doing yourself a favor. So do it before you pull out your hair from all the waiting.
- Use Genymotion for emulators if real device is unavailable (they are the best option though).
- Learn Git / Github! The importance of this cannot be stressed enough. If you don’t know how to use them, you are a duck sitting alone outside the party the developer’s world is having.
- Keep up to date with updates and changes in Android Design Guidelines. Read about the design repository. Some of the best guides available out there : https://github.com/codepath/android_guides
- Its best to use open source libraries available to build nice features that adhere to Android Design Guidelines. A sample list of libraries for simple features is available at my starred repositories list (too lazy to list them, apologies) Github Profile.
I will add resources and guides as I remember them and any suggestion, comments are welcome! Hope it helps some of you out there. Keep coding 🙂