Junior Android Developer 2022 cheat sheet

Kuba Kwiatek
Making Plum 🛠️
5 min readJul 18, 2022

--

Being a professional software engineer in 2022 is fun!

You work with extraordinary people from different countries, you can interact with different cultures and share technical skills. You can influence people’s lives by working on products in different industries like sports, healthcare, financial services, and more. You get paid quite well and you have many opportunities to grow.

I’m an Android developer at the European fintech Plum and in this article, I would like to tell you what kind of skills you need to become a junior Android developer, based on our recruitment task and my interviewing experience.

Android basic concepts

Understanding the basic components of the Android SDK is crucial to starting your programming career in Android. Activities and Fragments are used to display content in every Android application and dealing with their lifecycle is a part of the everyday life of developers. If you don’t feel comfortable with the lifecycle it will be hard for you to build crash-free, robust apps and understand more complex issues.

Once you get it, you can put some content inside your Activities and Fragments and there are two ways to do it:

  • Jetpack Compose — declarative way of building user interfaces,
  • Views — XML files with view hierarchy.

Choose the one you prefer and make sure you know how to display texts, images, toolbars, lists of data, and how to handle click events.

Mobile Apps usually have many different screens. The screen is small so the amount of information you can display on the screen is limited, which means that you will have to navigate from one screen to another and often pass some pieces of information between them. Depending on the approach you choose with Activities, Fragments, or Composables the solution for navigation will be different.

You can use Intents to navigate between activities, build some navigation graphs and use the Navigation component or replace fragments with FragmentManager transactions. I won’t tell you here which is the best way to do it, just select one that works for you and be consistent with using it across your project.

Last but not least, Threading! As you may know, Android uses the UI thread to measure and draw views on the screen and it’s not a good practice to block it for a longer period of time, because then you see the famous Android Not Responding (ANR) popup. This is not a good experience for our users, so we want to avoid it, by moving high-weight operations out of the UI thread. More details below!

Fetching data from remote source

Not many apps are able to deliver value to users locally, most of them take data or delegate complex calculations to backend services and then they have to wait for a result, so a junior Android developer should be able to establish a network request and handle the response.

There are a few ways to do it, libraries that can be helpful are Retrofit and OkHttp. They were present in all Android projects that I had a chance to participate in. Fetching data from an API is a heavyweight operation and it should not be executed on the UI thread.

This is where asynchronous programming comes into play! Kotlin language has the coroutines paradigm implemented, so you can easily move the task execution to another thread and still have the imperative style, but if you prefer a reactive approach you can use Flows or RxJava.

Remember, you write apps for users, they have to be aware of what is happening. If your app does an asynchronous operation and the user is meant to wait for results then display a loading state. If the operation fails then display some error state with nontechnical, localised messages. In the future, you will work closely with design team members and I’m sure that thinking about such cases will make your cooperation pleasant.

Storing data locally

Your app should also work well in the offline mode even if the functionality could be limited compared to the time when you have a good internet connection.

To improve user experience in the offline mode and limit the number of remote calls you do in the online mode, you can store some items in a local database while you are online and display them later. It will help you to serve users with proper data faster and regardless of the network connection quality.

Android Jetpack offers the Room which is kind of a wrapper for the relational database. Using this library you can easily store and retrieve data from your database. Remember data might get outdated so it’s a good idea to refresh them from time to time depending on the case.

Clean code

It’s very important to have clean code especially when you work on a project that is going to be maintained for a longer period of time. It’s a matter of scalability and development time.

If your code is not clean then even you will struggle to understand it after some time. What’s more, a good separation of layers will help you to test your app properly and scale it with less possibility for regressions. Android provides some guidelines on how to structure your code well with the MVVM architecture, so make sure you follow those instructions while creating your project.

Dependency injection frameworks or Service locators could also help you to keep your code clean and testable. The idea is to extract objects’ creations outside your classes, so they can be focused on solving particular problems with the set of tools they need. You can also easily replace instances with mocked versions for testing purposes.

Testing

As we talk about testing, this is something that for sure will impress your reviewers. In my opinion, you don’t have to know how to test software with all possible kinds of testing and 100% coverage when you try to recruit as a junior.

What is most important here is that every test you write in the project brings some real value. You test things because you want to assure that your code is working as expected, so confront your code with the business requirements of your project and use automation tests to ensure that you meet them.

Soft skills

Last but not least, interviewers will try to assess your soft skills. They are looking for a colleague to spend a lot of time together on solving problems and discussing things so it’s important that you are a good fit both technically and as a personality. You will be asked a few questions on how you work with people, how you communicate, or how you handle difficult situations such as delays or conflicts in opinion. You may also be asked about the company that you are applying to. Make sure you use this time well to get to know your potential future colleagues.

Final thoughts

If you really want to be an Android software engineer one day you will be! Don’t hesitate when companies reject you, try to learn from failed interviews and be open to feedback. Think positively and have fun with learning all those exciting things. I keep my fingers crossed for you!

--

--