By Abhay Sood
Recently, someone fresh out of college posed me an interesting question. The person wanted to know which made more sense to gain in-depth knowledge in — Android or server side technologies (specifically distributed computing).
In this article, I’m sharing some of the topics we covered in that conversation, in an organised and detailed manner. I have also put together some resources that may be helpful for those who want to learn more about Android development.
Pull a chair, grab your favourite beverage, and settle in.
What do I choose?
The direct answer to that question is: I can’t choose for you. But I can help you understand what the job of a mobile developer is — and leave the decision to you.
That said, I would suggest not to completely ignore the option you do not choose. A breadth of knowledge is important and it’s good to keep learning new skills.
For the purpose of this article, I’ll focus on Android, although almost everything is applicable for iOS too.
Firstly, it’s important to have a good understanding of general software programming principles. Read about SOLID, DRY and design patterns to start off. Learn some basic concepts of functional programming (which will assist you in becoming a better programmer). These concepts take a lot of practice to get used to, so don’t get stuck there, you’ll keep getting better at them with time.
Also, try your hand at other UI platforms like web, iOS or desktop.
What’s the job of an Android developer like?
The following, in my opinion, is what the primary responsibility of an Android developer is:
At its core, Android development is about building UI and understanding how users interact with it. It’s about creating experiences which users enjoy.
I like to think of mobile developers to be the counterparts of designers.
On a day to day basis, based on where you are, you will get to collaborate with product managers, designers, and server developers to build the best experience for customers. You do this by leveraging the your knowledge of the ecosystem (iOS or Android).
What about career growth?
The way the industry is shaped right now, the technology you choose should have little impact on your career graph over the next five years (provided you get good at it!).
There is one thing I have realised though, in my time working with different setups:
As a mobile developer (or any frontend developer) you have a better shot at influencing a product and being closer to the customer.
This is in comparison to someone works works exclusively on server side. You’ll realise how important this is as you work. 😉
What are the core concepts to focus on?
From an Android framework perspective, the core concepts include:
1. Understanding the rendering pipeline.
2. Building custom views and creating animations.
3. Knowledge of the touch framework, gestures, notifications, sensors, storage, and file system.
4. Understanding the build process inside out.
5. Knowing what impacts the startup time of an app.
6. Measuring the performance of an app from a network, memory, or rendering perspective.
7. Optimising apps for seamless offline usage.
8. Working with large data sets or images in lists.
Apart from building the UI, you can also work on creating tools for other developers. A lot of large companies like Uber, Square, and GOJEK have dedicated teams for this purpose. Their responsibilities include building reusable frameworks, improving the efficiency of product teams, optimising build speeds, APK size, etc.
There are other terms you’ll hear very often — architecture (MVP, MV*), reactive programming (RxJava, RxSwift etc.), BDD or TDD. These are all great to understand, but useless without the knowledge of the concepts stated above.
You won’t understand any of this by just reading a book. You’ll learn through practice.
Resources to get better at Android Development
To get started, there are numerous articles and tutorials available. Udacity is a good place to start. However, if you are looking for something more than just getting started, here are a few articles/videos you can spend time on:
- Mastering the Android Touch System by Dave Smith
- Canvas drawing by Ryan Harter. I haven’t found a better source till date for understanding this important piece in developing unique beautiful apps:
3. How view traversals work: The basics of building custom views by Huyen Tue Dao
4. This one is also quite informative:
Custom Layouts on Android — Lucas Rocha
How Recycler View works:
- Anatomy of RecyclerView: a Search for a ViewHolder
- RecyclerView ins and outs — Google I/O 2016
- ListView and Recycling — Developing Android Apps
Text, which can be a rather complex topic:
Mark Alison has been blogging about styling Android since 2011.
A technical guide to improving the UI and UX of Android apps
Build systems are a pretty hardcore topic and Android provides a lot of scope in getting into this field.
A few build tools that worth checking out:
Bazel — a fast, scalable, multi-language and extensible build systemBeta: When you build software with Bazel, you’re running the same code that has been refined and tested for years at…
A fast build tool
Buck is a build system developed and used by Facebook. It encourages the creation of small, reusable modules consisting…
Cross platform frameworks have been around since 2009. However, none have become mainstream until now. React Native was the most popular one until Flutter arrived on the scene. Kotlin Native also looks very promising.
If you are interested in any mobile platform, then you should definitely keep an eye on Flutter.
Android is Open Source, and almost all the popular libraries are open source too. Some include “Ok” libraries, Retrofit, Dagger, and Moshi. There are more like NullAway by Uber. Flutter, Kotlin and Kotlin Native are also open source and offer great opportunities.
- Thinking Functionally: A series on the fundamentals of functional programming
- Functional Programming for Android Developers (by GOJEK’s own Anup Cowkur 💚)
Learning some fundamental design principles can also help you a great deal. This book is a great place to start.
Beautiful, inspirational open source apps
- Plaid is a great source of inspiration for building beautiful apps.
- Dank: a Reddit app by Saket Narayan, is a great showcase for learning how to work with gestures.
- The History of Everything: This one is in Flutter ❤️
Android has a wonderful community. Reach out to them at conferences which are tracked here.
BlrDroid is the biggest Android community in India and is very active. You can join the slack group here.
That’s all from me, thanks for reading!
GOJEK does a lot more than move people. We deliver food (DYK GO-FOOD delivery partners have covered more than 610 million kilometres… since January 2018? 🤯). We help users move homes, pay bills, recharge phones, send packages, and even get makeovers. That’s just how Super Apps roll. 😎We also happen to be hiring. Think you have the skills to help us out? Rush to gojek.jobs and grab the chance to help us build a Super App.