Роман Александров

Роман Александров

Неделя
Mar 15, 2021 → Mar 20, 2021
Темы

Архив недели

Понедельник


Всем привет! Меня зовут Александров Роман, я работаю в компании Лига Цифровой Экономики, на данный момент участвую в развитии приложения МВидео.

Автора предыдущей недели зацепило «ковровой» блокировкой от РКН, а с сегодняшнего дня и до конца недели с вами я. План такой: UI Про развитие Про собеседования Пет проектинг Мотивация Как развлекаться мобильному разработчику Свободные темы

На самом деле это всё очень нестрого, и если наше общение уйдёт в другую степь, то так тому и быть!

И еще один дисклеймер: Если вы хотите сказать, что я не прав, то говорите! Если хотите сказать, что я прав - говорите! Если хотите просто что-то сказать - КРИЧИТЕ! Мы здесь за общением!

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

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

Немного раскрою в чём проблема: Часто начинающие разработчики сталкиваются с бременем сторибордов, и им никто особо не рассказывает в чём там проблема.

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

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

Также тут хочется отметить еще разочек, что это касается iOS, так как я из этих краёв все такие. Андройдо-братцы и сестры, простите!

Окей, давайте рассмотрим все (ну или для самых дотошных: основные) варианты: Storybord’ы - для любителей командой игры, подвигали вьюшки вместе, разгребли вместе merge-конфликты

Xib - для любителей секретничать. Накидал в ксибину всякого, на code-review даже никто не заметит, что ты там намалевал. Таска готова!

Frames - для тех, кто считает себя богом перформанса и любит смотреть на себя в зеркало приговаривая: «Ух как я хорош, как быстры мои UIScrollView’шки»

Autolayout (в коде) - для тех кто слишком ленив и считает, что считать фреймы напрямую - это не для малярных дел мастеров

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

Первый вопрос: Что нужно использовать для имплементации UI?

Второй вопрос: Что нужно использовать из нативного (родного):

Третий вопрос: что используем из стороннего? (тут я немного вариантов знаю)

Вспомнил еще вариант: PureLayout - накидывайте голоса за него в лайки сюда!

@mobileunderhood Опрос уровня: на какой машине надо ездить и 3 варианта ответа: джип, седан, минивэн :)
Новый опрос для тех кому вообще не упёрлось вот это вот всё! twitter.com/andrey_oshev/s…

Забыл добавить: кто отметит - написал своё, много звёзд, то придётся делиться ссылкой на гит!

Еще один опрос вдогонку: Должен ли быть UI имплементирован единообразно?

Все сторонние лимбы я бы разделил на две категории: Новый подход Сахарная обёрточка

либы* Новый подход: Это что-то вроде FlexLayout, SnapKit и прочие истории. Это значит что нужно играть по правилам этой библиотеки и только по ним.

Сахарная обёртка. Чисто упрощение синтаксиса. Самая опасная тема, т к иногда под кокосовой посылкой скрывается художественная самодеятельность, которая может закрывать какие-то багули либы, что впоследствии может стрельнуть вам в ногу (или в голову!)

Пока я оформляю покупку ботов для того, чтобы накрутить результаты на опрос хочу сказать следующее: Если вы занимаетесь в той или иной степени обучением людей, то, пожалуйста помогите им понять, что все делают по разному и помогите им понять разницу между подходами!

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

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

Простой ответ: самого разработчика. Формально, да. Но с другой стороны виновата целая тонна ресурсов, которые объясняют как решать конкретную задачу, но не вкладывают идею в головы людей.

Я тут слегка преувеличил, конечно. Есть масса информации, которая отлично раскрывает какую-то тему. Есть масса интересных источников, которые задают фундамент и общее представление. Моё любимое: youtu.be/5e2R7_6kjIA Лучший доклад ЭВЕР!

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

Сабтема первого дня. Дизайн библиотека. Нужна или нет?

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

Есть ли у вас на проекте библиотека компонентов? Дизайн система. Компоненты заведены вместе с компонентами в Figma (к примеру), поведение чётко описано и прочие радости. Компоненты без дизайна. Заводили по своей инициативы для лучшей жизни Не используем вовсе. Зачатки

@Headmast @mobileunderhood Тогда заднеприводная бэха
У кого такая признавайтесь? twitter.com/andrey_oshev/s…

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

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

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

Потом у меня произошло знакомство с PinLayout / FlexLayout. Я вдруг понял, что можно на фреймах верстать удобно и быстро. И начал топить за них

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

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

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

Это всё лирика. На самом деле нужно использовать тот подход, который заходит вашей команде и вашему проекту. Главное, чтобы все понимали как он работает, как корректно имплементировать UI с помощью этого подхода.

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

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

Приятно открыть старые твиты этого аккаунта (которые теперь с моей аватаркой) и почитать, думая, какой я умный бываю!

Вторник


Доброе утро всем! Вчера мы силой демократии решили, что отныне стандарт индустрии верстать UI через NSLayoutConstraints via code! Также мы сошлись на том, что реализация UI должна быть единообразной, и у большинства есть дизайн библиотека / система!

Тема сегодняшнего дня: Развитие. Тоже фундаментальный вопрос, так как от этого зависит положение вещей во всей индустрии, если так подумать.

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

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

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

Но не на всех проектах есть задачи-вызовы. Часто нужно просто сделать рутинные вещи, и тогда развитие полностью отсутствует!

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

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

Можно развиваться двумя путями: Через постоянный кодинг (происходит всегда) Через накапливание знаний с последующим их применением. Ну или просто для того чтобы радоваться от мысли, что ты понял как Apple сделала ту или иную фичу.

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

Более того, я себе сделал приватный канал, куда я скидываю всякие такие штуки. Например нарезка слайдов из презентации Apple с рассказом о том, как происходит рендеринг. Конспекты интересных докладов. Ссылки на интересные ресурсы.

То есть мы примерно понимаем, что кроме написания кода мы как минимум можем шерстить теорию. Мой друг однажды на вопрос чем он занимается пока едет на работу ответил: "Читаю доку Apple'а". Потом я спросил, а что ты дома делаешь? Ответ: "Читаю доку Apple'а"

Конечно, наверняка, он приврал, но подход мне нравится!

В общем я возвращаюсь к своему каналу достаточно часто. После просмотра доклада про UI я действительно раздобыл книгу iOS CoreAnimations Advanced Techniques, прочитал ее несколько раз, и выполнил все упражнения оттуда. Советую!

Да просят меня все. CoreAnimation, конечно без s

Более того. Часто мне сложно въехать во что-то с первого раза и мне приходится читать техническую и научную литературу по несколько раз. так было у меня в школе с физикой. Мне пришлось несколько раз прочесть три томика Ландсберга, чтобы проснулась любовь к физике и её понимание

Вообще нам всем нужно быть как Гермиона Грейнджер. Она перед началом первого учебного года прочитала все книги, которые нужны были на первом курсе! Иногда правда приходится залезать в закрома архивной документации Apple (запретная секция для взрослых)

В продолжение темы я постараюсь организовать СВОЙ топ источников и тем, которые позволят вам прокачаться и развиться в области iOS - разработки!

WWDC 2016. Understanding Swift Performance. developer.apple.com/videos/play/ww… Тут вы сможете понять почему Apple так настоятельно просит использовать структуры. Полезная история на старте!

WWDC 2015 Mysteries of AutoLayout Part 1 & 2 developer.apple.com/videos/play/ww… developer.apple.com/videos/play/ww… Тут показали UIStackView, которая иногда спасает, но иногда может нанести тотальный вред. Тут объясняется что это такое, как это использовать. Рассказываются некоторые тонкости

WWDC 2018 High Performance of Autolayout developer.apple.com/videos/play/ww… Тут Apple была вынуждена рассказать, что происходит внутри AutoLayout и это отлично!

Документация Apple. На самом деле это первое место куда нужно обращаться за инфой. Сто процентов не промахнётесь! Но после общей инфы по теме, нужно почитать и поработать со связанным апи. Например понять что это за свойство: translatesAutoresizingMaskIntoConstraints

видите непонятное свойство... Открыли доку и разобрались! Видите вызов метода, но не понимаете что он делает Открыли доку и разобрались! Ваш тимлид считает вас лузером? Отлично! Открыли доку и разобрались! Я хочу чтобы вы решали проблемы, разбираясь в том что пишите!

Вас постоянно валят на собесах? Отлично! Открыли доку и разобрались!

Блога на медиуме Яндекс.Карт. Держим удар с hit-тест medium.com/yandex-maps-mo… Отличная стартовая площадка для понимая того, как происходит обработка нажатий и прочего! Одна из любимых статей!

Блог на медиуме Яндекс.Карт. UIGestureRecogniser medium.com/yandex-maps-mo… Хорошая статья для того, чтобы разобраться и понимать место жестов и тачек в системе. Их разницу и как извлечь из этого пользу!

Блог на медиуме Яндекс.Карт. Магия Autolayout medium.com/yandex-maps-mo… в этой статье прекрасно всё. Есть интересное исследование, есть детальное раскрытие работы UITableViewAutomanticDimension, есть объяснение как работает AutolayoutEngine! Не статья, а находка!

Блог на медиуме Яндекс.Карт. Каждому View по всплывающему окну. За этим названием скрывается хорошее объяснение responder chain и first responder'ов. После этого вы поймете почему при вводе с клавиатуры текст появляется в текст филде! medium.com/yandex-maps-mo…

Мобиус 2019. Илья Лобанов - Как работает UIScrollView. medium.com/@esskeetit/как… А основа статья на его докладе: youtube.com/watch?v=E7W9nT… Бомба! Хороший разбор работы UIScrollView приправленный кусочком раздела физики - Механики

Курс многопоточности от Avito stepik.org/course/3278/sy… Хорошая тема. Интересные примеры и хорошие задачки! Советую пройти несколько раз!

Повторюсь iOS CoreAnimation Advanced Techniques Придётся читать несколько раз! И писать много кода, но это того стоит! Много полезной информации и много сэмплов кода, чтобы реализовывать анимашки и понимать что UIKit простая обёртка для взаимодействия layer'ов с юзером!

objc Advanced Swift. Горячая штука, аж жжётся! objc.io/books/advanced… Очень интересный раздел про Sequence. Про то, как устроены коллекции в Swift. Каждое слово таит в себе новую информацию для вас. (по крайней мере из этого раздела)

ТОП-1: podlodka.io/ioscrew twitter.com/mobileunderhoo…
На самом деле исходя из того, что я видел, то это без шуток очень крутая тема. Ребята реально сделали хорошо. Полезная информация. Это то, чего не хватало нашей индустрии. В целом хорошо что существует группа энтузиастов, которая организует такие вещи. twitter.com/igrekde/status…

iOS - Community Part1 Статейки, которые могут заставить вас прыгнуть в пучину изучения чего-то нового t.me/iosgr Всем известная подлодка. Огромное количество интересной информации. Гости - 🔥 Ждём @_bravit в очередной раз! podlodka.io

iOS - Community Part 2 Очередная попытка сделать чатик, который обходился бы без токсичности. но люди до сих пор стесняются задавать примитивные вопросы, боясь быть высмеянными ( t.me/iosgt Интересные статьи, интересный опыт от Додо! t.me/dodoMobile

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

Диспатч методов в Swift Рано или поздно с этим придётся разобраться! Можно первую попытку сделать уже сейчас! rightpoint.com/rplabs/switch-…

вдогонку к предыдущему: про диспатч в расширениях lists.swift.org/pipermail/swif…

CoreData На самом деле с CoreData особо не забалуешь поэтому вот этого для входа может и хватить developer.apple.com/videos/play/ww… objc.io/books/core-dat…

Computer Science. Если вы устали валиться на этом, то придётся уже понемного въезжать и разобраться. Ну и научиться решать типовые задачки. Берёте и каждый день решаете по задачке, ну или по паре, ну или не каждый день :) leetcode.com

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

Пет-проектинг Мы про это поговорим в отдельный день, но вы можете начать пилить свои приложухи! Это ведь так круто, сам задизайнил, сам продумал, сам сархитектурил, сам сделал, сам протестил, сам пользуешься!

Переписать экраны с использованием всех видов верстки UI. Вот есть у вас экран на констрейнтах. Возьмите и в качестве тренировки сделайте это на фреймах напрямую! И наоборот! Это для тех, кто не работал плотно с каким-либо подходом

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

Вот что бывает когда в чатике допускаешь ошибки. И это с ним еще не так по жёсткому как иногда бывает!
notion image

Человека вынудили объяснить, что это автозамена и попросить прекратить рофлить на эту тему)

Про TDD Есть разные подходы, но большая часть любит обсуждать TDD. (или я отстал от жизни) podlodka.io/11 хороший выпуск на тему! Также можете взять свой проект и по фалу переписать часть модулей с помощью TDD. Просто чтобы прощупать!

по фану конечно же, не подумайте ничего такого!

ARC Хорошая книжка! Для того, чтобы закрыть вопрос по ARC. Тоже одна из моих любимых! если потребуется перечитывайте до тех пор, пока не отложится! Kazuki Sakamoto pro Multithreading and Memory Management

У нас остался месяц, ребят! Хорошо, что эту неделю мы всё же закончим! tjournal.ru/news/354049-ro…

Небольшой итог. Главное структурировано двигаться в определённом направлении осваивая всё больше разделов iOS-разработки. В принципе можно опираться на то, что скинул я. Конечно, это не панацея. Но можно отследить принцип по которому я собирал эти источники и делать это самому!

Среда


@mobileunderhood А что толку, если на завтра все забылось?)
Поэтому периодически к этому нужно возвращаться, вскоре это более плотно отложится у вас в памяти! twitter.com/algridmd/statu…

День 3. Про собеседования Почему это важно повторять в очередной раз? Потому что именно после собеседования кандидат делает вывод о команде. И наоборот, конечно!

То есть, если вы задали вопрос кандидату, не получили ответ и просто глубоко вздохнув сказали: я понял, то это не очень хорошо. Это очевидно, но проговаривать это полезно!

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

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

Важно отметить, что это моё восприятие этого процесса!

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

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

Очень много людей тратит время на архитектуры. Преимущества недостатки и прочее. Лично я люблю когда отвечают, что всё одно. Это моё личное мнение. Все эти вариации об одном, для того, чтобы приучить людей разделять ответственность и хорошо тестировать!

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

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

Еще нужно всегда кандидатам объяснять почему они ошиблись и ошиблись ли вообще.

Еще всегда у меня звенит звоночек, когда на очередной вопрос нас спрашивают: "Зачем это знать? Где применять?" Можно, конечно, объяснить, но это всегда немного грустно

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

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

Это к вопросу про развитие! Для меня, тим лид (технический) должен быть ориентиром. Как у разработчика может появиться мотивация развиваться, если твой тим лид тоже ничего не знает?

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

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

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

Любите ли вы собеседовать?

Любите ли вы проходить собеседования?

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

Если вы не любите, когда вас надменно спрашивают по подноготной UIKit'а, то это неправильный подход интервьюера. Человек будет боятся сказать лишнего, будет скованным или агрессивным. В итоге смысл такого собеса стремится к нулю.

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

Что делать с кандидатами-хамами?

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

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

Если задаёте сложный вопрос и видите, что кандидат поплыл или явно нервничает, то объясните, что ваша цель разобраться насколько далеко он/она зашёл/зашла в изучении этой темы. Если кандидат не знает ответ, предложите ему предположить, высказать догадку или поразмышлять вслух

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

Мы еще любим спрашивать какую он архитектуру выберет для своего пет-проекта. Все начинают рассказывать: Зависит от масштабов, цели и так далее. Приходится пояснять, что мы хотим услышать сугубо личные предпочтения. Бывает, что после этого кандидат всё равно не даёт ответа!

Также хороший вопрос: чем предпочитаешь заниматься. Логика (сервисный уровень, кор части), UI, CI/CD там может, или автоматизация каких-то рутинных моментов, по типу ботов в слаке для выбора ревьюера.

Совсем скучно когда отвечают: всем. Обычно пытаемся настоять, чтобы выбрали что-то одно, но не всегда выходит. Мне кажется у каждого человек есть перевес куда-то. Или всё одинаково безразлично в чём он признается (жертва профессии)

в чём он не признается, конечно. прошу прощения

Кандидаты: Будьте честны. Готовьтесь. Если что-то не знаете не говорите я не знаю без пояснений. Лучше уж так: "Я не знаю точно, но могу порассуждать или предположить что ..." Тут есть шансы на диалог. А может быть вы дойдете до ответа в процессе рассуждения!

Старайтесь тоже излучать позитив. Всё таки если вы грустный, то это по-любому негативно скажется на восприятии вас другими. Тут сложно что-либо поделать. Либо компенсируйте убер топовыми знаниями, либо станьте веселее!

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

Все интервьюеры разные. Кто-то ждёт от вас того, что вы будете думать о бизнесе и не только о разработке. Я вот хочу, чтобы разработчик думал о разработке. И когда мне рассказывают про то, что он в зависимости от бизнеса сделал либо так либо иначе - мне грустно

Хочется, чтобы разработчик в первую очередь хотел сделать хорошо. Конечно, нужно чтобы и быстро и в сроки и так как бизнес мечтает. Но вы поняли о чём я!)

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

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

И, само собой, не забываем проходить ежегодный опрос! Он уже пятый, а внутри новые вопросы и новые варианты ответов! docs.google.com/forms/d/e/1FAI…

Четверг


День 4. Петоводство! Зачем оно нужно, чем помогает - обсудим сегодня!

Очевидно, начнём с опроса: Есть ли у вас пет-проект (или проект во вне работы)

@mobileunderhood Был 9 лет назад. Как раз сегодня решил обновить древнюю дев учетку разработчика
Советую всем так сделать, у кого запылились учётки! twitter.com/pingwinator/st…

Если у вас есть проект в сторе, то пульте ссылки сюда! Мне интересно поглядеть!

Вот представьте ситуацию: Вы сидите на проекте, делаете приложение, а там либо нету команды дизайнеров, либо дизайн вас не устраивает. Какое решение данной проблемы: реализовать свой потенциал дизайнера самому! Пилить свой проект!

Вторая ситуация. Ваш продакт генерит паршивые идеи. Что делать кроме смены работы? Конечно, реализовывать себя в качестве продакта собственного проекта!

Вы хотите полностью контролировать процесс разработки и делать как сами захотите, но кроме вас на проекте еще пара десятков разработчиков? Делайте пет-проект

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

Также у вас есть вероятность срубить куш, нарубить денег. Мы же хотим кушать!

Для чего вам пет-проектинг:

еще пара вариантов:

На самом деле, мне кажется, нужно пытаться довести свой пет-проект до AppStore. Иначе может остаться осадочек, ведь вы не довели дело до конца!

Также вы получите реальные отзывы юзеров по вашему приложению!

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

Она была в какое-то время убер популярна и вроде как до сих пор! Во вконтакте есть два сообщества в районе 30к и 150к, где они делятся своими результатами и прочими радостями

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

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

Для организации задачек я использовал Trello. Для небольшого количества задачек и простого описания подходит очень хорошо.

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

Также мы решили полностью отказаться от сторонних услуг. То есть всё сделано нашими руками. От иконки, до каждого дизайнерского решения. И это круто!

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

Также сделали крутой ход, который сыграл огромную роль в том, что у нас сейчас почти 1100 оценок в сторе при средней 4,9. После мы предлагали оценить приложение!
notion image


Когда мы заканчивали разработку, то обнаружили, что в AppStore появилось приложение для этой диеты. Мы расстроились, но функционал у него был скудный и оно было некрасивое. (да простит меня автор!)

Мы запустили приложение и оставили его бесплатным на пару дней, попросили одну из групп выложить пост с нашим приложением. (150к группа отказались, даже за деньги)

На рекламу в той группе (чтобы продлить еще на недельку, вроде бы, мы потратили 500р)

Скачивания начались. Потом в один момент мы решили сделать приложение платным. И поставили цену в 75 р. Мы ни на что не рассчитывали, но покупки совершались.

Мы безумно обрадовались, рейтинг приложения-конкурента стал 3.1. Наш только рос. Хоть и приложение конкретно было ценой в 29 р - это не помогало. Он вынужден был понизить до 15, а потом и вовсе сделать бесплатным. Это его не спасало. Во всех этих группах все сарафанили нашу апп

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

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

Приложение-конкурент скопировало полностью наш функционал, но странный UI/UX до сих пор видимо отталкивает людей.

И вот уже полтора года наше приложение в топ 20 платных в российском сторе! Топ позиция - 8 место в топ платных. (не в категории, а во всех платных)

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

Сейчас занимаемся еще одним приложением. Оно гораздо серьёзней, чем предыдущее. Более масштабное и сложное и с точки зрения логики и UI. Но там еще много работы!

Это я вообще к чему? Мы делаем приложения на работе, почему не можем делать их для себя? Разве мы не можем сделать хорошо и красиво? Конечно, можем. Можем постараться и сделать то, что понравится нам. А значит и понравится кому-то еще.

Мы ведь мобильные разработчики! Чтобы приложение появилось в сторе, нужно оплатить аккаунт и написать его! и всё. Поднимать сервера не нужно. Искать фронтендера, чтобы засунуть наши алгоритмы в сайт - не нужно.

Если у вас есть вопросы, но вы вдруг стесняетесь спросить, то смело спрашивайте!

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

Пятница


День 5. Мотивация Сегодня подумаем на тему мотивации. Что для нас комфортная работа, которая мотивирует делать лучше. Что нам нужно для того, чтобы делать хорошо. Какая команда при этом должна быть и отношения внутри неё.

В первую очередь вам необходимо понять что именно вам нужно, чтобы вам комфортно и приятно было работать. Причём не просто работать, а работать с удовольствием и хорошо!

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

Одно из самых важных, на мой взгляд - это атмосфера в команде.

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

Если лид команды без мотивации, то и вся команда с большой вероятностью будет в унынии.

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

Конечно, некоторые люди не любят общаться. Они люди дела, но большинство людей - социальные личности. Им нужно общение, им нужна поддержка может или помощь

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

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

Мотивация в большинстве случаев зависит от атмосферы. Это факт. Возможно, это моё мнение. Но посмотрите на свои команды

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

Вроде очевидные вещи, но почему-то многие на них забивают twitter.com/mobileunderhoo…

На самом деле еще многие думают, что могут спросить что угодно. Но на самом деле они могут спросить что-то вроде: "Кто делал эту фичу", "Кто занимается этим Тикетом?" Я имею ввиду вопросы по типу: Ребят, туплю, помогите понять почему констрейнты ломаются

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

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

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

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

@mobileunderhood Пионер - октябрятам пример! Всегда знал, что айти - это большой детский сад.🐥🐥🐥
В твиттере прикольные цыплята twitter.com/algridmd/statu…

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

Суббота


День 6 Как развлекаться мобильному разработчику. Чисто фановый тред про вкусовщину и как можно проводить свой досуг

Сделать работу своим хобби. Если вы части овертаймите, то, чтобы не грустить от этого, можно себе и всем вокруг говорить, что работа это ваше хобби

Взяться за свой пет-проект, чтобы поднять ЧСВ, почувствовать себя PO и все то, что мы обсуждали пару дней назад

Закончить свой пет-проект. Если вы вдруг его уже начинали, но по каким-то причинам не довели до AppStore, то настало время это сделать!

А то вон, Поотмечали, что есть пет-проекты, а ссылки скинули единицы! Эх

Сходить с друзьями / коллегами / товарищами на квиз. Думаю большинство в курсе, что это но все же я чуть рассскажу. Много команды отвечают на вопросы в стиле Что? Где? Когда? Есть вариации для лютых эрудитов, есть для новичков. Есть для фанатов Заездных войн. Или Поттера

Советую: Квиз, плиз. Мозгва. Другие пока не посещал, но эти проводят в нормальных местах и вроде вопросы пока были бомбовые. Советую сходить на безнравственную мозгву (18+) - очень интересно

Классика, заняться спортом. Но, чтобы сделать это прямо увлечением придётся добавить толику азарта. Поставить цель пробежать марафон или брать какие-то разряды. Вступить в сообщество. Я сам уже давно не спортсмен, но есть люди, кому это неимоверно заходит

Развитие. Если совсем туго с развлекательной программой, то вы можете подтягивать знания, практиковаться. Об этом мы говорили на втором дне этой недели

Развитие во вне профессии. Отличная тема. Никому не идёт узколобство, поэтому, даже чтобы побеждать в квизах изучайте или просто интересуйтесь чем-то ещё Искусство, физика, история. Уверен, что-то вас да и заинтересует

Лично я люблю физику. Ещё со старших классах. Мне очень нравится, то как сила человеческого ума решает загадки вселенной. Вся эта квантовая механика вообще за пределами понимания. 12-ти струнное пространство - горячо. Советую науч-поп: Митио Каку - Гиперпространство🔥🔥🔥

Художественная литература. Многим отбили желание читать ещё в детстве. Но есть много интересного в художке. Например вы можете читать модные книги про истории компаний. Про индустрии. Советую Кровь, Пот и пиксели - истории разных компаний про разработку игр. Увлекательно!

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

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

Кино. Изучать наследие в виде кино - крутая тема. Нужно правда выработать систематику в просмотре. Ну или просто смотреть то, что нравится (мой вариант) Лучший фильм: Волк с Уолл-стрит. Это шедевр, в одном из дней у меня была отсылка к нему

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

в. Из супегероики: Сорвиголова от Netflix. Лучше сорвиголовы не будет. Лучший каст. Брутальный, несопливый, хорошо поставлены драки. Раскрыта тема религии для ГГ. однозначно советую.

г. Сообщество - советовать ТБВ и КЯВВМ нет смысла,поэтому держите! Легендарная вещь

д. Тьма. Лучший драматический сериал с элементами фантастики. Отвечаю, не пожалеете. Это просто надо видеть. Немецкий сериал с потрясающей атмосферой и концепцией. Опеннинг - шедевр

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

ё. Отбросы. Забавный сериал вызвал приятное ощущение хоть он и местами абсурден. В этом наверное его преимущество. Рамси Болтон в главных ролях

ж. Голяк. Глоток сведено воздуха. Стилистиках Гая Ричи с Гилиганом в главных ролях. Смотреть в озвучке кубик в кубе. Шедевр

з. Кремниевая долина. Не знаю как комментировать. Наща индустрия обязывает. Шедевр, который сносно завершили!

На этом остановимся про сериалы. Все и так знают все.

Гейминг. Если вы и так переиграли во все, то попробуйте пострадать в souls-лайк игры. Я начал с Bloodborne (мне зашла с 3 раза). Увлекла манера подачи информации и отсутствия сострадания к новичкам, а также Сеттинг. Также страдания можно начать с Dark Souls линейки. Советую

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

На этом этот скромный тред заканчиваю. Сегодня и завтра отвечаю на вопросы или пишу выборочные мысли. Спасибо всем, было интересно! Мой Твиттер : @FindYoBalance Телега: iamlit

Ссылки