Photo Credit : Euclase Photography
This post is inspired by a reply I gave recently on a Google Developer Group forum. A forum member asked for advice and mentorship on how to get started developing great apps for android. The question was of the following nature :
“I want to delve into the world of programming for android devices with my intermidiate skill in java programming. I have taken some steps to download and installed the Android sdk and Eclipes IDE (Using the ADT Bundle). I have tried to run my first android app, but having issues with the Emulator I created. I would like some guidance and mentorship as I go along this journey. “
The tips below were my edited responses. As usual, my response is anecdotal and based on my own experience learning to develop apps. The suggestions here arent per se technical instruction – programming language, platform etc – because there are numerous tutorial websites out there (e.g Udemy , General Assembly , Udemy Again, etc) . Rather this post focuses more on the process and gives some mental preparation for the journey.
Be tenacious and Passionate
This means that you have made your code vow, are happy to easily spend 10+ hours a day (assuming you are working on this full time) studying, coding, trying new things, testing, designing, rejoicing at your progress etc. 10-15hrs a day might sound extreme but I’m sure many of the top class programmers here in this forum do it all the time 🙂 . I have seen a few of them do it.
Set Goals and Benchmark
Goals can be established in different forms. Lines of code written, time spent studying, books/tutorials completed, apps developed etc. My recommended type of goal is to brainstorm on an app idea for implementation and select a similar , successful ,existing app which I call the benchmark app . When learning a new language, or developing a new app, I search for the best looking app in that genre and start out developing a close clone. And then I make modifications along the way. So I encourage you to have an app idea in mind that you want to build, then go to the play store and select your benchmark app, download and install it, thoroughly inspect it and figure out how the different parts are implemented (widgets etc).
For example, you want to build a slider puzzle game, download and install Gidigames (disclaimer, I built gidigames),
or a Physics Puzzle Game, download and install Cut the Rope.
or a music player app, download and install spinlet .
Its a great and enjoyable learning process!
You. Will. Need to . Patiently. Study.
This means that you will dig deep and find patience to go through those nice tutorials on developer.android.com (or any other developer tutorial platform thats applicable) . If possible, get a book and study it back to back . Keeping your eyes on the goal above, you will comb every page, test every sample code and celebrate your small successes along the way. Back in 2009 when I set out to build my very first android application, I downloaded the entire developer.android.com as a 70 page pdf which I found online (its much bigger now I suppose) . I remember going through the notepad code line by line and learned so much while implementing it before I even started writing my first app.
Also, If at any moment, you see stuff (java concepts) you don’t understand , its ok to back up and study java for a couple weeks before diving into android .
Stackoverflow is really your friend . Ask Questions .
Along my journey in learning to program (and I still have a long way to go) , I have shamelessly and successfully combed atleast 1000 stackoverflow pages seeking solutions to problems. In my experience, 95% of all problems I encounterered have already been discussed and solved on stackoverflow – and the 5% is my opportunity to contribute a new solution .
As you code, you will get baffled by exceptions/errors, confused by concepts and let down by your own tools (IDE, OS, test device etc) . True story. And as stackoverflow helped me in such bleak times, I am sure it would be of help to you too if you use it properly. The simplest way to use it is to perform clear specific google searches with your problem statment and add ‘stackoverlow”.
E.g search for “How to speed up a slow android emulator stackoverflow” on google . Notice that I didnt search for “Emulator not working fine stackoverflow” . The results for those two searches can be vastly different . The first one is much more likely to provide real actionable solutions and thats exactly what you want.
On your Next Steps
– I’ll say gobble up the tutorials on developer.android.com (or any other app development platform). By then, you should have atleast completed Notepad Exercise 1 , Notepad Exercise 2 , Notepad Exercise 3 anddone the Extra Credit! .Remember step 3 above on patience. Sometimes it would feel like a waste of time, but I assure you its not. And its also ok it this takes a while. Just remain tenacious
– Start work on your goal in step 2 above. Start working on that app idea you have (or create one ) and improve it until it becomes like your model benchmark app.
– If you are interested in game development, Iv written a couple of tutorials with sample code that may be helpful to get started building 2D games using Cocos2D for android.
– Ask questions and keep sharing your progress here.
It WILL take a while, maybe a couple years (it took me years), but it will be interesting and you’ll learn to be proud of your work. And this is a very good thing. Again, feel free to share your progress here and ask questions as you proceed.
Good luck in your android journeys!
(My tips above a definitely not exhaustive and I also look forward to learning from the suggestions the other developers who read this post will provide).