Как я вошел в IT и чего мне это стоило. Но результат превзошел все ожидания. Часть 3

Андрей Нивинский
android software developer

В июне 2022 года я устроился в другую компанию.

Процесс трудоустройства во вторую компанию был интересным опытом. Было 4 этапа:

  • Беседа с руководителем отдела по общим вопросам: кто я, что я, зачем я, какие у меня цели, с кем бы я хотел работать, с кем бы я не хотел работать... Я это называю проверкой на общую адекватность. По сути, для меня это самая легкая часть.
  • Техническое собеседование. Около двух часов я разговаривал с ведущим разработчиком компании. Он меня гонял как школьника на экзаменах. Приводить вопросы тут не буду, ибо это бессмысленно. По моим внутренним ощущениям я правильно ответил на около 80% всех вопросов. В конце, когда уже собеседование подходило к концу, на мой вопрос “ну как я?” он ответил просто “если бы ты был совсем плох, я бы на тебя не потратил столько времени”, и дал мне 3 задачи в качестве домашнего задания. Собеседование было в пятницу, а решение я должен был дать в понедельник.
  • Переговоры опять со старшим программистом по моему домашнему заданию, на этот раз диалог уже занял около одного часа.
  • Беседа с руководителем отдела уже в основном за зарплату и дату выхода на работу. По сути, мы обсудили только 2 этих вопроса. Ну и еще для меня принципиален был момент 100% удаленки.

Отдельно хочу остановиться на домашнем задании. На собеседовании я сказал, что RxJava (RxKotlin) не знаю. Это многопоточное программирование. В Андроиде есть две технологии: сторонняя библиотека RxJava и родная гугловская Coroutine. Я знал только гугловскую родную, о которой сразу сказал на собеседовании. Но в качестве домашнего задания я получил 2 задачи на RxJava. И тут я понял, что “ни шагу назад, позади Москва”. Я опять выпал из жизни на оба выходных, я искал курсы по RxJava, чтоб пройти за выходные. Но ничего толкового не нашел. В итоге полез на startAndroid.ru, там был курс по RxJava1 (а мне нужна вторая версия), да и курс на языке Java. Я выполнял задания на Java, потом пытался перевести это все на язык Kotlin, но синтаксис совсем не тот и я делал ошибки, при этом не понимая где именно. Затем в ход пошел youtube и канал mobile dev Алексея Гладкова (трудится в Леруа Мерлен, делает мобильное приложение под андроид), где он уже на Kotlin объяснил в часовом видео суть работы RxJava. Просмотрев его, у меня было стойкое понимание того, что понимания у меня нет. Была уже вторая половина воскресенья, а задание делать я так и не начал. В конечном итоге вспомнил старый дедовский способ - спросить гугл как сделать то и это. В итоге по каждому запросу “как создать подписчика?”, “как создать поток данных?”, “как выполнить фильтрацию входящего списка?” (запросы естественно на английском языке) я решил с горем пополам эти две задачи.

Я слукавлю, если в этом моменте не упомяну про моего наставника (или ментора, как принято называть таких людей) - это мой одноклассник Мерсиянов Дмитрий. В сложных ситуациях он всегда приходил ко мне на помощь. Когда я устраивался на первую работу, он проверил результат выполнения моего кода, немного подшаманил и мы получили более качественное поведение приложения. При трудоустройстве на текущее место работы он также проверил результат моей работы, также подшаманил и добился правильного поведения программы.

<p>Лысого дядьку с прической хитмана вы уже знаете. По середине Мерсиянов Дима. Справа - Анастасия, девушка Димы.</p><p>Фотография сделана 30 октября 2022 года в Аланийской крепости.</p>

Лысого дядьку с прической хитмана вы уже знаете. По середине Мерсиянов Дима. Справа - Анастасия, девушка Димы.

Фотография сделана 30 октября 2022 года в Аланийской крепости.

Третья задача была про транспонирование матрицы без создания временной матрицы - гугл помог найти ответ.

Что самое интересное, матрицы я на работе ни разу не крутил, а когда я трудоустроился, меня закинули на проект, который пишется с нуля (он еще не вышел в релиз, потому мне даже название говорить нельзя) и на новых технологиях, и к RxJava я не возвращался. Впоследствии в октябре 2022 года на сайте https://www.kodeco.com/ (raywenderlich.com - так он назывался в предыдущем отчете. Видимо ребрендинг случился) я наткнулся на курс RxKotlin (это RxJava - но на языке Kotlin c учетом особенностей языка Kotlin) от 2019 года и прошел его. Потом пересмотрел видео Алексея Гладкова про RxJava и, о боги, я понял каждое его слово. О своих новых знаниях я доложил наверх в компании, мне тут же подкинули пару задач на этой технологии, которые я успешно и быстро закрыл, подтвердив тем самым самому себе, что на боевом проекте я всё сделал правильно.

Развитие.

Когда я проходил собеседование во вторую компанию, в которой тружусь сейчас, я задал вопрос, смысл которого сводился к следующему “если я в чем-то буду тормозить и моих навыков хватать не будет, вы мне скажите, что мне следует выучить, чтоб я повышал свои профессиональные навыки?”, на что мне ответили “мы не заинтересованы в студентах, мы никого учить не хотим”. Если рассмотреть этот вопрос со стороны бизнеса, то понятно, что он не хочет платить и повышать компетенции сотрудника, который потом за эти знания попросит больше денег, либо уйдет к другому работодателю. Такой вот замкнутый круг. То есть бизнес хочет иметь более компетентного специалиста, который не знает, что он уже имеет более высокий уровень, чем в момент трудоустройства. Если ты пришел джуном/стажером в компанию, и делаешь только какие-то мелкие задачи (например верстка экрана), и “отбываешь” свои 8 часов на работе ничем другим не занимаясь, то ты не вырастешь, потому что даже через год ты будешь виртуозно верстать экраны и на этом все. Такой специалист-полуфабрикат никому не нужен.

Для того, чтоб быть востребованным на рынке труда нужно понимать, что рынок/бизнес ждет от кандидата. Все ожидания в основном сводятся к опыту (здесь мы говорим только о сроках в календарных годах), а также набору технологий. Если на сроки мы повлиять не можем, а только лишь работать, чтоб счетчик сам день за днем крутился, то набор технологий в нашем резюме зависит только от нашей трудоспособности и дисциплины. В период работы на второй работе я в своё резюме добавил 3 новых строчки:

  • RxJava/RxKotlin - многопоточное программирование.
  • Dagger2 - инъекция зависимостей. Что это такое - писал выше.
  • Jetpack Compose - это новые технологии по верстке экранов. Google её пропихивает везде, где только можно. Значит, новые приложения будут писаться на этих технологиях. Кроме как в тестовых проектах я её нигде не пробовал. Но как минимум знания и опыт уже есть.

Как я учу новые технологии и есть ли у меня какой-то график?

Да, для себя я четко решил, что время зря не трачу. Моё обучение новым технологиям можно разделить на 2 этапа: до и после отъезда в Турцию.Когда я находился в России, я по субботам выделял максимум 4 часа на изучение новых технологий (воскресенье - выходной), и еще час-полтора после работы. Когда я приехал в Турцию, моя основная задача была выбираться из дома, иначе какой смысл уезжать, если также сидишь в четырех стенах? Сейчас я учусь только во время простоя в рабочее время. Простой возникает пару раз в неделю: я написал своё решение задачи, отправляю его на проверку (code Review), и пока выполняется проверка (а это может быть и 4 часа), я занимаюсь повышением своих компетенций. Пока выполняется эта проверка, новую глобальную задачу я не беру, не принято такое поведение в компании.

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

А зарплата считается очень грубо следующим образом: в твоем резюме 10 технологий, каждая технология стоит 10 тысяч рублей. Что делать, если хочешь получать 150 тысяч рублей? Правильно, освоить еще 5 технологий. Конечно же, мы держим в уме, что количество ваших технологий умножается на мультипликатор опыта и получается более правильная математическая задача. Но посыл и так понятен.К сожалению, не существует никаких тестов на уровень знаний разработчика, что-то типа “пройдите тест и за 30 минут узнайте свой уровень английского языка”. Это грейды, и в каждой компании они свои. Например, если я могу быть уже сениор разработчиком в текущей компании, не факт, что я буду сениор-разработчиком в озоне, скорей всего опущусь на уровень уверенного миддла. А если пойти в еще более крутую компанию типа Google или Amazon, там я могу быть джуниор+. На то, чтоб например, называться миддл-разработчиком, ты должен без помощи посторонних лиц сам полностью закрывать все входящие задачи на разработку, и опыт наверное должен быть 1.5 года и выше. За этот период у тебя и насмотренность чужого кода будет, и уже не будешь вспоминать статические методы (если перевести на русский, то не будешь считать сколько будет 2х2, ты уже знаешь, что 4 и без калькулятора или таблицы умножения), плюс хорошо пополнится собственная база знаний решения определенных алгоритмов, которые делаешь практически каждый день. Хотя опять же, программисту не обязательно помнить все решения, достаточно лишь знать, что конкретно так можно. И пошел в интернет искать реализацию этого решения. По крайней мере у меня такой подход работает: я помню, что так можно, я это где-то видел, но не помню как - всё можно найти.

Курсы, которые я купил и/или прошел после марта 2022 года.

  • На startAndroid прошел курс по RxJava.
Как я вошел в IT и чего мне это стоило. Но результат превзошел все ожидания. Часть 3

Стоимость 2240 рублей. Курс старый, начался в 2016 году, я его приобрел скорее от безвыходности. Он мне особо не помог, кроме как общего понимания технологии. Но с его помощью практическую задачу решить не смог, да и курс на другом языке. Рекомендую ли я его к приобретению? В 2022 году точно нет, потому что сейчас есть уже RxJava3.

  • Оформил подписку на kodeco.com (бывший raywenderlich.com)
<p>Стоимость подписки - 350 долларов в год. Мне очень нравится. База наполняется практически каждую неделю. Есть не только Android\Kotlin, но и другие языки.</p>

Стоимость подписки - 350 долларов в год. Мне очень нравится. База наполняется практически каждую неделю. Есть не только Android\Kotlin, но и другие языки.

  • Курс на UDEMY “Jetpack Compose Crash course for Android with Kotlin”
Как я вошел в IT и чего мне это стоило. Но результат превзошел все ожидания. Часть 3

Цена что-то около 1000 рублей. Пришлось регистрировать новый аккаунт на гугловскую почту и оплачивать иностранной картой. С россиянами udemy работать нынче не хочет. Курс доступный, достойный, автор всё раскладывает по полочкам и идет по принципу “от простого к сложному”. Рекомендую к приобретению. Обращаю внимание, что курс на английском языке.

  • Курс по JetPack Compose на ютубе от Philipp Lackner
Как я вошел в IT и чего мне это стоило. Но результат превзошел все ожидания. Часть 3

Ютуб как всегда находится на своей вершине. Всё бесплатно и можно найти любую тему. Смотреть эти два курса по Jetpack Compose нужно обязательно, они друг друга дополняют. Если смотреть какой-то только один, то остается некая недосказанность. Опять же, курс на английском языке. Можно подумать, что у нас есть яндекс переводчик, который работает в ютубе, но тут технический язык, и вы будете слышать что-то типа “возьмите свой горшок и зажгите глаза”. Зажгите глаза - это он так firebase гугловский перевел.

  • Курс на OTUS — Android для профессионалов — не рекомендую.
<p><br /></p>


Во-первых, дорого.

Во-вторых, преподавательский состав хоть и разный, но только у одного парня в рамках тестирования верстки есть талант к преподаванию и объяснению. Остальных преподавателей было трудно понять, т.к. говорили несвязно, мысли путались, перескакивали с темы на тему. То есть видно, что они знают, но мысль донести свою не могут.

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

В-четвертых, информация, на мой взгляд, не структурирована. Нужно прорабатывать план самого учебного курса. Такое ощущение, что рассказали про все, но по кусочкам.

Из плюсов могу отметить, что дают кучу сопутствующего учебного материала.

Курсы на udemy отбираются по принципу оценок других студентов. Чем больше звезд, тем лучше. Остальные курсы выбирались по принципу “надо здесь и сейчас”.

Пока что я прохожу те курсы, которые мне помогут легче выполнять мои текущие задачи. В компании хотели также внедрять Jetpack Сompose, но не срослось, было слишком много внутренних конфликтов в используемых технологиях. Поэтому решили отказаться от идеи внедрять новые технологии.

Продолжение следует

77
1 комментарий

RxJava - это все же не только многопоточка (хотя и она тоже, разумеется), это больше про реактивный подход. Сравнивать ее с Корутинами - ну такое, тогда уж правильнее с Flow.

Ответить