Евгений Паромов @cleanfrontend Channel on Telegram

Евгений Паромов

@cleanfrontend


Автор сообщества https://paromovevg.ru/evolution-community

Пишу о грандиозных планах изменения системы IT образования.

Об успехах, неудачах, борьбе с собой. И постепенном движении к своей, возможно слишком смелой, цели 🎯

Я: @paromovevg

cleanfrontend (Russian)

Евгений Паромов — автор сообщества cleanfrontend, который посвящен грандиозным планам изменения системы IT образования. Здесь Евгений делится своими успехами, неудачами и борьбой с собой на пути к своей, возможно слишком смелой, цели. Следуя за ним, подписчики канала узнают о новых тенденциях в сфере IT образования, об инновационных методах обучения и о том, как преодолевать трудности на пути к успеху. Присоединяйтесь к сообществу cleanfrontend и узнавайте первыми обо всех обновлениях! Для связи с Евгением Паромовым, обращайтесь по имени пользователя @paromovevg.

Евгений Паромов

30 Jan, 15:02


Кризис...

Вообще, слово «кризис» воспринимается, как что-то плохое. Вот жили-были, а тут, хренак, и кризис.

Для меня же кризис – это благо. Значит вот мой новый шанс сделать свою жизнь ещё лучше и счастливее.

Последние 2 месяца у меня жёсткий кризис. Начался он как раз с решения отделить интерес и работу (об этом рассказывал в прошлых постах)

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

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

СПАСИБО огромное всем, кто присоединился в сообщество в это время. Незаметно нас стало уже 200 человек. Благодаря вам я смог спокойно покризисовать пару месяцев без угрозы остаться на улице без денег.

Так вот. Кажется, что жесть, кризис – это плохо. Но я сейчас счастлив, что он со мной произошёл.

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

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

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

Делаем всё, чтобы через толстую броню почувствовать хоть каплю тех эмоций, которые были в детстве.
(Уверенно говорю «мы», так как мы из одной культуры и все IT-шники)

А что, если можно просто вспомнить как это – чувствовать? И тогда окажется, что жизнь намного прекраснее и многограннее, чем мы её видим. И для этого достаточно просто...

Хотелось бы мне сказать, что есть простой способ достичь этого. Но его нету. Это тяжёлая работа над собой и с чувствами. Но это того стоит. Очень стоит)

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

Всем хорошего вечера 🤗

Евгений Паромов

30 Jan, 15:02


Возвращаюсь

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

В общей сложности получилось 58 паттернов, на 20+ часов контента.
+ Записи QA сессий с проверками домашек, ещё на 10+ часов пользы

В результате разобрал вообще всё, что нужно для написания качественного кода на React.

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

Все паттерны разделены на группы:
- Антипаттерны
- Как разделять код на компоненты
- Как создавать архитектуру стратегическую и тактическую
- Как организовывать состояние
- Как писать инфраструктуру
- Как правильно оптимизировать

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

Когда теперь меня спрашивают, как сделать что-то, уже просто хочется отвечать:
«А посмотри паттерн 35. Там рассказано, как отделить кэш от состояния пользовательского ввода, тебе это поможет»

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

Особенно приятно слышать от ребят "Вот это мы уже внедрили к себе на работу. Вот этот паттерн открыл мне глаза, как работать с состоянием". Для меня это самые ценные моменты 😊

А ещё за это время в сообществе вышел воркшоп по Аутентификации на Access и Refresh токенах. Так что, если интересно, всё доступно по одной не самой дорогой подписке)

Вот так пишу и, кажется, что я вообще молодец, сделал офигенный курс. Но все эти 2 месяца у меня происходила внутри ещё одна большая борьба ⤵️

Евгений Паромов

31 Dec, 18:25


Итоги года!

Все, как обычно, подводят итоги года. И я подведу, но в своем стиле.

Этот год был имени: "Повзрослей уж наконец, б**ть"

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

– Зп хорошая
– Работу найти легко
– Ответственности никакой
– Интересно, шо пипец. Можно всё время делать, что нравится, если ты бывший геймер
- HR тебя по головке гладит и поддерживает, если работу хорошую нашёл (спасибо evrone за 2 самых спокойных года моей жизни)

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

Но я этого не понимал. Долго не понимал.

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

Тут я решил запустить менторинг. Набрал себе 5 групп. Особенность моего менторинга то, что он очень затратный по часам (16 часов в месяц на группу). Но жить на эти деньги мог, и даже чуть лучше, чем на работу.

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

Но мне через месяц стало скучно 🤦‍♂️. Я понял, что на работе у меня был огромный источник дофамина по 8 часов в день. А теперь нет. После месяца без программирования началась ломка...

И в этот момент мне пришла в глову ещё одна "взвешенная" идея. Запустить сообщество.

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

В результате я получил:
- Фигачу по 60 часов в неделю на сообществе с менторингом
- По деньгам чуть больше, чем на работе
- Это всё равно не настолько интересно, как программирование
- Оказалось, что людям нужно то, что им нужно, а не что мне интересно

И вот последнее мне наконец вправило мозги!!!

О господи, а может всё время гоняться за интересом/ своими эмоциями/ своими позывами – это не самая эффективная стратегия?

Может уже разрешить себе поигрывать на выходных в дотан, а на работе приносить людям пользу и зарабатывать деньги???

После этого осознания я запустил в сообществе первый курс, который выбрал не от интереса, а от запроса ребят.

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

В общем, самый главный итог за год: возможно, я, наконец, повзрослел

Классика для меня: самая большая борьба происходит не снаружи. Снаружи всё, как всегда, легко.
Главное победить демонов внутри 😤

🎄Всех с наступающим, друзья! Желаю вам быть в ладах с собой и достигать всех поставленных целей 🎄

Евгений Паромов

24 Dec, 18:58


Новый видос по React 19

Недавно вышел React 19 и он как-то спокойно был принят сообществом. Я не слышу какого-то хайпа вокруг этого.

Хотя новые фишки React – это лютая мощь!

Но, к сожалению, они не выглядят таковыми, так как React сконцентрирован не на хайповом 😔

В какой-то момент авторы React подумали: "а какая разница, как быстро всё работает, если главное, как оно ощущается"

Поэтому вместо спешной замены "неэффективной" парадигмы рендеринга, React переколбасил вообще все исходники для внедрения "конкурентного рендеринга"

Если вкратце – суть конкурентного рендеринга в приоритизации!

Пример: Вы делаете переключалку селекта языка. Как сделать так, чтобы она быстро работала?
1. Можно всё супер пупер оптимизировать, чтобы всё заменилось мгновенно. Но это почти не возможно, так как главное ограничение будет в DOM

2. А можно сделать хитрее. Можно все элементы, с которыми пользователь взаимодействует, "приоритизировать", а всё остальное перерисовать асинхронно

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

Мы привыкли, что после переключения чего-то, часто происходит "загрузка" данных.
И нормально, что может происходить "загрузка", но уже тяжёлого куска интерфейса.

Так в React 18 появились useTransition, startTransition, useDeferredValue

После этого ребята из React подумали, и такие:
«
Хммм, если транзишены так близки по сути к запросам, может тогда их плотно с ними интегрируем?»

И вот выходит React 19 с возможностью передать асинхронную функцию в startTransition и стабильным use.

В результате мы получаем следующую возможность.

Мы можем нажать на кнопку:
- Реакт начнёт переход и в процессе этого перехода пользователю будет показываться старый интерфейс и лоадер на кнопку
- В процессе этого перехода можно сделать мутацию данных на сервере
- Потом инвалидировать данные с сервера и перезапросить (всё ещё показывается старый интерфейс)
- Потом Реакт применит новые данные, и в фоне отрисует новый (возможно, тяжёлый dom)
- И, когда всё будет готово, React просто вставит на страницу новый интерфейс!!!

Степень интеграции загрузки данных и переходов просто шикарная!

Все остальные новые хуки: useActionState, useFormState, useOptimistic – это просто помогалки для работы в новом формате. Возможно, авторы React так пытаются сделать больше причин для разработчиков использовать новые функции. Всё же мы редко думаем о ux, а чаще о своём удобстве

Я ещё тут про серверные компоненты не говорю)

В общем, вот этот видос пример, как можно использовать новые фичи React. Жаль, я не додумался посравнивать ux того, что было до, и что стало. Но получилось всё равно крайне интересно!

YouTube | RuTube | VK

Евгений Паромов

24 Dec, 18:54


Ну шо, Youtube полностью заблочили

Только недавно радовался, что на компе он начал работать без перебоев и вот, совсем перестало грузить 🥲

Вы меня давно просили и теперь видео будут выходить на 3х платформах:
Youtube | RuTube | VK

Там уже есть достаточно много видео, спасибо моей жёнушке за старание)

Если хотите ещё какую-то платформу – пишите, добавлю

Евгений Паромов

17 Dec, 16:01


Задача кожаных в мире нейронок

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

И мне захотелось чуть уточнить свою позицию по границам применимости этого инструмента.

Чтобы определить его границы, надо понимать в чём преимущества и недостатки нейронки перед человеком:

Преимущества:
🔹 Она знает намного больше тебя. Количество информации, загруженное в нейронку, значительно больше, чем ты можешь вместить в принципе
🔹 Она не "ленится" и поэтому может нафигачить много-много всего и достаточно быстро
🔹 Стандартные вещи она делает легко и быстро. Нафигачить авторизацию на jwt токенах? Да пожалуйста, за 10 минут

Недостатки:
▫️У неё значительно меньше информации о проекте, чем у тебя. Даже виндсёрф, который сканит кодовую базу, не помнит все ваши миты команды, созвоны с заказчиком. И вообще, у виндсёрфа достаточно ограниченный контекст. Заставить его именно "весь проект засканить" почти невозможно
▫️ Нейронки научены на средне статистическом коде. Так вот, средне статистический код – ГОВНО! Поэтому не пытайтесь просить нейронку рефачить... Это как джуну предлагать рефачить код сеньора. Она просто побьёт на файлики и напишет бестолковые комменты
▫️ Всё же в сфере узкой специальности нейронка начинает проигрывать человеку. У неё может и есть опыт множества лет профессионала, но этот опыт просто перебит количеством кода всякого рода джунов и примеров из документаций

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

Но вот делать нестандартные прорывные штуки и рефакторить должен человек.

Вы скажете, а зачем рефакторить? Нейронка потом сможет весь проект прочитать и ориентироваться в говнокоде.

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

Я тут с виндсёрфом наблюдал, как он кодил большой файл в 1000 строк связанного кода.

Он прям как джун, ей богу. Чёто правил, запускал, читал ошибку, правил, запускал, читал ошибку. Не было ощущения какого-то мегамозга. Это обычный джун, которого вы можете взять в рабство за 15 долларов в месяц (на самом деле, больше, если часто юзать)

При средней цене джуна в 1000$ нынче, это, думаю, хорошее вложение 🙂

Евгений Паромов

15 Dec, 09:30


Windsurf – первый действительно полезный AI помощник!

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

Но тут недавно вышел новый редактор windsurf и я решил его попробовать.

Уже 5 дней на нем сижу и мнение однозначное — вот это уже похоже на революцию.

В чем кардинальное отличие?

Самое главное — полная интеграция во все системы разработки

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

Особенно я выпал, когда делал скрипт генерации контроллеров на основе open api. В какой-то момент он вошёл в цикл:
– Запускал команду
– Смотрел, что генерировалось
– Фиксил код
– Запускал команду

Так за пару часов я получил скрипт на 700 строк, который делал, что мне надо!
Сам бы я делал это дня 2.

(Конечно, там все потом нужно рефакторить, но это уже моя любимая часть 😍)

Особенно мне понравилось прототипировать.
Можно попробовать разные инструменты быстро на полноразмерных экземплах без траты кучи времени.

Одним словом – революция.
Уже 5 дней вим грустит.

Буду держать в курсе, что будет дальше 🙂

Евгений Паромов

13 Dec, 15:17


Сейчас откровенно поливают грязью React

С момента, как стал блогером, очень много всего слышу про React с разных сторон.

Но самая главная претензия: React вынуждает нас писать логику в ui. Еще говорят, что нужно обязательно брать стейт менеджеры и писать логику там

В
этот момент у меня происходит 🤦‍♂️

Говнокода на Redux/Mobx/Effector/любой другой стм я видел не меньше, чем на React. Возможно, даже больше, так как свобода, которую они дают, часто приводит к неподдерживаемым клубкам говна.

А с чистым React я вижу обратное ⬇️
С самого начала React последовательно делал всё, чтобы мы как раз не писали логику в ui. При этом делали это эффективно

Иммутабельность, однонаправленный поток данных, useReducer, setState, который невозможно подождать (думаете, это случайно?)

React толкает нас писать в функционально декларативном стиле! Когда большая часть нашей логики вынесена в чистые функции и вызывается в рендере.

Предчувствую всякие «да реакт императивный и вообще компоненты не чистые»

Тут я отвечу просто:
Функциональная инфраструктура не должна быть чистой. Она должна нас толкать писать чистые функции.

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

Звучит как дикость, но код, который получается, становится до безумия надёжным и простым (из-за минимизации мутаций данных)

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

Так можно описать логику любой сложности (Не считая асинхронных транзакций, но тут вам redux-saga/redux-observable/event-emmiter в помощь). И когда были классовые компоненты, многие так даже и писали. Но потом появился useEffect

Я считаю, что useEffect – это самое ужасное, что произошло с React

Для наших, взрощенных на императивном коде умов, useEffect показался спасением.

Теперь можно делать реактивность. Изменять состояния при изменении состояний. Строить сложную запутанную императивную логику... ОХ 😔

В доке React useEffect находится в Escape Hatches. Ты должен много раз подумать, прежде чем его писать!

А теперь просто вспомните сколько useEffect в ваших проектах...

На самом деле, моё мнение такое:
Идеи и концепции, которые заложены в React прекрасны.

Но, к сожалению, распостранены несколько серьёзных антипаттернов, которые уничтожают большинство приложений на React.

Сейчас я записываю курс для сообщества, который выйдет в понедельник:
«45+ Паттернов React».
В нем я даю практические советы, как эффективно его использовать. Весь мой архитектурный опыт и знания, сжатые в набор конкретных практических советов.

Так вот: первые 7 уроков там – это как раз Антипаттерны React экосистемы.

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

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

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

Этот курс будет с домашками и проверкой лично от меня (если уложитесь в дедлайн).

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

Евгений Паромов

10 Dec, 19:28


У меня произошёл кризис ценностей

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

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

Меня постоянно спрашивали, как я поддерживаю мотивацию. А я не мог ответить, мне было просто интересно.

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

Стоит задача. Я такие делал десятки раз, вообще легкотня. Вроде кажется: бери и делай... А желания делать это вообще ноль 🥲

И именно в этот момент моя мотивация начала проваливаться под пол. Пошли первые выгорания.

Когда вот оно – ты крутой и можешь всё, интерес к работе начал резко и неуклонно падать.

Оказалось, вся моя мотивация в интересе.

Меня не мотивировала ЗП, повышения, похвала на работе. Да пофиг!

Дайте мне интересных задач, да посложнее.

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

Начал создавать новые подходы, педантично следить за качеством, брать новые технологии.

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

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

Но, когда я ушёл с работы, оказалось страшное.

Долгосрочные обязательства и интерес – несовместимые вещи 🙅‍♂️

Часто как: я на интересе готов пахать без особого результата. Ввязываюсь в обязательства, а потом что?

А потом интерес говорит пока👋

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

Когда от эффективности действий результат может различаться в 100 раз. Когда на тебе есть ответственность. НЕЛЬЗЯ ПРИНИМАТЬ РЕШЕНИЯ НА ИНТЕРЕСЕ

Жаль, я понял это слишком поздно. Ну, хотя бы не в 40 лет, и на том спасибо)

Это не значит, что я перестану делать вещи на интересе. Всё моё программирование и open source про это. Просто я буду различать:

1. Тут мне интересно и я не беру обязательств
2. Тут я работаю на результат и при принятии решений интерес вторичен.

Для меня это ключевое решение. Оно немного повлияет на мои образовательные продукты.

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

Думаю, всем станет лучше.

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

Евгений Паромов

07 Dec, 11:27


Свет отключили 🥲

Евгений Паромов

04 Dec, 19:50


Стрим на ютубе с Архитектором про Микрофронты

У меня ооооочень часто спрашивают про микрофронты. Это такая тема, которая всех манит, но которую никто особо не знает, как делать)

На прошлой неделе в сообществе вышел воркшоп по микрофронтам. Его всегда можно посмотреть в записи. Но там мы говорили именно про SPA. А вот как готовить их с Next.js, я не могу очень компетентно вещать.

Поэтому в эту субботу в 14:00. Я позвал Вадима Королёва – Архитектора из Звука, чтобы обсудить эту тему.
(Звук – это аналог Яндекс Музыки)

Они уже 2 года колдуют над микрофронтами на Next.js. И на стриме мы поговорим о всех проблемах и подводных камнях такой интеграции.

Мы познакомились на конференции merge, где он выступал с докладом про Архитектуру. Они на проекте разрабатывают очень занимательный Архитектурный шаблон. Надеюсь, со временем я позову Вадима и на эту тему)

Вадим классный, будет интересно.
Залетайте на стрим в субботу 🙂
https://youtube.com/live/EB2AXKcbUUU?feature=share

Евгений Паромов

29 Nov, 13:45


В сообществе новая эра

Когда я начинал сообщество, думал буду развлекаться и деньги получать.

Всё, конечно же, оказалось совсем не так просто 😉

Я начал активно вкладываться в огромное количество понятного и важного для меня контента.

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

Но ведь именно ради этого я и делал сообщество. Чтобы было как можно больше обратной связи, и можно было делать самое актуальное!

И вот, в сообществе у нас начинается новая эра.

В это воскресенье в 15:00 у нас пройдёт воркшоп по микрофронтам. В нём мы разберём:
- Зачем они вообще нужны
- Как сделать микрофронты на vite modules federation
- Работа с роутингом
- Обратная совместимость
- Переиспользование кода
- Общение микрофронтов

Так вот, эта тема была полностью выбрана ребятами из сообщества.

Они сами её предложили. И при голосовании, из всех тем она получила больше всего голосов.

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

А ещё на следующей неделе стартует курс, который тоже был проинициирован ребятами из сообщества. Там вообще пушка намечается. Скоро расскажу

Присоединяйтесь к нам 🙂

Евгений Паромов

25 Nov, 15:55


Ребят, у меня тут Youtube без VPN заработал. А у вас как?

Евгений Паромов

22 Nov, 19:11


Новые начинания!

После возвращения с holy.js я загорелся идеей взаимодействия с людьми. Конструктивный диалог – это очень интересно и полезно для всех слушающих.

И уже в это воскресенье я договорился встретиться с Львом @illright – лидом команды разработки FSD.

У меня много вопросов к FSD 2.1 и тому, куда дальше будет развиваться FSD. А у него есть вопросы по моему докладу на holy.js. Уверен, будет интересно!

Посмотреть стрим можно будет на youtube (https://youtube.com/live/dsIA2py-Oeo?feature=share)
Пройдёт он в 14:00 (GMT+3) в воскресенье 24.11

Можете задавать вопросы в чате. В конце будем отвечать.

А для ребят из моего сообщества будет возможность быть на встрече лично.

В общем, предчувствую классный движ)

Евгений Паромов

21 Nov, 18:30


Ещё небольшой анонс

Р
екламу за деньги я не даю. Только советую ребят, которые мне нравятся или интересны.

Мне недавно написал Андрей Смирнов и попросил поддержать его конференцию по софтам (Soft Weekend), которая пройдёт в эту субботу.

Посмотрел спикеров и увидел много знакомых лиц. Был бы в Москве, сам бы сходил.

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

А потому что у меня были классные софты и люди закрывали глаза на то, что я не знаю как useEffect работает. Им просто было приятно со мной взаимодействовать.

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

Евгений Паромов

21 Nov, 14:04


Новое видео по Next 15

https://youtu.be/BHHUqhySrt0

Думал, как осветить релиз Next 15, и при этом сделать полезный контент.

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

В чём особенность этого видео:
1. Next.js 15; React 19. Использование самых новых функций
2. Реализация моего FSD в контексте Fullstack разработки
3. Использование подобия монады Either для обработки ошибок
4. Чуть чуть RabbitMQ для реализации событий
5. Server Sent Events для риалтайма в next.js

Получилось очень занятно и объёмно

Как вам, вообще, такой формат? Хотите больше разработки с нуля?

Евгений Паромов

17 Nov, 10:45


За всем этим не рассказал про сам доклад)

Доклад получился хорошим. В основе был 6 урок из курса по FSD про его главные недостатки. Но с важными дополнениями, которые я за год с выпуска курса сформулировал

Всем, с кем общался, понравилось) Но там в принципе все милашки.

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

Но, в любом случае, идею я донёс) Всё получилось достойно. Уже начинаю готовить темы к следующей холи.

Теперь от меня они точно не отделаются ☺️



Кстааати, чуть не забыл. На следующий день после афтепати holy полетел в москву выступать на merge. В 4 лёг, в 11 вылет, в 15 выступление.

С корабля на бал, как говорится. Это конечно не холи, но после доклада очень интересно пообщался с ребятами.

Там был ещё доклад Архитектора из https://zvuk.com/
Они уже 2 года разрабатывают свою архитектуру для фронта. Судя по тому, что мы с ним обсудили, у них получается очень интересное решение, которое собираются выпускать в open source этим летом. Дай бог, выйдет. Всей экосистеме будет от этого сильно лучше

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

Всё больше погружаюсь в спикерство, и всё больше это нравится. Посмотрим, как дальше пойдёт)

Евгений Паромов

17 Nov, 10:04


holy теперь навсегда в моём сердечке ❤️

Ребят, если вы когда-нибудь хотели выступать – выступайте

Это круто! Даже не так. ЭТО ОХЕРЕННО!!!

Я уверен, что для обычного зрителя это тоже классно. Организация на holy идеальная. Спикеры топовые.

Но когда ты становишься спикером, открывается новый мир...

Когда мне говорили слово «нетворкинг», я представлял себе интересные дискуссии с топовыми специалистами.

И да, всё так и было. Это оказались просто топовейшие 2 дня на общение. Которые дали мне кучу мыслей для размышлений

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

Короче, ребят. Словами это не передать. Просто надо попробовать)

Отдельные лучи добра Илье Оловянникову и всему сообществу moscowjs
Просто самые милые люди на свете 🥰

Вообще за holy познакомился с кучей народу и даже договорился на первую коллабу.

Следующий раз, когда буду в Москве, мы с Саней запишем для вас подкаст.

Ещё лично познакомились c Димой, Денисом, Юрой, и ещё с кучей других топовых ребят, у которых не знаю, есть ли блог.

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

Короче, holy.js офигенный. Открылось для меня это всё теперь с другой — душевной стороны)

(В комментах пруфы)

Евгений Паромов

14 Nov, 07:58


Сегодня выступаю на holy.js 🤩

Накануне проехали 1500 км на машине одним днём, отвезли дочку к родителям. Сами полетели в Питер, и вот я тут)

Ощущения следующие:
1. Устал. Последние дни докручивал доклад и прям много сил на этом оставил
2. Здесь совсем другой уровень организации, чем на Стачке. Сразу видно, за что берут такие деньги
3. Я буду выступать на большой сцене. Значит то, что я делаю и говорю, интересно людям. Приятно)
4. Хочется познакомиться и пообщаться с другими спикерами, но пока страшновато... С начала своего блогинга я в определённой изоляции. И сейчас уже дорос технически для коллабораций. Но внутренне как будто ещё что-то меня сдерживает
5. Ребят, если кто на холи и хочет со мной пообщаться – залетайте в дискуссионную зону после доклада. Буду рад увидеть подписчиков)

Евгений Паромов

07 Nov, 18:39


Что я могу дать этому миру

За последние 2 недели со мной произошли важные вещи.

После 6 лет разработки с акцентом на архитектуру и код. После полугода исследований, сотен часов менторинга и десятков часов обучающих курсов. Я, наконец, достиг того, к чему так долго шёл...

Я смог создать систему

До этого я давал разрозненные знания: как лучше работать с Api, как лучше работать с Redux, как лучше работать с FSD.

Но мне не давала покоя одна мысль: "Хоть я и говорю о разном, но я говорю об одном и том же".

Я начал видеть, что нет разрозненных и противоречивых: SOLID, ООП, ФП, GRASP, FSD, Чистой Архитектуры, DDD, DRY

Есть принципы, которые разными словам говорят об одном 👉🏻 Как писать поддерживаемый код

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

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

Самое важное: учесть и объяснить всё. Почему код на SOLID бывает сложным. Почему код в функциональном программировании надёжнее, чем в ООП. Как можно использовать ООП и ФП вместе. И почему между ними, на самом деле, не так много разницы.

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

Но в виде практического курса «как писать расширяемый код"


Вместо того, чтобы часами пытаться объяснить вам теорию, я решил показать на практике. Сформировать понимание, как говорится, на кончиках пальцев

Уже сейчас в сообществе вам доступен самый базовый и важный курс моей системы:
"Как писать поддерживаемый код", где я в 10 часах практики показываю, как через сочетание принципов OOП ФП GRASP SOLID DRY можно научиться эффективно писать обычный React код.

Всего в курсе будет разобрано 4 главные характеристики поддерживаемого кода:

1. Простота
2. Надёжность
3. Переиспользуемость
4. Абстрактность

Уроки про "Простоту" и "Надёжность" уже готовы. И в ближайшее время я выпущу уроки про "Переиспользуемость" и "Абстрактность"

Что важно: этот курс – не вся моя система. Это скорее самое базовое введение. На основании которого я буду строить дерево знаний.

В отдельных курсах буду рассказывать про SOLID, ООП, ФП, GRASP. Рассказывать, как выбирать технологии на основе этих принципов и учить вас писать инфраструктурный код на сложном typescript

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

Если хотите научиться писать поддерживаемый код, а не просто узнать "что ООП это про котиков" – вступайте в сообщество @welcome_paromovevg_bot
Всех жду 🤗

Евгений Паромов

04 Nov, 09:14


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

Сказать, что приятно – ничего не сказать 🤩

Мама, я в телеке)

Евгений Паромов

02 Nov, 12:15


В продолжение темы конфликтов

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

Как раз в тему конфликтов тут вышел интересный материал с очень "красноречивым примером" про драку 15 монтажников в сибирской тайге 😂 https://t.me/dmiboldyrev/77

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

Нашёл любопытные подтверждения своих наблюдений и даже свой тип личности в "борьбе за статус".

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

Ещё во многом узнал людей, которые не соглашаются даже с железными аргументами, только что бы своим признанием неправоты "не подорвать свой статус". Эти ребята – мои любимые)

В общем, советую вообще весь цикл посмотреть с начала. Тут много крайне профессионального и глубокого – всё, как я люблю 🙂

Евгений Паромов

24 Oct, 11:10


Nextjs 15

Вышел новый мажор Next.js с, наверное, самым важным для меня изменением с момента релиза AppRouter. А именно –отменой кэширования по умолчанию

Почему это для меня так важно? Потому что это бесконечный источник багов

Есть такое выражение: "В программировании 2 самые большие проблемы – наименование переменных и инвалидация кэша"

И если это звучит, как шутка, то на самом деле это, действительно, 2 самые серьёзные проблемы.

Любой кэш – необходимое зло.

Кэш — это осознанное нарушение DRY, когда мы создаём дублирование состояния для экономии вычислительных ресурсов.

Но любое дублирование состояния — это проблема. Так как везде, где есть дублирование, есть и рассинхронизация.
Хоть на доли секунды, но между источником истины и кэшом есть время, когда они не совпадают. А это по умолчанию баг!

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

Кэш – это сложно. Особенно такой кэш, который сделали в Next.js, где он ровным слоем размазан по всему приложению.
Каждый сегмент имеет свой кэш, каждый вызов fetch имеет свой кэш.

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

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

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

А как до этого было с next.js? Бля, опять ничего не работает. Пойду курить и пробовать всякие магические строчки из документации.

Крайне ужасная ситуация. Ребята это тоже поняли и, наконец, исправили

Слава богу, теперь у нас next.js — это просто php)

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

Кто знает, может теперь Next.js не будет вызывать такого отторжения)

Евгений Паромов

22 Oct, 09:44


Конфликты

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

Но тут важный момент: на пусечках-заечках воду возят

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

У меня в этом месте за время работы произошёл коренной слом.

Я человек, по своей сути, не конфликтный. Раньше я боялся конфликтов, как огня.
Поэтому, когда мне что-то не нравилось:
— давали не интересные задачи,
— оставляли комментарии на CR, с которыми я был не согласен
— принимали в проекте практики и технологии, которые я считал не эффективными
👉🏻 Я просто молчал и терпел.

И кто то скажет: молодец. Командный игрок. Не начинаешь сраться по пустякам.

Но проблема такого подхода в невыраженной агрессии. Она копится.

Вообще, в долгосрочных отношениях в терпилу нельзя играть. Рано или поздно, я просто сваливал или выгорал.

Как раз намного более здорово — пойти в конфликт и начать отстаивать свои интересы. Только так можно занять комфортное для себя положение в команде и не страдать каждый день.

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

После того, как я осознал это, моя позиция по конфликтам поменялась. Я их теперь не боюсь. Не считаю ни агрессию, ни сами конфликты чем-то плохим.

Только крайне важно сраться правильно.

Корректно проведённый конфликт может сделать отношения комфортнее. Производительность команды выше. Текучку команды ниже. (Классический шторминг из модели Такмана)


На основе знаний психологии я вывел следующие правила конструктивных конфликтов:
1. Признавай свои ошибки первее оппонента. И вообще допускай, что ты что-то не знаешь
2. Признавай сильные стороны своего оппонента.
3. Готовься к дискуссиям заранее. Изучи вопрос более тщательно и заготовь основные аргументы
4. Никогда не оскорбляй оппонента и не пытайся унизить его достоинство
5. Помни о цели конфликта. Отстаивай свои интересы, а не пытайся показать, какой ты крутой (Хотя, может это и есть твоя цель 😂)
6. Как можно раньше переводи конфликт из чата в созвон или встречу

Короче, не будьте терпилами и конфликтуйте правильно

Евгений Паромов

20 Oct, 12:22


Полный курс по react-query ⤵️

https://youtu.be/K5-a-wjURrc

Я очень люблю react-query. Это один из тех инструментов, которые просто хорошо делают свою работу.
И не пытаются собой всё пространство занять.

Помню, как я в своё время наткнулся на этот инструмент. Мне надоело делать одно и то же и писать isLoading, error, data. Сначала написал свой кастомный хук, а после подумал: "неужели никто не решал эту задачу до меня?".

Господи, сколько я сэкономил времени и сил, когда начал делать запросы специализированным инструментом

Но, к сожалению, у react-query есть проблема. В сложных приложениях его сложно использовать правильно.

Часто делают как-то так:

const { data } = useQuery();
useEffect(() => dispatch(setData(data)), [data])


И это самое, что ни на есть жестокое нарушение Single source of truth, которое ведёт к багам и проблемам.

Этот курс — моя попытка дать в достаточно простом и понятном виде базу tanstack query, в которую вшита моя идеология работы с tanstack.
В рускоязычном youtube нет ничего вменяемого по этой теме. Надеюсь, мой подход аккуратно заложит базу более эффективного и корректного использования этого инструмента во фронтенд сообществе.


Кто уже работал с tanstack — советую сразу по тайм кодам идти ближе к концу, где я показываю интеграцию с redux. Также советую обратить ваше внимание на тайм-коды с пометкой [ВАЖНО]


Приятного просмотра, друзья)

Евгений Паромов

15 Oct, 12:43


SSG, или как я повернул не туда

Я долго считал SSG манной небесной. Ну сами посудите — большая часть рантайма уже выполнена на этапе сборки. Осталось отдать пользователю статику с небольшими "островками интерактивности".

Получается максимально возможная производительность. Всё это можно раскидать по CDN, и получится прям вах вах.

Но за всё нужно платить...


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

И тут для настоящего SSG адепта настаёт сложный момент:

— Все переменные окружения должны быть известны на этапе сборки (Теперь Docker image нельзя запустить в разном окружении. Ата-та от девопса)
— Доступ к продовой базе данных должен быть на этапе сборки (А тут уже ата-та от безопасников)
— А что делать с интернационализацией? Получается, что нужно делать сборку под все языки сразу. А как отдать пользователю нужный контент? Появляются всякие прикольные /ru в путях
— Нет возможности использовать заголовки, в том числе, куки на сервере. И это достаточно жёсткое ограничение, которое сильно связывает руки
— Большой гап между изменениями в контенте и тем, что увидят пользователи. + Автоматизация этого процесса – значительно более сложное занятие

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

Но какой ценой? Ценой значительного повышения ментальной сложности.

Вот и получается, что установку можно и нужно сформулировать наоборот.

Любой кэш – это сложно (помните 2 самые главные проблемы в программировании)

И любой кэш нужно добавлять после. Когда без него не обойтись.


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

Если пишете на Next.js
const dynamic = 'force-dynamic'

И погнали

Сэкономите время себе и бизнесу.

Но не воспринимайте мои слова буквально. Если вам нужен SSG, то вам нужен SSG. Но важно понимать, что SSG – это сложно

Евгений Паромов

10 Oct, 11:44


Coolify — Self-hosting с батарейками

Я тут записал видос, который, считаю, нужно посмотреть всем!!
https://youtu.be/XoUF1RstrGw

Рассказываю почему ⬇️

Деплоить свои проекты – это боль.
Либо ты берёшь Vercel + Heroku. Но чуть что, тебе придётся платить не маленькие такие доллары при выходе за бесплатные тарифы (которые не понятно, как им туда отправлять сейчас)

Либо расчехляешь VPS, начинаешь nginx настраивать и возиться с администрированием.
И ладно, если бы получалось хорошо, но вот какой нибудь банальный деплой на пуш уже делается не так просто. А preview deployments сделать уже вообще сложно.

+ Хочется иметь резервное копирование, уведомления, что всё сломалось и так далее.

И сделать это всё на своём VPS – уже проще пристрелиться

Но недавно мне один участник сообщества рассказал про coolify.
Я попробовал и офигел!

Что, если можно совместить удобство Vercel c селф хостингом? 🤯

Оказывается, можно. Coolify – это платформа, которую ты за 5 минут устанавливаешь на сервак, и дальше уже можно деплоить приложения из интерфейса. Быстро, просто и со всеми плюшками:

Деплой на push + preview deployments + health чеки + дампы базы данных – всё из коробки и платить за это не надо. Только за сервак

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

В общем, огонь огнищенский 🔥 Мне даже грустно, что я не знал об этом раньше.

Сколько времени бы сэкономил, и насколько бы лучший DX у меня был

Евгений Паромов

09 Oct, 14:45


12 часов воркшопов за неделю

Недавно в сообществе появился новый формат — воркшопы.

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

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

Мне и ребятам формат очень зашёл, и я решил сделать целую неделю воркшопов)
Провели голосование и выбрали самые актуальные участникам темы 🔥

👉🏻 В воскресенье мы провели вторую часть воркшопа по билдеру форм.

👉🏻 Вчера был воркшоп по реализации undo redo на redux toolkit на примере аналога trello. И с использованием редкого паттерна event sourcing/

👉🏻 Сегодня (в 19 GMT+3) будет воркшоп по использованию ООП паттернов с Mobx на примере сложного древовидного меню.

👉🏻 А ещё воркшопы будут в четверг и в воскресенье


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


Если хочешь посмотреть на паттерны ООП, залетай уже сейчас 👉🏻 https://paromovevg.ru/evolution-community

Бот для быстрой покупки

Евгений Паромов

08 Oct, 08:52


Не путайте процветание и выживание

Последнее время много читаю статей про менеджмент и управление.
Вот, например: https://habr.com/ru/articles/816545/
(Кстати, классная статья для анализа своей эффективности — заставила задуматься)

И везде один вопрос: как настолько доказанные неэффективные практики вообще могут существовать?! Ещё и распространяться.

Но для себя я уже давно ответил на это. Мы всегда должны разделять процветание и выживание.
👉🏻 Процветание: Общее количество ресурса
👉🏻 Выживание: Шанс ситуации, когда количество ресурса упадёт ниже условной границы
(Может быть, читал об этом в «Шкура на кону» Талеба. Но уже не помню точно)

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

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

И самый мой любимый пример: Смерть

Распространены не те виды, у которых максимальная продолжительность жизни. А у которых эта продолжительность даёт оптимальное соотношение — изменчивости/времени, детородности/размера.

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

Представьте: все страдания от смерти родителей, бабушек, друзей, жён и детей — есть необходимое условие выживания человека, как вида

Меня эта мысль до сих пор очень будоражит

Вместо вывода

Весь пост звучит как — смиритесь с говном, оно не избежно.

Но я хочу сказать другое.

Сама суть мира — он не создан для твоего счасться. Только для выживания. И то не твоего лично.

Хватит удивляться дисфункциям вокруг. Возьми ответственность за свою конкретную жизнь. И сделай её счастливой.

Счастье — это не норма. Это то, что ты должен отвоевать у этого мира

Поэтому код в твоём проекте – говно. И это нормально.
Хочешь хороший код? Тогда бери и делай. Никому кроме тебя он не нужен.

Евгений Паромов

06 Oct, 08:45


Все продвинутые курсы в одном месте

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

Изначально я делал с такой мыслью платформу micro-courses. Но из-за формата монетизации, не получилось сделать это основным проектом.

И с появлением сообщества — я вернулся к этой идее.

Теперь весь контент сообщества + все курсы из micro-courses будут вот тут
https://evocomm.space/map

За 15к в год вы получаете уже на нынешнем этапе 50+ часов уникального глубокого и профильного контента.

И с каждой неделей его будет становиться только больше. Дальше он будет всё более полно и системно покрывать темы:

- Архитектуры
- Качества кода
- Эффективного использования инструментов


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

(Целый курс по DRY – это сильно? 😉)

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

И эта карта – только часть всех возможностей, которые вы получаете, вступая в сообещество.

Обо всех штуках можно узнать тут

А вступить в сообщество можно через бота

До встречи в сообществе, сегодня у нас будет вторая часть воркшопа по разработке билдера форм 🙌🏼

Евгений Паромов

06 Oct, 08:24


Спасибо большое, ребят, за ответы)
52 комментария – это сильно!

Хоть по голосованию React-query и Typescript идут прям вровень, то вот в комментариях однозначно выигрывает react-query, так что с него и начну

Более того, react-query – это одна из моих самых сильных компетенций. Тут мне есть, что сказать 😉

Ждите в ближайшее время новый классный курс с уникальным контентом.

Евгений Паромов

04 Oct, 16:41


Ребят, хочу записать классный контент на youtube.

И передо мной встал выбор, что делать. Долго думал. А потом как вспомнил, что вы у меня есть)

Что вам интереснее, проголосуйте плиз ⬇️

Евгений Паромов

04 Oct, 14:31


Первая в жизни конференция

На прошлой неделе съездил на конференцию Стачка в Питере.

Сама конференция и выступления максимально мало у меня эмоций вызвали. Ну реально, как будто я 30 минутный видос записывал одним дублем.
Единственная разница — живые люди одобрительно кивают, или хихикают над шутками. Это приятно 🙂

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

Очень долго обсуждали $mol с его автором. Тот момент, когда споришь с человеком, который 7 лет готовился унижать React, а ты даже ни разу не писал на mol.
Крайне не выгодная в споре позиция, скажу я вам.

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

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

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

А пока, возвращаюсь обратно в блог и сообщество с новыми силами и идеями 🙌🏼

Евгений Паромов

24 Sep, 17:37


Как билдер форм всех спас)

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

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


Вот одна показательная история из моего опыта:

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

Если сделать карту мне помогла библа (https://github.com/projectstorm/react-diagrams). Кстати, не советую её брать — крайне сложная, хотя и гибкая шо пипец

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

Их должно было быть 40+ разных штук.

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

И, проанализировав формы, оказалось, что среди них повторяются всего где-то 7 полей.
(Текстовые поля, селекты с поиском, редактор условий, массив с другими полями и еще несколько)

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

После часов 40 разработки на mui — билдер был готов. Я сделал в storybook, показал бекеру всё и пошёл отдыхать

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

Более того, проект, хоть им активно и пользовались, не требовал правок на фронте где-то год!!!
Бекеры просто копипастили конфиги форм и вносили небольшие правки.

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

(Если вам интересны такие штуки — залетайте в сообщество. Через неделю мы проведём вторую часть воркшопа, где подключим форму к беку, обработаем серверные и клиентские ошибки, добавим селект с автокомплитом)

👉🏻 Подробнее о сообществе

Евгений Паромов

22 Sep, 18:20


Альфа версия Evolution design linter

Ещё на прошлой неделе писали, что начали разработку линтера, а вот уже и альфа версия подоспела!

Ещё много работы предстоит. Например, написать документацию)

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

Документации ещё нет, но уже есть пример использования:
https://www.youtube.com/watch?v=nU_lFb2LnyM
Плюсы бытия ютубера опенсорсера)

Особенно интересной получилась реализация генератора. Добавил папочку в pages, и линтер сам сгенерирует нужные папки и файлы с шаблонами внутри. Пример можно в видео посмотреть)


Одной из ближайших задач будет написание шаблонов на распространённые архитектуры:

— Базовый FSD
— Моя версия FSD
— Модульная архитектура (великое детище Ульби)

Достаточно будет одной команды, чтобы сгенерировать базовую структуру и настроить линтер.



Планируем ещё добавить визуализацию архитектуры, ui билдер, и плагины для IDE, чтобы это было полноценным инструментом.
Если у вас есть хотелки и пожелания — пишите в комментарии, мы учтём)


NPM: https://www.npmjs.com/package/evolution-design
GITHUB: https://github.com/ep-community/evolution-design


Если хотите помочь нам с разработкой, присоединяйтесь в сообщество: https://paromovevg.ru/evolution-community

Евгений Паромов

16 Sep, 08:20


Мой любимый спорт 🎾

Я долго искал варианты активности для себя.
Пробовал: зал 💪, бег 🏃, бассейн 🏊.

Но всё не оставалось со мной надолго. Хочется 2х вещей:

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

И этой весной мне жена показала теннис.
Я подумал — это же гениально)

Ну сами посудите:
1. Игровой вид спорта — очень интересно
2. Нужно всего 2 человека. Жена всегда есть, или просто тренировка с тренером
3. Не травматичный. Волейболы, баскетболы это тоже очень классно. Но всё вспоминаю выбитые пальцы. А мне сейчас такого нельзя допускать
4. После заряд энергии на целый день. Нагрузка хорошая, но не черезмерная


В общем, теперь ходим 2 раза в неделю с тренером. И отдельно с женой, когда время есть.

Уровень энергии прям вырос и даже прогресс есть. Может начну когда нибудь участвовать в местных соревах, кто знает)

Евгений Паромов

11 Sep, 11:33


Опа, ещё докладик

Ну всё, точно осень у меня будет весёлая.

Прям сразу после holy буду выступать на мердже

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

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

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


ЗЫ: Помню, как от компании готовился с Гришей Петровым к первому выступлению.
Мы полгода готовили доклад. Потом выступали на внутреннем митапе. Потом на евронской конференции в записи. И уже потом шли подаваться со словами "Может когда нибудь выступлю на большой конфе" (так никуда тогда и не подался)

Также я через год ведения блога: выступаю на трёх крупных конфах 🙌🏼

Евгений Паромов

09 Sep, 14:00


Evolution-design — мой ответ FSD

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

Но в процессе рассуждения я понял: получается не лучше. Потому что у всех архитектур одна проблема — стандартность.

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

У каждого проекта:
— Своя команда
— Своя сложность
— Свой стек
— Свой этап

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

И от понимания этого, я как раз пришёл к идее evolution-design.

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

Подробнее об идее можно посмотреть в моём видео на канале ⤵️
Видео

Evolution-design — это будет:

— Документация, с описанием основных архитектурных паттернов и готовых сборок ахритектур
— DSL для описания архитектуры, с возможностью описать свою архитектуру
— Линтер для валидации правил (Похоже на staiger)
— Генератор кода
— В планах: визуализатор, квиз по выбору архитектуры, маркетплейс архитектур

Только в прошлую среду запустили разработку в Open source направлении сообщества. И я не ожидал, что пойдёт так динамично.

Вот репозиторий

Уже подняли проект, настроили сборщик, линтер, cli. Сформировали DSL и начали реализовывать линтер, и где то половину core модуля разработали. Дикая скорость)

Кто хочет посмотреть, как разрабатываются open source проекты, и кто хочет поучаствовать – залетайте
https://t.me/welcome_paromovevg_bot

Очень мощная возможность порешать нетривиальные задачи, пообщаться с опытными разрабами, и приложить руку к перспективному проекту)

Если думаете, что у вас уровень маловат — не переживайте. Задачи под любого найдутся.

🕰 Сегодня в 19:00 у нас второй синк по проекту

Евгений Паромов

03 Sep, 14:21


Что произошло в моём сообществе за 3 недели

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

А происходит очень много ⤵️

1️⃣ Выходит курс по архитектуре.
Его концепт – 20% информации, которые дают 80% результата.
Рассказываю в курсе о самых ключевых понятиях в архитектуре, знания которых сильнее всего влияют на качество продуктов.

Уже вышло 5 небольших уроков (самый большой — 22 минуты), где я ввожу понятия. Дальше, на основании этих понятий, рассмотрим самые важные принципы и паттерны. Всё на примерах из практики, которые можно использовать хоть завтра.

Сейчас у ребят лафа. Пока в сообществе не много людей, я проверяю все домашки лично.

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

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

Но и тут обратная связь внесла определённые корективы. Изначальная идея совместить разработку и обучение не оправдалась.

Поэтому после созвона на прошлой неделе внёс изменения:

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

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

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

Этот формат тестовый. Но, как вы видите, всё постоянно развивается, и мы обязательно сделаем его максимально классным 🙌🏼

3️⃣ Запустили чат обмена опытом
Это место, в котором можно поделиться интересной статьёй или инструментом.

Также мы уже согласовали запустить "Круглый стол" — созвоны, в которых будем обсуждать холиварные темы и новости. Планирую запустить на следующей неделе, или через одну. Потому что у меня всё внимание в 👇🏻

4️⃣ Совместная разработка open source

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

Очень важно: формат тестовый, но однозначно нужный. Поэтому будем его развивать до победного конца.

5️⃣ Чат media
И последнее нововведение — чат, в котором можно научиться основам медийности и поучаствовать со мной в записи видео.

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


Вместо вывода

Как же я кайфую в этом всём! Вот правда)

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

И вот после долгих исканий/ скитаний/ метаний, наконец, нашёл

Вообще всё так, осталось только развивать и делать офигенно 😊

Присоединиться к сообществу: https://t.me/welcome_paromovevg_bot

Евгений Паромов

28 Aug, 18:40


Вчера у моей семьи был день фейла

Утром моя жена поехала на местное море (в Онегу, если кто в курсе). 150 км по гравийке, с дочкой и бабушкой. И пробила 2 колеса: первое в хлам, второе с двумя дырками.

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

А вечером у меня начались проблемы. Прямо на стриме сообщества у меня сгорел модуль wi-fi на рабочем ноуте (как вы понимаете, у меня проводного нет в доме)

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

Там оказался прям подходящий мне по конфигурации. Купил

Приезжаю домой, подключаю...

И ничего. Чёрный экран. Крутил, вертел, думал сам что-то не так сделал. Но толку ноль. Чёрный экран 😒

Лезть внутрь не стал. Ибо на крышке красовалось: "не трожь, а то никакой тебе гарантии"

Наутро поехал менять. Привёз. Да, действительно не работает.
Заменили. Проверили, что на другом всё работает.

Привёз я его к себе домой, подключаю...

И снова ничего 😭

Тут я смекнул, что дело могло быть в транспортировке. А именно в том, что я вёз оба раза видеокартой вниз, по неровным дорогам Архангельска...

Короче, сорвал я злачную плёнку "Если вы это срываете, то гарантии конец" и потыкал на удачу видеокарту, чтобы лучше прилегала к материнке.

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

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

(Посты про сообщество и с ответами на вопросы немного откладываются)

Евгений Паромов

26 Aug, 21:42


Тут несколько человек в комментариях попросили интеграцию react-query и pinia

Я думаю: «О, в тему!»
Раз я так преисполнился лазить в исходниках react-query, может и тут видос быстренько наклепаю...


Короче, полез в исходники vue-query. Уже успел порадоваться, что там вообще нет привязки к компонентам.

То есть там можно сделать так:


const scope = effectScope()

scope.run(() => {
// Подписываемся на запрос
const { isPending, isError, data, error } = useQuery({
queryKey: ['todos'],
queryFn: getTodos,
})
})

// Остановить подписку на запрос
scope.stop()


И уже подумал, что pinia точно поддерживает что-то такое.


А потом пошёл доку pinia смотреть. И ничего... 🦗
Вообще скудно на дополнительные возможности и адвансед штуки.

Но не сдался и отправился смотреть исходники pinia. Может оставили хоть какой-то бекдор...

Но нет. В pinia вообще нельзя узнать из стора, когда происходит подписка и отписка на него из компонента (или effectScope)

Вывод: также классно vue-query c pinia интегрировать никак вообще(

Но есть и хорошее в этом всём. Там добавить это вообще не сложно❗️❗️❗️

Как по мне, это очень хорошая возможность получить статус контрибьютора в pinia)

Если кто хочет — пишите мне. Я вам пальчиком идею покажу и подскажу, как оформить

А ещё лучше — залетайте в сообщество. На этой или на следующей неделе мы запустим open source направление, где будем вместе дюжить такие интересные штуки 😊