Posted in Android Experiments, Guides

Android Resources : A Beginner’s Guide

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/androidtutorial-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:

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 🙂

 

Posted in Uncategorized

Learn It Girl! Learning As I Teach.

The second edition of Learn It Girl!   finally kicked off this week after tremendous amounts of efforts on the parts of all the applicants and the organizers. I personally am aware of the issues encountered being an organizer but today I am here to talk about my experience  as a mentor as that is possibly the most selfless volunteer task in this program. I have mentored my fellow juniors and take classes at a local institution but each experience is as unique as night and day. The level of commitment and willingness that goes into one-on-one mentoring is both surprising and humbling.

Honestly when I applied as a mentor I had little idea of how everything will progress, I had no misgivings of my technical abilities but after a point it is the way you come across that  matters. While teaching I have to question every sentence I speak to make sure I did not assume any background knowledge required for the same, the tasks have to built up from the scratch with increasing level of difficulty and you have to judge both, your ability to impart a certain piece of information and that of your mentee to grasp it. The process is interactive, thought provoking and ultimately rewarding in terms of the joy and gratitude you can hear in the voice of the one being taught. In my opinion it forms one of the most sacred bonds – built on the foundation of give and take of knowledge.

The task does not come without its share of hiccups or rather practical constraints as most of the mentors (to the best of my knowledge) are not professional instructors and to decide a suitable path to undertake within the given three months can be at times daunting. I am in a personal dilemma on deciding how much of the project proposed by my mentee (an ambitious and innovative idea) is possible in the given time considering everything has to learned from scratch. I wouldn’t want to deliver anything less than what she envisioned. But these are small problems, better and beautiful solutions to which I am sure will arise on discussion and deliberation. At times I am as excited as I was when I first had the same lessons. This journey will hopefully help many (both mentors and mentees) in their own unique way and help shape a tech community that is built from within with crusaders to take its mission forward and others being prepared to carry the torch in future.