In this post, I will share more about Android skills development and why it is an important part of growing in your career.
First off, what is Skills development?

Skills Development is the process of identifying your skill gaps and  developing and honing these skills. It is important to your career because your skills determine your ability to execute your plans with success.

We are often  impressed by what others have accomplished  without realising what they went through to get there. We see their victories and make gross assumptions about what it takes to succeed. Then we become disappointed when we attempt the goal, only to find out  that it’s not as easy as it seems. When we see others’ successes, what we can’t see are the countless  hours they spent behind the scenes, honing their craft, and building their skills. What we see as “talent” in others is the result of hard work  where raw passion and  human  potential are turned  into distinct skills.

In software development, skills development is the process in which we mature from junior  to intermediate to senior. And henceforth, increasing the ability to conquer our professional goals.

I have come across many Android developers asking: “What do I need to learn or focus on in order to become good Android developer?” Whichever way you phrase the question, it boils down to the fact that good developers are always looking for a list of useful skills to learn.

I think this question is valid. Android is a vast and dynamic ecosystem, and you could spend weeks learning about specific tools or concepts, only to discover that what you learnt either isn’t as important, or shouldn’t be used anymore.

Therefore, I’ll share the list of skills that I think Android developers should learn in the hopes that these will help you to concentrate your efforts on the important stuff.

Android is a complex framework that has a very steep learning curve. Part of that complexity is essential to native mobile development in general, but another part is accidental complexity associated with Android’s quirks.

When you start your path in the world of professional Android development, your main goal, aside from delivering working software, should be to learn the Android framework itself. Forget about languages, architectures, fancy libraries and buzz-words. Instead, concentrate on the core concepts and explore them in depth.

Specifically, I recommend giving as much attention as you can to the following topics:

 

Lifecycles

A sub-title like “Lifecycles” might tempt you to skip ahead on to a more interesting section, but that would be a mistake. It is very important to have a basic understanding of the lifecycle in Android in order to efficiently manage your apps resources, and to ensure a seamless experience is achieved for the user. Your app may “sort of” work if you write it without paying attention to lifecycles, but it may not offer the best user experience.

If I needed to identify the main source of bugs in Android applications, I would immediately call out “Lifecycle” (then run away crying).

Activity, Fragment, Application, Service, BroadcastReceiver and probably more core components of the Android framework, have complex and unique lifecycles. If that’s not enough, Android constantly rolls out new libraries that have complex and unique lifecycles too. ViewModel and LiveData being recent additions that one could add to the ever-ongoing list.

Now, while you don’t need to understand Android lifecycles completely, you do need to understand them in sufficient detail. Otherwise, your code will resemble what I like to call ‘spaghetti’ and you’ll end up creating very serious and tricky bugs everywhere.

By the way, questions about lifecycles are very common on job interviews, so that’s another good reason to learn them properly.

Here’s a good resource to find out more about lifecycles: http://eagle.phys.utk.edu/guidry/android/applicationLifecycles.html

 

Context

At the base foundation of every Android application you will find one or more Context objects.

Context is something that is very difficult to explain in a few lines on a blog post. But to sum it up, Context can be thought of as an all-knowing class, that has too many responsibilities and know too much. Nevertheless, it’s important to understand the responsibilities of Context class and what’s the difference between different Contexts.

In this context (sorry, I couldn’t resist it ) I recommend reading this StackOverflow thread that gives a pretty nice insight into what a Context is.

 

User Interface (UI) Thread Responsiveness

Each Android app has a special thread called UI Thread. This thread is responsible for drawing the app’s user interface on the screen. If you mistreat this thread, or overload it with work, your application might become slow and unresponsive.

You will need to understand how this UI thread works, and always try to keep it in mind when developing your apps, so that you are able to avoid the potential pitfalls that could occur.

Learn more about UI Thread Responsiveness: https://developer.android.com/topic/performance/threads#references

 

Dependency Injection

Dependency Injection (DI) is a technique widely used in programming and well suited to Android development. By following the principles of DI, you lay the groundwork for good app architecture.

Classes often require references to other classes. For example, a Car class might need a reference to an Engine class. These required classes are called dependencies, and in this example the Car class is dependent on having an instance of the Engine class to run.

Implementing dependency injection provides you with the following advantages:

  • Reusability of code
  • Ease of refactoring
  • Ease of testing

Learn more about Dependency Injections: https://developer.android.com/training/dependency-injection

 

Thanks for reading!

That’s the list of skills I’d recommend you focus on for skills development as a professional Android developer.

As you might have noticed, all these recommendations are fairly fundamental skills in Android Development, because the fundamentals will always remain the most important concepts. They don’t change that often and, once you have a solid understanding of them, it’s this knowledge that is so valuable in an ever-changing environment.

Have a look at the sources and references in each section if you would wish to further your knowledge.