Learning android development

Learning android development

This post is meant for people looking to start android development, and also for people who have covered the basics and now are looking to improve themselves. I would be providing resources I came across while learning android development.

Getting started with android development

  • Learning pre-requisites skills

I think that one should learn a a bit of Java language before going into android development. You can take a course on Udacity, or watch Youtube videos or a book. I learned it from two sources: TheNewBoston Youtube video playlist of “Java (Beginner) Programming Tutorials” (Tip: Don’t install Eclipse. Go for IntelliJ IDEA) and a book called “Java: A Beginner’s Guide” by Herbert Schildt.

I would recommend to install Ubuntu or any other Linux distro as Android studio, the IDE used to develop android apps is painfully slow on Windows if you don’t have a SSD. This will help you learn Linux. Also if you have the time, do a course or watch videos on Git to learn it’s basics. Learning git would definitely benefit you.

  • Learning the basics

Now that you know the pre-requisites, we can move to learn the basics of android development. I would recommend using either of the resources (Do some research to find which one suites you best)

1. Google Developers Training
2. Udacity-Google Partnership
3. Getting started — Android Developers
4. (I learned from this) Android App Development for Beginners by TheNewBoston

Although TheNewBoston videos are pretty good, I would recommend to use the other resources as they are from Google themselves.

After you have learned the basics about android development, you should be comfortable in using Android Studio IDE, logcat, debugger, and should know about Activity lifecycle, Fragments, Screen navigation, View Pager, Notifications, RecyclerView, SharedPreferences, Context, Dialogs, Basic threading, Services etc.

Improving your skills

Next to improve your skills, I would recommend to learn the following things one by one or as the need arises (Keep in mind that this list isn’t a complete guide — it is merely what I felt from my experience is important, and learning them will take a long time) :

  • MVP architecture, MVVM architecture, Android code style and guidelines, Material design, Design support library, Basic animations, Constraint layout.
  • 3rd party libraries like ButterKnife, Glide, Picasso, Timber.
  • Networking using OkHttp, Gson, Volley, Retrofit or any other.
  • Database and ORM’s. Example: Room, SQLlite, Realm, ORMLite, greenDOA etc.
  • Custom views and Loaders.
  • Design Patterns, Testing, FindBugs, PMD, Functional Programming concepts, Firebase, RxJava, RxAndroid, Dagger, SOLID Principles. (These are pretty advanced so try not to jump to these. Take your time.)

Resources

The best resource I have come across learning, better than even courses is blog posts. Most of what I’ve learned is from reading blogs and then implementing it.

Tips for software development

  • Care about code quality — read about modularity, seperation of concern, MVP, MVC, MVVM, function length, class size, variable name etc. Apply the good practices you read about this stuff.
  • Development takes time. You will first need to learn basic syntax and some basic components before jumping in.
  • Slowly increase the projects complexity per each 2–3 projects. Learn new things and apply them.
  • Wisely choose what tech or library or framework you use, and read the docs first. Google the problem instead of asking somebody first. Try every stack overflow possible, you will learn the ways of “not doing” a task, which is very important.
  • If you feel the need to diversify yourself — Read Shekhar Gulati 52 Technologies in 2016.

You can also refer to this awesome guide from Mindorks.