Александр Шушунов

Александр Шушунов

Темы
Неделя
Jun 22, 2020 → Jun 28, 2020

Архив недели @AShushunov.

Понедельник


Привет. Меня зовут Саша (@AShushunov). Я типичный лид фронтовой команды из аутсорсинговой компании. Иногда выступаю с докладами на различных конференциях. Активно участвую в развитии Тверского комьюнити tver.io. Поговорим о моих буднях и повседневных задачах.

И я до этого не пользовался twitter. Так что подсказывайте, если что не так.

Сегодня стартует HolyJS. Поэтому начнем с моего спикерского опыта. Может поэтому меня сюда и позвали :). Я делал доклады на KharkivJS, FrontendConf, FrontTalks и других.

Как я начал выступать? Как-то меня попросили подготовить доклад для внутреннего митапа. Я согласился. Он получился неплохим. И я решил выступить с ним где-то еще.

Подался на RSConf. Мне сказали, что доклад норм, но нужен другой. Подготовил. Выступил. Понравилось :) Подался с ним же на OdessaJS. Они сказали, что ок, но... Вы поняли )

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

🔥Тред (Александр Шушунов)
Чуток наброшу ) На подготовку доклада я трачу очень много времени. Приведу пример. Для последнего выступления я часов 6 “шлифовал” один кусочек, который в выступлении занял < 5 мин. Поэтому я считаю, что выступать с одним докладом - много раз это ок.

Можно сделать сравнение с представлением в театре. Тратится много сил, чтобы те 40 минут перед проектором обрели форму, которую видит зритель.

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

Через 10 мин стартует #HolyJS 2020 Piter. У меня родился вопрос. А какая конфа у вас самая любимая? У меня - #KharkivJS. Мы столько всего перетерли в кулуарах! И публика там там не только умная, но и приятная во всех смыслах ;)

Для всех своих докладов я делаю репозиторий на github.com. В нем помещаю весь код из примеров, все упомянутые ссылки, ссылку на слайды и видео. Для примера, все тот же доклад про #Svelte. github.com/AlexanderShush…

Перепечатывать ссылк или код с видео - не самое приятное занятие :)

К вопросу, как я готовлю слайды. В прошлом году подготовил мастер-класс на тему, как делать слайды. Проводил его несколько раз, но запись только одна и не очень удачная. youtube.com/watch?v=vWZWkt… Репа: github.com/AlexanderShush…

Сегодня походил по залам #HolyJS. Dario зажег! holyjs-piter.ru/2020/spb/talks… @hardkoded, thx for your inspiring talk!

Вторник


Всем доброе утро. Я вроде начал понимать, как работает twitter. Это оказалось не так просто. Я могу запутаться в тредах и не ответь кому-то. Не серчайте )

Сегодня поговорим о сообществе Тверском IT-сообществе tver.io! У нас нет разделения на бек, фронт, тестирование и т.д. Мы объединяем всех. Объединение и общение - главные цели сообщества. Мы проводим разные мероприятия: митапы, мастер-классы, дискуссии и т.д.

Моя роль - формирование программы, прослушивание докладов и видение событий. Помогаю начинающим сделать классное выступление. Романа Гордеев, Ярослав (@losyear) и многие другие помогают делать крутые вещи.

На #HolyJS полезный техток про полезности из FP holyjs-piter.ru/2020/spb/talks…

На какой следующий доклад пойти?

Одна из главных частей мероприятия - контент.

После того, как у нас появляется идея митапа мы начинаем формировать программу и открываем CFP tver.io/call-for-paper… (добавьте в закладки ;) Но не просто сидим, и ждем заявки, но и сами активно зовем.

Мы стараемся как звать прокаченных докладчиков, так давать сцену новичкам.

К нам в гости с рассказами по фронту приезжали @pepelsbey, @lucyhackwrench, @_lttb, @Neesoglasnaja, @AntonK52, @amel_true, @andrey_sitnik, Полина Гуртовая (кто знает ее Twitter?) Классных спикеров было больше, просто памяти не хватает )

Как позвать Ситника на свой городской митап? Пишешь ему и зовешь! Кстати, часто расходы на логистику берет работодатель спикера :)

🔥Тред (Александр Шушунов)
Как я говорил, у нас выступают и начинающие спикер. Я им помогаю с подготовкой.

Получаются лучшие доклады мероприятий. Например, рассказ Николая Кальгина лямбдах на Go (youtube.com/watch?v=e3YcNh…) или выступления Ярослава про React Reconciler (youtu.be/3Yy_YUTZxe4?t=…)

Если есть классная тема и желание попробовать выступить - смело подавайтесь. С формой мы поможем!

Прошел очередной день #HolyJS. Мне понравился рассказ Никиты Мостового (@xnimorz) holyjs-piter.ru/2020/spb/talks…

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

Спасибо Александру (@vaier) за модерацию.

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

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

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

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

В этом нам помогают наши партнеры. Мы провели много митапов на уютной площадке JetRockets (@jetrockets_pro). Фоточки из зала можно глянуть здесь vk.com/albums-1059494…

Большое спасибо еще одной тверской компании Hoodies (hoodies.company) за поддержку.

Благодарая Prime Group (primegroup.ru) у нас на канале (youtube.com/channel/UCl5Uj…) есть замечательные видео выступлений.

Большие компании Accenture (@Accenture) и EPAM (@ru_epam) тоже не забывают про сообщество.

🔥Тред (Александр Шушунов)

Среда


Я тут говорил, что организация комьюнити мероприятий, это гемор еще тот. Так зачем я это делаю. Причины три.

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

Для меня развитие tver.io, это мой вклад в “общее дело”. Вообще меня поражает современный мир ИТ. Здесь люди умудряются постоянно что-то отдавать, но при этом беднее не становятся. Я бы сказал наоборот.

Вторая причина, это поддержание какой-то ИТ движухи в Твери. У нас 160 км до Москвы. Как сделать так, чтобы у юной разработчицы было меньше поводов свалить? Надеюсь наличие tver.io добавляет плюсов к решении остаться в в нашем славном городе.

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

Формируя программу я бессознательно выбираю людей, с которыми мне бы было интересно пообщаться. Это реально уникальная возможность формировать свои профессиональный круг общения из супер профессионалов.

И мне не надо никуда ехать ;)

🔥Тред (Александр Шушунов)
Последний пост про tver.io. Зову всех в гости! Пока онлайн. Но когда-то зараза уйдет и мы сможем встречаться в оффлайн. Приезжайте!

Соврал. Не последний ) В рамках #HolyJS пройдут круглые столы на тему комьюнити-ивентов. Наши люди тоже там будут )

Сегодня в 18:30 Ваня (@jonny_novikov) пойдет на Круглый стол "Много дней из жизни организатора комьюнити-ивента"

А в пятницу в те же 18:30 Илья (@ilialesik) примет участие в Круглом столе "Как сделать свой первый PR в комьюнити-ивенте".

Для меня сегодня #HollyJS начинается с доклада про статическую типизацию. holyjs-piter.ru/2020/spb/talks… Сегодня о ней и поговорим.

Для меня статическая типизация - это линтер на стероидах.

Что мы делаем, когда описываем типы в нашем приложении? Мы строим некоторую модель, систему ограничений, систему правил. А линтер проверяет, что наш код соответствует этим правилам.

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

Это почти TTD. Описываем, что мы хотим получить, а потом реализовываем. И наш “компилятор” проверит, что реализация соответствует идеи.

Но в отличии от тестов, которые проверяют что-то точечно, типы проверяет все кейсы.

Пример. Мы описали результат вызова апи как объектик {ok: boolean, ...} Можно написать логику и тест только на положительный кейс, забыть про ошибки, и система не ударит тебя по рукам. А типы зафорсят тебя описать все ветки.

Если чуток подумать, то можно сделать все совсем красиво. Подробнее в докладе Артёма (@rage_monk) и Дмитрия (@DmitryMakhnev) с #KharkivJS youtube.com/watch?v=S0cCjb…

🔥Тред (Александр Шушунов)
На трансляции #HolyJS появилась полезная кнопка! Спасибо от все опаздывающих!
notion image

Когда я пришел на текущий проект тут был Vue и чистый (и не очень) JS. Посмотрев на то как TS встраивается в мир Vue 2, я решил что переводить проект на TS вряд ли буду.

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

Но в определенный момент встала задача прикрутить клиентское кэширование. А это декораторы и адаптеры. Мне было очень больно без статической типизации.

И я начал прикручивать TS. Это оказалось очень просто! - добавляем в babel preset - дописываем ‘.ts’ рядом с ‘.js’ в конфиги вебака

Все хорошо. Но где проверка типов? В tsconfig.json можно указать "noEmit": true, и запуск tsc превращается в запуск линтера, проверяющего типы! То что надо!

Еще несколько часов гугления настроек для eslint и jest и все работает как и прежде. Но мы можем часть кода писать на ts.

Мораль. Прикрутить ts к существующему проекту - один рабочий день. Правда потом вы потратите 5 на описание типов ваших этюдов в метрогамировании. Но это будет потом )

🔥Тред (Александр Шушунов)
Я заметил, что тесты у нас часто остаются js. Стабинг и мокинг типизировать не просто. Когда я пятый раз пишу в тесте any, то понимаю, что лучше оставить этот тест на js.

Например, action во vuex принимает контекст со 100500 полями. Если в конкретном экшене я из использую только одно, то мне приходиться делать приведения через any или городить монструозные стабы.

Четверг


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

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

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

А если заменить кота на интерна, который 2-ой день на работе? То каждый работодатель должен требовать от проекта построения такого окружения. Мне кажется хороший поинт, чтобы продать бизнесу подобные нефункциональные доработки ;)

🔥Тред (Александр Шушунов)
Еще разок про тесты и типы. Я стараюсь всегда типизировать тесты. Тесты часто являются первым “потребителем” нового интерфейса. А типы - часть интерфейса. Пока пишешь тесты понимаешь, это вообще удобно использовать?

Я описал случай, когда тестируемая функция использует только часть входа. И тут всякие разные приведения к any могут намекнуть, что может сузить вход функции?

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

Вчера на #HolyJS был классный рассказ от Rajat Kumar (@rajatkumar) про то, как делать миллиарды миллиардов версий бандлов для одного продукта. Если у вас есть жесткое ограничение, что все приложение должно быть в одном бандле, то вас может заинтересовать предложенный способ.

Глянул доклад от Phil Hawksworth про Utility-first CSS. Не продал. Может я не проникся пока ) holyjs-piter.ru/2020/spb/talks…

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

Приведу пример, с которого у меня бомбит. В дохуковую эпоху была мода обращаться к сервисам за данными в componentDidMount. Это прямо в доке написано.
notion image

Т.е. событие добавления узла в html вызывает какую-то бизнес логику? С одной стороны модные фрймворки берут на себя все заботы о DOM. Дают прекрасный уровень абстракции. С другой - дают нам как-то влезать в кишочки этой абстракции.

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

🔥Тред (Александр Шушунов)
Оценил формат онлайн формат #HolyJS. Посмотрел доклад Андрея (@amel_true) в записи. holyjs-piter.ru/2020/spb/talks… Задавал вопросы в чат и получал ответы. Спасибо Андрею, что не вышел из чата и поддерживает дискуссию и после доклада.

Про сам доклад. Как всегда - агонь! Пролог Андрей рассказывал на tver.io (youtube.com/watch?v=8TWgQ5…)

Как все закипело ) Но вернемся к State Manger. Я столкнулся с вот с какой проблемой. В идеале БЛ не должна зависить от фреймворка. Но у муня всегда получается что-то поверх конкретного SM (Redux, Vuex и т.д.) Как развивать логику и конкретный SM?

Пятница


Тут в бесконечных тредах возник вопрос. Что считать Бизнес Логикой? У меня есть требование: "Список по умолчанию отображает первые 5 пунктов. Но если пользователь что-то в этом списке выбрал, то он показывается полностью." Это Бизнес Логика?
🤔 42.0% Да
🤔 35.6% Нет
🤔 22.4% Чё?

А если усложнить задачку? Нужно отображать первые пять и те, которые участвуют сегодня в акции.

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

Каждый раз, реализации перетекали в отдельные функции и вышестоящие компоненты. В один момент я просто не смог сделать очередную задачу! Только рефакторинг и перенос формирования View Model в одно место позволили решить задачу.

Кто сегодня идет смотреть на братюню (@rm_baad) из Фронтенд Юности (@frontend_u)? Описание попахивает аспектами, джавой и метопрограммированием :). holyjs-piter.ru/2020/spb/talks…

Там еще эксперт огненный! Михаил (@SaitoNakamura) как-то в баре! мне показывал код получения типов и что с этим можно делать )

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

Воскресенье


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

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

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

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

Многие врачи и ученые говорят, что помогают 2 вещи: Нужно постоянно заниматься умственной деятельностью. И желательно делать новенькое. Заниматься циклическими видами спорта.

С первым у нас в профессии и так все хорошо. Можно к этому докинуть изучение языков и путешествия (не что не бодрит мозг так, как попытка поменять 100$ в Китайской провинции) А во второе надо просто втянуться )

🔥Тред (Александр Шушунов)
Как я начал бегать? Встал с утра доехал до Декатлона, купил кроссовки для бега и побежал. Цена попытки - 3К рублей.

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

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

Конечно вес и бег связаны не напрямую. Но я похудел килограмм на 10 за первые полгода.

🔥Тред (Александр Шушунов)
Еще у бега есть крутая фишка, это беговой туризм. Тут есть два вида. Первое, это ехать в какой-то город на соревнования.

Обычно они проходит по центральным улицам, кругом много движухи и вообще, праздник спорта. В этом году в мая я должен был бежать Рижский марафон (rimirigamarathon.com/en/), но что-то пошло не так :(

Вторая тема, это бегать в городах, в которых ты бываешь по работе или в отпуске. Например, можно добежать до крутого вью поинта в Багане и встретить рассвет. strava.com/activities/234… или устроить “Жмурки ран” по Нижнему после митпапа strava.com/activities/234….

Есть еще така тема - parkrun.ru. Во многих городах по субботам в 9 утра каждый может прийти и пробежаться 5 км в компании доброжелательных бегунов. Я пока не пробовал бегать за пределами Твери, но при случае (эх, когда он наступит) обязательно пробегусь.

Еще тема пробежки с в компании. 2 часа по лесу в неспешном темпе бежишь и трешь за жизнь. Как в бар сходить, только печень не страдает )

Что-то я злоупотребляю словом тема 🤔

🔥Тред (Александр Шушунов)
Есть у бега и негативные моменты. Первый - время. У меня сейчас недельный объем 50-60 км. Чистого бега выходит на часов 6. Плюс надо собраться, после - растяжка, душ стирка.

По выходным у меня в программе длительные тренировки. Я стараюсь ездить куда-нибудь в лес. Прибавляем время на дорогу. А почить marathonec.ru перед сном, повыбирать очередные кроссы, полайкать друзей в Страве? Думаю, что часов 10-12 в неделю у меня на это все уходит.

Еще нужно спать. Тут 4-мя часами не отделаешься. Для нормального восстановления нужно 8 часов +/- выделить. Иначе будет перетрен и вообще фигово.

Бывают травмы. Я за два года в больничке был пару раз. Пока отделывался массажем и ОФП. Советую, посмотреть в иенте профилактику травм. Вы найдете 100500 советов. Главные из них - хорошая обувь, увеличивай нагрузку медленно, ОФП, поработай чуть-чуть над техникой.

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

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

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

Про бабло напишу отдельный тред.

🔥Тред (Александр Шушунов)
Про бабло. С одной стороны, его надо много. С другой, смотря чем сравнивать. Все цены в рублях.

Тут много было про колени. Одно из условий их сохранить - хорошая обувь. Пара хороших тренировочных кроссовок стоит 8-10K. У всех брендов есть топ за 12-15K и младшие модельки 5-7K. В принципе, любой вариант ок, если по ноге сидит.

У кроссовок есть максимальный пробег. Это 700-1000 км после которых в них лучше не бегать. Теряются амортизационные свойства. Если бегать по 60 км в неделю, то за год уходят 3 пары. = 27к. За последнее ТО машины я отдал 21K. Т.ч. расходники не сильно дороже )

В процессе бега начинаешь докупать вещи: носки, шорты , тайтсы, ветровка, флиска, перчатки. У меня дорогие тайтсы (3k), а остальное из Декатлона все на 5k потянет.Но я это один раз купил и что-то оно не изнашивается. Ну пусть 3K в год амортизация.

Футболки я не покупаю - остаются с забегов. Забеги. Например слот на Московский Марафон - 4K. Забег РФ в Твери я брал 10-ку за 1к. Если бегать пару больших стартов и пару мелких, то 10К в год уйдет. Дорогу, проживание и т.д. я скорее отношу к тратам на туризм.

Разные аксессуары. Самое дорогое - беговые часы. У меня Polar M430. Стоили около 17К. Думаю через годик сменить. Пояс под бутылки с водой, фоам-роллер, гели, изотоники и всякие мелочи. Думаю тысяч 7 в год уходит.

Больничка. Курс массажа 10-сеансов стоит 15К. Раз-два в год полезно. Но делаю не чаще раза в год. Ленюсь. Если что серьёзней - может дорого встать. Но идите к с спортивному врачу. Обычный посмотрит на вас и скажет дома сидеть, тогда и болеть ничего не будет )

Тренер. 6K в месяц. Это только удаленное ведение. 72К в год. Итого расходы за год. Без тренера 62K. Тренер - еще 72.

🔥Тред (Александр Шушунов)
Про бег и здоровье. Если у вас есть проблемы с сердцем, избыточный вес, травмы опорно-двигательно аппарата или вы беременны, то сходите перед первой пробежкой к врачу. У бега мало противопоказаний, при которых он категорически запрещен. Но они есть! Берегите себя.

Через 3 мин закончится моя неделя в @jsunderhood. Спасибо за ваши реакции и ответы. Надеюсь было интересно. А кто-то даже нашел что-то полезное. Всем добра и поменьше багов. 😘😘😘

Ссылки