📜 ⬆️ ⬇️

How I moved from system administration to Android development


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.
')



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. JavaRush

The 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 Head

In 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 Basics
After 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 StartAndroid
A 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 blog
Actually. Some moments are still viewed in this blog. Each topic is mastered on a practical example with a detailed explanation.

4. Devcolibri - Full Android Application
After 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. Git
This 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. ButterKnife
Convenient 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 InterCeptor
Retrofit2 - REST client
RxJava - Java Reactive Programming Module
RxAndroid - Android reactive programming module
OkHttp 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. Dagger2
Library for dependency injection. It is also enough to know the basics, namely, how to implement the simplest dependencies.


Chat in Telegram: @ dagger_2

5. Realm
Database. 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 databases

6. Picasso
Library for working with images. Most often, it is used to download images from the network. Maximum easy to use.

7. EventBus
Library 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 .

Source: https://habr.com/ru/post/328888/


All Articles