Какие автотесты вообще бывают?
Часть 3: UI-тесты
Это тесты, которые проверяют взаимодействие пользователя с интерфейсом приложения: запускается ли нужная логика при кликах по нужным кнопкам, правильно ли работает навигация, правильные ли тексты отображаются, все ли нужные вьюхи отображаются или скрываются и тд.
В UI-тестах мы не вызываем методы приложения напрямую, мы имитируем действия пользователя с интерфейсом приложения.
То есть в этих тестах мы реально кликаем по нашим кнопкам.
Отличия от Unit/интеграционных тестов:
1️⃣ Им для запуска необходим эмулятор/реальное устройство.
2️⃣ Проходят долго. В зависимости от размера приложения, количества тестов и железа, где всё это запускается, прохождение всех UI-тестов может занимать как минуты, так часы и даже дни.
3️⃣ Поскольку UI-тесты — попытка удержать баланс между приближением тестов к реальности и автоматизацией процесса, они довольно хрупкие: их выполнение не гарантируется, из-за того, что появляется зависимость от реальной платформы, которая не всегда предсказуема.
Если UI-тесты несколько раз прошли успешно, на следующий раз они могут не пройти - например, из-за того, что поверх нашего UI вылезло какое-то системное окно, а автоматизация сочла, что приложение не сработало так, как задумывалось. Или система в момент клик на нашу кнопку решила запустить очистку ресурсов, и обработка клика на кнопку заняла на секунду больше, а автоматизация сочла, что кнопка не сработала. Или сервак долго отвечал, а автотест решил, что всё сломалось.
В целом, от этого можно защититься повтором теста при его фейле, увеличением времени ожидания и прочими костылями, но надо понимать, что это может привести к существенному увеличению времени прохождения тестов.
4️⃣ UI-тест может содержать много шагов и проверок. Их сложно писать и читать. Будет много боли и мата. А настройка CI для UI-тестов у меня когда-то заняла почти год, там столько подводных камней, что из них крепость можно построить.
UI-тесты, теоретически, могут снять львиную долю работу с ручных тестировщиков, потому что по сути автоматизируют их работу напрямую. Но для этого потребуются очень серьёзные усилия для внедрения этих тестов в процессы вашей компании, для настройки инфраструктуры, для обучения разработчиков и тестировщиков.
Часть 3: UI-тесты
Это тесты, которые проверяют взаимодействие пользователя с интерфейсом приложения: запускается ли нужная логика при кликах по нужным кнопкам, правильно ли работает навигация, правильные ли тексты отображаются, все ли нужные вьюхи отображаются или скрываются и тд.
В UI-тестах мы не вызываем методы приложения напрямую, мы имитируем действия пользователя с интерфейсом приложения.
То есть в этих тестах мы реально кликаем по нашим кнопкам.
Отличия от Unit/интеграционных тестов:
1️⃣ Им для запуска необходим эмулятор/реальное устройство.
2️⃣ Проходят долго. В зависимости от размера приложения, количества тестов и железа, где всё это запускается, прохождение всех UI-тестов может занимать как минуты, так часы и даже дни.
3️⃣ Поскольку UI-тесты — попытка удержать баланс между приближением тестов к реальности и автоматизацией процесса, они довольно хрупкие: их выполнение не гарантируется, из-за того, что появляется зависимость от реальной платформы, которая не всегда предсказуема.
Если UI-тесты несколько раз прошли успешно, на следующий раз они могут не пройти - например, из-за того, что поверх нашего UI вылезло какое-то системное окно, а автоматизация сочла, что приложение не сработало так, как задумывалось. Или система в момент клик на нашу кнопку решила запустить очистку ресурсов, и обработка клика на кнопку заняла на секунду больше, а автоматизация сочла, что кнопка не сработала. Или сервак долго отвечал, а автотест решил, что всё сломалось.
В целом, от этого можно защититься повтором теста при его фейле, увеличением времени ожидания и прочими костылями, но надо понимать, что это может привести к существенному увеличению времени прохождения тестов.
4️⃣ UI-тест может содержать много шагов и проверок. Их сложно писать и читать. Будет много боли и мата. А настройка CI для UI-тестов у меня когда-то заняла почти год, там столько подводных камней, что из них крепость можно построить.
UI-тесты, теоретически, могут снять львиную долю работу с ручных тестировщиков, потому что по сути автоматизируют их работу напрямую. Но для этого потребуются очень серьёзные усилия для внедрения этих тестов в процессы вашей компании, для настройки инфраструктуры, для обучения разработчиков и тестировщиков.
🔥9👌1😍1
Какие автотесты вообще бывают?
Часть 4: скриншот-тесты и end-to-end-тесты
1️⃣ Скриншот-тесты
Я их сам не использовал, знаю понаслышке, и могу где-то ошибаться. Но у меня понимание такое:
Ты делаешь кучу скриншотов экранов своего приложения, со всеми развилками экранов и флоу, и используешь как бенчмарк для скриншот-тестов.
Скорее всего, эти скриншоты можно и автоматически нагенерить, про это я не в курсе. Если знаете – напишите в комментах.
И потом приложение делает новые скриншоты на тестируемой ветке и сравнивает со старыми. Если они не совпадают – значит тест завалился.
Грубо говоря, если при клике на кнопку "Покажи экран с собакой" у тебя показался экран с кошкой, или с наполовину уехавшей вниз собакой, или с собакой, но не с той, что на базовом скрине – то тест завалится.
Здесь, кажется, есть куча подводных камней типа:
"а если экран маленький, и контент не поместился, и просто уехал чуть ниже, а на базовом скрине был экран побольше – чё делать?"
или
"а если у меня динамический контент (например, карта, на которой могут исчезать или появляться строения и меняться их названия), то скрины будут непредсказуемо меняться и фейлиться"
Понятно, что всё это решаемо, и там вроде можно сказать "не смотри на эту часть скрина, она динамическая", но не уверен, насколько это всё будет удобно и стабильно.
Если у вас есть опыт скриншот-тестов – пишите в комментариях, нравятся ли они вам, и какие есть плюсы и минусы.
2️⃣ End-to-end (e2e)-тесты
На самом деле некорректно отделять их от остальных тестов, потому что это концепция другой категории, не противоречащая остальным. То есть, UI-тесты могут быть и e2e и не e2e.
End-to-end-тесты – означает, что мы в тестах ничего не мокаем. Проверяем на реальном сервере (понятно, что вряд ли это будет продовый сервер, но это будет или реальный тестовый сервер, на котором вы обычно тестовые сборки гоняете, или отдельное апи / сервер специально под e2e-тесты).
То есть, e2e UI-тесты максимально приближены к реальности. Никаких замоканных классов, методов, серверов. Всё работает так, как работает у реального ручного тестировщика.
Единственный момент – запускать ли их на эмуляторе или на реальном устройстве / ферме устройств. Первый вариант дешевле, но с ним много гемора, т.к. эмуляторы – неудобная и нестабильная штука, постоянно вставляющая вам палки в колёса. Зато на нём можно программно подменять версии апи и устройства. А на ферме что есть, то и есть – зато устройства реальные.
В следующих постах немного коснусь библиотек и фреймворков для автотестов. Не переключайтесь.
Часть 4: скриншот-тесты и end-to-end-тесты
1️⃣ Скриншот-тесты
Я их сам не использовал, знаю понаслышке, и могу где-то ошибаться. Но у меня понимание такое:
Ты делаешь кучу скриншотов экранов своего приложения, со всеми развилками экранов и флоу, и используешь как бенчмарк для скриншот-тестов.
И потом приложение делает новые скриншоты на тестируемой ветке и сравнивает со старыми. Если они не совпадают – значит тест завалился.
Грубо говоря, если при клике на кнопку "Покажи экран с собакой" у тебя показался экран с кошкой, или с наполовину уехавшей вниз собакой, или с собакой, но не с той, что на базовом скрине – то тест завалится.
Здесь, кажется, есть куча подводных камней типа:
"а если экран маленький, и контент не поместился, и просто уехал чуть ниже, а на базовом скрине был экран побольше – чё делать?"
или
"а если у меня динамический контент (например, карта, на которой могут исчезать или появляться строения и меняться их названия), то скрины будут непредсказуемо меняться и фейлиться"
Понятно, что всё это решаемо, и там вроде можно сказать "не смотри на эту часть скрина, она динамическая", но не уверен, насколько это всё будет удобно и стабильно.
Если у вас есть опыт скриншот-тестов – пишите в комментариях, нравятся ли они вам, и какие есть плюсы и минусы.
2️⃣ End-to-end (e2e)-тесты
На самом деле некорректно отделять их от остальных тестов, потому что это концепция другой категории, не противоречащая остальным. То есть, UI-тесты могут быть и e2e и не e2e.
End-to-end-тесты – означает, что мы в тестах ничего не мокаем. Проверяем на реальном сервере (понятно, что вряд ли это будет продовый сервер, но это будет или реальный тестовый сервер, на котором вы обычно тестовые сборки гоняете, или отдельное апи / сервер специально под e2e-тесты).
То есть, e2e UI-тесты максимально приближены к реальности. Никаких замоканных классов, методов, серверов. Всё работает так, как работает у реального ручного тестировщика.
Единственный момент – запускать ли их на эмуляторе или на реальном устройстве / ферме устройств. Первый вариант дешевле, но с ним много гемора, т.к. эмуляторы – неудобная и нестабильная штука, постоянно вставляющая вам палки в колёса. Зато на нём можно программно подменять версии апи и устройства. А на ферме что есть, то и есть – зато устройства реальные.
В следующих постах немного коснусь библиотек и фреймворков для автотестов. Не переключайтесь.
🔥3👌2❤1🫡1
Привет, друзья!
Давно я не делился успехами своих учеников на менторстве.
На скриншоте – отзыв одного из моих учеников, с которым мы работали 3 месяца.
Если вкратце: пришёл тимлид из сферы поддержки, захотел стать разрабом. Сначала сам пытался, но понял, что слишком долго и больно.
За 3 месяца мы:
– освоили котлин с зачатков знаний до необходимого для android-разработчика уровня
– освоили основу android-платформы: построение иерархии активити / фрагментов, передачу данных между ними, фоновую работу (корутины), работу с бэкендом и парсинг, отображение списков
Если хотите, чтобы я и вас поставил на правильные рельсы, объяснил, в какую сторону двигаться и помог с этим – записывайтесь на менторство @ilia_a_popov
@andrdevnotes | androidmentor.ru
Давно я не делился успехами своих учеников на менторстве.
На скриншоте – отзыв одного из моих учеников, с которым мы работали 3 месяца.
Если вкратце: пришёл тимлид из сферы поддержки, захотел стать разрабом. Сначала сам пытался, но понял, что слишком долго и больно.
За 3 месяца мы:
– освоили котлин с зачатков знаний до необходимого для android-разработчика уровня
– освоили основу android-платформы: построение иерархии активити / фрагментов, передачу данных между ними, фоновую работу (корутины), работу с бэкендом и парсинг, отображение списков
Если хотите, чтобы я и вас поставил на правильные рельсы, объяснил, в какую сторону двигаться и помог с этим – записывайтесь на менторство @ilia_a_popov
@andrdevnotes | androidmentor.ru
🔥8❤3🤩1
Когда мы с женой едем куда-то отдыхать, у нас есть два типа путешествий.
Первое – в страну, где на русском нас не поймут, и надо разговаривать на английском. Обычно это Европа. И в таких поездках для меня критически важно не общаться там с русскоязычными. Потому что 2-3 недели общения на английском очень круто перезагружают мне голову. И если прерывать их общением на русском с кем-то, кроме жены – это сильно снижает эффективность отдыха. Поэтому я всегда отказываю друзьям, которые предлагают в такие страны поехать вместе, и отказываю во встречах всем друзьям, которые случайно оказались в той же стране, что и я.
Второе – по России / СНГ, где меня на русском поймут. И вот в такие поездки, наоборот, я люблю ездить с компанией друзей: так получается веселее, и я лучше отдыхаю, чем если бы мы поехали вдвоём.
Такой вот путешественнический дуализм. А у вас как?
Первое – в страну, где на русском нас не поймут, и надо разговаривать на английском. Обычно это Европа. И в таких поездках для меня критически важно не общаться там с русскоязычными. Потому что 2-3 недели общения на английском очень круто перезагружают мне голову. И если прерывать их общением на русском с кем-то, кроме жены – это сильно снижает эффективность отдыха. Поэтому я всегда отказываю друзьям, которые предлагают в такие страны поехать вместе, и отказываю во встречах всем друзьям, которые случайно оказались в той же стране, что и я.
Второе – по России / СНГ, где меня на русском поймут. И вот в такие поездки, наоборот, я люблю ездить с компанией друзей: так получается веселее, и я лучше отдыхаю, чем если бы мы поехали вдвоём.
Такой вот путешественнический дуализм. А у вас как?
👍3😁1💯1👀1
Lateinit vs by lazy
В чём разница инициализации переменных с помощью lateinit и by lazy?
by lazy гарантирует тебе, что твоя переменная инициализируется только при первом запросе к ней, а при остальных запросах отдаст тот же инстанс.
Таким образом, ты будешь инициализировать каждую переменную, только когда она реально понадобится.
Иначе, когда при создании класса ты полезешь инициализировать сразу все 10 тяжёлых переменных в UI-потоке, у пользователя всё будет тормозить. А нам этого не хочется.
lateinit тебе ничего не гарантирует, lateinit - это просто "компилятор отвали, сам разберусь"
lateinit при попытке обращения к переменной, которую ты не инициализировал, свалится с экспешном.
А by lazy под капотом получит эксепшн и сам сходит в ту лямбду, которую ты ему передал для получения инстанса, и этот же инстанс потом и будет использовать при повторных обращениях.
Поэтому лейтиниты используются чаще всего для инжектов DI или для вьюбайндинга. Но во втором случае все равно может быть опасно, андроид – штука не всегда предсказуемая. Захочет кильнуть тебе процесс, или doze mode какой-нибудь настанет, что-то убьётся и криво попытается пересоздасться системой, жизненный цикл пойдёт по кривому пути и привет крэш =)
А вот by lazy использовать – это на здоровье. Только сильно тоже не увлекайтесь, а то читаемость кода может стать слишком плохой, и появиться неявные зависимости при инициализации разных переменных.
Может, знаете ещё минусы поздних и отложенных инициализаций?
В чём разница инициализации переменных с помощью lateinit и by lazy?
by lazy гарантирует тебе, что твоя переменная инициализируется только при первом запросе к ней, а при остальных запросах отдаст тот же инстанс.
Таким образом, ты будешь инициализировать каждую переменную, только когда она реально понадобится.
Иначе, когда при создании класса ты полезешь инициализировать сразу все 10 тяжёлых переменных в UI-потоке, у пользователя всё будет тормозить. А нам этого не хочется.
lateinit тебе ничего не гарантирует, lateinit - это просто "компилятор отвали, сам разберусь"
lateinit при попытке обращения к переменной, которую ты не инициализировал, свалится с экспешном.
А by lazy под капотом получит эксепшн и сам сходит в ту лямбду, которую ты ему передал для получения инстанса, и этот же инстанс потом и будет использовать при повторных обращениях.
Поэтому лейтиниты используются чаще всего для инжектов DI или для вьюбайндинга. Но во втором случае все равно может быть опасно, андроид – штука не всегда предсказуемая. Захочет кильнуть тебе процесс, или doze mode какой-нибудь настанет, что-то убьётся и криво попытается пересоздасться системой, жизненный цикл пойдёт по кривому пути и привет крэш =)
А вот by lazy использовать – это на здоровье. Только сильно тоже не увлекайтесь, а то читаемость кода может стать слишком плохой, и появиться неявные зависимости при инициализации разных переменных.
Может, знаете ещё минусы поздних и отложенных инициализаций?
👍8🔥5❤2😍1💯1
Качал вчера бицуху, и мне пришёл инсайт!
По будням у меня посты часто выходят после 18-19, то бишь после окончания рабочего дня. И в качалку я хожу в это же время.
И так выходит, что я между подходами смотрю, сколько лайков /комментариев у последнего поста. И с каждым лайком мне прилетает дополнительный дофамин, и становится больше сил, которые я тут же трачу на то, чтобы качать бицуху.
Так что ваши лайки напрямую влияют на размер моей бицухи. Помните об этом!
По будням у меня посты часто выходят после 18-19, то бишь после окончания рабочего дня. И в качалку я хожу в это же время.
И так выходит, что я между подходами смотрю, сколько лайков /комментариев у последнего поста. И с каждым лайком мне прилетает дополнительный дофамин, и становится больше сил, которые я тут же трачу на то, чтобы качать бицуху.
Так что ваши лайки напрямую влияют на размер моей бицухи. Помните об этом!
😁18❤7🔥4🌚1👻1
А вам слабо?
Вот вам репозиторий, в котором есть 21 задание по корутинам, от простых к сложным. Видимо с конфы SpectrumData в 2022-м.
Когда-то я бы многое отдал, чтобы найти такие задания, ибо нифига непонятно, как качать многопоточку на практике, если ещё нигде не работаешь.
Заодно можете посмотреть, как там написаны тесты на каждое задание – ибо именно по зелёненьким тестам вы поймёте, что задание сделано правильно.
Приходите в комменты к этому посту с вопросами и проблемами, будем вместе разбираться.👇👇👇
Вот вам репозиторий, в котором есть 21 задание по корутинам, от простых к сложным. Видимо с конфы SpectrumData в 2022-м.
Когда-то я бы многое отдал, чтобы найти такие задания, ибо нифига непонятно, как качать многопоточку на практике, если ещё нигде не работаешь.
Заодно можете посмотреть, как там написаны тесты на каждое задание – ибо именно по зелёненьким тестам вы поймёте, что задание сделано правильно.
Приходите в комменты к этому посту с вопросами и проблемами, будем вместе разбираться.👇👇👇
🔥10👍2❤1👨💻1👀1
Next Level Dev pinned «А вам слабо? Вот вам репозиторий, в котором есть 21 задание по корутинам, от простых к сложным. Видимо с конфы SpectrumData в 2022-м. Когда-то я бы многое отдал, чтобы найти такие задания, ибо нифига непонятно, как качать многопоточку на практике, если ещё…»
Дурацкие вопросы
Когда я устраивался в Белку на миддла, у меня не было опыта работы в андроид-команде. Не считая тех трёх месяцев, которые меня менторил лид, пока не ушёл. Дальше я в одиночку сидел кодил почти 4 года.
На проде из многопоточки у меня была абракадабра из асинктасков, сервисов, лоадеров и броадкастресиверов, которая работала кое-как с божьей помощью.
И тут я, джун-одиночка, захотел залететь в Белку миддлом. Было много страхов и много синдрома самозванца.
Один из страхов был в том, что я никогда не писал на эриксе. До этого я чутка покопался с корутинами, но даже на проде их не опробовал, и понимал их весьма на посредственном уровне. А эрикс и вовсе знал только теоретически.
И, тем не менее, на собесе я убедил своего будущего лида в том, что я не лыком шит, и без проблем смогу разобраться на ходу.
Разобраться с эриксом и решать задачи миддловского уровня.
Как? Я показал, что понимаю концепт многопоточки. Понимаю, как работают потоки, че такое диспатчеры и шедулеры, зачем и как переключать контексты, че такое гонка потоков и как с ней справляться и тд.
И хотя я не до конца знал все реализации, я на все вопросы на собесе отвечал +- правильно, что лида приятно удивило. Он мне так и сказал «оч круто, что у тебя нет опыта в эрикс, и при этом ты так толково отвечаешь на вопросы по нему».
Зная базу, всегда можно выкрутиться на собесе и показать, что твои знания не синтетические, а ты умеешь их использовать. А вот зазубрив ответы на вопросы к собеседованиям про многопоточку, вы легко завалитесь, когда начнётся “шаг вправо – шаг влево” от того, что зазубрили.
Та же фигня была с ЕГЭ. Когда я шёл на ЕГЭ по математике, мне было плевать, какие там будут задания. Мне было даже интересно, чтоб они попались не сильно знакомые, чтоб было, где подумать.
Того и вам советую. Практикуйтесь в темах, которые изучаете, пока не начнёте понимать что, как и зачем вы делаете.
Задавайте дурацкие вопросы, пока они не кончатся. Я серьёзно.
Жду от вас в комментариях дурацкие вопросы.
Когда я устраивался в Белку на миддла, у меня не было опыта работы в андроид-команде. Не считая тех трёх месяцев, которые меня менторил лид, пока не ушёл. Дальше я в одиночку сидел кодил почти 4 года.
На проде из многопоточки у меня была абракадабра из асинктасков, сервисов, лоадеров и броадкастресиверов, которая работала кое-как с божьей помощью.
И тут я, джун-одиночка, захотел залететь в Белку миддлом. Было много страхов и много синдрома самозванца.
Один из страхов был в том, что я никогда не писал на эриксе. До этого я чутка покопался с корутинами, но даже на проде их не опробовал, и понимал их весьма на посредственном уровне. А эрикс и вовсе знал только теоретически.
И, тем не менее, на собесе я убедил своего будущего лида в том, что я не лыком шит, и без проблем смогу разобраться на ходу.
Разобраться с эриксом и решать задачи миддловского уровня.
Как? Я показал, что понимаю концепт многопоточки. Понимаю, как работают потоки, че такое диспатчеры и шедулеры, зачем и как переключать контексты, че такое гонка потоков и как с ней справляться и тд.
И хотя я не до конца знал все реализации, я на все вопросы на собесе отвечал +- правильно, что лида приятно удивило. Он мне так и сказал «оч круто, что у тебя нет опыта в эрикс, и при этом ты так толково отвечаешь на вопросы по нему».
Зная базу, всегда можно выкрутиться на собесе и показать, что твои знания не синтетические, а ты умеешь их использовать. А вот зазубрив ответы на вопросы к собеседованиям про многопоточку, вы легко завалитесь, когда начнётся “шаг вправо – шаг влево” от того, что зазубрили.
Та же фигня была с ЕГЭ. Когда я шёл на ЕГЭ по математике, мне было плевать, какие там будут задания. Мне было даже интересно, чтоб они попались не сильно знакомые, чтоб было, где подумать.
Того и вам советую. Практикуйтесь в темах, которые изучаете, пока не начнёте понимать что, как и зачем вы делаете.
Задавайте дурацкие вопросы, пока они не кончатся. Я серьёзно.
Жду от вас в комментариях дурацкие вопросы.
❤7👍4🔥2😍1💯1
Кстати, первую таску с эриксом я сделал ну так себе. Лид посмотрел, покачал головой и подсказал, как лучше переделать, чтоб сайдэффекты бизнес-логики в doOnError не надавали мне по башке.
А через год я уже захреначил офигительные поллинги на эриксе, которыми пользуемся до сих пор. Rx-логика там ппц какая сложная, и ничего подобного я в интернете не нашёл, пришлось велосипедить самому, и я блестяще справился.
Однажды переведём их на корутины, вот будет веселье!
Когда-нибудь я настрочу про эти поллинги на хабр статью, словлю кучу хейта, и моя бедная карма упадёт с -8 до -38, и улечу я навечно в ридонли. Но карме не стать помехой годному контенту!
А через год я уже захреначил офигительные поллинги на эриксе, которыми пользуемся до сих пор. Rx-логика там ппц какая сложная, и ничего подобного я в интернете не нашёл, пришлось велосипедить самому, и я блестяще справился.
Когда-нибудь я настрочу про эти поллинги на хабр статью, словлю кучу хейта, и моя бедная карма упадёт с -8 до -38, и улечу я навечно в ридонли. Но карме не стать помехой годному контенту!
🔥6👏5❤2😁2
🚀 Скидка 15% на менторство новым ученикам на https://androidmentor.ru/ 🚀
Если вы ощущаете, что слишком закапываетесь, процесс обучения разработке идёт слишком долго или нервно, или вы боитесь, или не понимаете, с чего начать, и как дойти до конца – я могу помочь.
Сам таким был, сам таких учил, и хорошо знаю, как поставить вас на правильные рельсы и поддать жару.
🔥 До конца 2024 года я даю всем новым ученикам скидку 15% на все свои тарифы менторства.🔥
✨ Что вас ждёт:
1️⃣ Начнём с собеседования и составим индивидуальную программу обучения
2️⃣ Много практики: я даю вам задания, вы делаете пулл-реквесты в github, я делаю код-ревью и комментирую
3️⃣ Я регулярно отвечаю на вопросы в чате, делюсь полезными ссылками и лайфхаками
✅ Результат:
Вы максимально быстро и безболезненно достигаете своей цели
Подробнее о менторстве на моём сайте.
Записаться на менторство со скидкой можно сейчас, а начать в следующем году.
Если вы готовы начать Новый 2025 Год продуктивно вместе со мной – приходите в личку.
#android #менторство
Если вы ощущаете, что слишком закапываетесь, процесс обучения разработке идёт слишком долго или нервно, или вы боитесь, или не понимаете, с чего начать, и как дойти до конца – я могу помочь.
Сам таким был, сам таких учил, и хорошо знаю, как поставить вас на правильные рельсы и поддать жару.
🔥 До конца 2024 года я даю всем новым ученикам скидку 15% на все свои тарифы менторства.🔥
✨ Что вас ждёт:
1️⃣ Начнём с собеседования и составим индивидуальную программу обучения
2️⃣ Много практики: я даю вам задания, вы делаете пулл-реквесты в github, я делаю код-ревью и комментирую
3️⃣ Я регулярно отвечаю на вопросы в чате, делюсь полезными ссылками и лайфхаками
✅ Результат:
Вы максимально быстро и безболезненно достигаете своей цели
Подробнее о менторстве на моём сайте.
Записаться на менторство со скидкой можно сейчас, а начать в следующем году.
Если вы готовы начать Новый 2025 Год продуктивно вместе со мной – приходите в личку.
#android #менторство
👍6🔥3❤2
Обновил для вас пост-навигацию по каналу.
Обо мне:
– Моя история. Часть 1
– Моя история. Часть 2
Обучение начинающих:
– С какими запросами работаю на консультациях
– Подробно о помесячном менторстве
Отзывы учеников:
– Отзыв на менторство 1
– Отзыв на менторство 2
– Отзыв на менторство 3
– Отзыв на консультацию 1
– Отзыв на консультацию 2
Android-разработка для начинающих:
– С чего начать андроид-разработку
– 3 лучших книги для начинающего андроид-разработчика
– 8 удобных хоткеев в Android Studio
– Подкаст о джунах, стажировках и начинаюших разработчиках
– Как выглядит работа android-разработчика в продуктовой команде
Поиск работы:
– Как устроиться на работу
– Как писать тестовое задание / пет-проект в резюме. Часть 1
– Как писать тестовое задание / пет-проект в резюме. Часть 2
– Поиск первой работы: Часть 1: подготовка.
– Поиск первой работы: Часть 2: способы поиска.
– Ошибки в резюме
– Как вести профиль гитхаба
Лайфхаки разработки:
– Видео: как парсить API
– Видео: 5 простых лайфхаков для крутого кода
– Видео: 3 простых способа сделать разную вёрстку для смартфонов и планшетов
– Видео: делегаты адаптера
– Видео: Clean Architecture
– Видео: коллекции и экстеншны
– Аудио: Как правильно настраивать обфускацию
– Работа с системными разрешениями android
– Как делить ответственность между вьюмоделями и репозиториями?
– LiveData vs Flow: одноразовые ивенты и стейты
– Два простых способа сохранить данные при перезапуске приложения
– Виды кэширования
– RecyclerView: несколько ViewType
– Lateinit vs by lazy
– Тренируемся с корутинами
– Полезные ссылки
Стримы «Лайвкодинг: пишем приложение с нуля»:
– 1 часть
– 2 часть
– Репозиторий с кодом со стримов
Автотесты:
– Зачем их писать
– Юнит-тесты
– Интеграционные тесты
– UI-тесты
#android #навигация
Обо мне:
– Моя история. Часть 1
– Моя история. Часть 2
Обучение начинающих:
– С какими запросами работаю на консультациях
– Подробно о помесячном менторстве
Отзывы учеников:
– Отзыв на менторство 1
– Отзыв на менторство 2
– Отзыв на менторство 3
– Отзыв на консультацию 1
– Отзыв на консультацию 2
Android-разработка для начинающих:
– С чего начать андроид-разработку
– 3 лучших книги для начинающего андроид-разработчика
– 8 удобных хоткеев в Android Studio
– Подкаст о джунах, стажировках и начинаюших разработчиках
– Как выглядит работа android-разработчика в продуктовой команде
Поиск работы:
– Как устроиться на работу
– Как писать тестовое задание / пет-проект в резюме. Часть 1
– Как писать тестовое задание / пет-проект в резюме. Часть 2
– Поиск первой работы: Часть 1: подготовка.
– Поиск первой работы: Часть 2: способы поиска.
– Ошибки в резюме
– Как вести профиль гитхаба
Лайфхаки разработки:
– Видео: как парсить API
– Видео: 5 простых лайфхаков для крутого кода
– Видео: 3 простых способа сделать разную вёрстку для смартфонов и планшетов
– Видео: делегаты адаптера
– Видео: Clean Architecture
– Видео: коллекции и экстеншны
– Аудио: Как правильно настраивать обфускацию
– Работа с системными разрешениями android
– Как делить ответственность между вьюмоделями и репозиториями?
– LiveData vs Flow: одноразовые ивенты и стейты
– Два простых способа сохранить данные при перезапуске приложения
– Виды кэширования
– RecyclerView: несколько ViewType
– Lateinit vs by lazy
– Тренируемся с корутинами
– Полезные ссылки
Стримы «Лайвкодинг: пишем приложение с нуля»:
– 1 часть
– 2 часть
– Репозиторий с кодом со стримов
Автотесты:
– Зачем их писать
– Юнит-тесты
– Интеграционные тесты
– UI-тесты
#android #навигация
🔥7👍4⚡3❤2😍1
Next Level Dev pinned «Обновил для вас пост-навигацию по каналу. Обо мне: – Моя история. Часть 1 – Моя история. Часть 2 Обучение начинающих: – С какими запросами работаю на консультациях – Подробно о помесячном менторстве Отзывы учеников: – Отзыв на менторство 1 – Отзыв на менторство…»
Читал тут недавно книгу от создателя Nike Фила Найта.
Очень советую: Фил искренне и без приукрашиваний рассказывает о своих косяках, страхах и случайных стечениях обстоятельств в процессе создания своего бизнеса.
Одна из главных мыслей: ты точно будешь много косячить, если будешь делать что-то хоть мало-мальски важное для мира. И главное – вовремя понимать ошибки и хоть как-нибудь их исправлять, чтобы хоть немного лучше становилось, чем было.
Он почти всё делал неправильно, но тем не менее как-то выкарабкался =)
Тут, конечно, сразу приходит на ум ошибка выжившего, но у нас тут не бизнес-паблик, не хочу в это вдаваться)
И была там цитата персидского поэта: «Не спи хотя бы ночь одну. Тобой желаемое страстно само к тебе придет».
И чот меня пробила эта фраза прям до слёз, наложившись на мои мысли, витавшие в последнее время.
И я пошёл, посмотрел, во сколько закат и рассвет, и решил, что в ближайшую ночь от заката до рассвета не буду спать, а буду сидеть с большой тетрадью и ручкой и писать, что в голову придёт.
Интересное упражнение, советую. Сначала шло туговато, несколько часов вообще ничего не писал. А примерно за полчаса до рассвета я резко настрочил несколько инсайтов =)
А вы какие книги в последнее время читали?
Очень советую: Фил искренне и без приукрашиваний рассказывает о своих косяках, страхах и случайных стечениях обстоятельств в процессе создания своего бизнеса.
Одна из главных мыслей: ты точно будешь много косячить, если будешь делать что-то хоть мало-мальски важное для мира. И главное – вовремя понимать ошибки и хоть как-нибудь их исправлять, чтобы хоть немного лучше становилось, чем было.
Он почти всё делал неправильно, но тем не менее как-то выкарабкался =)
И была там цитата персидского поэта: «Не спи хотя бы ночь одну. Тобой желаемое страстно само к тебе придет».
И чот меня пробила эта фраза прям до слёз, наложившись на мои мысли, витавшие в последнее время.
И я пошёл, посмотрел, во сколько закат и рассвет, и решил, что в ближайшую ночь от заката до рассвета не буду спать, а буду сидеть с большой тетрадью и ручкой и писать, что в голову придёт.
Интересное упражнение, советую. Сначала шло туговато, несколько часов вообще ничего не писал. А примерно за полчаса до рассвета я резко настрочил несколько инсайтов =)
А вы какие книги в последнее время читали?
❤7👍1
Окей гугл chatGPT, как работать, если до отпуска неделя, а ты мысленно уже ешь тапасы и запиваешь гарначей в каком-нибудь баре Барселоны…
👏3😁1
Днём сидишь думаешь про Барселону, ночью сидишь прислушиваешься к звукам, похожим на одиночные салюты, и думаешь, а салюты ли это… Вайбы современной России)
А учитывая, что к нам в Жуковский «подарки» уже прилетали… Спокойной ночи, Илья, как говорится
А учитывая, что к нам в Жуковский «подарки» уже прилетали… Спокойной ночи, Илья, как говорится
❤🔥4👍1
Заметил тут интересную закономерность:
1) когда работника сокращают и выставляют "на мороз", при определённых навыках всегда можно выторговать компенсацию в размере зарплаты за 5 месяцев
2) средний срок "от нуля до иду на собесы" у моих менти составляет 5 месяцев
Я, канеш, ни на что не намекаю , но... 😏
1) когда работника сокращают и выставляют "на мороз", при определённых навыках всегда можно выторговать компенсацию в размере зарплаты за 5 месяцев
2) средний срок "от нуля до иду на собесы" у моих менти составляет 5 месяцев
Please open Telegram to view this post
VIEW IN TELEGRAM
androidmentor.ru
Главная
Главная cтраница
🤯4👀2😁1🤔1🌚1
Как охуенно быть разработчиком
Что сделает обычный человек, столкнувшись с вылетом на одном из диалогов побочного квеста в игре? Забьёт и пойдёт дальше, ну ломаный квест, да и хрен бы с ним.
А вот я нашёл и открыл файл диалога, который написан не то на C++, не то на C. Засучил рукава и пошёл смотреть, где там накриворучили разработчики.
Будет ещё эта чёртова машина мне указывать, какие квесты проходить, а какие нет, хрен ей!
Потом правда жена вернулась и мы пошли ужинать, так что продолжу в следующий раз.
И это – не случайность, это – парадигма мышления. Решить можно любую проблему, если достаточно хорошо изучить причину. Нет никакой магии, со всем можно разобраться. Ты устанавливаешь правила, а не подчиняешься магическим чёрным ящикам.
Делаем ставки, господа. Кто победит, я или Корсары 2? 🌚
Что сделает обычный человек, столкнувшись с вылетом на одном из диалогов побочного квеста в игре? Забьёт и пойдёт дальше, ну ломаный квест, да и хрен бы с ним.
А вот я нашёл и открыл файл диалога, который написан не то на C++, не то на C. Засучил рукава и пошёл смотреть, где там накриворучили разработчики.
Будет ещё эта чёртова машина мне указывать, какие квесты проходить, а какие нет, хрен ей!
Потом правда жена вернулась и мы пошли ужинать, так что продолжу в следующий раз.
Делаем ставки, господа. Кто победит, я или Корсары 2? 🌚
😁17🔥5💯3❤1
Короче. Сижу я тут, в Бильбао, остались последние несколько дней охеренного отпуска.
Отпуска, в котором я впервые увидел океан, и охренел, насколько он отличается от моря.
Отпуска, в котором я погрузился в колорит страны Басков, который я, как оказалось, органически не переношу (но после второго бокала чаколи ваще норм).
И я максимально старался оградить себя от всего, что бы связывало меня с работой в Белке или телеграм-каналом (второй работой) или менторством (третьей работой).
Зачем? Чтобы максимально отдохнуть. И, если честно, меня заебала эта мысль про максимизацию отдыха. Я хочу отдыхать так, как отдыхается, и тогда, когда мне этого хочется. А не 28 дней в году.
И меня изнутри точит одна мысль: я недостаточно реализовался. Я мало пользы приношу. Мало стараюсь. Слишком дохуя хочу и слишком недостаточно отдаю.
Хотя вроде я хреначу по максимуму, как могу. Но всё недостаточно эффективно что ли. Хотя положительная динамика налицо, но хочется сильно больше и быстрее.
Я пиздец как хочу сделать какую-то активность или продукт, которые:
а) отсортируют реально заряженных начинающих разрабов от тех, кого занесло сюда ветром популярности индустрии
б) докажут всем, что начинающий разработчик, прошедший менторство Ильи Попова – это не говнарь со скиллбокса, а охуенная боевая единица, готовая выстоять в схватке с реальным миром андроид-разработчика. И это реально тот самый «разраб с горящими глазами», который быстро станет приносить бизнесу пользу.
Даже если он на ваших супертрумегатехсобесах от волнения перепутал single с observable. Да блять, куда важнее то, что у него в голове чёткая картина того, в какую сторону ему копать при возникающих проблемах.
Когда я слышу от своих учеников «ну вот тут на собесе я ошибся несколько раз, но быстро додумал, где-то догадался, где-то докрутил, и собеседующий сказал, что в правильную сторону», и после этого им отказывают, я хочу собеседующих головой об стол побить, и влить им в горло калимочо.
Вать машу, один тот факт, что они на собесах (а это весьма волнительное мероприятие, ю ноу) смогли вырулить в правильную сторону после того, как запутались или что-то забыли, стоит пятидесяти вызубренных учебников.
Потому что PM’у и вашему лиду будет насрать на то, что там было в учебниках.
P.S.: буду продолжать думать, как нам с вами победить нынешнюю ситуацию с рынком найма, безо всяких идиотских накруток. Если вам это близко – оставайтесь со мной и помогайте, своей активностью, лайками и комментариями.
А, да. С Новым Годом, друзья!
Отпуска, в котором я впервые увидел океан, и охренел, насколько он отличается от моря.
Отпуска, в котором я погрузился в колорит страны Басков, который я, как оказалось, органически не переношу (но после второго бокала чаколи ваще норм).
И я максимально старался оградить себя от всего, что бы связывало меня с работой в Белке или телеграм-каналом (второй работой) или менторством (третьей работой).
Зачем? Чтобы максимально отдохнуть. И, если честно, меня заебала эта мысль про максимизацию отдыха. Я хочу отдыхать так, как отдыхается, и тогда, когда мне этого хочется. А не 28 дней в году.
И меня изнутри точит одна мысль: я недостаточно реализовался. Я мало пользы приношу. Мало стараюсь. Слишком дохуя хочу и слишком недостаточно отдаю.
Хотя вроде я хреначу по максимуму, как могу. Но всё недостаточно эффективно что ли. Хотя положительная динамика налицо, но хочется сильно больше и быстрее.
Я пиздец как хочу сделать какую-то активность или продукт, которые:
а) отсортируют реально заряженных начинающих разрабов от тех, кого занесло сюда ветром популярности индустрии
б) докажут всем, что начинающий разработчик, прошедший менторство Ильи Попова – это не говнарь со скиллбокса, а охуенная боевая единица, готовая выстоять в схватке с реальным миром андроид-разработчика. И это реально тот самый «разраб с горящими глазами», который быстро станет приносить бизнесу пользу.
Даже если он на ваших супертрумегатехсобесах от волнения перепутал single с observable. Да блять, куда важнее то, что у него в голове чёткая картина того, в какую сторону ему копать при возникающих проблемах.
Когда я слышу от своих учеников «ну вот тут на собесе я ошибся несколько раз, но быстро додумал, где-то догадался, где-то докрутил, и собеседующий сказал, что в правильную сторону», и после этого им отказывают, я хочу собеседующих головой об стол побить, и влить им в горло калимочо.
Вать машу, один тот факт, что они на собесах (а это весьма волнительное мероприятие, ю ноу) смогли вырулить в правильную сторону после того, как запутались или что-то забыли, стоит пятидесяти вызубренных учебников.
Потому что PM’у и вашему лиду будет насрать на то, что там было в учебниках.
А, да. С Новым Годом, друзья!
👍23❤6❤🔥5🍾4😍2