How to get started in Android development properly

Andrey Mukamolov
AndroidPub
Published in
4 min readApr 4, 2017

--

Hi! I’m Andrey Mukamolow, self-taught Android developer from Belarus. I always dreamed about writing Android apps, and now, when it’s happened, I’ve realized that I can share some tips and tricks to start your route to Android professional so it will be less painful but more complicated.

During my education process, I’ve seen some guides that just tell you how to create sample app. The keyword here is “sample”. When you are just a beginner, without any previously earned experience in software development(I mean professional experience), you haven’t seen real Android app’s production code. And in this case you may guess that sample code from tutorial can be used right away. The truth is that real Android apps is different from tutorial’s samples. REALLY different. Real apps have serious requirements to perfomance, security and UX, and when you get into it at the start of your education process, you’ll save a lot of time in the future. It’s much harder than just copy and paste the code from tutorial, and it requires form you to read a lot of information around the internet, but after all you’ll be ready to the real Android development job much better than others.

The very first thing you need to start develop Android apps is Java. Not just basic knowledge of syntax, but deep understanding all Java Core features, how JVM and GC works, knowledge of Java design patterns. It’s complicated, but you really need it to just write some code on Android. Why the basic knowledge isn’t enough? Because Android framework inside uses a lot of complex Java Core concepts, and if you don’t understand it well, you’ll fail.

The second is Android internals: what is behind your homescreen, how Android works, app lifecycle, etc. This knowledge will help you create high quality apps with cool performance and UX. All the information about it you can find in official documentation.

Third is Android build system: Gradle. It’s powerful and heavy system that puts everything together and produce .apk file from all of your code. Gradle scripting has a lot of features that are not so obvious. When you become Gradle guru, you’ll avoid a lot of boring routine operations before and after builds. It’s not a main knowledge you need, but Gradle will be your main tool in everyday development, so why not to learn it?

The fourth important thing is the knowledge of libraries. Today, you don’t need to write some code by yourself, because it’s already written. Libraries are taking care of all the background tasks so you often need to write only app’s business logic without worrying about the behind-the-scenes operations. Check out some most used libs you should know about.

MVP pattern

Fifth will be architectural patterns. It’s easy to create Android application, but it’s hard to maintain it. So when you design your app well right now, it will be much easier to make changes, add new features or fix bugs in the future. You cannot create a perfect app the first time, but you should strive for perfection (within reasonable limits) to become a better programmer. There are a lot of patterns used in Android app architecture, such as MVP, Clean architecture, VIPER, etc. It doesn’t matter which one you choose, but you should use it across all your application. But remember: first of all you need to write requirements to your app, and then design architecture based on this requirements.

Sixth might be testing. It’s sometimes fully ignored by developers, but it’s important to know basic testing concepts and it’s totally useful to write tests. There are some cases when you cannot (or shouldn’t) write tests, so it’s not a strict requirement to write tests. Tests allow you to make changes without scare to break everything.

Last but not least are version control systems. Basically, you’ll only need to know Git. Always use it in your projects, and follow the best practices.

Tip: you can find some boilerplate Android apps to see which libraries people use in real life. Use this boilerplate to create your own app, get used to it, make sure you understand all the concepts it uses, and then you’ll write better apps.

Thank you for reading this post! Any feedback is appreciated.

--

--