B
B
baddev2019-05-03 16:18:18
Android
baddev, 2019-05-03 16:18:18

Is the threshold of entry into android development so high?

Hello.
I have been studying Android development for a little less than a month and, I confess, I am in a certain state of horror (to put it mildly) from the amount of knowledge required to start. I am writing here to understand how all these requirements in vacancies correspond to the real picture, and if they do, then how, where and in what sequence to study all this? Maybe there are some life hacks or something, how not to go crazy before you get your first job.
How I imagined starting a career
Expectation: android sdk, understanding and ability to work with the life cycle of activities / fragments, types of intents, multithreading, services, providers, working with layouts, local storage, client-server interaction, etc., well, there are some then basic knowledge in everything, so that there is a place to start.
Reality: everything from the previous paragraph as a matter of course + knowledge of all patterns (mvp, mvi, mvvm, pure architecture, and a good half of the vacancies contain a list of all patterns at once, and not just one) + a bunch of words like RxJava, Retrofit, Dagger, OkHttp, ButterKnife, Glide, Moxy, Realm, Architecture Components and much more, some of which, as far as I understand, are closely integrated and used as helpers for the patterns themselves, such as moxy for mvp (I don’t know what this means, I just write because met in vacancies).
In addition to the horror caused by a large number of different names of what you need to know, the horror is also caused by the fact that I have not yet met a single Open source project from the ones I looked at (about 10 and looked) where the same pattern would be implemented more or less similarly (looked projects with mvp pattern). Everywhere the project has different structures, everywhere there is a completely different approach to working with the model, somewhere they have spawned a bunch of interfaces, somewhere they don’t exist at all, somewhere else, etc. In most vacancies, the same mvp appears along with Moxy / Mosby, but how can I study them if I can’t even understand the canonical mvp, because it looks different in each project. That is, do not misunderstand, I understand the main point that the model itself, in the activity / fragment there is a link to the presenter, and in the presenter there are links to the activity and the model, but damn it, everything is so scattered and implemented in different ways and so complicated that I just don’t understand how to get into it all. And this is only the first pattern that I decided to look at.
Dear android developers, please give advice on how to master all this, because well, it’s a very big mess in my head, or maybe there is some kind of high-quality course / book where everything is consistently stated and laid out on the shelves? Or maybe everything is not so bad and in reality you don’t need to know and be able to do all of this? Or am I a fool and it's not mine, since it seems complicated to me? Please insert your five cents, everyone who is not difficult, I will be extremely grateful.

Answer the question

In order to leave comments, you need to log in

4 answer(s)
R
Roman Vasilenko, 2019-05-09
@baddev

I have been programming on everything for more than 30 years, writing for Android from the very beginning - I started shortly before I bought the HTC A3288 Tattoo , almost 10 years already.
I have no experience, but I understand how it works: Dagger, RxJava2, Moxy, various unit testing and all sorts of smaller libs. I don't remember anything by heart, even the methods of the Object class. I have a vague idea of ​​how multithreading works, what types of lists there are, and in my heart I don’t understand how object hashing works. Without an IDE with hints and online help, deaf and blind as a kitten.
I do not sit without work. I consider myself successful.
I will try to provide a minimum set that helps me and, I hope, will help you find yourself, work and whatever you want. These are all obvious things, but perhaps you will see something new.
* First of all, it is necessary to have and cultivate four things: common sense, self-confidence, inner freedom and accuracy. Even if you do not know anything now, you must be aware that you will know it all later. And then only if you think it's necessary. And thanks to accuracy, you will be understood by more colleagues.
* Since there are a dime a dozen libraries with duplicate focus, it's more important to know how it works, rather than any particular library.
* You must understand that all these Dagger, RxJava and other Moxy are stupid libraries of stupid boys who sit in shorts in front of computers and all that. That is, initially it's all a non-conformist progressive hellish self-writing with its inherent conceptual and arthographic errors, which in rare cases turns into a product of approximately corporate scale. Therefore, we must try not to overestimate their significance at the vegetative level.
* Stick to the roots. That is, for the roots. Well, in general, for JetPack, AndroidX and everything that Google invented. This is the main and most important thing.
* Try to keep dependencies to a minimum.
* Cross-platform is a completely different industry. You need to decide whether you are a native or a cross-platform.
* A typical job is like learning to drive at a driving school: you learn a bunch of everything that is required, then you pass an exam, get a driver's license, and a year later you remember only the right hand rule and half a dozen traffic signs. Drive around the city out of habit, suffer from the fact that somewhere they hung a new sign or removed the old one.
* Getting a job with free time is very simple: you need to find a sufficiently large group of vacancies, contact any technical manager, find out what exactly you need to know. Not a single normal lead will refuse to direct you in the right direction with the prospect of getting a specialist of the required profile with little or no initial training costs.
* Sometimes it is more important to know Russian than Java or Kotlin. However, sometimes technical English is even more important.
* Even if the bottom, hopelessness and freelance, you need to understand that there are two types of clients: those who need a beautiful code in a startup and those who do not need a code.

M
mobiledel, 2019-05-05
@ronincat

Solely for the purposes of discussion, I will try to answer from the position of what is called the devil's advocate.
Based on the requirements of the vacancies, a list of competencies is easily formed, in a little less than a month all the skills are sorted out and there is an understanding of what and why and priorities.
Kotlin is learning with a bang, especially after the inferior Java 6.
The purpose of Dagger 2 as a DI framework is obvious. RxJava2 must know. The purpose of Retrofit over OkHttp is obvious.
Clean Architecture so that after six months of working on a complex project, there is no desire to kill yourself. In general, the situation is extremely transparent and incomparably more pleasant to learn than the chaos of web development and a huge amount of knowledge, often theoretical for back-end development. // devil's advocate OFF There is a very natural desire to skip all this and write under Flutter.
MVC/MVP/MVVM... patterns can be counted on one hand, unlike GoF and Enterprise, etc., they are naturally interesting to learn and, most importantly, they are fundamental knowledge and they have practical application, unlike GoF and Enterprise, etc. d.
DOWN WITH THE TERROR OF LEGASI NATIVE DEVELOPMENT !!! FLUTTER TO THE MASS!!! STUNNING NATIVES INTO TESTERS !!!

C
CityCat4, 2019-05-03
@CityCat4

Vacancies are often written by people who are far from both IT and common sense.

Plus a stop!
Our HR was so tired of creating vacancies for the development department himself, that he said - Guys, write vacancies yourself, I don’t use your hair dryer :)

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question