Android Development Meetup

Hi guys, hope you liked the session on Android Development. This blog would help you get started with getting your hands dirty with some actual development, with resources and basic knowledge about App Development.

Mobile App Development can be categorized into two categories-
Native : The one using Android studio, eclipse IDEs. App size is much lesser.
Hybrid : Using platforms like React, Ionic, Game engines, etc. We need it when your project requires lots of other things other than being in Android paradigm, like AR. If you write code in Android studio(Java) you’ll end up write hundreds lines for making just a cube using OpenGL(open graphics library). So we use lets say game engines, which provides you with built-in rendering capabilities and you can import 3d models easily.

We are not covering Hybrid App Development using JavaScript and its frameworks (remember, JavaScript != Java...JavaScript is to Java is as Carpet is to Car) rather, we'd be covering Native Android App Development, using Java. Confusing JavaScript with Java is one of the 7 sins a developer should never commit, the other six, you’d learn with time.


Why Android Development?

Most of you must have been reading this post on your Android Smartphone. Every startup, every tech company, every MNC, have their own Android Application. Then there are a market for games and other apps. Android is the most popular mobile OS in the market, and the most popular OS that gadgets run on. It's not just smartphones, smartwatches, Android TV, tablets... Android is everywhere but seriously there are not much developers out there in the market. That opens up a lot of job opportunities for developers. Though there are a lot of web developers and the domain is getting saturated, there's a dearth of them when it comes to Android. So, why Android? Because JOBS!

What all do you need to learn to become an Android Developer?

1. Java: Java as a language is needed for android development. You should know basics of it atleast to get started, plus the OOPS concepts are important to understand the things. The best way to learn Java is to become old school for some time, pick up a book that goes by the name Herbert Schieldt (available in the library). It is the bible of Java. Do not dive into the depths, as it’s not a prerequisite to get started but getting handy with the OOPS concepts like Inheritance, function overloading, constructors, encapsulation, polymorphism, interfaces, Multithreading etc would be beneficial as you will be using these concepts as you advance. In case, you’re not comfortable with the book, just type “online java course” on youtube, and take any of the lectures, say for example, mysirg.com videos, they’re in hindi, but does cover all of these topics.

2. XML: It’s just like you type HTML, CSS in web. Don’t worry, you’ll get used to it if you develop more often and for a start, you can use drag and drop feature to build a simple User Interface.

3. Data Persistence: In Android, we have two ways to persist data, SQLite and SharedPreferences, both of which are a cakewalk if you know basic querying, which again you wouldn't take more than 2 days to learn. Source:This course on udacity.

4. Networking: Making the app connect to the internet, and make requests. Although, you can start with OKHttp client, but later on you should know how to use Volley and Retrofit2 libraries, as you’ll use these 2 in the industry. This course on udacity uses Okhttp , which is the naive approach, and do not get used in industry. But just go though as you’ll get to learn the internals.

5. Backend (Not needed for beginner developers, but will be if you want to explore more and make our own APIs, this thing will make you full-stack): Once you are handy with the first three points, you may also need a backend for your application. JavaScript takes over from here. I would personally recommend you to take this MEAN (MongoDB, Express, Angular, Node) stack development course on coursera.org . Don’t get overwhelmed by lots of new terms, you’ll learn on the only during this course, as one would replace other in order to avoid complexity.

Resources:

Make sure than when you follow a tutorial, you don't necessarily write or understand all the code yourself but what's more important is that you understand the concept that is being covered.

Feel free to explore more options to find the tutorial that suits you the best. Most of the popular educational websites for programmers have courses related to Android Development. Udacity’s online course “Developing Android Applications” is the most recommended one.

Then, once you are off the mark, you will always get stuck at things, you need to know where to fall back to in such a scenario, because regardless of how pro you are, you always get stuck at some point, because everyone else’s code does what they tell it to, yours is always a rebel. Desperation steps in, which slowly transitions into depression and you wanna break your laptop into pieces with a baseball bat. But you know what, never do that… Just know where to seek help from, and voila!


HASHes group will sure come in handy, but the best platform to get your questions answered is stackoverflow.com (heads up, they are not going to spoon feed you, and do not get discouraged if you get downvoted. Over the course of time, you'd learn how to ask and answer on stackoverflow).

The next best option is Google Plus group: Android Development Community

You have some of the best developers and even Google's own employees helping others with their queries on G+ and StackOverflow.

For tutorials / code example on any specific feature, you can do a simple google search. One of the most popular websites is tutorialspoint.com

So when can we say that we have learnt Android Dev?

There would come a time when you'd no longer need full time guidance. you'd be good enough to explore new options yourself, learn. In fancy words, when you have learnt to learn. YOU SHOULD BE ABLE TO SOLVE YOU DOUBTS/ BUGS ON YOUR OWN.

What next?

Internships in startups(endless, at good pay even), GSoC, Hackathons, Open Source projects on Github... there are a lot of options.

Hopefully, we will have a hands on Workshop on Android Development, where we will help you develop a basic application. Stay tuned, HASHes has a lot more to offer.

Here’s another interesting blog for beginners…

Also, if at any point you think you’ve achieved a mark and have developed cool projects, at least all being given on Udacity’s Developing Android Apps course or you feel “Oh! Android was so easy, there’s nothing left here to do ^~^ !”, you can look out for the things below, which we’ll try to cover in one of our sessions, if we get some good android devs:

1. MVP: Model View Presenter, a code architecture being followed by most of the product based startups and giants. It makes testing much easier.
2. RxJava: React extension of Java.
3. Dependency Injection: Like Butterknife by Jake Wharton, and a lot more.
4. Gradle: The one who compiles your android-studio code. Although you can use it to customize and automate your tasks. Eg: Implementing different flavours of your app by adding just few lines of Gradle code. Like by default there are 2 flavours of your app, as debug(on which you develop), signed(the one you release on playstore).
5. Dagger: Another useful dependency injection tool.
6. Room: Makes writing SQLite code and making queries easy as hell.
7. Try AR development: For native we use ARCore from google, but that’s just for Pixel2 phones as of now. For hybrid, we use game engines like Unity, Godot, etc.
8. And, you can even write your own libraries, and make others import them as dependency.

Remember 3 cheezein, development is all about:
PRACTICE, PRACTICE, PRACTICE !!