
A few years ago, I, like other novice Android developers, decided to find a job in this area. If you are a novice specialist, and do not know where to start studying
Android , or if you already have some knowledge in this topic and plan to get a job soon, then this material is for you. As planned, you will return to this article as you gain experience: to look at what stage you are at the moment and what to study further.
How it all began
In the field of system administration, I have successfully worked for more than two years. Having studied the
market, I realized that I need to go further and change something. My interest in technology grew and I focused on programming, namely, in
Java . I started learning
Java SE from scratch. The plan was complete immersion in
Java SE , and then in
Java EE . But, in the middle of learning
Java SE , I launched the usual Hello World project on
Android . And my views on the future have changed a lot. The entire journey from the first “immersion” to the program to the job offer took 1 year.
To be or not to be?
The choice of
Android needs to be thought out well, as it walks by leaps and bounds. Every year a new version is consistently released, with many innovations. In addition, a certain percentage of existing applications on the new version may not even start. You have to solve these problems.
What language can be developed for Android
1. Officially,
Google provided two options.
')
- Android SDK . Official languages ​​are Java and Kotlin .
Most existing projects are written in Java .
Kotlin is a grandson of Java . Some developers began to actively use it in their projects. (But they are not so many compared to Java)
Android officially began to support Kotlin from 05/17/2017 , the language features will be built into Android Studio 3.0.
- Android NDK . The official languages ​​are C / C ++ .
Google itself recommends using NDK in cases where maximum performance is required. (In one of our projects, we used NDK to organize voice communications)
2. There are also
cross-platform tools .
How to start learning Android
Perhaps you paid attention to
cross-platform tools or
Kotlin , but you should not hurry.
C using
cross-platform tools can be developed immediately and under
Android and
iOS .
Cross-platform tools are able to solve a certain range of tasks, but in terms of flexibility they can never be compared with native solutions. Moreover, such specialists are not much in demand in the labor market.
As for
Kotlin , today there are no companies that have absolutely all Android projects written on it. It seems to me that
Kotlin should be studied only after employment.
I recommend starting with
Java . Especially if you have no programming experience.
Learning Java
Required knowledge- Data types. (Primitive and reference)
- Loops ( for / while / for each )
- Memory device in Java ( Stack, Heap ). It is also important to understand how and at what level the Garbarage collector works .
- Methods Return / Non Return
- Arrays and collections, as well as operations with them (sorting)
- OOP (Polymorphism, Inheritance, Encapsulation, Abstraction)
- Comparator and Comparable (for sorting objects)
- Threads and Runnable , for understanding how multithreading works in Java.
- Exceptions (try / catch / finnaly) - for “catching” errors
- Generics (Generalized Types)
I was interviewing with this list.
In my opinion, this is more than enough.
There are many good resources on the net for learning
Java and
Android . I will only address those for which he was engaged.
1. JavaRushThe very first resource for learning was JavaRush. I think it will be enough to take a free course "Java Syntax", which consists of 10 levels.

By itself, the resource clearly deserves attention, despite the incorrectness of many tasks and a strongly noticeable flaw in the validator. Many are skeptical of this service, and believe that you should not waste time on it. I praise and strongly criticize this resource, like my current colleagues who started with me. JavaRush will give a good start and well pump the algorithms. But to stay on it is clearly not worth it.
2.
Java Core by Ivan HeadIn parallel with JavaRush, I also watched the video lectures of Ivan the Head, which in my opinion are the best in
Java in Runet. Few people nowadays are able to program well and explain well. These lectures reinforced their knowledge in JavaRush.
I advise to watch lectures on
Java Sore completely.
Learning Android
Required knowledge- XML - make up the interfaces will have to be on it
- Activity / Fragments - "forms" for the location of the UI. It is necessary to know their differences, life cycles, data manipulations ( onActivityresult )
- Intents - data transfer between the Activity , opening third-party applications
- Bundle - transfer data between Fragments , save screen state
- Base adapters for ViewPager , RecyclerView , Spinner
- NavigationView - Navigation menu "Shutter"
- Dialog, DialogFragment - Dialog boxes (for example, with text and “Yes”, “No” buttons)
- AsyncTask - Multithreading in Android
- SharedPreferenses - To save settings and small data
- Service - Perform lengthy operations in the background
- SQLite - Database. It loses its popularity, as well as in almost all new projects they use ORM . But in old projects you will definitely meet
- Work with resources: string, color, styles, dimens, animations
- Manifest file, permissions - Description of application components and permissions
I was interviewing without the knowledge of
Dialog / DialogFragment and
Service 1. Udacity: Android BasicsAfter the end of the introductory course on
Android , the desire to program has greatly increased. The course explains most clearly the basic concept of development for
Android . After this course, I wrote my first application - a password generator, preserving the state of the screen during coups.
2. Video lectures StartAndroidA good addition to Udacity has become free video lectures from the resource StartAndroid.
I do not recommend watching old lessons (2012-2013 year), because technology has gone a long way. But from the beginning of 2015 - quite fit.
Also exist in
text format.
Chat and StartAndroid channel in Telegram 3. Alexander Klimov's blogActually. Some moments are still viewed in this blog. Each topic is mastered on a practical example with a detailed explanation.
4. Devcolibri - Full Android ApplicationAfter completing the course from Udacity, an idea appeared to start writing my first test application. After a brief search, I found a good course from Devcolibri, where the concept of development was explained on the example of writing the simplest task manager. Watching this course, I simultaneously started to make my application, picking up various pieces from the lesson.
Technologies and tools for Android Junior
In the
community of Android developers in Telegram , there was a question on this topic, my answer was equated as too high for the requirements for Junior. (I described
Retrofit2 in conjunction with
RxJava , also
Dagger2 ,
Realm and
Picasso ). It is worth noting that the level of requirements for Android Junior in almost all studios is different. Someone recruit and with the
initial knowledge of
Android , without technology in principle. But this is rare, and I was not among those lucky ones. The more you know - the higher your chances of employment.
So, let's go:
1. GitThis is a version control system code. Allows you to actively work in a team, track changes in the code and roll back to previous versions, which is very convenient. I advise you to take a
good course from
GeekBrains . As a Git client, I recommend using
SourceTree , since it is completely free and convenient, and studios love to save on software.
2. ButterKnifeConvenient library for declaring
view elements from
XML . (And not only). It is studied very quickly and reduces a certain amount of routine code.
3. Retrofit2 , RxJava , RxAndroid , OkHttp Loging InterCeptorRetrofit2 -
REST clientRxJava -
Java Reactive Programming ModuleRxAndroid -
Android reactive programming moduleOkHttp Loging InterCeptor - a
module for logging HTTP requests (part of the OkHttp library)Enough to know the basics of work in this bundle. (For example, be able to
parse JSON with data)
You should not dig
RxJava from the very beginning. A significant portion of Android developers use it exclusively in conjunction with Retrofit2.
4. Dagger2Library for dependency injection. It is also enough to know the basics, namely, how to implement the simplest dependencies.
Chat in Telegram:
@ dagger_25. RealmDatabase. In some respects, it is faster than
SQLite . True, in production projects it is still not used as often as The stable version was released relatively recently. But, in my opinion, the future of local data storage on
Android is precisely for
Realm . Just look at it at the abstract level — parse the underlying transactions.
Comparative characteristics of ORM and databases6. PicassoLibrary for working with images. Most often, it is used to download images from the network. Maximum easy to use.
7. EventBusLibrary to send messages. It is worth exploring it, but I would not advise using it in real projects, since
EventBus is very difficult to maintain in the future.
But, in real projects, unfortunately, you will often meet.
Practice
As a rule, candidates with existing applications on
GitHub have a higher chance of finding a job. (Especially if they use all the technologies that I have described).
To increase the chances of employment, I recommend writing a test application that will consolidate the knowledge gained. What it should be and what it should do is up to you. Personally, it seems to me that an indisputable advantage over other candidates will be an application that downloads some data from the network and displays it in a convenient format for the user.
At the same time, if the user does not have Internet, the latest data is downloaded from the database. If you did not find an appropriate API for yourself - it does not matter, create several JSON files on
this resource and use them. The look will not be on the usefulness of your application for the world, but on how you implemented it.
My application downloaded from the network a list of company managers and showed a schedule for the implementation of sales plans. Already in the process of its development, I received a job offer.
My biggest mistake in the development process of this application - I tried to do everything perfectly. By standards so that my code is well appreciated. Having a very abstract knowledge of
MVP , I tried to embed it into a project, thereby confusing my code even more.
Make your first application perfect will not work, no matter how you try. It seems to me that you should not use
MVP in your first project if you do not want to confuse yourself even more. (In the future, after employment - definitely worth it).
During development, you may have many questions. It does not matter if you do not have familiar Android-developers. Feel free to ask your questions on
StackOverFlow (available in
Russian ). Also, questions can be asked in the Telegram channels.
Useful chat channels in Telegram Interview with the employer and the results
If we talk about questions at the interviews, then in general, all studios have their own views on this matter.
In most cases, asked for
Java , and
Android SDK and technology. But sometimes there are places where they ask you to just give an example of your working code and ask why you did exactly that here. You need to be ready for both the first and the second.
In our company, I am sharing the technical part of the initial interview with candidates for 3 stages:
1) Questions about
Java Core and OOP
(see Learning Java)2) Questions about the
Android SDK (see Learning Android)3) Questions on technologies and tools
(see Technologies and tools)At the second stage of the interview, as a rule, a small technical task is given, or the existing code is analyzed.
In 80% of cases, interviewers ask the same
questions about Java .
That's all. In the next article, we will examine in detail the most popular questions at the interviews on the
Android SDK and technologies such as
Dagger2 ,
Retrofit2 ,
RxJava, and
Realm .