21 января 2019 – 27 января 2019

@ZiminAlex

21 января 2019Понедельник
48 твитов
5:12

#НоваяАватарка #АвторНедели
Всем привет!
Меня зовут Александр Зимин и я перенимаю эстафету у Даниила, на этой недел… twitter.com/i/web/status/1…

5:17

Расскажу о себе: разрабатываю в основном под iOS, много фрилансил и работал удаленно, работал в Badoo, London, руко… twitter.com/i/web/status/1…

5:20

День 1: Фриланс/удаленка/офис
День 2: Построение дизайн системы на iOS
День 3: Участие в развитии сообщества
День 4… twitter.com/i/web/status/1…

5:22

Поясню про 5-ый день: хочу (максимально аккуратно и обезличено) рассказать истории про то, что я встречал на пути с… twitter.com/i/web/status/1…

5:28

День 1.
Фриланс/удаленная работа/работа в офисе
Я расскажу свои истории про каждый из этих видов работы, скажу что,… twitter.com/i/web/status/1…

5:39

А какой мой опыт?
2013 год (4 офис, 8 фриланс на Россию)
2014 год (6 фриланс на мир, 6 контракт на США)
2015 год (… twitter.com/i/web/status/1…

5:54

Чтобы не путать вкладываемые мною определения:

6:06

И сразу про цифры в скобках – кол-во месяцев, которыми я занимался той или иной активностью.

6:08

Цифры в скобках значили кол-во месяцев той или иной деятельности :)

6:09

Давайте еще обозначим аудиторию
У вас опыт...

7:06

Логично, что я не буду говорить о том, что лучше или хуже, это очень персональная штука. Но я считаю, что надо попр… twitter.com/i/web/status/1…

7:06

Офис.
Основные плюсы:

  1. Стабильность
  2. Карьерный рост
  3. Коллеги, у которых можно перенять опыт

Офис очень хорош… twitter.com/i/web/status/1…

7:08

Главный минус офиса, на мой взгляд, то что ваша “реальность” зависит от ваших менеджеров. Вектор “правильного” зада… twitter.com/i/web/status/1…

7:10

И это логично, ведь вряд ли вы будете верить на слово высказыаниям в первой книге или на первой конференции, которы… twitter.com/i/web/status/1…

7:13

Очень грубая аналогия (не принимайте на свой счет): в России очень опытные разработчики и удобные для юзера сервисы… twitter.com/i/web/status/1…

7:16

Фриланс.
Плюсы:

7:21

Главным минусом является замедленный рост и лень. Интуитивно кажется, что фрилансер может дисциплинировать себя и т… twitter.com/i/web/status/1…

7:27

Я бы рекомендовал фриланс тем, кто хочет расширить свой кругозор через путешествия по миру или тем, у кого есть увл… twitter.com/i/web/status/1…

7:28

Для меня это сейчас самое сложное, заставлять себя заниматься запланированными делами (например спортом, чтением кн… twitter.com/i/web/status/1…

7:30

Есть еще удаленная работа
Плюсы:

7:32

Серьезно, вы можете варьировать как хотите, можете работать 25 часов в неделю в команде из сильных разработчиков, р… twitter.com/i/web/status/1…

7:34

Основной минус в том, что вы можете лишить себя карьерного роста (хотя я знал и исключения), а так же может просест… twitter.com/i/web/status/1…

7:36

Многим еще кажется, что если ты фрилансишь или работаешь удаленно, то ты не сможешь потом устроиться в компанию на… twitter.com/i/web/status/1…

7:39

А есть ли у вас какие-то страхи или предвзятые суждения (можно просто озвучить, что вы считаете минусами, а мы уже… twitter.com/i/web/status/1…

7:40

Или поставлю вопрос таким ребром: те, кто работают в офисе и не пробовал удаленную работу или фриланс, почему вы не… twitter.com/i/web/status/1…

7:45

@mobileunderhood Я работал и так и так. Но спрашивал у коллег почему не хотят фриланс, основной аргумент: зависимос… twitter.com/i/web/status/1…

Тоже часто слышал такой аргумент.
Он имеет право на жизнь, но во-первых можно найти работу с долгим контрактом (ска… twitter.com/i/web/status/1…

7:47

Вообще интересное наблюдение в UK, тут очень часто (некоторые даже по 3 раза) люди уходят из компании, потом возвра… twitter.com/i/web/status/1…

7:54

@mobileunderhood Каждый фрилансер рассказывает, что сначала идёт год работы за условные копейки, и только потом нач… twitter.com/i/web/status/1…

Зависит от опыта. Например есть Toptal, который разработчику сильно упростит поиск высокооплачиваем работы.
Возможн… twitter.com/i/web/status/1…

8:06

Если говорить как искать удаленную работу, то вам поможет эта ссылка: bfy.tw/LtME
Я не шучу, открыл пе… twitter.com/i/web/status/1…

8:07

Поэтому лучшее что я могу сделать по этой теме: разрушить стереотипы, которые есть у вас или поделиться своим опыто… twitter.com/i/web/status/1…

8:19

Давайте еще раз (по инструкции):

8:20

3.1. Вы правы, не надо пробовать
3.2. Копите немного денег (чтобы чувствовать себя спокойно)

8:23

@mobileunderhood В компаниях ещё могут смотреть по резюме, как часто соискатель менял работу. Если он прыгает из ко… twitter.com/i/web/status/1…

Это правда, когда последний раз мы искали бекенд разраба, там смутил тот факт, что на последних двух работах он про… twitter.com/i/web/status/1…

8:34

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

8:58

@mobileunderhood У меня фобия, что только в офисе можно вырасти из девелопера. И то не в каждом. А на удаленке и фр… twitter.com/i/web/status/1…

Главное, что именно карьера делала бы тебя счастливым (если вообще можно этот термин использовать). А иначе можно "… twitter.com/i/web/status/1…

8:59

Попробовать никому еще не мешало :) А для себя лично я выбрал ориентир описанный цитатой: "мы жалеем не о том, что… twitter.com/i/web/status/1…

12:47

Раз мы говорим о типах работы, то давайте затронем тему интервью.
Я проводил интервью примерно 20 раз (в основном… twitter.com/i/web/status/1…

12:48

В этом гайде, на мой взгляд, 2 очень важных комментария, который почему-то многие компании во время интервью игнори… twitter.com/i/web/status/1…

12:51

Кроме базовых вопросов, такие как управление памятью, многопточность, цикл жизни приложения, особенности языка и т.… twitter.com/i/web/status/1…

12:53

1. Какие способы обеспечения качества кода вы знаете?
В ответе надеюсь услышать разницу между юнит и интеграционным… twitter.com/i/web/status/1…

12:54

Слышал ли человек про вотчдоги, как прдепочитает работать с обработкой ошибок (у Yandex на последнем мобиусе был ин… twitter.com/i/web/status/1…

13:04

2. Как он оценивает сроки для большой задачи/фичи?
Мне интересно услышать не просто, что он делит задачи на мелкие,… twitter.com/i/web/status/1…

13:06

Откуда берет X (например на общение с другими командами, прохождение CI, потенциальные переоткрытия после Code Revi… twitter.com/i/web/status/1…

13:18

Но он не работает примерно в ~50% случаев. Нужно (можно использовать Google, Xcode и т.п.) сначала понять почему он… twitter.com/i/web/status/1…

14:16

Если мы абстрагируемся от понятия Software Engineer и попробуем разделить Pure iOS Developer на уровни, то для себя… twitter.com/i/web/status/1…

17:55

А вот и НЕ диванная аналитика, чтобы почитать про нашу индустрию вечерком.
The State Of Mobile 2019 от AppAnnie
s3.amazonaws.com/files.appannie…

17:59

Подписки меняют экономику не игровых приложений. Но мы же с вами все знаем, как это на самом деле работает :) pic.twitter.com/YZo2i26Mqu

22 января 2019Вторник
45 твитов
4:16

@mobileunderhood Есть ещё один очень важный и наиболее обсуждаемый тип «удаленки» - distributed team. Примеры Digit… twitter.com/i/web/status/1…

6:02

День 2: Построение дизайн системы на iOS

На самом деле речь пойдет о том, как работая в Badoo, мы вынесли весь UI… twitter.com/i/web/status/1…

6:05

Речь пойдет о:

6:07

6. Роль отдельного приложения-витрины и его компоненты

6:16

TL;DR основные идеи я уже озвучит в этом докладе youtube.com/watch?v=mTV45Q… и, как ни странно, большинство этих идей в… twitter.com/i/web/status/1…

6:23

1. Вообще четкого определения у дизайн системы нет, но мне нравится то, которое приводится у Nathan Curtis (у него… twitter.com/i/web/status/1…

6:26

У Badoo дизайн система называется Cosmos и статьи от ее создателя можно найти тут, там же и описана мотивация ее со… twitter.com/i/web/status/1…

6:29

2. Как запустился процесс выноса UI элементов в отдельный модуль
Я не застал то время, но, как я знаю, после идеи д… twitter.com/i/web/status/1…

6:32

Самое главное, он сразу создал отдельное приложение-витрину к этому модулю, в котором можно было списком посмотреть… twitter.com/i/web/status/1…

11:39

3. Как все заглохло, но мы смогли реанимировать
К сожалени, как такое часто бывает (какого бы уровня разработчики в… twitter.com/i/web/status/1…

11:40

И я абсолютно с этим согласен. Ведь ты никогда не знаешь какие минусы тебя ждут в недалеком будущем, нужен, как гов… twitter.com/i/web/status/1…

11:49

В тот момент в Badoo все же решили полноценно заняться дизайн системой (тем самым ограничить дизайнеров в кол-ве ра… twitter.com/i/web/status/1…

11:53

Не стоило ожидать, что вся команда разом перейдет, но в команде возникло 3-4 человека, который согласились следоват… twitter.com/i/web/status/1…

11:55

Когда я покинул Badoo, в этом модуле было около 200 визуальных компонентов (с разными состояниями) и целые flow из… twitter.com/i/web/status/1…

11:57

4. Как добавили UI снапшот тесты
Это отдельная история. Столкнувшись с тем, что разработчики "расширяя" какой-то UI… twitter.com/i/web/status/1…

11:58

Для тех, кто не знаком с этим типом тестов, можете посмотреть на эту библиотеку github.com/uber/ios-snaps…. Ее использ… twitter.com/i/web/status/1…

13:38

Так вот, вначале мы думали, что "мы же не стратап" и хотели сделать какую-то крутую систему для хранения изображени… twitter.com/i/web/status/1…

13:40

В итоге были созданы задачи, чтобы придумать умную систему хранилища. Все это повесили на релиз инженера. В итоге в… twitter.com/i/web/status/1…

13:42

И заработало на ура (все выполнялось внутри приложения-витрины) и автоматически (там чуть сложнее, могу описать в о… twitter.com/i/web/status/1…

13:44

5. Как стандартизировали (спойлер: никак)
Вообще тема интересная, в основном приложении каждый писал как мог. Кто к… twitter.com/i/web/status/1…

13:50

@mobileunderhood а ещё вот на эту github.com/pointfreeco/sw…

Она совсем новая, но более гибкая (не ограниченивается т… twitter.com/i/web/status/1…

Интересно. Спасибо за ссылку, надо будет при следующей необходимости сравнить с той, что сейчас Uber поддерживает.… twitter.com/i/web/status/1…

13:52

Что еще хуже, было много внешних зависимостей, например сам ViewController мог иногда использовать классы аналитики… twitter.com/i/web/status/1…

13:54

И я считаю это нормальным явлением, если у тебя есть возможность, дедлайны давят, завтра показывать демо топ менедж… twitter.com/i/web/status/1…

13:59

Ну так вот я к чему, когда большинство стало писать в UI модуле, как-то стало более стандартизовано (мы не вводили… twitter.com/i/web/status/1…

14:01

А главное 2 вещи:

14:03

6. Роль отдельного приложения-витрины и его компоненты
Вот так мы плавно перешли к этому прекрасному приложению. Во… twitter.com/i/web/status/1…

14:18

Я, к сожалению, уже не имею доступа к этому приложению, поэтому опишу логику работы на пальцах и расскажу о ключевы… twitter.com/i/web/status/1…

14:19

4. Добавление в избранное (оно показывалось в самом верху, а если у тебя был добавлен только 1 компонент в избранно… twitter.com/i/web/status/1…

14:20

Логика работы:

14:24

Вы просто добавляли эту dataModel в массив в главном меню и у вас уже был доступен компонент + snapshot test для не… twitter.com/i/web/status/1…

16:34

7. Взаимодействие с дизайнерами...
... стало простым

Ну на самом деле сложности остались, но теперь дизайнеры куд… twitter.com/i/web/status/1…

16:36

Ведь дизайн система теперь стало единым источником правды, а если дизайнер хотел добавить новый компонент, то он до… twitter.com/i/web/status/1…

16:40

8. Неудачные эксперименты
В какой-то момент мне казалось (и все еще кажется) хорошей идей (чтобы легко покрывать сн… twitter.com/i/web/status/1…

16:41

Я вдохновился этой статьей: medium.com/bpxl-craft/the…
И думал, что если все начнут так описывать состояния сверху кас… twitter.com/i/web/status/1…

16:44

Но концепт оказался усложнением кода и никто не стал ему следовать, даже после активного питча в рабочем чатике и в… twitter.com/i/web/status/1…

16:51

Сегодня я рассказывал про построение дизайн системы на iOS, опыт длинной на полтора года (начатый еще до того, как… twitter.com/i/web/status/1…

16:53

@mobileunderhood Все вызовы из него должны быть линейны и служить только декомпозиции огромного куска логики на бол… twitter.com/i/web/status/1…

Вот эту цель я и хотел достичь, но к сожалению не получилось, надо было подойти к упрощению через 1-у функцию входа… twitter.com/i/web/status/1…

16:54

Плюсы:

16:55

3. Разработчики пишут расширяемые и переиспользуемые компоненты (спасибо изолированной логике UI модуля и анонимным… twitter.com/i/web/status/1…

16:55

4. Снапшот тестирование позволяет видеть регрессию при расширении UI компонентов (оказалось разработчики куда чаще… twitter.com/i/web/status/1…

16:59

Минусы:

17:01

2. Как и во множестве архитектурных подходов, такое решение увеличивают время, затрачиваемое на первоначальное напи… twitter.com/i/web/status/1…

17:05

Как результат: участие во внедрении такой системы одно из самых оптимальных решений, что я делал за всю карьеру раз… twitter.com/i/web/status/1…

17:09

Имея текущий опыт за спиной, я считаю, что мне стоит внедрять такую систему даже в проекты, которые только запускаю… twitter.com/i/web/status/1…

17:13

На сегодня, все, увидимся завтра 👋
А на посошок опрос:
Где вы предпочитайте верстать View в iOS

23 января 2019Среда
33 твита
6:39

День 3: Участие в развитии сообщества

Сегодня я расскажу истории и поделюсь опытом о том, как я занимался организа… twitter.com/i/web/status/1…

6:45

Начну, конечно же, с темы организации митапов и @CocoaHeadsRu, возможность управлять этим сообществом досталась мне… twitter.com/i/web/status/1…

6:48

За всю свою жизнь я видел (возможно вы меня поправите) 4 мотивации организации независимых встреч:

6:51

4. Некая, пускай и положительная, смесь амбиций и тщеславия (обычно если ты молодой и при условии, что у тебя много… twitter.com/i/web/status/1…

6:55

Вначале (2015 – первая половина 2016) мне было просто в кайф, но т.к. я не преследовал какие-то цели, то и встречи… twitter.com/i/web/status/1…

6:57

Наверное самое красивое из них было: приложение на 8-10 экранов (2-3 недели работы) на 8000$.
Не важно лучший ли ты… twitter.com/i/web/status/1…

7:01

Из-за такой мотивации (к тому же я тогда немного повзрослел) я решил сконцентрироваться на качестве и "опыте для ау… twitter.com/i/web/status/1…

7:04

2. Прогон докладов (это требовало времени, но ко мне присоединились новые организаторы и жизнь стала проще)

7:06

А, главное, было сделано Open Source приложение для встреч, силами сообщества: github.com/cocoaheadsru/a…
Это был очен… twitter.com/i/web/status/1…

7:08

Именно из самых активных участников в разработке этого приложения и получилось собрать новых организаторов встреч… twitter.com/i/web/status/1…

7:11

Проводя ретроспективу о том, что же дало мне организация таких митапов:

7:15

4. Навык общения с крупными компаниями (при организации встреч)

11:28

В этом треде я расскажу про организацию митапа в Лондоне и выступления на iOSCon.
Сравню с тем, что в России и поделюсь своими наблюдениями)

12:45

Начнём с того, что в Лондоне метапов и конференций куда меньше, чем в Москве :( Но даже на митапы (NSLondon) приезж… twitter.com/i/web/status/1…

12:52

На мой взгляд уровень докладов на митапах (NSLondon) и конференциях (iOSCon) плюс, минус одинаковый, случать интере… twitter.com/i/web/status/1…

12:58

Ну ещё немного накину: я собирал визитки лучших докладчиков на iOSCon, чтобы пригласить их в Москву на конференции.… twitter.com/i/web/status/1…

12:59

С другой стороны я понимаю этот подход: люди предметную область могут посмотреть и в интернете, на конференциею они… twitter.com/i/web/status/1…

13:14

Говоря о выступлении, мне там понравилось, никто не придрался к моему ломанному английскому, а фидбек, который скин… twitter.com/i/web/status/1…

15:11

Когда мы запускали митап от Badoo в Лондоне в офисе Skyscanner, мы напрочь не знали где набрать аудиторию. После за… twitter.com/i/web/status/1…

15:12

Мы сначала не знали, что делать, а потом зарегистрировали FB событие и сдали на него рекламу. В итоге получили окол… twitter.com/i/web/status/1…

15:19

В итоге реальность совпала с тем, что я видел в Москве на CocoaHeads. Только 65% зарегистрировавшихся реально пришл… twitter.com/i/web/status/1…

15:30

Ну и напоследок, нужно ли выступать на конференциях?

Я считаю, что да, но не часто. Как минимум это позволяет форм… twitter.com/i/web/status/1…

15:33

Если есть люди, которые копались в той же области, то они смогут выйти на вас и обсудить детали. После доклада про… twitter.com/i/web/status/1…

16:57

На сегодня, все, увидимся завтра 👋
А на посошок опрос:
Где вы предпочитайте верстать View в iOS

Провели вчера опрос, а сегодня можно и обсудить.

Лично для себя я предпочитаю код (хотя еще 2 года назад топил за… twitter.com/i/web/status/1…

16:59

Начнем с пруфов: вот UI модуль моего личного проекта (там не весь UI, только generic), но видно, что на 65 классов… twitter.com/i/web/status/1…

17:01

Во-первых я считаю, что верстка интерфейса в коде, это навык (как и умение представлять фигуры в геометрии на основ… twitter.com/i/web/status/1…

17:04

Какие я вижу плюсы кода перед Xib'ами:

17:07

2. Можно передавать зависимости в init, особенно это важно, если вы избегаете непредсказуемое поведение или (и тако… twitter.com/i/web/status/1…

17:10

3. Если вы в команде, то проверка кода (core review) ваших Xib'ов превращается в ад (на самом деле их никто даже не… twitter.com/i/web/status/1…

17:11

6. Веселые артефакты, например на Xib'ах нет (не было?) top/bottom edge insets, а поведение с safeArea было непредс… twitter.com/i/web/status/1…

17:13

Плюсы IB:

17:16

Ну и напоследок, какие фреймворки я использую для Auto Layout в коде:

17:47

Ну а сегодняшний опрос про выступления на конференциях :)

24 января 2019Четверг
32 твита
6:32

День 4: Развитие pet проектов

Сегодня я расскажу что это за фрукт делать свои личные проекты. С какими ошибками мо… twitter.com/i/web/status/1…

6:32

Это планировалось 5-ым днем, но я заметил, что у меня целых два 5-ых дня в плане, поэтому немного сдвинул расписани… twitter.com/i/web/status/1…

7:22

Начнем с самого важного: "договаривайтесь на берегу". Как бы вы не думали про проект и людей там, у всех очень разн… twitter.com/i/web/status/1…

7:24

Вот тут, можно читать с "В 1951 году произошло..." (lesswrong.ru/w/Рациональнос…), сам ресерч тут: www2.psych.ubc.ca/~schaller/Psyc…

8:01

А у меня есть такая история (к счастью всего одна) на практике. В 2015 году я был одним из участников команды, кото… twitter.com/i/web/status/1…

8:01

Я не берусь сейчас судить какую часть проекта кто сделал, уверен, что я куда меньше, чем второй разработчик.
Но ров… twitter.com/i/web/status/1…

8:02

В итоге после этой даты натирала сумма (около 6к$), но после интересных вычислений, получилось, что большая часть э… twitter.com/i/web/status/1…

8:04

Я не считал это справедливым, но мне дали понять, что это лучше, чем ничего. Ну а для себя я просто усвоил важный у… twitter.com/i/web/status/1…

8:06

А реального положения вещей не существует, эксперимент 1951 года это хорошо показывает) Но если у вас не будет защи… twitter.com/i/web/status/1…

8:13

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

8:16

Перед вами 2 варианта запроса прав на отправку push уведомлений.

8:17

Какой работает эффективнее (% людей которые дали согласие на отправку им push уведомлений выше)?

10:49

Даже учесть, что голосование еще идет, я могу утверждать, что контекстный вариант (по версии аудитории) победил (с… twitter.com/i/web/status/1…

10:53

Начнем с ответа на вопрос как это было в нашей ситуации: буквально за три деня теста мы узнали, что версия с запрос… twitter.com/i/web/status/1…

10:55

Но правильным ответом я признаю только "я не знаю".
А моя гипотеза была такой: gist.github.com/azimin/55747d5…
Специально о… twitter.com/i/web/status/1…

11:39

Но признаюсь честно, я не просто ПОПАЛ в эту ловушку рациональности в свое время, я еще и пропагандировал неправиль… twitter.com/i/web/status/1…

11:41

В последнем своем личном проекте за полгода мы провели около 30 a/b тестов.
Научились очень многому, перестали смо… twitter.com/i/web/status/1…

11:44

Если в личном проекте у вас нет времени поднимать бек, а проводить эксперименты (проверять данные) вы хотите доволь… twitter.com/i/web/status/1…

14:35

Разрабатывая пет проекты я столкнулся с 2-мя проблемами, которые являются отголосками профдеформации:

14:37

Стоит пояснить что значит каждый из них:

14:39

При чем это проявляет себя не только на этапе отбора приоритетных задач, но и на этапе генерации идей. Это относитс… twitter.com/i/web/status/1…

14:41

2. Вторая проблема местами еще хуже, из-за привычки разрабатывать сложные системы возникает желание подготавливать… twitter.com/i/web/status/1…

14:42

Когда я разрабатывал первую версию своего проекта, мне казалось, что люди будут генерировать контент, а я буду отда… twitter.com/i/web/status/1…

14:44

Разработка и отладка такой системы потратили примерно 20% всей времени разработки, тем более я еще решил покрыть ее… twitter.com/i/web/status/1…

14:46

Такая же история настигла функционал: "пригласи друга, который установит приложение и получи pro-функционал". Я отк… twitter.com/i/web/status/1…

14:48

Когда все же внедрили (подняв BaaS) – данная фича не оправдала себя, но буквально сразу появилось много важных фич,… twitter.com/i/web/status/1…

14:51

В итоге как я решил эти проблемы?

Со 2-ой оказалось в меру просто, я обещал себе упрощать код до максимума (и гавн… twitter.com/i/web/status/1…

14:53

В итоге все что связано с платежами и игровой движок декомпозированы, покрыты тестами и т.п.
А вот остальное все в… twitter.com/i/web/status/1…

14:55

С 1-ой проблемой я так и не понял как бороться (это почти как бороться со своим мышлением). Я стараюсь быть непредв… twitter.com/i/web/status/1…

14:55

Так что если кто-то знает как с таким бороться (расширять парадигму мышления), то буду очень рад услышать мнение :)

15:31

Ну а сегодняшний опрос про выступления на конференциях :)

Из вчерашнего обсуждения, среди тех, кто "не выступал, но хочу", поделитесь, пожалуйста, какие основные причины, ко… twitter.com/i/web/status/1…

17:46

Сегодняшний опрос будет о пет проектах.
Есть ли у вас свое личное приложение?

25 января 2019Пятница
15 твитов
7:13

День 5. Смена направления
Я все отхожу от плана, но мне показалось, что в предыдущие дни было мало технических веще… twitter.com/i/web/status/1…

7:16

Начнем с небольшого обсуждения, многие из нас пишут юнит тесты, а какие юнит тесты без Mock-объектов?
Тут я бы хоте… twitter.com/i/web/status/1…

7:26

В Badoo мы использовали github.com/krzysztofzablo… и наши самописные шаблоны для него. Сначала были фейк объекты без д… twitter.com/i/web/status/1…

7:27

В их функционал входило отслеживание кол-ва вызовов, история аргументов, возможность быстро задать возвращаемый арг… twitter.com/i/web/status/1…

7:29

Меня вдохновила эта история и изучив пару решений, для своего проекта я выбрал SwiftyMocky (github.com/MakeAWishFound…twitter.com/i/web/status/1…

7:31

Из минусов:

7:32

Эта ветка будет посвящена Swift'у, в отличие от Java, Objective-C и, возможно, Kotlin у него с этим пока самые большие пробелы :)

7:39

Но, из интересного: начав использовать этот инструмент, я немного расширил то, как я описываю тесты.
Именно возмож… twitter.com/i/web/status/1…

7:40

А какие инструменты используете вы для создание Mock-объектов в Swift?

9:48

@mobileunderhood Да нормальные. Зато не детекторы изменений. Кучу копий сломали на эту тему, но в целом мок обычно… twitter.com/i/web/status/1…

Спасибо, такое мнение тоже слышал :) Куда лучше покопать, чтобы глубже понимать потенциальные уязвимости моков? Как… twitter.com/i/web/status/1…

9:49

@mobileunderhood Тема интересная и сложная 1. У нас дофига когнитивных искажений. И хотя они сводятся к небольшому… twitter.com/i/web/status/1…

Спасибо.
Да, было бы интересно услышать мнение на эту тему, а если еще источники будут, то вообще +10 к карме :) twitter.com/KZolotov/statu…

9:52

@mobileunderhood Вот сейчас у меня менеджер боится, что индусы (ну ты понел) потратят такое количество времени на и… twitter.com/i/web/status/1…

Ну это уже работа с "proof of concept", для меня рецепт простой:

9:53

3. Ведет эксперимент (например втягивает фреймворк и покрывает N компонентов тестами)

9:54

6.1. Если оказывается, что по мнению разработчика все хорошо, то эксперимент продолжается на еще какого нибудь член… twitter.com/i/web/status/1…

9:57

Такое, конечно же, могут позволить только достаточно большие компании.

Но, обычно, и проблемы с тем, что какой-то… twitter.com/i/web/status/1…

26 января 2019Суббота
22 твита
3:04

День 6: Гавнокодинг, MVP, хакатоны, борьба с iOS фреймворками

Всем привет, я пропал, но вернулся!
Сегодняшний ден… twitter.com/i/web/status/1…

4:04

Давайте сразу обозначим: в моем мировоззрении есть 2 типа людей (если грубо

4:08

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

Но я сразу… twitter.com/i/web/status/1…

4:13

Начнём с понимания т.з. аудитории

Если код плохой (говноокод: сложно расширять, минимум тестов и т.д.), но продукт… twitter.com/i/web/status/1…

4:45

@mobileunderhood Это нормально) всё равно через пару лет переписывать с нуля

Это, кстати, по моему опыту, одно из самых больших заблуждений: «сейчас запилим их палок, а как поднимем деньги – п… twitter.com/i/web/status/1…

6:33

@mobileunderhood Можно модулями переписывать код в нормальный.

Я приверженец подхода, что при первом написании компонент не стоит усложнять (конечно исключения тоже есть), а уже… twitter.com/i/web/status/1…

6:34

Можно считать за некий «кредит доверия», чем чаще код определенного компонента себя не оправдывает, тем больше сил… twitter.com/i/web/status/1…

7:09

Давайте начнём с темы хакатонов.

Я участвовал в русских и европейских хакатонах, за все время выигрывали в 3 номи… twitter.com/i/web/status/1…

7:09

Вообще я читал доклад на эту тему в Yandex: youtu.be/AFLQCta5OKw

Но с того момента появились новые детали и я н… twitter.com/i/web/status/1…

7:12

Хакатон, если вдруг кто-то не знает, это формат, когда вы за 24-48 (иногда и больше) часов пилите идею (приложение,… twitter.com/i/web/status/1…

7:14

Плюсы хакатонов:

7:15

Минусы:

7:21

Но пункт про знакомых очень важен:

7:23

2. За время хакатонов я познакомился со многими клеевыми ребятами из других команд (например бывший R&D отдел приз… twitter.com/i/web/status/1…

8:01

Почти всегда команды уже до хакатона сформировали идею, почитали про жюри и, возможно, даже придумали дизайн (если… twitter.com/i/web/status/1…

9:30

Но давайте по порядку:

9:33

2. Вам надо собрать команду (довольно часто на хакатонах можно найти людей на месте, но это не очень хороший вариан… twitter.com/i/web/status/1…

9:37

Человек, который умеет презентовать (часто он же собирает всех и придумывает идею) важен, если вы хотите донести св… twitter.com/i/web/status/1…

9:39

3. Дальше вам надо придумать идею. Обычно мы собирались командой в кафешке и устраивали брейншторм. Упрощает задачу… twitter.com/i/web/status/1…

9:41

Если у вас уже есть какие-то наработки или идеи, которые вы хотите реализовать, то можно подстроить под тематику ха… twitter.com/i/web/status/1…

9:44

4. Зарегистрироваться (если это надо делать с описанием идеи)

9:54

Некоторые компании, кстати, практикуют внутренние хакатоны.
Давайте узнаем сколько людей из нашей аудитории сталки… twitter.com/i/web/status/1…

27 января 2019Воскресенье
16 твитов
3:58

@mobileunderhood Есть опыт организации хакатона в конторе со средним возрастом 30+, у большинства есть дети и нет в… twitter.com/i/web/status/1…

4:10

Я забыл описать часть «борьба с системными фреймворками», поэтому проведу этот тред сегодня (а потом перейдём к плану Дня 7)

4:24

Наверное «верха карьеры» (если так можно назвать) я достиг, когда боролся с in-call status bar багами в приложении… twitter.com/i/web/status/1…

4:27

Этот компонент содержит очень много багов, которые Apple решили не чинить, вот пара:

4:33

На словах понять сложно, но к конце треда я дам ссылки на доклады, где я подробно расписывала эти баги.

Задача ест… twitter.com/i/web/status/1…

4:36

Когда я только получил задачу: первые 2 дня я потратил на попытки сделать все «законно», переписывая куски кода на… twitter.com/i/web/status/1…

4:39

В итоге пришлось изучить задачу детально. И я полез в Hopper (hopperapp.com), проведя ещё пару дней изуча… twitter.com/i/web/status/1…

4:43

Как результат у нас оказался единая и кастомная точка для работы с изменениями status bar (если бы разработчик в бу… twitter.com/i/web/status/1…

4:46

В задачи этой точки входило «ручное» управление поведением рамок у UIWindow и всех модальных окон исключительно в м… twitter.com/i/web/status/1…

4:48

Чтобы избежать всех потенциальных рисков были введены правила:

4:53

2. Реализацию этот системы можно было отключить в «1 строчку», если бы в новой iOS что-то сломалось

4:53

4. Многое части системы были покрыты асертами, которые логировались в продакшене. Включая название приватных классо… twitter.com/i/web/status/1…

4:56

Все это веселье я описал в докладе на iOSCon: skillsmatter.com/skillscasts/11…
А кусок этот системы, вместе с описанием того… twitter.com/i/web/status/1…

7:58

День 7 (последний день): Общение

Сегодня выходной, но я с удовольствием готов ответить на любые ваши вопросы или о… twitter.com/i/web/status/1…

16:53

Друзья, на этом неделя подошла к концу, спасибо всем, кто читал меня!
Было очень интересно узнать ваше мнение и рас… twitter.com/i/web/status/1…

16:56

В течении ближайшего часа я ещё буду тут и смогу ответить, если вдруг остались вопросы.

Ну а меня всегда можно фол… twitter.com/i/web/status/1…