#НоваяАватарка #АвторНедели
Всем привет!
Меня зовут Александр Зимин и я перенимаю эстафету у Даниила, на этой недел… twitter.com/i/web/status/1…
Расскажу о себе: разрабатываю в основном под iOS, много фрилансил и работал удаленно, работал в Badoo, London, руко… twitter.com/i/web/status/1…
День 1: Фриланс/удаленка/офис
День 2: Построение дизайн системы на iOS
День 3: Участие в развитии сообщества
День 4… twitter.com/i/web/status/1…
Поясню про 5-ый день: хочу (максимально аккуратно и обезличено) рассказать истории про то, что я встречал на пути с… twitter.com/i/web/status/1…
День 1.
Фриланс/удаленная работа/работа в офисе
Я расскажу свои истории про каждый из этих видов работы, скажу что,… twitter.com/i/web/status/1…
А какой мой опыт?
2013 год (4 офис, 8 фриланс на Россию)
2014 год (6 фриланс на мир, 6 контракт на США)
2015 год (… twitter.com/i/web/status/1…
Чтобы не путать вкладываемые мною определения:
И сразу про цифры в скобках – кол-во месяцев, которыми я занимался той или иной активностью.
Цифры в скобках значили кол-во месяцев той или иной деятельности :)
Давайте еще обозначим аудиторию
У вас опыт...
Логично, что я не буду говорить о том, что лучше или хуже, это очень персональная штука. Но я считаю, что надо попр… twitter.com/i/web/status/1…
Офис.
Основные плюсы:
- Стабильность
- Карьерный рост
- Коллеги, у которых можно перенять опыт
Офис очень хорош… twitter.com/i/web/status/1…
Главный минус офиса, на мой взгляд, то что ваша “реальность” зависит от ваших менеджеров. Вектор “правильного” зада… twitter.com/i/web/status/1…
И это логично, ведь вряд ли вы будете верить на слово высказыаниям в первой книге или на первой конференции, которы… twitter.com/i/web/status/1…
Очень грубая аналогия (не принимайте на свой счет): в России очень опытные разработчики и удобные для юзера сервисы… twitter.com/i/web/status/1…
Фриланс.
Плюсы:
Главным минусом является замедленный рост и лень. Интуитивно кажется, что фрилансер может дисциплинировать себя и т… twitter.com/i/web/status/1…
Я бы рекомендовал фриланс тем, кто хочет расширить свой кругозор через путешествия по миру или тем, у кого есть увл… twitter.com/i/web/status/1…
Для меня это сейчас самое сложное, заставлять себя заниматься запланированными делами (например спортом, чтением кн… twitter.com/i/web/status/1…
Есть еще удаленная работа
Плюсы:
Серьезно, вы можете варьировать как хотите, можете работать 25 часов в неделю в команде из сильных разработчиков, р… twitter.com/i/web/status/1…
Основной минус в том, что вы можете лишить себя карьерного роста (хотя я знал и исключения), а так же может просест… twitter.com/i/web/status/1…
Многим еще кажется, что если ты фрилансишь или работаешь удаленно, то ты не сможешь потом устроиться в компанию на… twitter.com/i/web/status/1…
А есть ли у вас какие-то страхи или предвзятые суждения (можно просто озвучить, что вы считаете минусами, а мы уже… twitter.com/i/web/status/1…
Или поставлю вопрос таким ребром: те, кто работают в офисе и не пробовал удаленную работу или фриланс, почему вы не… twitter.com/i/web/status/1…
@mobileunderhood Я работал и так и так. Но спрашивал у коллег почему не хотят фриланс, основной аргумент: зависимос… twitter.com/i/web/status/1…
Тоже часто слышал такой аргумент.
Он имеет право на жизнь, но во-первых можно найти работу с долгим контрактом (ска… twitter.com/i/web/status/1…
Вообще интересное наблюдение в UK, тут очень часто (некоторые даже по 3 раза) люди уходят из компании, потом возвра… twitter.com/i/web/status/1…
@mobileunderhood Каждый фрилансер рассказывает, что сначала идёт год работы за условные копейки, и только потом нач… twitter.com/i/web/status/1…
Зависит от опыта. Например есть Toptal, который разработчику сильно упростит поиск высокооплачиваем работы.
Возможн… twitter.com/i/web/status/1…
Если говорить как искать удаленную работу, то вам поможет эта ссылка: bfy.tw/LtME
Я не шучу, открыл пе… twitter.com/i/web/status/1…
Поэтому лучшее что я могу сделать по этой теме: разрушить стереотипы, которые есть у вас или поделиться своим опыто… twitter.com/i/web/status/1…
Давайте еще раз (по инструкции):
3.1. Вы правы, не надо пробовать
3.2. Копите немного денег (чтобы чувствовать себя спокойно)
@mobileunderhood В компаниях ещё могут смотреть по резюме, как часто соискатель менял работу. Если он прыгает из ко… twitter.com/i/web/status/1…
Это правда, когда последний раз мы искали бекенд разраба, там смутил тот факт, что на последних двух работах он про… twitter.com/i/web/status/1…
Как заметили читатели, то такая практика и в русских компаниях становится обычной (правда пока выборка не самая большая).
@mobileunderhood У меня фобия, что только в офисе можно вырасти из девелопера. И то не в каждом. А на удаленке и фр… twitter.com/i/web/status/1…
Главное, что именно карьера делала бы тебя счастливым (если вообще можно этот термин использовать). А иначе можно "… twitter.com/i/web/status/1…
Попробовать никому еще не мешало :) А для себя лично я выбрал ориентир описанный цитатой: "мы жалеем не о том, что… twitter.com/i/web/status/1…
Раз мы говорим о типах работы, то давайте затронем тему интервью.
Я проводил интервью примерно 20 раз (в основном… twitter.com/i/web/status/1…
В этом гайде, на мой взгляд, 2 очень важных комментария, который почему-то многие компании во время интервью игнори… twitter.com/i/web/status/1…
Кроме базовых вопросов, такие как управление памятью, многопточность, цикл жизни приложения, особенности языка и т.… twitter.com/i/web/status/1…
1. Какие способы обеспечения качества кода вы знаете?
В ответе надеюсь услышать разницу между юнит и интеграционным… twitter.com/i/web/status/1…
Слышал ли человек про вотчдоги, как прдепочитает работать с обработкой ошибок (у Yandex на последнем мобиусе был ин… twitter.com/i/web/status/1…
2. Как он оценивает сроки для большой задачи/фичи?
Мне интересно услышать не просто, что он делит задачи на мелкие,… twitter.com/i/web/status/1…
Откуда берет X (например на общение с другими командами, прохождение CI, потенциальные переоткрытия после Code Revi… twitter.com/i/web/status/1…
Но он не работает примерно в ~50% случаев. Нужно (можно использовать Google, Xcode и т.п.) сначала понять почему он… twitter.com/i/web/status/1…
Если мы абстрагируемся от понятия Software Engineer и попробуем разделить Pure iOS Developer на уровни, то для себя… twitter.com/i/web/status/1…
А вот и НЕ диванная аналитика, чтобы почитать про нашу индустрию вечерком.
The State Of Mobile 2019 от AppAnnie
s3.amazonaws.com/files.appannie…
Подписки меняют экономику не игровых приложений. Но мы же с вами все знаем, как это на самом деле работает :) pic.twitter.com/YZo2i26Mqu
@mobileunderhood Есть ещё один очень важный и наиболее обсуждаемый тип «удаленки» - distributed team. Примеры Digit… twitter.com/i/web/status/1…
День 2: Построение дизайн системы на iOS
На самом деле речь пойдет о том, как работая в Badoo, мы вынесли весь UI… twitter.com/i/web/status/1…
Речь пойдет о:
6. Роль отдельного приложения-витрины и его компоненты
TL;DR основные идеи я уже озвучит в этом докладе youtube.com/watch?v=mTV45Q… и, как ни странно, большинство этих идей в… twitter.com/i/web/status/1…
1. Вообще четкого определения у дизайн системы нет, но мне нравится то, которое приводится у Nathan Curtis (у него… twitter.com/i/web/status/1…
У Badoo дизайн система называется Cosmos и статьи от ее создателя можно найти тут, там же и описана мотивация ее со… twitter.com/i/web/status/1…
2. Как запустился процесс выноса UI элементов в отдельный модуль
Я не застал то время, но, как я знаю, после идеи д… twitter.com/i/web/status/1…
Самое главное, он сразу создал отдельное приложение-витрину к этому модулю, в котором можно было списком посмотреть… twitter.com/i/web/status/1…
3. Как все заглохло, но мы смогли реанимировать
К сожалени, как такое часто бывает (какого бы уровня разработчики в… twitter.com/i/web/status/1…
И я абсолютно с этим согласен. Ведь ты никогда не знаешь какие минусы тебя ждут в недалеком будущем, нужен, как гов… twitter.com/i/web/status/1…
В тот момент в Badoo все же решили полноценно заняться дизайн системой (тем самым ограничить дизайнеров в кол-ве ра… twitter.com/i/web/status/1…
Не стоило ожидать, что вся команда разом перейдет, но в команде возникло 3-4 человека, который согласились следоват… twitter.com/i/web/status/1…
Когда я покинул Badoo, в этом модуле было около 200 визуальных компонентов (с разными состояниями) и целые flow из… twitter.com/i/web/status/1…
4. Как добавили UI снапшот тесты
Это отдельная история. Столкнувшись с тем, что разработчики "расширяя" какой-то UI… twitter.com/i/web/status/1…
Для тех, кто не знаком с этим типом тестов, можете посмотреть на эту библиотеку github.com/uber/ios-snaps…. Ее использ… twitter.com/i/web/status/1…
Так вот, вначале мы думали, что "мы же не стратап" и хотели сделать какую-то крутую систему для хранения изображени… twitter.com/i/web/status/1…
В итоге были созданы задачи, чтобы придумать умную систему хранилища. Все это повесили на релиз инженера. В итоге в… twitter.com/i/web/status/1…
И заработало на ура (все выполнялось внутри приложения-витрины) и автоматически (там чуть сложнее, могу описать в о… twitter.com/i/web/status/1…
5. Как стандартизировали (спойлер: никак)
Вообще тема интересная, в основном приложении каждый писал как мог. Кто к… twitter.com/i/web/status/1…
@mobileunderhood а ещё вот на эту github.com/pointfreeco/sw…
Она совсем новая, но более гибкая (не ограниченивается т… twitter.com/i/web/status/1…
Интересно. Спасибо за ссылку, надо будет при следующей необходимости сравнить с той, что сейчас Uber поддерживает.… twitter.com/i/web/status/1…
Что еще хуже, было много внешних зависимостей, например сам ViewController мог иногда использовать классы аналитики… twitter.com/i/web/status/1…
И я считаю это нормальным явлением, если у тебя есть возможность, дедлайны давят, завтра показывать демо топ менедж… twitter.com/i/web/status/1…
Ну так вот я к чему, когда большинство стало писать в UI модуле, как-то стало более стандартизовано (мы не вводили… twitter.com/i/web/status/1…
А главное 2 вещи:
6. Роль отдельного приложения-витрины и его компоненты
Вот так мы плавно перешли к этому прекрасному приложению. Во… twitter.com/i/web/status/1…
Я, к сожалению, уже не имею доступа к этому приложению, поэтому опишу логику работы на пальцах и расскажу о ключевы… twitter.com/i/web/status/1…
4. Добавление в избранное (оно показывалось в самом верху, а если у тебя был добавлен только 1 компонент в избранно… twitter.com/i/web/status/1…
Логика работы:
Вы просто добавляли эту dataModel в массив в главном меню и у вас уже был доступен компонент + snapshot test для не… twitter.com/i/web/status/1…
7. Взаимодействие с дизайнерами...
... стало простым
Ну на самом деле сложности остались, но теперь дизайнеры куд… twitter.com/i/web/status/1…
Ведь дизайн система теперь стало единым источником правды, а если дизайнер хотел добавить новый компонент, то он до… twitter.com/i/web/status/1…
8. Неудачные эксперименты
В какой-то момент мне казалось (и все еще кажется) хорошей идей (чтобы легко покрывать сн… twitter.com/i/web/status/1…
Я вдохновился этой статьей: medium.com/bpxl-craft/the…
И думал, что если все начнут так описывать состояния сверху кас… twitter.com/i/web/status/1…
Но концепт оказался усложнением кода и никто не стал ему следовать, даже после активного питча в рабочем чатике и в… twitter.com/i/web/status/1…
Сегодня я рассказывал про построение дизайн системы на iOS, опыт длинной на полтора года (начатый еще до того, как… twitter.com/i/web/status/1…
@mobileunderhood Все вызовы из него должны быть линейны и служить только декомпозиции огромного куска логики на бол… twitter.com/i/web/status/1…
Вот эту цель я и хотел достичь, но к сожалению не получилось, надо было подойти к упрощению через 1-у функцию входа… twitter.com/i/web/status/1…
Плюсы:
3. Разработчики пишут расширяемые и переиспользуемые компоненты (спасибо изолированной логике UI модуля и анонимным… twitter.com/i/web/status/1…
4. Снапшот тестирование позволяет видеть регрессию при расширении UI компонентов (оказалось разработчики куда чаще… twitter.com/i/web/status/1…
Минусы:
2. Как и во множестве архитектурных подходов, такое решение увеличивают время, затрачиваемое на первоначальное напи… twitter.com/i/web/status/1…
Как результат: участие во внедрении такой системы одно из самых оптимальных решений, что я делал за всю карьеру раз… twitter.com/i/web/status/1…
Имея текущий опыт за спиной, я считаю, что мне стоит внедрять такую систему даже в проекты, которые только запускаю… twitter.com/i/web/status/1…
На сегодня, все, увидимся завтра 👋
А на посошок опрос:
Где вы предпочитайте верстать View в iOS
День 3: Участие в развитии сообщества
Сегодня я расскажу истории и поделюсь опытом о том, как я занимался организа… twitter.com/i/web/status/1…
Начну, конечно же, с темы организации митапов и @CocoaHeadsRu, возможность управлять этим сообществом досталась мне… twitter.com/i/web/status/1…
За всю свою жизнь я видел (возможно вы меня поправите) 4 мотивации организации независимых встреч:
4. Некая, пускай и положительная, смесь амбиций и тщеславия (обычно если ты молодой и при условии, что у тебя много… twitter.com/i/web/status/1…
Вначале (2015 – первая половина 2016) мне было просто в кайф, но т.к. я не преследовал какие-то цели, то и встречи… twitter.com/i/web/status/1…
Наверное самое красивое из них было: приложение на 8-10 экранов (2-3 недели работы) на 8000$.
Не важно лучший ли ты… twitter.com/i/web/status/1…
Из-за такой мотивации (к тому же я тогда немного повзрослел) я решил сконцентрироваться на качестве и "опыте для ау… twitter.com/i/web/status/1…
2. Прогон докладов (это требовало времени, но ко мне присоединились новые организаторы и жизнь стала проще)
А, главное, было сделано Open Source приложение для встреч, силами сообщества: github.com/cocoaheadsru/a…
Это был очен… twitter.com/i/web/status/1…
Именно из самых активных участников в разработке этого приложения и получилось собрать новых организаторов встреч… twitter.com/i/web/status/1…
Проводя ретроспективу о том, что же дало мне организация таких митапов:
4. Навык общения с крупными компаниями (при организации встреч)
В этом треде я расскажу про организацию митапа в Лондоне и выступления на iOSCon.
Сравню с тем, что в России и поделюсь своими наблюдениями)
Начнём с того, что в Лондоне метапов и конференций куда меньше, чем в Москве :( Но даже на митапы (NSLondon) приезж… twitter.com/i/web/status/1…
На мой взгляд уровень докладов на митапах (NSLondon) и конференциях (iOSCon) плюс, минус одинаковый, случать интере… twitter.com/i/web/status/1…
Ну ещё немного накину: я собирал визитки лучших докладчиков на iOSCon, чтобы пригласить их в Москву на конференции.… twitter.com/i/web/status/1…
С другой стороны я понимаю этот подход: люди предметную область могут посмотреть и в интернете, на конференциею они… twitter.com/i/web/status/1…
Говоря о выступлении, мне там понравилось, никто не придрался к моему ломанному английскому, а фидбек, который скин… twitter.com/i/web/status/1…
Когда мы запускали митап от Badoo в Лондоне в офисе Skyscanner, мы напрочь не знали где набрать аудиторию. После за… twitter.com/i/web/status/1…
Мы сначала не знали, что делать, а потом зарегистрировали FB событие и сдали на него рекламу. В итоге получили окол… twitter.com/i/web/status/1…
В итоге реальность совпала с тем, что я видел в Москве на CocoaHeads. Только 65% зарегистрировавшихся реально пришл… twitter.com/i/web/status/1…
Ну и напоследок, нужно ли выступать на конференциях?
Я считаю, что да, но не часто. Как минимум это позволяет форм… twitter.com/i/web/status/1…
Если есть люди, которые копались в той же области, то они смогут выйти на вас и обсудить детали. После доклада про… twitter.com/i/web/status/1…
На сегодня, все, увидимся завтра 👋
А на посошок опрос:
Где вы предпочитайте верстать View в iOS
Провели вчера опрос, а сегодня можно и обсудить.
Лично для себя я предпочитаю код (хотя еще 2 года назад топил за… twitter.com/i/web/status/1…
Начнем с пруфов: вот UI модуль моего личного проекта (там не весь UI, только generic), но видно, что на 65 классов… twitter.com/i/web/status/1…
Во-первых я считаю, что верстка интерфейса в коде, это навык (как и умение представлять фигуры в геометрии на основ… twitter.com/i/web/status/1…
Какие я вижу плюсы кода перед Xib'ами:
2. Можно передавать зависимости в init, особенно это важно, если вы избегаете непредсказуемое поведение или (и тако… twitter.com/i/web/status/1…
3. Если вы в команде, то проверка кода (core review) ваших Xib'ов превращается в ад (на самом деле их никто даже не… twitter.com/i/web/status/1…
6. Веселые артефакты, например на Xib'ах нет (не было?) top/bottom edge insets, а поведение с safeArea было непредс… twitter.com/i/web/status/1…
Плюсы IB:
Ну и напоследок, какие фреймворки я использую для Auto Layout в коде:
Ну а сегодняшний опрос про выступления на конференциях :)
День 4: Развитие pet проектов
Сегодня я расскажу что это за фрукт делать свои личные проекты. С какими ошибками мо… twitter.com/i/web/status/1…
Это планировалось 5-ым днем, но я заметил, что у меня целых два 5-ых дня в плане, поэтому немного сдвинул расписани… twitter.com/i/web/status/1…
Начнем с самого важного: "договаривайтесь на берегу". Как бы вы не думали про проект и людей там, у всех очень разн… twitter.com/i/web/status/1…
Вот тут, можно читать с "В 1951 году произошло..." (lesswrong.ru/w/Рациональнос…), сам ресерч тут: www2.psych.ubc.ca/~schaller/Psyc…
А у меня есть такая история (к счастью всего одна) на практике. В 2015 году я был одним из участников команды, кото… twitter.com/i/web/status/1…
Я не берусь сейчас судить какую часть проекта кто сделал, уверен, что я куда меньше, чем второй разработчик.
Но ров… twitter.com/i/web/status/1…
В итоге после этой даты натирала сумма (около 6к$), но после интересных вычислений, получилось, что большая часть э… twitter.com/i/web/status/1…
Я не считал это справедливым, но мне дали понять, что это лучше, чем ничего. Ну а для себя я просто усвоил важный у… twitter.com/i/web/status/1…
А реального положения вещей не существует, эксперимент 1951 года это хорошо показывает) Но если у вас не будет защи… twitter.com/i/web/status/1…
Перед следующей историей я хотел бы устроить небольшой опрос. После него я поделюсь гипотезой, которую сделал.
Перед вами 2 варианта запроса прав на отправку push уведомлений.
Какой работает эффективнее (% людей которые дали согласие на отправку им push уведомлений выше)?
Даже учесть, что голосование еще идет, я могу утверждать, что контекстный вариант (по версии аудитории) победил (с… twitter.com/i/web/status/1…
Начнем с ответа на вопрос как это было в нашей ситуации: буквально за три деня теста мы узнали, что версия с запрос… twitter.com/i/web/status/1…
Но правильным ответом я признаю только "я не знаю".
А моя гипотеза была такой: gist.github.com/azimin/55747d5…
Специально о… twitter.com/i/web/status/1…
Но признаюсь честно, я не просто ПОПАЛ в эту ловушку рациональности в свое время, я еще и пропагандировал неправиль… twitter.com/i/web/status/1…
В последнем своем личном проекте за полгода мы провели около 30 a/b тестов.
Научились очень многому, перестали смо… twitter.com/i/web/status/1…
Если в личном проекте у вас нет времени поднимать бек, а проводить эксперименты (проверять данные) вы хотите доволь… twitter.com/i/web/status/1…
Разрабатывая пет проекты я столкнулся с 2-мя проблемами, которые являются отголосками профдеформации:
Стоит пояснить что значит каждый из них:
При чем это проявляет себя не только на этапе отбора приоритетных задач, но и на этапе генерации идей. Это относитс… twitter.com/i/web/status/1…
2. Вторая проблема местами еще хуже, из-за привычки разрабатывать сложные системы возникает желание подготавливать… twitter.com/i/web/status/1…
Когда я разрабатывал первую версию своего проекта, мне казалось, что люди будут генерировать контент, а я буду отда… twitter.com/i/web/status/1…
Разработка и отладка такой системы потратили примерно 20% всей времени разработки, тем более я еще решил покрыть ее… twitter.com/i/web/status/1…
Такая же история настигла функционал: "пригласи друга, который установит приложение и получи pro-функционал". Я отк… twitter.com/i/web/status/1…
Когда все же внедрили (подняв BaaS) – данная фича не оправдала себя, но буквально сразу появилось много важных фич,… twitter.com/i/web/status/1…
В итоге как я решил эти проблемы?
Со 2-ой оказалось в меру просто, я обещал себе упрощать код до максимума (и гавн… twitter.com/i/web/status/1…
В итоге все что связано с платежами и игровой движок декомпозированы, покрыты тестами и т.п.
А вот остальное все в… twitter.com/i/web/status/1…
С 1-ой проблемой я так и не понял как бороться (это почти как бороться со своим мышлением). Я стараюсь быть непредв… twitter.com/i/web/status/1…
Так что если кто-то знает как с таким бороться (расширять парадигму мышления), то буду очень рад услышать мнение :)
Ну а сегодняшний опрос про выступления на конференциях :)
Из вчерашнего обсуждения, среди тех, кто "не выступал, но хочу", поделитесь, пожалуйста, какие основные причины, ко… twitter.com/i/web/status/1…
Сегодняшний опрос будет о пет проектах.
Есть ли у вас свое личное приложение?
День 5. Смена направления
Я все отхожу от плана, но мне показалось, что в предыдущие дни было мало технических веще… twitter.com/i/web/status/1…
Начнем с небольшого обсуждения, многие из нас пишут юнит тесты, а какие юнит тесты без Mock-объектов?
Тут я бы хоте… twitter.com/i/web/status/1…
В Badoo мы использовали github.com/krzysztofzablo… и наши самописные шаблоны для него. Сначала были фейк объекты без д… twitter.com/i/web/status/1…
В их функционал входило отслеживание кол-ва вызовов, история аргументов, возможность быстро задать возвращаемый арг… twitter.com/i/web/status/1…
Меня вдохновила эта история и изучив пару решений, для своего проекта я выбрал SwiftyMocky (github.com/MakeAWishFound…… twitter.com/i/web/status/1…
Из минусов:
Эта ветка будет посвящена Swift'у, в отличие от Java, Objective-C и, возможно, Kotlin у него с этим пока самые большие пробелы :)
Но, из интересного: начав использовать этот инструмент, я немного расширил то, как я описываю тесты.
Именно возмож… twitter.com/i/web/status/1…
А какие инструменты используете вы для создание Mock-объектов в Swift?
@mobileunderhood Да нормальные. Зато не детекторы изменений. Кучу копий сломали на эту тему, но в целом мок обычно… twitter.com/i/web/status/1…
Спасибо, такое мнение тоже слышал :) Куда лучше покопать, чтобы глубже понимать потенциальные уязвимости моков? Как… twitter.com/i/web/status/1…
@mobileunderhood Тема интересная и сложная 1. У нас дофига когнитивных искажений. И хотя они сводятся к небольшому… twitter.com/i/web/status/1…
Спасибо.
Да, было бы интересно услышать мнение на эту тему, а если еще источники будут, то вообще +10 к карме :) twitter.com/KZolotov/statu…
@mobileunderhood Вот сейчас у меня менеджер боится, что индусы (ну ты понел) потратят такое количество времени на и… twitter.com/i/web/status/1…
Ну это уже работа с "proof of concept", для меня рецепт простой:
3. Ведет эксперимент (например втягивает фреймворк и покрывает N компонентов тестами)
6.1. Если оказывается, что по мнению разработчика все хорошо, то эксперимент продолжается на еще какого нибудь член… twitter.com/i/web/status/1…
Такое, конечно же, могут позволить только достаточно большие компании.
Но, обычно, и проблемы с тем, что какой-то… twitter.com/i/web/status/1…
День 6: Гавнокодинг, MVP, хакатоны, борьба с iOS фреймворками
Всем привет, я пропал, но вернулся!
Сегодняшний ден… twitter.com/i/web/status/1…
Давайте сразу обозначим: в моем мировоззрении есть 2 типа людей (если грубо
Но мы же с вами рациональные люди, понимает, что у всех свои цели, поэтому никого обзывать не будем :)
Но я сразу… twitter.com/i/web/status/1…
Начнём с понимания т.з. аудитории
Если код плохой (говноокод: сложно расширять, минимум тестов и т.д.), но продукт… twitter.com/i/web/status/1…
@mobileunderhood Это нормально) всё равно через пару лет переписывать с нуля
Это, кстати, по моему опыту, одно из самых больших заблуждений: «сейчас запилим их палок, а как поднимем деньги – п… twitter.com/i/web/status/1…
@mobileunderhood Можно модулями переписывать код в нормальный.
Я приверженец подхода, что при первом написании компонент не стоит усложнять (конечно исключения тоже есть), а уже… twitter.com/i/web/status/1…
Можно считать за некий «кредит доверия», чем чаще код определенного компонента себя не оправдывает, тем больше сил… twitter.com/i/web/status/1…
Давайте начнём с темы хакатонов.
Я участвовал в русских и европейских хакатонах, за все время выигрывали в 3 номи… twitter.com/i/web/status/1…
Вообще я читал доклад на эту тему в Yandex: youtu.be/AFLQCta5OKw
Но с того момента появились новые детали и я н… twitter.com/i/web/status/1…
Хакатон, если вдруг кто-то не знает, это формат, когда вы за 24-48 (иногда и больше) часов пилите идею (приложение,… twitter.com/i/web/status/1…
Плюсы хакатонов:
Минусы:
Но пункт про знакомых очень важен:
2. За время хакатонов я познакомился со многими клеевыми ребятами из других команд (например бывший R&D отдел приз… twitter.com/i/web/status/1…
Почти всегда команды уже до хакатона сформировали идею, почитали про жюри и, возможно, даже придумали дизайн (если… twitter.com/i/web/status/1…
Но давайте по порядку:
2. Вам надо собрать команду (довольно часто на хакатонах можно найти людей на месте, но это не очень хороший вариан… twitter.com/i/web/status/1…
Человек, который умеет презентовать (часто он же собирает всех и придумывает идею) важен, если вы хотите донести св… twitter.com/i/web/status/1…
3. Дальше вам надо придумать идею. Обычно мы собирались командой в кафешке и устраивали брейншторм. Упрощает задачу… twitter.com/i/web/status/1…
Если у вас уже есть какие-то наработки или идеи, которые вы хотите реализовать, то можно подстроить под тематику ха… twitter.com/i/web/status/1…
4. Зарегистрироваться (если это надо делать с описанием идеи)
Некоторые компании, кстати, практикуют внутренние хакатоны.
Давайте узнаем сколько людей из нашей аудитории сталки… twitter.com/i/web/status/1…
@mobileunderhood Есть опыт организации хакатона в конторе со средним возрастом 30+, у большинства есть дети и нет в… twitter.com/i/web/status/1…
Я забыл описать часть «борьба с системными фреймворками», поэтому проведу этот тред сегодня (а потом перейдём к плану Дня 7)
Наверное «верха карьеры» (если так можно назвать) я достиг, когда боролся с in-call status bar багами в приложении… twitter.com/i/web/status/1…
Этот компонент содержит очень много багов, которые Apple решили не чинить, вот пара:
На словах понять сложно, но к конце треда я дам ссылки на доклады, где я подробно расписывала эти баги.
Задача ест… twitter.com/i/web/status/1…
Когда я только получил задачу: первые 2 дня я потратил на попытки сделать все «законно», переписывая куски кода на… twitter.com/i/web/status/1…
В итоге пришлось изучить задачу детально. И я полез в Hopper (hopperapp.com), проведя ещё пару дней изуча… twitter.com/i/web/status/1…
Как результат у нас оказался единая и кастомная точка для работы с изменениями status bar (если бы разработчик в бу… twitter.com/i/web/status/1…
В задачи этой точки входило «ручное» управление поведением рамок у UIWindow и всех модальных окон исключительно в м… twitter.com/i/web/status/1…
Чтобы избежать всех потенциальных рисков были введены правила:
2. Реализацию этот системы можно было отключить в «1 строчку», если бы в новой iOS что-то сломалось
4. Многое части системы были покрыты асертами, которые логировались в продакшене. Включая название приватных классо… twitter.com/i/web/status/1…
Все это веселье я описал в докладе на iOSCon: skillsmatter.com/skillscasts/11…
А кусок этот системы, вместе с описанием того… twitter.com/i/web/status/1…
День 7 (последний день): Общение
Сегодня выходной, но я с удовольствием готов ответить на любые ваши вопросы или о… twitter.com/i/web/status/1…
Друзья, на этом неделя подошла к концу, спасибо всем, кто читал меня!
Было очень интересно узнать ваше мнение и рас… twitter.com/i/web/status/1…
В течении ближайшего часа я ещё буду тут и смогу ответить, если вдруг остались вопросы.
Ну а меня всегда можно фол… twitter.com/i/web/status/1…
- https://github.com/uber/ios-snapshot-test-case
- https://github.com/cocoaheadsru/application
- https://gist.github.com/azimin/55747d5e797431ac0f12159135d5597b
- https://github.com/krzysztofzablocki/Sourcery
- https://github.com/MakeAWishFoundation/SwiftyMocky
- http://bfy.tw/LtME
- https://www.webopedia.com/TERM/W/watchdog.html
- https://s3.amazonaws.com/files.appannie.com/reports/1901_State_of_Mobile_Main_EN.pdf
- https://www.youtube.com/watch?v=mTV45Qa8ZRI
- https://youtu.be/AFLQCta5OKw
- https://medium.com/bpxl-craft/the-value-is-the-boundary-7c4d65322896
- https://telegra.ph/Umenie-iskat-problemu-01-23
- https://lesswrong.ru/w/Рациональность_введение
- http://www2.psych.ubc.ca/~schaller/Psyc590Readings/Hastorf1954.pdf
- http://speakers.appsconf.ru/
- https://www.hopperapp.com/
- https://skillsmatter.com/skillscasts/11554-lightning-talk-ios-status-bar-in-depth