Дмитрий Мовчан

Дмитрий Мовчан

Неделя
Sep 23, 2019 → Sep 30, 2019
Темы

Архив недели @v1sarRU

Понедельник


Всем привет =) На этой неделе с вами Мовчан Дмитрий. Android разработчик. В данный момент работаю в компании Revolut, Москва. Постараюсь раскрыть темы карьеры, выступлений, саморазвития, кодинга и прочее. Твиттером не пользуюсь, поэтому извиняйте если буду долго въезжать =)
notion image

Посмотрим есть ли среди предложенных тем то, что вам будет интересно читать :) заодно протестируем насколько опросы эффективны

Ну что ж, давайте знакомиться поближе для начала. Сейчас мне 25 лет. Родился в Москве, сменил 3 школы, последняя была лицей 1581 при МГТУ им. Баумана. В дальнейшем туда и пошел учиться на специальность "компьютерные системы и сети" (ИУ6). Мечтал стать крутым сис. админом 😅

В итоге где-то в середине учебы решил попробовать себя в чем-то новом, т.к. современное образование отбило любое желание заниматься тем, чему тебя вроде как "должны" научить. Я пошел в схемотехнику/микроконтроллеры и тд. Начал собирать образы Windows для спец. компьютеров и тд

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

Исходные данные: 3ий курс, базовые знания Pascal, C/C++, курсовая на C++ со стыренным с инета кодом для OpenCV. Элементарные знания HTML+CSS, немного успел потрогать Ruby тогда. Также ассемблер, который мне до сих пор нигде не пригодился. Решаю попробовать свои силы в разработке

С/С++ я тогда тоже знал едва ли, понимал только различие стуктур данных, да умел написать простые алгоритмы типо сортировки пузырьком.

Меню отговаривают все мои "тогдашние" знакомые, но я пытаюсь поступить в park.mail.ru Забегая наперед могу сказать, что это было одно из самых правильных решений за всю мою жизнь, которое во многом определило то, чем я занимаюсь сегодня. park.mail.ru/alumni/82/329/

"Технопарк" - тема отдельного разговора и стоит обсудим в тот день, когда будем говорить про саморазвитие/карьеру. Но коротко - учат там два года и учат абсолютно всему. У нас был условно уклон в сторону C++, но это не помешало мне впервые увидеть Java и начать писать под Android

Собственно еще во время технопарка я стал искать вакансии, ожидаемо в mail.ru - но пройдя там 3 собеседования (2 очно, и 1 online) - получил 3 отказа. Тогда стали появляться первые мысли, что "пошел куда-то не туда" "проще бросить" "остаться на текущем месте"

Я долго собирался с мыслями и где-то только через 3 месяца после последнего отказа - подался на вакансию стажера в Kaspersky. Собеседование длилось 40 минут и уже через 30 минут после окончания мне позвонили, сказали что я подхожу и готовы взять меня в штат.

Так началась моя работа в команде антивируса под андройд :) тут особый привет @e_matsyuk - Женя стал моим первым тимлидом и прокачал мноооого скиллов. В том числе Женя стал моим проводником в мир выступлений на конференциях.

Проработав в Kaspersky чуть больше 2 лет, понял что хочу двигаться дальше, но того, что будет интересно самому мне. Поэтому проходил не так много собеседований, но только в те места, где действительно хотел бы работать. Получив несколько оферов - решил пойти в @RevolutApp

Кстати я вот слабенький в твиттер @v1sarRU, но у меня есть коллеги, которых я бывает читаю. Советую взглянуть :) @hungry_moose - мой коллега, человек про которого с уверенностью скажу, что знакомы не так давно - а впечатление будто знакомы уже кучу лет. Вместе ушли из Kaspersky

В общем так уж получилось что сегодня у нас день привыкания друг к другу😅 Пока хочу понять следующее: как часто стоит писать сюда в какое время тут основной прайм-тайм, когда люди готовы читать/писать сюда что-либо Буду благодарен ответам в комменты🤨 Не стесняйтесь🤪

Еще судя по всему я не очень вписываюсь в мир твиттера со своими длинными тредами 😆 Но видимо краткость не мое, что думаете? :)

В опросе по темам для обсуждения хуже всего пока двигается тема про выступления. Я вот, например, полюбил выступать, но понял, что для многих личные выступления - лишний стресс и их дергать на этот счет не нужно.Или же возможно просто другие темы более интересны 🧐
notion image

Тогда небольшой опрос, чтобы понять как вы относитесь к тому, чтобы выступать лично. Разница между 2ым и 4м вариантом в том, что во втором вы принципиально отказываетесь от выступлений, тогда как в 4ом изредка можете выступить при необходимости

Ну что ж, в утреннем опросе лидирует тема карьеры разработчика. Давайте попробуем начать завтра с нее. Предлагаю создавать опросы по теме, а затем я буду говорить свое мнение по тому или иному вопросу. 😉 И совсем не прочь услышать ваше мнение. 👍

Сейчас мой опыт разработки чуть больше 3 лет. (кстати, @int02h - человек, который меня познакомил с Android). Расскажу возможный путь от стажера до Senior, а дальше поразмышляем куда двигаться :) Выберем с вами оптимальный путь и обсудим идеального работодателя. Stay tuned😉

Вторник


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

Как начинать? 3ий вариант - для тех кто считает, что стажерская программа круче, но в силу возраста (а во многих стажерских программах это ограничение) их не возьмут

Short reminder. для тех кто не в курсе что такое стажерские программы: на них обычно берут тех, кто еще учится в ВУЗе и лояльно (обычно) относятся к гибкому графику и part-time 20-35 часов в неделю. Однако какие минусы - ниже ЗП и потенциальное отсутствие каких-либо плюшек (дмс)

Еще обычно менее требовательны к знаниям (правда работает это только на бумажке). Само собой от компании к компании эти программы могут отличаться, но основной посыл я постарался передать. Более детально распишу когда буду писать здесь о своем опыте.

Ну и само собой картинка "в тему" начала пути во многих профессиях 😅
notion image

И давай параллельно обсудим какие скиллы важны на каждой позиции. Начнем с хард скиллов Junior: (вопрос про алгоритмы немного провокационный, но интересно что выйдет😏)

И про софт скиллы Junior. Сейчас будет небольшая копипаста: Социальные: ✔ Коммуникабельность ✔ Грамотная письменная и устная речь ✔ Умение выступать на публике ✔ Эмоциональный интеллект (умение распознавать эмоции и мотивы других людей) ✔ Гибкость и принятие критики

Интеллектуальные: ✔ Аналитический склад ума ✔ Умение видеть и решать проблему ✔ Хорошая память ✔ Обучаемость ✔ Креативность Волевые: ✔ Ориентированность на результат ✔ Управление временем ✔ Упорство ✔ Стрессоустойчивость ✔ Готовность выполнять рутинную работу

Лидерские: ✔ Умение принимать решения ✔ Ответственность ✔ Умение сформировать команду ✔ Наставничество ✔ Умение разрешать конфликты

@mobileunderhood Минутка нативной рекламы @apps_cast m.soundcloud.com/appscast/episo…
Вот коллега поделился записью подкаста, на схожую тему с сегодняшней twitter.com/int02h/status/…

Собственно к моим мыслям. Я тот человек, который старался найти место в стажерских программах. Из минусов такого сразу отмечу низкий уровень ЗП (в среднем в 1,5-2 раза ниже, чем у junior 😕) и в крупных компаниях ОЧЕНЬ задранная планка требований к стажерам.

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

Кстати, раз уж пошло про ЗП. Назрел интересный холиварный опрос, который, как мне кажется, очень сильно может влиять на скорость вашего собственного развития в плане доходов. Знаете ли вы ЗП своих коллег с одной работы?

Также к минусам - договор со стажером обычно заключают на особых условиях, например на год. Если в конце года вы кого-то не устроили - вам вполне могут сказать, что договор истек - продлевать не будем.⌚️

Но без плюсов не обойтись - стажерские программы по сути единственный способ работать НЕ 40 часов в неделю, а в некоторых ВУЗах (например в моем) расписание делают таким образом, что это просто физически невозможно.🙄

Резюмируя: несмотря на то, что многие бы хотели быть стажерами (судя по тому же опросу) - для себя вижу огромное количество плюсов в том, чтобы стараться идти на позицию Junior изначально, если есть возможность работать 40ч в неделю. Знания на эту позицию требуются одинаковые🤔

По мидлу заводим также два опроса по скиллам. Хард скиллы уровня Middle:

И про софт скиллы Junior. Сейчас будет небольшая копипаста: Социальные: ✔ Коммуникабельность ✔ Грамотная письменная и устная речь ✔ Умение выступать на публике ✔ Эмоциональный интеллект (умение распознавать эмоции и мотивы других людей) ✔ Гибкость и принятие критики
Софт скиллы Middle: (за расшифровкой идти сюда twitter.com/mobileunderhoo…)

Хорошая картинка, характеризующая то, как на нас давит синдром "самозванца". Думаю многие в ней разглядели себя, по крайней мере я уж точно себя увидел🤪 Красная линия - сколько вы думаете, что знаете Зеленая - ваши реальные знания
notion image

Эх, а голосование-то не прикрепилось :)) Итак, еще раз: софт скиллы Middle

Вдобавок весьма важный опрос, сколько времени должно потребоваться Junior/стажер разработчику (а я лично не вижу между ними сильной разницы) чтобы стать мидлом?🤔

А в параллели давайте подумаем куда начинающему (junior) разработчику стоит идти:

И посмотрим наглядно на разницу между стартапом и продуктовой компанией 😂 (шутка 😏(или нет 🙄))
notion image

Отвлеченный опрос по теме Как вы ищите работу?

Настало время Senior 😉 Хард скиллы

Софт скиллы Senior

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

Какой уровень знания алгоритмов должен быть у разработчика?

Кстати если не слышали про книгу Crack the interview - крайне рекомендую, собраны очень интересные и популярные задачи на алгоритмы 😉

Среда


Забавно что судя по всему, Senior уже по сути и есть TeamLead, т.к. судя по опросу он обладает всем тем, что присуще именно TeamLead'у 🧐

Всем привет! Давайте сегодня попробуем поговорить про идеального работодателя😉 Начнем с небольших опросов. Как долго вы добираетесь на работу в одну сторону?

Разрешается ли удаленная работа в вашей компании?

Отличная GIF`ка, символизирующая потенциальные проблемы работы из дома 🤪
notion image

@mobileunderhood 6 минут
Выражение большинства читателей сейчас 😅 twitter.com/feduza/status/…
notion image

Не ожидал что будет столько людей, котором нужен вариант <10 минут до работы 😅 Завидую вам ребята :)) Когда я работал в касперском - добирался 1,5 часа в одну сторону, к удаленной работе очень плохо относились - это был ад короче 😆

Сейчас ситуация получше - выходит 50 минут в одну сторону, правда офис переедет скоро и станет ±1 час, но это все намного лучше)))

Ребята, подскажите пожалуйста, появилась идея провести тут небольшой розыгрыш - подробности уже прям скоро-скоро. А пока вопрос - я с твиттером как вы поняли не бум-бум 🤪 - как тут "честнее" всего провести розыгрыш? Чтобы никто не возмущался результатами 🤔

@mobileunderhood нафиг так жить? Работа из дома или из любой другой точки на земле рулит по сотне причин.
Главное чтоб не как на этой картинке 🤪 twitter.com/vvsevolodovich…
notion image

А вообще давайте немного по удаленке пройдемся Хотели бы работать удаленно?

Удаленка из дома или путешествуем по миру? 3ий вариант весьма популярный - это типо уехать куда-то, чтоб накопить побольше денег, т.к. сам факт нахождения там - дешевле. 4ый вариант кто не любит удаленку :))

А в параллель офисные сотрудники (типо меня, гг) похвастаются плюшками в своих офисах. Тут простенький опрос, есть ли плюшки у вас в офисе

Про плюшки работы в революте: компенсация ужинов 500 рублей, заказывать можно к 18:00 (корпоративная яндекс.еда) кухня с хорошей кофемашиной, фруктами, орехами, кашами, разной водой пс4 с играми - в нее реально часто играем (@hungry_moose 🤪)

компенсация такси до дома после 22:00 каждый 3ий четверг - тематическая вечеринка с кучей еды и напитками =) английский язык 50% оплачивают командировки в другие офисы RnD и много чего еще =) А что есть у вас???

@mobileunderhood Моя удаленка выглядит так(не прямо сейчас): https://t.co/MxlLLw8kxS
notion image

Сможет ли самый обычный среднестатистический офисный разработчик перейти на удаленку? Вопрос про самодисциплину к тем кто перешел на удаленку :)

Хех, ну что, разыгрывать будем такие 3 рюкзака, внутри будут плюшки, покруче чем сам рюкзак 😆 Условия сейчас придумаю и разыграем в воскресенье =) В случае победы людей из других далеких стран.... доставим😉
notion image

Ваше отношение к опенспейсу

Разыгрываем 3 рюкзака от компании Revolut (внутри топовый мерч). Доставим в любую точку солнечной системы.😅 Условия: Ретвит этого поста В комментариях к посту пишем что лучше iOS или Android и почему🤪 В воскресенье проведу в режиме онлайн рандомайзер. Удачи😉
notion image

@mobileunderhood Мне как раз рюкзак надо на каждый день, обеды таскать на работу. Кстати, уже спрашивали, кто где ест? А то про транспорт и тд уже было
Хорошая идея ;) twitter.com/pingwinator/st…

кто как предпочитает питаться? =) последний пункт для тех, кто покупает какие-либо комплексы на несколько недель вперед (сейчас это стало супер популярно)

@mobileunderhood что лучше iOS или Android и почему🤪
не ну не настолько буквально 🤣 twitter.com/BZM97/status/1…

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

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

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

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

Наоборот, у вас каждый день рабочий, а если рядом с вами пляж, то в каких-то случаях это даже демотивирует. Плюс еда бывает "какая-то не такая" и вот это вот все.

Лично для меня удаленка выглядит как "хороший вариант ненадолго съездить в другую страну и получать за это деньги, при этом в свободное время у меня будет возможность эту страну изучать", но понимая проблемы: поиск жилья, наличие интернета и тд - отбивают желание делать это

Ну и конечно же наличие семьи существенно усложняет все эти процессы. Вспомнил подкаст с @colriot по этой теме, советую послушать про курьезы, которые случаются в поездках 😉 apptractor.ru/info/media/pod… А вы что думаете насчет удаленки?

Вчера в опросе возникло много вопросов, один из них был что-то вроде "а разве не может джун переходить в мидла больше 1,5 лет" На мой взгляд идеальное время "перехода" в мидлы это полгода-год.

В крупных компаниях конечно уже устоявшиеся правила перевода, например только в определенный месяц в году. Поэтому вполне может быть что уже давно "не джун", но по факту сидишь ждешь своего повышения.

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

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

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

Но вполне возможно что применит ее не самым оптимальным способом. Тут-то наверное и есть ключевая разница мидл-сениор. Сениор уже должен (читай обязан) знать тонкости той или иной технологии (но допустимо, что какие-то технологии Senior не знает).

А задачи по фичам для Senior уже можно сократить до банальных описаний - такой разработчик уже наверняка сам сможет выбрать необходимую технологию, если на нее нет запрета или личной неприязни других членов команды :)

Для тех кто соскучился по техническим темам: давайте завтра пообщаемся по поводу UI тестов под андройд и как там дела обстоят. Расскажу про свой опыт и инструменты🙂

Четверг


@mobileunderhood Беляя, это же рекурсивная постирония. Из-за эффекта Даннинга — Крюгера ты думаешь, что разглядел себя на правильном левеле в этой картинке и думаешь, что зааффекчен синдромом "самозванца", хотя на самом деле ты изначально неправильно определил свой уровень!
Сразу видно у кого настолько много модулей в проекте, что можно весь курс психологии поднять пока соберется. Теперь я знаю еще одну причину, зачем нужно двигаться в многомодульность. Спасибо! twitter.com/artem_zin/stat…

Сегодня про автотесты :)

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

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

Очень часто эти use case вообще не совпадают с тем, что мы изначально ожидали, тут на помощь придет аналитика и тд, чтобы понять "а как все-таки пользуются моим приложением"? На гифке человек в оранжевом - разработчик, остальные - простые пользователи😅
notion image

Вот тогда, когда мы поняли что в нашем приложении пользуется популярностью - нужно начинать писать автотесты. И также отмечу концептуально важный момент - автотесты это про проверку use case. Если в конкретном примере вам нужно дойти до какого-то экрана и проверить его состояние

То это значит что не нужно проверить отступы у всех вьюшек по пути к этому экрану, не нужно проверять что на текст стили применились корректные. Конечно же, если это важный use case вашего приложения - обязательно проверяйте. Но если это второстепенно - не тратьте на это время

Когда на предыдущем месте работы зарождалась мысль автотестов, мы прям с самого начала с @e_matsyuk начали строить подводную лодку (так очень любил выражаться Head of Mobile на той работе). Т.е. пытались учесть вообще все моменты, которые только могут быть.

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

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

Автотесты оказались настолько нетривиальной штукой, что когда у нас еще не был закончен фреймворк (Kaspresso) мы уже стали выступать с @e_matsyuk на конференциях и попадать в ТОП, потому что люди понимали, сколько сил уже было потрачено. Наше выступление: youtube.com/watch?v=q_8UUh…

Дальше на своем примере я честно признаюсь - наступило выгорание, в это дело было убито невероятное количество времени, результат уже был виден и ясен, оставались по сути только бюрократические процессы как это все заопенсорсить. Не дождавшись этого - я решил покинуть Касперский

Это конечно уводит сейчас в сторону направление этого треда😅, поэтому здесь стоит отметить, что спустя 3,5 месяца Kaspresso все-таки зарелизился. habr.com/ru/company/kas… Релиз этого фреймворка безумно прокачал другие инструменты: Kakao и Marathon. Но о них сегодня попозже.

Подводя подитог - начинайте постепенно, понимание того, как писать простые e2e тесты у нас было буквально спустя пару недель после начала изучения темы. Но в погоне за решением всех потенциальных проблем, внедрение автотестов оказалось супер затратным и высосало кучу сил у меня

P.S.: огромный еще привет и спасибо Диме Воронину (к сожалению не нашел его twitter, если он есть вообще), он нас окунул по полной в это все дело и сэкономил кучу времени. Которого и так было потрачено ого-го.

P.S.S.: Твиттер Димы нашелся 😉 @DmitriVoronin

К слову про автотесты, в эту субботу выступаю в Авито как раз с этой тематикой - приглашаю, если интересно послушать про это вот все. Также можно задать любые вопросы после доклада habr.com/ru/company/avi…

@mobileunderhood Хех) Честно говоря, ещё много чего доделывалось и прикручивалось после тебя, Дим. Технические вопросы ни разу не закончились. Но их поток хотя бы стал прогнозируемым и контролируемым, уже не накрывает так, как было в начале.
Это нормальный процесс, что даже когда проект уже публичный - в нем что-то докручивается и доделывается :) Конкретно в тот момент проект был готов к опенсорсу и вполне мог получать необходимые обновления уже в открытом репозитории :) twitter.com/e_matsyuk/stat…

Пробежимся по инструментам. У нас (Android разработчиков) есть возможность пользоваться такой крутой штукой, как Espresso. Это наш нативный фреймворк, с которым вообще нет никаких проблем (лол).

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

Тут я сейчас привел пример того, что делает UiAutomator - через этот инструмент работают все кроссплатформенные решения, например Appium. Это решение очень ненадежное. Если сравнивать с миром разработки на Java - это почти то же самое, что писать код на рефлексии
notion image

На схеме видно, что ваше приложение стоит вообще отдельно, а взаимодействие идет вообще с некими bootstrap`ами на вашем телефоне. Отсюда нестабильность и отсутствие крутого функционала, в стиле "дернуть какой-то метод вашего приложения и тд". Хотя это можно сделать костылями :D

Далее, если возвращаемся к Espresso, то схема резко меняется - вместе с вашим приложением еще устанавливается приложение с вашими тестами, которое начинает общаться с вашим. Тут уже и код можно дернуть и зависимость какую-то подменить, в общем куча всего.
notion image

Одной из первый проблем с которой я столкнулся - невозможность работать напрямую из тестов с adb. А штука-то полезная - можно и геолокацию на эмуляторе подменить, и файл какой-то подкинуть во время теста (а в случае с тестированием антивируса, на котором это все происходило

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

Сейчас его уже можно потрогать github.com/KasperskyLab/A… Начал с прикладного получается :)) Давайте коротко по самим тестам - в мире вэба уже давно пользуются page object подходом, это когда вы создаете отдельный объект в котором храните ссылки на конкретные view (например)

На самом деле один вопрос того, что может хранить в себе page object - супер холиварный, но отнеситесь так, что там могут быть какие-то ссылки на view, assert для этих view ну и вполне могут быть какие-то базовые действия с конкретным экраном

Слава богу этот подход перекочевал и на мир мобильного тестирования - поэтому здесь все стали использовать также page object. Одна из первых статей которых я прочитал про это была habr.com/post/416397/ Но там речь про свою реализацию, да еще и uiautomator

А мы-то ребята умные и знаем что пользоваться надо в основном espresso ;) городить свои велосипеды не стоит - воспользуйтесь Kakao (про него целая статья есть на хабре) habr.com/post/339664/ Этот инструмент за последние пару месяцев безумно прокачался и научился делать

некоторые вещи, которых при создании Kaspresso еще не было ни у кого. Ни у кого, кроме Avito github.com/avito-tech/and… некоторые идеи Kaspresso во многом позаимствовал по началу оттуда. Но строчки: Should I use it? Not now. Work in progress. пугают до сих пор :)

В тот момент когда вам покажется что функционала Kakao мало (а поверьте, сейчас он стал просто на стеройдах) - стоит присмотреться к Kaspresso. Там вам и логирование внятное и поддержка Allure. Еще кстати есть библиотека Barista - советую взглянуть, мб вам там что-то приглянется

Ок, тесты написали, а что дальше-то? А дальше начинается не менее веселая вещь под названием запуск тестов. Тут как и во всем остальном - полная неразбериха. По сути все существующие сегодня решения используют AndroidJUnitRunner, который в свою очередь супер неповоротливая вещь

Однако со своей задачей он справляется - тесты запускает :)) Но дальше нужно было придумать какие-то инструменты, которые помогут делать этот запуск не таким больным для 5ой точки - так появились инструменты Spoon, а затем спустя время Composer.

За Spoon взялись ребята из square и решению пророчилось отличное будущее github.com/square/spoon однако топ контрибьютер решил покинуть компанию (на секунду - речь про @JakeWharton) и видимо продукт было суждено умереть.

Сразу видно у кого настолько много модулей в проекте, что можно весь курс психологии поднять пока соберется. Теперь я знаю еще одну причину, зачем нужно двигаться в многомодульность. Спасибо! twitter.com/artem_zin/stat…
Composer же по своей сути был новым дыханием, во главе с Артемом (который как оказалось еще неплох в психологию twitter.com/mobileunderhoo…), однако и тут можно увидеть, что какая-либо активность спала на нет github.com/gojuno/composer Возможно все потому что на сцене появился Marathon

Marathon же невероятно монструозная махина, которая может помимо Android тестов запускать еще и iOS, warning - порог входа тут отличается от предыдущих, но не так уж и на много :) github.com/Malinskiy/mara… Тут уже и умный перезапуск тестов и максимально содержательный отчет

Вот как-то так прошлись по инструментам для создания и запуска тестов. Получается сильно сумбурно из-за ограничений твиттера, но если есть вопросы - задавайте, обязательно отвечу. 😉

Разыгрываем 3 рюкзака от компании Revolut (внутри топовый мерч). Доставим в любую точку солнечной системы.😅 Условия: Ретвит этого поста В комментариях к посту пишем что лучше iOS или Android и почему🤪 В воскресенье проведу в режиме онлайн рандомайзер. Удачи😉 https://t.co/qmWLxHFhJs
Тем временем продолжается розыгрыш тут twitter.com/mobileunderhoo… Для тех кто хочет "поржать" - заходите в комментарии и читайте про то, что лучше iOS или Android. Некоторые вкинули годные шутки :) Автотесты не очень зашли сегодня как-то :( Завтра попробуем затронуть саморазвитие.

На субботу-воскресенье наверное оставим совсем что-то лайтовое. Точно хочу поделиться тем, что испытываешь, когда впервые дают "порулить" вот таким твиттер аккаунтом. Может только меня так гложит это, но чувствуется прилив ответственности и прочее... об этом и поговорим😉

Пятница


@mobileunderhood Так, а про флаттер когда?
Оставим этот вопрос кроссплатформенным разработчикам 😅 twitter.com/saturovv/statu…

Про саморазвитие длиннопост

Буду говорить за свой опыт, а в нем в принципе найдется что рассказать. Как многие знают из первого дня знакомства - я учился в МГТУ им Баумана, для многих это название означало "лучшую техническую кузню", для меня же по прошествию лет это ничего не означает

Единственная разница с другими вузами пожалуй лишь в том, что если уровень вуза СИЛЬНО ниже - то процент каких-то "потерянных" людей, которые выпускаются из него - выше. Но абсолютно не значит, что условный Вася из слабого универа не может в программирование - еще как может

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

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

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

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

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

Очень часто любят говорить: посмотри каким "образованным" ты стал, все благодаря ВУЗу и тд. Но я почему-то вспоминаю школьные года - я как был там хорошистом-олимпиадником, так я и продолжил по своей жизни. А вот те, кто были в школе раздолбаями - они и после вуза остались ими

Поэтому ВУЗ - абсолютно не показатель. Мб меня так задела эта тема, что я столь болезненно об этом высказался, но это в свою очередь была подводка к тому, что не ВУЗ определяет способности человека, а то, как этот человек стремится к получению знаний.

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

@mobileunderhood ВУЗ больше необходим для налаживания новых знакомств, нахождения единомышленников. Вот и шанс найти таковых в «сильном» ВУЗе выше. Когда все вокруг занимаются деградиродацией и саморазрушением, тяжело заставить себя к занятию полезными вещами.
Со всего вуза (а он у меня был не маленький :)) я общаюсь только с 2 людьми постоянно. Кстати по поводу единомышленников это вообще беда - у нас бОльшая часть когда выпускались (да еще даже когда учились) уже во всю горланили, что IT это не для них и они не пойдут работать в IT. twitter.com/ptievgaleks/st…

Т.к. задели образование, то стоит также обсудить важный на сегодня момент - нужно ли высшее образование разработчикам? Особенно магистратура.

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

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

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

Мое мнение - наличие высшего образования нужно, но сам ВУЗ стоит выбирать очень тщательно: либо искать где свежая программа (я знаю, что в ВШЭ сейчас так), либо искать ВУЗы, где не очень большая загрузка и желательно только основными предметами. В Бауманке это была кафедра ИУ5

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

@mobileunderhood Пролог как раз и тренирует мышление, как и мехмат, ведь это совершенно непривычная парадигма программирования, к которой мозг должен приспособиться, нет ли здесь противоречия?
На мой взгляд нет. Как я рассуждаю - математика и все что с ней связано - это вещи, с которыми мы сталкиваемся чуть ли не каждый день. А вот особая парадигма, которой нигде в другом месте очень спорно. Само собой любые знания полезны в каком-то плане. twitter.com/va3ilek/status…

Но делать тот же пролог обязательным, мне кажется не самое правильное решение

Итак, первый вариант для самообразования это книги. Что читать, как это выбрать и тд - тут я пользовался порталами вроде habr, очень часто там можно встретить подборки лучших книг по той или иной теме. Так, например, для Java вы всегда увидите в рекомендациях Effective Java

Thinking in Java и тд Сразу обозначьте для себя какой у вас уровень владения языком/технологией и после этого выбирайте то, что вам подходит больше всего. Только начинаете изучать - стоит воспользоваться книгой, которая погрузит вас в базу, на примере выше - это thinking in java

Там в деталях разбирают, как устроен язык Java, его базовые конструкции, контракты, принципы работы и тд. Если вы уже немного продвинулись в изучении - стоит перейти к effective java (здесь уже больше практических вещей, примеры конкретных кейсов и тд).

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

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

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

Однако прочитать книгу про RxJava1, в то время, когда все используют RxJava2 (а еще есть слухи о RxJava3) вполне разумно, потому что изменения API не столь категоричны. С книгами есть серьезный минус - тоскать огромные тома с собой везде тяжело, решается путем электронных версий

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

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

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

Я, как уже говорил - в твиттер не очень и уж тем более в конкурсы, пошарил возможные API, что-то с ходу не нашел легкого способа достать всех ретвитнувших. Мб кто-то подскажет легкий способ? Copy-paste не предлагать😅

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

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

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

Коненчо злоупотреблять этим не стоит :) но учтите - вещь мощная. Так вот, дальше прозвучит очень спорное утверждение, но среди русских школ/курсов я чаще получал больше от БЕСПЛАТНЫХ нежели ПЛАТНЫХ занятий. Дело тут вовсе не в том, что деньги жалко, вовсе нет.

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

Йонатан @parahall , создатель андройд академии - сделал ее бесплатной. Затем @hungry_moose и еще ребята уже перенесли это сюда в Москву. И знаете какой фидбек был от студентов? Все студенты, которые когда-либо проходили обучение на платных курсах говорили что мы даем знания лучше

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

Какие курсы были у меня в жизни? В первую очередь хочу вспомнить технопарк park.mail.ru - там есть несколько программ, например я там учил администрирование Linux полгода, и в параллели ушел на их основную программу Системного архитектора

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

Отдав за это относительно небольшие деньги (в виде зарплат учителям и организации всего этого) :) но никто никого не принуждает - не хотите идти в @, не идете - я тому пример. (но правда я-то хотел, меня не взяли :D ).

Преувеличить "крутость" этих курсов тяжело - потому что это просто прорыв. Вы учите никому не нужные технологии в ВУЗе, а затем в этом же ВУЗе идете в отдельные кабинеты и получаете самые свежие знания из мира разработки/проектирования систем.

Это есть не только в бауманке - также в ряде другие "крутых" вузов (носит другое название везде, например в МГУ - сфера). Если такой есть в вашем - я крайне рекомендую туда пойти. Для тех же, кто не имеет доступа к этим курсам - не расстраивайтесь

Кстати важный момент сколько у меня все это дело занимало - на 4ом курсе я тратил примерно 10ч в неделю на учебу в ВУЗе, 20ч на работу, 30ч на технопарк. Будьте готовы к таким же нагрузкам, если собираетесь погрузиться в это все :)

Также хочу отметить способность учить технологии через обычные сайты. Какой Android разработчик не знает про startandroid.ru? Однако прошу быть аккуратными касательно платных статей на подобных сайтах, если например на startandroid я покупал курсы и они были неплохими

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

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

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

P.S.: пока писал, вспомнил что у Я есть ШАД - и я уверен, что у людей оттуда будет супер положительный фидбек. (просто чтоб не казалось, что я тут топлю за свои курсы 😅, но как я уже писал - их тяжело переоценить)

Суббота


Сегодня выступаю в Avito. Чуть позже включусь в общение тут :)
notion image

Так ну что, представим - вы просыпаетесь в какой-то момент и понимаете - что сегодня понедельник, а вас попросили повести твиттер аккаунт с 2,5 подписчиками. У вас нет никакого опыта ведения блогов, вы далеки от этого мира.

Вы только знаете что нужно поприветствовать всех и поставить свою аватарку :) А что дальше? Писать о своем опыте? Что именно? Да фиг его знает. Среди подписчиков этого аккаунта есть куча талантливых людей, многих знаю лично и уверен что их опыт в том или ином - больше.

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

То, что вы рассказываете/пишите - для кого-то станет откровением, потому что он впервые услышит эту тему, впервые придет на какой-то митап, впервые подпишется на какой-то твиттер аккаунт :) Не бойтесь повторяться. Не бойтесь писать о том, что для вас уже давно не новость :)

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

За свои выступления я получал множество фидбеков - и главная проблема, если вы начинаете пропускать мимо себя "положительные" комментарии и начинаете воспринимать всерьез только плохие - это путь в никуда. Примите плохие комментарии как должное и просто двигайтесь дальше :)

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

На примере этого твиттера я получил много фидбека, что перебор с количеством опросов и эмодзи. Вы могли заметить, что за последние дни этого стало меньше :) Автор также развивается и учится у вас - читателей.

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

Воскресенье


Для тех кто хочет повести этот твиттер аккаунт - пишите Егору в личку в телеграмме @etolstoy

Разыгрываем 3 рюкзака от компании Revolut (внутри топовый мерч). Доставим в любую точку солнечной системы.😅 Условия: Ретвит этого поста В комментариях к посту пишем что лучше iOS или Android и почему🤪 В воскресенье проведу в режиме онлайн рандомайзер. Удачи😉 https://t.co/qmWLxHFhJs
Ну и последний раз напоминаю про конкурс twitter.com/mobileunderhoo… постараюсь вечером завтра запустить какой-нибудь стрим онлайн, разыграть это все дело, пока правда не знаю как адекватно достать всех ретвитнувших😅

Ребята, все помню, были сложности с ретвитами, лол :D трансляция будет тут в 20:10 примерно youtu.be/DJ3BQEezQ50 запись останется по этой же ссылке 😉

Победителей выбрал суровый рандом :) по ссылке запись Победители: twitter.com/iamnotjustice twitter.com/steelahh twitter.com/oovechkin Свяжитесь со мной через телеграм - @v1sar или в твиттере @v1sarRU !С завтрашнего дня я не имею доступа к этому аккаунту!

В общем подошла моя неделя к концу, жалко что не успел пообщаться на многие темы, виноват сам - т.к. толком не готовился ко всему и не думал наперед. Но в целом я надеюсь вы простите за это :) не каждый день тебе дают возможность повести аккаунт с 2,5к подписчиков

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

Friendly reminder: продумайте как вы будете проводить его заранее, либо спишитесь со мной - я расскажу как это можно "не очень больно" провести в твиттере. Как оказалось у них весьма интересный API, который вас свяжет по рукам-ногам, если не быть готовыми :))

Жалко что не успел толком поговорить про выступления - это тоже жаркая тема для обсуждения. Несмотря на то, что мое первое выступление состоялось буквально в сентябре 2018го года, к сегодняшнему дню у меня их уже несколько десятков, это необычное ощущение

В том числе на крупных конференциях, в том числе в разных городах: Москва, Санкт-Петербург, Минск, Новосибирск :) выступления - ваш ключ к разнообразию, во многом я "подсел" на них из-за того, что они заставляют вас не впадать в день сурка и постоянно видеть что-то новое

когда готовишь новый доклад - сам учишься ОЧЕНЬ многому, поверьте, это факт. Поэтому один из вариантов как выучить что-то новое - приготовить по этому доклад ;) Раньше я считал что разработчики это те самые бородатые дяди, которые сидят перед компьютером и клацают по клавиатуре

За последний год я побывал в Санкт-Петербурге, в Минске, в Новосибирске, в Лиссабоне, в Баварии. До конца года уже запланировано: еще раз Санкт-Петербург, Лондон, Берлин. Если бы мне раньше кто-то сказал, что имея работу разработчика можно так путешествовать - я бы не поверил

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

Это лишь слова в подтверждение того, что быть разработчиком откровенно говоря круто. Правда видимо в силу возраста (не кекайте :D) или еще чего-то - сейчас стал больше ориентироваться на какие-то семейные ценности, стараться больше проводить времени с близкими.

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

Если у вас есть желание продолжить со мной общение я доступен в телеграмме - @v1sar, в твиттере @v1sarRU, в инстаграмме v1sar_russia Большое спасибо всем, кто читал посты на этой неделе. Хорошей продуктивной недели вам😉
notion image

А пока я еще тут, под этим постом можно накидать годной музыки или фильмов 🤪

Я вот вообще всеядный в этом плане, в последнее время очень сильно подсел на NF, даже не ожидал что так зацепит. Послушайте, например, NF - Real

Когда-то был большим фанатом Linkin Park, но по известным причинам попасть на их концерты теперь не очень получится. Зато побывал на Rammstein в этом году - это было крутое зрелище

Понедельник


А у нас любимая всеми минутка рекламы. До AppsConf в Питере остается всего три недели. Мы уже во всю планируем веселый движ, доклады проходят последние прогоны, а спикеры собирают чемоданы! Промокод на скидон: mobileunderhood_saintac. appsconf.ru/spb/2019

Ссылки