Неужели порог вхождения в андроид разработку настолько высокий?

Здравствуйте.
Чуть менее месяца как изучаю разработку под андроид и, признаюсь, пребываю в некотором состоянии ужаса(мягко говоря) от объемов знаний, необходимых для старта. Пишу сюда, чтобы понять, насколько все эти требования в вакансиях соответствуют реальной картине и если соответствуют, то как, где и в какой последовательности все это изучать? Может есть какие лайфхаки что ли, как не сойти с ума раньше, чем устроишься на первую работу.

Как я себе представлял старт карьеры
Ожидание: android sdk, понимание и умение работать с жизненным циклом активити/фрагментов, виды интентов, многопоточность, сервисы, провайдеры, работа с макетами, локальными хранилищами, клиент-серверное взаимодействие и тд, ну то есть какие-то базовые знания во всем, чтобы было с чего начать.

Реальность: все из предыдущего пункта как само собой разумеющееся + знание всех паттернов(mvp,mvi,mvvm,чистая архитектура, причем добрая половина вакансий содержит сразу список всех паттернов, а не какого-то одного) + куча таких слов как RxJava, Retrofit, Dagger, OkHttp, ButterKnife, Glide, Moxy, Realm, Architecture Components и много много другого, часть из которого насколько я понимаю тесно интегрируется и используется в качестве помошников самим паттернам как например moxy для mvp(я не знаю что это значит просто пишу так как встречал в вакансиях).

Помимо ужаса вызываемого большим количеством разных наименований того, что нужно знать, ужас вызывает еще то, что я не встретил еще ни одного Open source проекта из просмотренных(порядка 10и посмотрел), где один и тот же паттерн был бы реализован более менее похоже(смотрел проекты с mvp паттерном). Везде разные структуры у проекта, везде совершенно разный подход к работе с моделью, где-то наплодили кучу интерфейсов, где-то их вообще нет, где-то еще что-то, и т.д. В большинстве вакансий тот же mvp фигурирует вместе с Moxy/Mosby, но как мне изучать их если я даже не могу понять каноничный mvp, потому что в каждом проекте он выглядит по-своему. То есть не поймите неправильно, основную суть я понимаю, что модель сама по себе, в активити/фрагменте ссылка на презентер, а в презентере ссылки на активити и модель, но блин везде все настолько по разному разбросано и реализовано и настолько сложно, что просто не понимаю как в это все въезжать. И это только первый паттерн, который я решил глянуть.

Уважаемые андроид разработчики, пожалуйста, дайте совет как все это осилить, потому что ну очень большая каша в голове, или может есть какой-то качественный курс/книга, где все последовательно изложено и по полочкам разложено? А может все не так плохо и в реальности не нужно знать и уметь все из этого? Или я дурак и не мое это, раз мне кажется это сложным? Вставьте пожалуйста свои пять копеек все, кому не трудно, буду крайне благодарен.
  • Вопрос задан
  • 7615 просмотров
Решения вопроса 5
Программирую на всяком-разном 30 с лишним лет, пишу под Андроид с самого его начала - начал незадолго до того, как приобрёл HTC A3288 Tattoo, почти 10 лет уже как.

Не имею опыта работы, но понимаю как работает: Dagger, RxJava2, Moxy, разнообразное юнит-тестирование и всякие либы поменьше. Ничего не помню наизусть, даже методы класса Object. Имею смутное представление о том, как работает многопоточность, какие там есть виды списков и в душе не понимаю, как устроено хэширование объектов. Без IDE с подсказками и онлайновой помощи глух и слеп как котёнок.

Без работы не сижу. Считаю себя успешным.

Постараюсь сообщить минимальный набор, который помогает мне и, надеюсь, поможет вам найти себя, работу и всё, что пожелаете. Это всё - очевидные вещи, но, возможно, вы увидите что-то новое.

* В первую очередь, необходимо иметь и культивировать четыре вещи: здравый смысл, уверенность в себе, внутреннюю свободу и аккуратность. Даже если вы ничего не знаете сейчас, вы должны осознавать, что узнаете это всё потом. И то, лишь в случае, если считаете необходимым. А благодаря аккуратности вы будете понятны большему числу коллег.

* Поскольку библиотек с дублирующейся направленностью пруд пруди, важнее знать принцип работы, а не какую-то конкретную библиотеку.

* Вы должны понимать, что все эти Dagger, RxJava и прочие Moxy - тупо библиотеки тупо пацанов, которые сидят в трусах перед компами и всё такое. То есть, изначально это всё - нонконформистская прогрессивная адова самописуха с присущими ей концептуальными и арфогрофичесскими ошибками, которая в нечастых случаях превращается в продукт примерно корпоративного масштаба. Потому, надо стараться не переоценивать их значимость на вегетативном уровне.

* Держитесь корней. То есть, за корни. Ну, в общем, за JetPack, AndroidX и всё, что выдумал Google. Это основное и самое важное.

* Старайтесь обходиться минимумом зависимостей.

* Кроссплатформа - это совсем другая индустрия. Надо определиться, нативщик вы или кроссплатформа.

* Обычное трудоустройство напоминает обучение вождению в автошколе: вы учите кучу всего, что требуется, потом сдаёте экзамен, получаете водительское удостоверение и через год помните только правило правой руки и полдюжины дорожных знаков. Ездите по городу по привычке, страдаете от того, что где-то повесили новый или убрали старый знак.

* Устроиться на работу при наличии свободного времени можно очень просто: нужно найти достаточно большую группу вакансий, связаться с любым техническим руководителем, узнать, что конкретно надо знать. Ни один нормальный лид не откажет направить вас в нужную сторону с перспективой получить специалиста требуемого профиля практически без затрат на начальную подготовку.

* Иногда важнее знать русский язык, нежели Java или Kotlin. Впрочем, иногда технический английский ещё важнее.

* Даже если днище, безнадёга и фриланс, надо понимать, что есть два типа клиентов: те, которым надо красивый код в стартап и те, которым код не надо.
Ответ написан
@Exolonpro
Являюсь Senior Android разработчиком. Java/kotlin, dagger, mvp... Как не прискорбно вам это сообшать, но все это надо знать. Много ребят присылают резюме посмотрев курсы непочатова и что-то там ещё, но их даже не рассматривают. Юниоры требуются редко, нужны мидлы и выше, т.к. есть заказ и жосткие сроки. Все понимают что вы научитесь, но заказчик хочет получить стабильнок приложение чз 3 месяца, а не через год. Dagger mvp и тд нужны чтобы ваш код не превратиося в кашу. Реально все оч сложно, я вам не завидую тк сам прошел долгий путь.
Желаю удачи, главное не сдаваться!!!
Ответ написан
@tiroman
Кратко о себе: стаж андроид разработки 5 лет, за спиной 10 лет десктоп разработки (оракл и все такое), на данный момент работаем с апворком и есть свой проект в маркете, который приносит неплохой доход, сейчас имеем разработчика на зарплате с доходов

1. говнокод кругом, я практически ни разу не видел прям каноничного подхода, возможно в каких то крупных компаниях на больших проектах и придерживаются методологий, без этого на больших проектах никак, но в обычной жизния такого не видел, я работал и набольшом проекте в небольшой компании с наследием в 10 лет и на разного размера проектах с апворка, еще раз говорю говнокод кругом, все этим паттерны и шаблоны такое ощущение что авторы пишут только для себя, но это не отменяет того что их нужно изучать и стараться делать все правильно

2. как и сказали выше опыт сильно решает, подводных камней на андроиде очень много, технологии в данной сфере быстро развиваются, один фреймворк сменяет другой, нужно постоянно что то изучать, гугл тоже как паровоз постоянно мчится вперед, поэтому 1-3-6 месяцев это ни о чем, но это не значит что ничего делать не надо, если программировать нравится и решил связать свое будущее с ним, то клаву в зубы и вперед ))

3. если бы я сейчас мог начать все с начала и у меня было бы время я бы начал делать свое приложение, идеальный способ научиться чему то практически, а если еще и голова правильно работает то и заработать на нем, чтение книг без практики ничего не даст, проверено на собственном опыте, через два дня забудешь что там читал, поэтому только практика и только реальные задачи, придумывай прогу и вперед, понимание паттернов приходит с опытом, почитать конечно нужно, но как и где грамотно это применять это только опыт позволяет понять, поэтому только практика!

4. советую начинать изучать гугловский jetpack, они пытаются навести порядок с архитектурой приложения, привнести как раз какую то методологию, mvvm в данном случае, начал писать сейчас свой небольшой проект на нем, рекомендую, ставит мозг на место, если не очень понимаешь какой паттерн применить, как правильно проектировать архитектуру, ну и еще рекомендую https://startandroid.ru/ru/ очень сильно помогал на старте, ну и по jetpack там уже есть статьи, желаю удачи! ))
Ответ написан
zagayevskiy
@zagayevskiy Куратор тега Android
Android developer at Yandex
Чуть менее месяца как изучаю разработку под андроид

и
Ожидание: android sdk, понимание и умение работать с жизненным циклом активити/фрагментов, виды интентов, многопоточность, сервисы, провайдеры, работа с макетами, локальными хранилищами, клиент-серверное взаимодействие и тд, ну то есть какие-то базовые знания во всем, чтобы было с чего начать.


Охххх... знал бы ты, сколько людей приходит собеседоваться, не зная даже этих "базовых" вещей. Сколько времени нужно, чтобы узнать это всё.. ну год-два, примерно.

Да. Порог действительно высокий.
Ответ написан
samodum
@samodum
Какой вопрос - такой и ответ
У тебя просто планка завышена. Проси меньше денег, и спрашивать будут меньше.
Перечисленные тобой вопросы - на Senior
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Jump
@Jump
Системный администратор со стажем.
Реальность: все из предыдущего пункта как само собой разумеющееся + знание всех паттернов....
  • Первое - Есть базовый принцип который работает всегда и везде. Если тебе нужна тысяча - проси десять тысяч. Если тебе на работу нужен джуниор - проси как минимум мидла.
  • Второе - Вакансии зачастую пишут люди далекие как от IT, так и от здравого смысла.
  • Третье - Андроид разработчиков сейчас как грязи, а хорошего найти проблема. Поэтому ищут, и выбирают из всей этой массы, тех кто реально будет работать и приносить компании деньги.
Ответ написан
Комментировать
@ronincat
Исключительно в целях дискуссии попробую ответить с позиции что называется devil's advocate.
Чуть менее месяца как изучаю разработку под андрои... знание всех паттернов(mvp,mvi...) + куча таких слов как RxJava...

// devil's advocate ON
На основе требований из вакансий легко формируется список компетенций, за чуть менее месяца все скиллы раскладываются по полочкам и появляется понимание что и зачем и приоритеты.
Kotlin учится на ура, особенно после неполноценной Java 6.
Предназначение Dagger 2 как DI-фреймворка очевидно. RxJava 2 must know. Назначение Retrofit поверх OkHttp очевидно.
Clean Architecture чтобы через полгода работы над комплексным проектом не возникало желания убить себя.
MVC/MVP/MVVM... паттерны можно пересчитать по пальцам в отличие от GoF и Enterprise и т.д., их натурально интересно учить и, главное, это фундаментальные знания и они имеют практическое применение в отличие от GoF и Enterprise и т.д.
В общем сложности ситуация предельно прозрачная и несравнимо приятнее в освоении чем хаос веб разработки и чем огромный багаж знаний часто теоретических для бекенд разработки.
// devil's advocate OFF

Есть вполне естественное желание пропустить все это и писать под Flutter.
ДОЛОЙ ТЕРРОР ЛЕГАСИ НАТИВ РАЗРАБОТКИ !!! FLUTTER В МАССЫ !!! УПРЯМЫХ НАТИВЩИКОВ В ТЕСТИРОВЩИКИ !!!
Ответ написан
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Вакансии зачастую пишут люди далекие как от IT, так и от здравого смысла.

Плюс стопицот!

Нашего HR так достало составлять самому вакансии для отдела разработки, что он сказал - Ребята, пишите вакансии сами, я по вашей фене не ботаю :)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы