Is the threshold of entry to Android development is so high?

Less than a month how to learn developing for Android and, I confess, are in a state of terror(to put it mildly) from the amount of knowledge required to start. I am here, to understand how all of these requirements in the job correspond to the real situation and if you meet, how, where and in what sequence to learn it? May have any life hacks or what not to go crazy before I get the first job.

As I imagined the start of a career
Waiting: the android sdk, understanding and ability to work with the lifecycle of activities/fragments, the types of intents, multithreading, services, providers, work with layout, local storage, client-server interaction, and so on, well that is some basic knowledge in everything to be where to start.

Reality: all of the previous paragraph for granted: + knowledge of all patterns(mvp,mvi,mvvm,clean architecture, with a good half of the jobs contains a list of all patterns, not any one) + a bunch of words such as RxJava, Retrofit, Dagger, OkHttp, ButterKnife, Glide, Moxy, Realm, Architecture Components and many many others, some of which I understand to be tightly integrated and used as helpers by the patterns such as moxy for mvp(I don't know what that means just writing as seen in jobs).

In addition to the horror caused by a large number of different items that you need to know, terror is still the fact that I have not met even a single Open source project viewed(about 10 and looked), where the same pattern would be implemented more or less like(I watched the draft with mvp pattern). Everywhere is different in the structure of the project, quite different approach to work with a model somewhere, spawn a bunch of interfaces, while others do not, somewhere, something, etc. In most jobs the same mvp appears with Moxy/Mosby, but how can I study them if I can't even understand the canonical mvp, because in every project, he looks my way. That is, don't get me wrong, the main gist I understand that the model itself, in the activity/fragment is a reference to the presenter, and presenter links to activities model, but damn everywhere all so different and scattered and sold so difficult that just don't understand how this is all to enter. And this is just the first pattern that I decided to look.

Dear Android developers, please give advice as this volume, because well, a very big mess in my head, or maybe there's a good course/book where everything is consistently presented and laid out on the shelves? Maybe it's not so bad and in reality don't need to know and be able to do all of this? Or am I a fool and not mine, since I think it's complex? Please insert your two cents by anyone who is not difficult, I will be extremely grateful.
March 20th 20 at 11:38
8 answers
March 20th 20 at 11:40
Programming in any different more than 30 years, I write on Android since its inception - began shortly before purchased HTC A3288 Tattoo, almost 10 years already.

Have no experience, but I understand how it works: Dagger, RxJava2, Moxy, various unit-testing and all sorts of smaller libs. Don't remember by heart, even the methods of class Object. Have a vague idea about how to work with multithreading what are the types of lists and the soul does not know how to construct the hash object. Without an IDE with tooltips and online help deaf and blind as a kitten.

Do not sit without work. Consider yourself successful.

I will try to report the minimum set which helps me and, I hope, will help you find yourself, your job and everything you want. This is all obvious, but maybe you will see something new.

* First and foremost, you need to have and cultivate four things: common sense, confidence, inner freedom and accuracy. Even if you don't know anything now, you should be aware that will learn all this later. And then, only if deemed necessary. And thanks to the care you will understandable to a larger number of colleagues.

* Because libraries with duplicate thrust a dime a dozen, it is more important to know the working principle, not any particular library.

* You need to understand that all these Dagger, RxJava and other Moxy - stupid library, stupid kids who sit in underpants in front of the computer and all that. That is, initially it's all a hell of a nonconformist progressive samamish with its inherent conceptual and orfograficheskii errors, which in rare cases becomes a product about corporate scale. Therefore, you should try not to overestimate their significance on the autonomic level.

* Keep to the roots. That is, for roots. Well, for JetPack AndroidX and all that invented Google. This is the main and most important.

* Try to do a minimum of dependencies.

* The cross-platform is a very different industry. It is necessary to define Natusik you or cross-platform.

* Regular employment is reminiscent of driving instruction in a driving school: you learn a lot of things that you want to, then pass the exam, get a driver's license, and a year later only remember the right hand rule and half a dozen road signs. Driving in town out of habit, suffer from the fact that somewhere put a new one or removed the old sign.

* To get a job when you have free time can be very simple: we need to find a large enough group of vacancies, to contact any of the technical Manager, to find out exactly what you need to know. No normal lead will not refuse to guide you in the right direction with a view to obtain specialist desired profile almost without the cost of initial training.

* Sometimes more important to know Russian language than Java or Kotlin. However, sometimes technical English is even more important.

* Even if the bottom, hopelessness and freelance, need to understand that there two types of clients: those who need beautiful code in a startup and those that code is not necessary.
Thank you very much for such a detailed and encouraging response) was kind of funny how everything You said coincided with what I eventually came) yesterday wrote to several companies to find out what you need to know the direct train, and what you can see in General terms, and to catch up on the work because as much as I badly want all the volume you need knowledge of the positions even given the fact that I sit at home trying to teach me not to master in six months(maybe I'm the problem, but nevertheless). Thank you again!) - cathrin commented on March 20th 20 at 11:43
Good luck to you! - Kelton_Nicolas4 commented on March 20th 20 at 11:46
March 20th 20 at 11:42
Are a Senior Android developer. Java/kotlin, dagger, mvp... sadly you soobshite, but it is necessary to know. A lot of guys send resume looking nepochatova courses and everything else, but they do not even consider. Juniors rarely required, need midly above, because there is order and hard time. Understand what you learn, but the customer wants to stabilnog app CHZ 3 months, not a year. Dagger mvp and TD need to have your code not prevratilsja to mush. Really all PTS hard, I do not envy you, maybe he has come a long way.
Good luck and most importantly don't give up!!!
Thank you very much for the reply and wishes of good luck. The importance of all these positions is realized, I will study.

I take this opportunity to ask: how carefully it is necessary to know the sdk? Mean do I know working with audio, video, SMS, calls, sensors, gestures and a lot more, or still acceptable that a candidate for the position of June may not have experience with some of the components? I ask for the reason that, faced now with patterns, libraries and other things in my view, the priorities abruptly changed in the direction of them, but everything related to the sdk seems simple from the series "looked in the documentation example did." How much am I mistaken? Sorry maybe for stupid questions, I'd be extreme grateful if you answer. And I hope I have correctly attributed all these components to "knowledge of the sdk". - cathrin commented on March 20th 20 at 11:45
@Ralph_Rosenba, from experience, the majority of projects this client to the server, you must know the recyclerView, databases, caching servers realm or equivalent sqlite, retrofit2 for restapi how to parse classes in gson, dagger mvp for competent construction applications, the layout of the screens based on constraintLayout, often Google maps, Yandex and scanner barcode/bar codes, glide and their analogues to display pictures and not need git. Everything else you can brush up on campaign work. - polly.Balistreri commented on March 20th 20 at 11:48
@Ralph_Rosenba, and still is, very important to understand the flow of the thread, handler, very desirable to have an idea about rx or coroutine on Kotlin - polly.Balistreri commented on March 20th 20 at 11:51
@cristopher_OHara, about the set and met the requirements of vacancies, so no wonder here have written, I know now that this is not just one of those "would be good", but really need to know. I will then study all, I hope this is a feasible task in terms of independent study. And thank You very much! - cathrin commented on March 20th 20 at 11:54
stabilnog app CHZ 3 months
and not a year

This HDE is a stable app for 3 months? Calculator?)
In practice, stable app and gets the year - devin56 commented on March 20th 20 at 11:57
March 20th 20 at 11:44
Briefly about yourself: experience in Android development 5 years behind 10 years of desktop development (Oracle and all that), currently working with avercom and have a project in the market, which brings a good income, now have a developer on salary income

1. bad code around, I almost never saw in direct canonical approach, possibly in some large companies on large projects and adhere to methodologies on large projects in any way, but in a regular jisne never seen this, I worked at a project in a small company with a legacy of 10 years and on different size projects apwork say it again the bad code around, all these patterns and templates I have the feeling that authors write only for themselves, but that doesn't negate the fact that they need to study and try to do the right thing

2. as said above the experience much decides the pitfalls on Android a lot, the technology in this field are evolving rapidly, one framework replaces another, have always something to learn, Google is also constantly as the locomotive rushes forward, so 1-3-6 months is nothing, but it does not mean that nothing should be done, if you like programming and have decided to tie their future with him, Claudia in teeth and forward ))

3. if I could start from the beginning and I would have had the time I'd started making my own app, a perfect way to learn practically, and if the head right works it and capitalize on it, reading without practice will not work, tested on their own experience, two days later forget what was read, so only practice and the only real problem with it, and forward the understanding of patterns comes from experience, of course you need to read, but how and where to apply it correctly is the only experience allows us to understand therefore, only practice!

4. suggest to start studying, Google the jetpack, they are trying to bring order to the app architecture to bring just what is the methodology mvvm in this case, began to write a small project on it, I recommend, put the brain in place if you do not really know which pattern to apply, how to design the architecture well, and still recommend really helped at the start, well, the jetpack is already there articles good luck! ))
Thank You for such a detailed response and advice, very useful information for me! - cathrin commented on March 20th 20 at 11:47
March 20th 20 at 11:46
Less than a month how to learn developing for Android

Waiting: the android sdk, understanding and ability to work with the lifecycle of activities/fragments, the types of intents, multithreading, services, providers, work with layout, local storage, client-server interaction, and so on, well that is some basic knowledge in everything to be where to start.

Ohhhh... if you only knew how many people comes to sobesednitsa, not even knowing these "basic" things. How long does it take to learn all this.. well, year or two, approximately.

Yes. The threshold is really high.
How long does it take to learn all this.. well, year or two, approximately.

This is now very painful. That is, for example after 3 months of study to apply for the position of Jung is something of a wet fantasies, which are better to forget? - cathrin commented on March 20th 20 at 11:49
@Ralph_Rosenba, all individually. June in adequate companies generally may not know all of the above. Enough to be a normal dude and be able to code, and the framework will catch up. But if you're the rest of the programming, too, for I "learned" the catch, of course, nothing.

I say rake, you can only practice to gather and experience to also. And in 3 months you won't. And 6 too. If anyone says that it is a couple of years panodil for Android and now he knows everything, and all for him no more dark places and bugs, he one does not believe. I need 6 years to write. And still don't know all the details. And my colleagues too. Constantly having questions that someone (and sometimes all) of the team does not know the answer. Then take and understand. - waldo.Greenfelder commented on March 20th 20 at 11:52
I say rake, you can only practice to gather and experience to also. And in 3 months you won't. And 6 too.

Mean practice in the employment or independent practice, too, might suffice? I ask to understand me as soon as possible to start an independent practice or as soon as possible to try to get somewhere, to get better and more meaningful practice over there?

Initially thoughts were these: a month and a half to spend on basic fundamental things, and then start writing applications for the portfolio, in parallel with understanding in any and studying it in practice, create an application that will show a potential employer that he valued knowledge. That is to make for example a client-server application, adhering to some pattern(the same profit center, for example) and using many popular libraries, etc. please Tell me, how am I in the right direction looking, does such a scenario make sense or still slightly different build process? Thank you. - cathrin commented on March 20th 20 at 11:55
@Ralph_Rosenba, IMHO, if possible, as quickly as possible to get a Juno(or Intern) somewhere. Where are the real problems, and colleagues from whom you can ask. No real tasks you most of the things he did not find. Well, imagine you're writing the app, test it a couple-three phone(in the emulator I do not believe they find only emulator problem). Lay out somewhere. The normal flight. But in reality, it's just not installed on enough devices to find problems and bugs. You spent over testing too little time, there are bugs, but you do not know about them. And you never will. - waldo.Greenfelder commented on March 20th 20 at 11:58
@Maxine, okay, thank you very much for the tips! - cathrin commented on March 20th 20 at 12:01
March 20th 20 at 11:48
You have just a bar too high. Ask for less money and ask to be less.
You mentioned issues at the leadership
Thank you very much for the answer!
You could not tell, in Your opinion(or Your experience) what is the first to focus what is most important at the start? Above already answered, just want as many opinions as possible to collect. Thank you) - cathrin commented on March 20th 20 at 11:51
@Ralph_Rosenba, mandatory minimum - understanding of algorithms, data structures, types, links... Is the base. If it does not know and does not understand June's, no one messing with him will not be thrown away even teaches a minimum and comes back.
Well, then the base of the Android life cycle activity-fragments, knowledge of all component of Android and understanding what they do, practice is not mandatory, but desirable.
The next stage is concurrency. Here many copies are broken. It is better to start with the basics - mutexes, monitors, synchronization...
After that, there are design patterns, architecture, frameworks and everything else. From this moment begins a complete mess, because frameworks are constantly changing, in practice some of SHP are replaced by others and other holivar. There is need to monitor the trends and continue to gain experience.
But without the above-described base can't do this - Breanne.Thiel96 commented on March 20th 20 at 11:54
@Angelina1, thank you very much for your detailed response! - cathrin commented on March 20th 20 at 11:57
March 20th 20 at 11:50
Reality: all of the previous paragraph for granted: + knowledge of all patterns....
  • First - the basic principle which always works everywhere. If you need a thousand - say ten thousand. If you work and need a Junior - ask at least middle.
  • Second Jobs are often written by people far removed from IT, and from common sense.
  • Third - Android developers now as dirt and good to find the problem. So look for and choose from all this mass, those who really will work and make the company money.
March 20th 20 at 11:52
Solely for the purpose of discussion I'll try to answer from a position that is called devil's advocate.
Less than a month how to learn developing for Android device... knowledge of all patterns(mvp,mvi...) + a bunch of words such as RxJava...

// devil's advocate ON
Based on the requirements of the vacancies easily developed a list of competencies for a little less than a month, all the skills are laid out on the shelves and there is an understanding what and why and priorities.
Kotlin is learning to cheer, especially after the defective Java 6.
The purpose of the Dagger 2 as a DI-framework is obvious. RxJava 2 must know. The appointment of a Retrofit on top of OkHttp obvious.
Clean Architecture to after six months of work on a complex project does not have the desire to kill myself.
MVC/MVP/MVVM patterns... can be counted on the fingers unlike GoF and Enterprise, etc., they naturally are interested to teach and, more importantly, is the fundamental knowledge and they have a practical application in contrast to the GoF and Enterprise etc.
In General, the situation is very clear and incomparably more enjoyable to learn than the chaos of web development and the huge store of knowledge is often theoretical to backend development.
// devil's advocate OFF

There is a very natural desire to skip all that and write under Flutter.
Thank you very much for Your answer!
Perhaps I'm too "weak" in order to so quickly understand what was happening and study how You described it)

There is a very natural desire to skip all that and write under Flutter.

But this theme me very much interested, because too much noise around him. Do you think that you can begin to explore Flutter not knowing native development for any of the platforms? I just think then it will be only possible to find a job where the project(s) with zero will be written under the flutter and you will not need to port the native. Because to port from the same Android, need to know and understand all of this hell from libraries and others, or not? I will be glad if you can shed some light on the situation as possible) - cathrin commented on March 20th 20 at 11:55
Easy to write when you start to code during the existence of these practices and frameworks.
And imagine a time when they were not, and the appearance of any Clean Architecture / MVVM was due to the need to change something to stop the mess. And it still does not negate the holivar is to use MVP (Moxy, etc...) or MVVM...
By the way, good article about the pain and Android: - Breanne.Thiel96 commented on March 20th 20 at 11:58
March 20th 20 at 11:54
Jobs are often written by people far removed from IT, and from common sense.

Plus boys Oh boys!

Our HR so got to make jobs for development Department, what he said - Guys, write jobs, I'm by your hair dryer is not a bot :)
In a young and successful team city hospital requires surgeon. Not older than 28 years. Experience surgeon not less than 10 years. Definitely the ability to do heart surgery, and kidney, strong knowledge in neuro-surgery, and prosthetic dentistry and psychiatry. Experience of treatment of acute respiratory infections. - katrina.Medhurst77 commented on March 20th 20 at 11:57

Find more questions by tags AndroidMobile developmentCareer