Евгений Паромов
Open in Telegram
Автор сообщества https://paromovevg.ru/evolution-community Пишу о грандиозных планах изменения системы IT образования. Об успехах, неудачах, борьбе с собой. И постепенном движении к своей, возможно слишком смелой, цели 🎯 Я: @paromovevg
Show more3 939
Subscribers
No data24 hours
-87 days
-230 days
Posts Archive
3 939
Забавная история про ZOD
Вместе с запуском платформы, я выпустил на ней один небольшой курс по Zod ➡️ https://micro-courses.ru/course/zod-full-course
И это максимально странный курс, со всех точек зрения. Это и не массовое что-то по типу React. И не продвинуто/интересно/особенное по типу FSD, или сложного typescript
Но сама идея платформы как раз про такие вещи. Я хочу наконец закрыть дырку в обучающих материалах, которые отходят от основного столба базовых библиотек, фреймворков и тем для тысяч и тысяч курсов.
Ведь мир программирования огромен 🌏
И это, действительно, серьёзная проблема. Например:
На каждом проекте десятки библиотек. Каждая из которых может использоваться хорошо или плохо.
Более того: от качественного использования инструментов, часто зависит, загнётся проект или нет.
Я как то раз пришёл на проект с react-query, а с ним там как с redux работают. Из-за этого там всё люто лагало, багало, и стартап из-за этого чуть не закрылся. Понятное дело, что это плохие разработчики были. Но что в них было плохого? Отчасти, незнание своих инструментов.
3 939
Ребят! Я тут перенёс FSD курс на платформу
https://micro-courses.ru/course/fsd-full
Изначально я собирался переносить на платформу уже доработанную версию. Где отдельно бы стояли FSD + redux, FSD + mobx, FSD + next и тд. Ещё собирался сжать информацию, сделать её более понятной и простой для восприятия.
В этом, вообще, основная идея платформы – сделать курсы точечными и таргетными. Нужно тебе узнать, как использовать FSD c Next.js – ты находишь этот курс и смотришь именно его.
Но сейчас у меня основная задача – добить серию видео про создание платформы, поэтому решил сделать максимально быстрый перенос. В любом случае, у меня есть классная платформа, и теперь можно проходить курс в более удобном формате.
В связи с этим, я решил всем, у кого уже куплен курс по FSD, выдать доступ и на платформу.
Для того, чтобы получить доступ к курсу на платформе, зарегайтесь на ней, и напишите сюда свой email на платформе. Пишите с аккаунта, который есть в группе курса по FSD, и я вам выдам доступы ✔️
И ещё один момент. Если у вас есть какие-то проблемы, пожелания или идеи – пишите мне, или вот сюда https://t.me/microcourses_support
Я сейчас двигаюсь на голых идеях и ваша обратная связь будет для меня очень полезной 🙂
3 939
Я просто охреневаю, как быстро можно разрабатывать, если знать, где срезать углы
До нынешнего состояния платформы, я на неё потратил часов 120👇
https://micro-courses.ru/
При этом, в ней реализованы следующие механики:
1. Отображение курсов на карте, отображение картинок на этой карте
2. Редактирование карты, перемещение, удаление, изменение размера. В общем, мини миро
3. Система ролей и простенькая админка, для отображения пользователей и выдачи доступов
4. Редактирование профиля, регистрацию по email и oauth
5. Система управления контентом на основе yaml, json схемы и git
6. Отображение контента с помощью mdx
7. Система прогресса
8. Ну и оплаты, куда без этого
Если на это всё смотреть, это пипец как много...
Чтобы вы понимали, насколько я быстро это сделал. Где-то 3 года назад я разрабатывал похожую систему для uchi.ru
Мы делали командой в 7 человек, в течении 5 месяцев (разница почти в 50 раз) примерно такую же по функциональности штуку.
Но как так получилось?
Самое главное — кругозор и эффективное использование инструментов.
1. Монорепа и next-server actions: Один сервер, одна команда, меньше расходов на контракты и межязыковое взаимодействие
2. Использование готовой либы shadcn, и хорошее владение ей + tailwidncss + ChatGPT. Верстка просто летела, так как по большей части это копипаста из док, и результаты работы ChatGPT
3. React flow – и диаграммы это уже не страшно
4. Next-auth – минус возня с авторизацией
5. Использование ChatGPT – позволяет сэкономить в 10 раз время на слое lib (Интеграция с S3, Redis, Yaml, написание скриптов на node и тд)
6. Event sourcing – позволил дико упростить логику работы с прогрессом, оплатами, и выдачей доступов. (но пришлось повозиться с деплоем eventstore на vps)
7. Это всё сделано по FSD + подобию чистой архитектуры. Что позволило мне не затротлить, когда строк кода в проекте перевалило за 15k
Вывод: если знать самый короткий путь и иметь возможность идти на трейдофы, то можно ускорить разработку раз в 50 🚀
3 939
За двумя зайцами погонишься — ни одного не поймаешь 🐰🐰
Всем привет, у меня тут был сложный месяц.
Последний мой видос набрал просмотров несоизмеримо усилиям.
И я решил, что что-то делаю не так.
У меня была попытка совместить разработку платформы и классный уникальный контент на youtube, но получилось как всегда.
И контент получился через чур сложным и не смотрибельным, и разработка платформы оочень сильно начала затягиваться.
Поэтому принял решение вернуться в последовательный режим
1. Сначала доделать платформу до запуска
2. Потом записать видео про то, как я эту платформу делал. Уже с необходимыми упрощениями и улучшениями смотрибельности.
И тут же бодро пошла разработка платформы. Уже как неделю стоит готовая MVP, и сегодня я закончил разработку первого курса на мою новую платформу.
Так что возвращаюсь в контент, и, надеюсь, больше не буду настолько надолго выпадать 🥲
3 939
✅ json schema + vs code + yaml + mdx + git + github = супер простая, дешёвая, эффективная система управления информацией.
🔹Описываем структуры данных с помощью json schema. Можно делать супер сложные штуки, описывать валидации, связанные поля и кучу всего другого. При этом генерируется чатом gpt за 5 минут
🔹Пишем yaml файлики с автодополнением в ide. Валидация через json схемы обеспечивает валидность, автодополнение упрощает процесс. Работа с текстом даёт супер мощную гибкость автоматизации (функциональность тимплейтов через Ctrl + V)
🔹Вставляем сложные компоненты через MDX. Нормальные картинки, таблицы, сложное форматирование, карусели... Всё, что захочешь, с помощью костюмных React компонентов (а как быстро)
🔹git + github. Версионирование, драфты, ветки, параллельная работа, авто решение конфликтов и все прелести распределённой работы с иформацией
Милионы программистов уже пол века оттачивают инструменты работы с чистой информацией (кодом). Так почему бы не использовать эти супер мощные инструменты для работы с другой информацией (курсами)
У такого подхода есть и свои минусы. Как контролировать актуальность связей, и уникальность id, например. Но это должно легко закрываться простым самописным туллингом
В общем, кому интересно это решение, вот видос: https://youtu.be/b5A2usbZVBU?feature=shared
А я пошёл делать платформу дальше 💻
3 939
Вышло моё третье видео из серии стартап с нуля❕
В нём мы разработаем простой, но эффективный флоу работы с контентом курсов. С использованием yaml mdx json-schema и git
❔"Но почему не какой-нибудь strapi?" – спросите вы
У меня достаточно большой опыт работы с этими штуками, и хотелось сделать это быстро просто и функционально. Учесть классические проблемы
Сразу выплыло несколько вариантов
1. Сделать простую админку самому
2. Использовать headless cms
3. Использовать md файлы
▶️ Первый вариант я сразу отбросил, так как он жутко трудозатратный. Просто нафигачить 5 формочек не сложно. Сложно сделать управление версий, валидацию, драфты, совместное редактирование.
▶️ Второй вариант уже сильно лучше. Headless cms сильно развились сейчас и из под капота они решают почти все проблемы. Но всё равно не все.
А всё, что выходит за рамки базовых кейсов, уже становится делать очень сложно. + это отдельный сервис, инфра под него, база, миграции, безопасность
В результате, всё равно это неудобно, так как это конструктор формочек, с неудобным ux.
Тогда я решил поглубже изучить темы с Markdown. Но быстро отказался от md и просто пришёл к обычным yaml файликам. С вставками Markdown в многострочные строки
3 939
Это рассуждение мне очень сильно напомнило сравнение параллельного и синхронного выполнения кода.
➡️ С одной стороны, синхронный код всегда эффективнее использует ресурсы, проще в написании и поддержке.
➡️ С другой стороны, параллельный код в потенциале может дать большую общую производительность. Но эффективность использования ресурсов кардинально ниже
В работе мы используем оба формата. Но по принципу "делаем параллельно, только если очень надо"
Так почему в работе синхронный вариант нам даже в голову не приходит
❓И второй момент: почему единицей параллельности всегда воспринимается человек. При том, что один человек почти всегда не самодостаточен. У него будет очень много связей и блоков с другими членами команды.
Это как разносить в разные потоки плотно связанные куски реализации одного пользовательского флоу. Вы заколебетесь это дебажить, и большую часть времени у вас будут простаивающие потоки, которые блокируют работу друг друга.
И понятное дело, что на практике всё всегда сложнее.
Но я просто хочу протестить эту штуку.
И сегодня был первый опыт.
Понравилось.
А дальше поживём.
Увидим.
3 939
Сегодня провёл первую в жизни моб сессию!
В кружочках ниже будут мои выводы и впечатления от сессии, а тут я расскажу подробнее про сам формат.
🤔 В чём сама концепция?
Берётся маленькая полнофункциональная команда, которая может самостоятельно выдавать пользу. Тут важно, чтобы она была небольшая.
И вместо того, чтобы:
- идти асинхронно работать,
- делать код ревью,
- писать документацию,
- блокать друг друга,
Все собираются в одной zoom/ google meet комнате и начинают вместе работать над одной и той же задачей.
Тут есть несколько организационных моментов ⚙️
- Пишет код только один человек, все остальные говорят, что делать
- Каждые 10 минут (ну или как выберете) идёт смена пишущего код
- Тот, кто пишет, особо не думает, думают все остальные
И если это соблюсти, начинается магия 💫
- Все мидлы и джуны начинают супер быстро расти, так как в плотном контакте с сеньором/ тимлидом
- Не нужно код ревью, так как весь код согласован всей командой
- Для каждой задачи используются знания всей команды (как технические, так и бизнес)
- Не нужны сложные гит флоу, всё синхронно и просто
- Морально классно, так как в плотном контакте с ребятами начинается прям командная работа
Плюсов дохрена и больше. Особенно это хорошо работает для важных и сложных задач.
Альтернатива "декомпозировать на всю команду, а потом пытаться собрать обратно" прям попахивает дисфункцией
Но вот для простых задач и больших команд этот формат не подходит. Тут, я думаю, нужно придумать какой-то гибридный вариант
В общем, если хотите узнать подробнее о теме, вот источник откуда я брал подробности
https://www.remotemobprogramming.org
И го в комментах подискутируем по поводу уместности такого подхода в реальной разработке. Интересно узнать ваше мнение)
3 939
3 часа со мной в эту субботу 🕺
Последнее время меня очень сильно интересует тема mob программирования.
➡️ Что это? По сути, это как парное программирование, только на максималках. Когда вся команда делает одну задачу в одной zoom комнате
➡️ Зачем это? Не нужны код ревью, документация, не нужны синки, онбординг, не нужны все современные процессы, которые помешанны на асинхронной разработке (подробнее можно поискать в канале https://t.me/vsharovatov )
И особенно мне интересна эта тема в контексте шаринга знаний.
Можно ли придумать лучший способ передать свой майнд сет, чем покодить вместе. Обсудить архитектуру, решить возникающие трудности и проблемы.
В общем, теоретически мне это дико нравится, а вот на практике всё, как всегда, интереснее.
Поэтому вот вам моё предложение 👇
В эту субботу в 15:00 хочу провести моб сессию. Нужно 3 - 4 фронта.
Если у вас есть 3 свободных часика и хотите со мной покодить – пишите мне в личку ваш стек, опыт работы, немного о себе, и согласны ли вы стать частью моего контента на youtube канале, если что.
Не факт, что всех смогу взять. Буду выбирать, чтобы получилась интересная разношёрстная компашка
Если много желающих соберётся, и все участвующие будут согласны, сделаю это в формате стрима на канале.
3 939
Я категорически однозадачный
Ещё один вывод, который я сделал за прошлый год о себе. Мой мозг может держать одновременно не больше 3х фокусов. При том, что 3тий не может быть большим. Вот так вот 🤷🏼
В общем, 2 деятельности большие и однородные я могу прям фигачить. Как танк. Продуктивно, интенсивно, вовлечённо.
Замечательный пример – челлендж 90 дней видео.
Но вот всё, что выходит за эти 2 деятельности, выпадает из моей головы настолько, что я могу всё на свете забыть. (Меня чуть в армию не забрали как-то, потому что я не мог пройти медкомиссию 5 лет к ряду)
Мне это всю жизнь очень сильно мешало, и я себя считал безответственным. Хотя по факту, я просто не могу концентрироваться на многом одновременно.
Были даже попытки внедрять системы задач, календарей. Но приводило это всё к резкому повышению уровня стресса и откату. Я не просто забываю это делать – меня дико бесит мелочёвка вне основного фокуса.
Как я ещё живу в реальном мире, со счетами за кварт плату и походами в магазин?
У меня жена – пример противоположного человека. Она может делать тысячу дел одновременно. Качественно и ответственно. При этом её дико бесят повторяющиеся долгое время задачи.
В общем, она мой личный асистент по жизни)
Поэтому цели на квадриместр только 2, так как с работой меня больше просто не хватит. А все попытки взять больше просто закончатся срывом обязательств и самобичеванием.
Вместо вывода. Желаю всем на свете не бороться с собой. Принимать себя и использовать свои сильные стороны.
3 939
Цели на этот квадриместр
Уже конец января, а я вам так и не рассказал, что сейчас делаю и какие у меня цели.
Самый первый момент: я решил не планироваться на год.
Год – странная величина для планирования. Для краткосрочного слишком много, для долгосрочного слишком мало.
Я решил планироваться на основе моего цикла усталости, а это в среднем 3 – 3.5 месяца + отпуск = 4 месяца.
Называется это квадриместр. Название в моём стиле, буду использовать)
Итак, цели на этот период:
– Запустить свою платформу курсов
– Наладить баланс сфер
Всё!
Подробнее о каждой цели я расскажу чуть позже. Сейчас расскажу, почему цели только 2 👇
3 939
Вышло моё новое видео из серии "Разработка стартапа с нуля до первых денег"
Это саамое трудозатратное видео, которое я когда-либо делал.
Активно его делал где-то 2 недели до отпуска и почти 2 недели после. Даже боюсь считать, сколько это часов 🙄
Оказалось, что делать продакшн реди на камеру, с сохранением интенсивности повествования оч сложно. Поэтому, ближе к концу пришёл к более простому и привычному формату. (Кстати, кто всё посмотрит, напишите потом в комментах, как лучше. Там будет прям очень понятная граница)
Получилось 6,5 часов... Это с полностью скипнутой вёрсткой.
С точки зрения пользы, это кладезь:
- и настройка авторизации next-auth (github и email),
- и отправка email от @micro-courses.ru,
- и интеграция с s3, и поднятие minio в локальном окружении,
- и вариант реализации fsd в fullstack nextjs приложении,
- и работа серверных экшонов вместе с react-query
- и реализация e2e тестирования с next-auth (там оказалось нетривиально)
Но, с точки зрения youtube, видео скорее всего не залетит. Всё же больно сложное и слишком не для начинающих.
Да на самом деле и цели много просмотров набрать нет.
В первую очередь, разрабатываю приложение. Заодно особо пытливым помогаю и опыт свой передаю.
Благодаря этому получается совершенно уникальный контент. Надеюсь, зацените 👇
https://youtu.be/GgG3mi4Iqhw
3 939
Пришёл я тут на проект с оверинженирингом и перебором коплинга. Решил ещё раз вам напомнить про low coupling high cohesion. Думали бы все об этом чаще, я бы сейчас не онбордился 3 месяца в систему со средним уровнем абстракции кода 20
low coupling high cohesion – суть в противоречивости
Быстро, качественно и не дорого. Вот несбыточная мечта рода человеческого.
Но в самой сути этой тройки лежит противоречие, основанное на ограниченности различных ресурсов.
Мы все чётко осознаём это противоречие и миримся с ним. Пишем костыли. Выделяем время на рефакторинг. Нанимаем сеньоров, вместо джунов
Быстро, качественно и не дорого: выбери 2)
Вот вся суть этого мира.
А теперь давайте проанализируем принципы программирования с этой точки зрения.
DRY – догма. Во многих случаях вредит
KISS – догма. Во многих случаях вредит
YAGNI – догма. Во многих случаях вредит
SOLID – состоит из догм настолько, что многие не верят, что можно вообще написать что-то, следуя всем принципам
Эти штуки нельзя рассматривать, как универсальные правила. Так как слепое следование приводит к перекосам и дисфункциям. Я рассматриваю эти принципы, как инструменты с ограниченной зоной влияния.
Но среди всех принципов разработки есть парочка, которую я смело могу назвать универсальными принципами качественного кода (что это такое, можно будет как-нибудь отдельно обсудить)
low coupling и high cohesion
И люблю я их именно из-за того, что они противоречат друг другу.
Очень легко доказать это, если возвести оба принципа в абсолют
Абсолютный low coupling – это god object) Если нет связей между модулями, то и коплинга нет.
Абсолютный high cohesion – когда всё приложение состоит из однострочных функций, которые выполняют супер атомарные операции. И организуют неразборчивую паутину связей
Обе ситуации ужасны. И при этом невозможны, если учитывать оба принципа одновременно.
God object невозможен, если мы думаем о high cohesion
Перебор с декомпозицией невозможен, если мы думаем о low coupling
Каждый из этих принципов не может быть реализован полностью из-за существования другого. И благодаря этому наш код стремится к среднему значению, в котором, по моему мнению, и находится зона "хорошего кода"
3 939
Борьба с головной болью
Я всю жизнь мучался страшными головными болями. Где-то в 9 классе мой отец решил: хватит это терпеть, и мне сделали полное обследование головы. МРТ, ЭЭГ куча врачей, денег и пару месяцев жизни...
В результате ничего не нашли. Поставили ВСД (кто знает, тот поймёт)
Пропил я месяц мельдоний и просто смирился. Всё усугубилось, когда я стал программистом. Но я привык так жить и ничего не делал.
Недавно из рилса в инсте я случайно узнал причину. Банальная неправильная осанка. (Бляха муха, почему об этом не говорят на каждом шагу в программёрских каналах)
Всю жизнь у меня был ноутбук и хроническое перенапрящение мышц, которые держат голову.
И в этот момент началась борьба за осанку.
Всё началось с покупки монитора. Так не приходится смотреть вниз и нагрузка уменьшается.
Но это не решило проблему полностью. Я всё равно во время долгой работы скатывался в полулежачее положение. От этого недавно присоединились боли в спине, даже начало зажимать нерв (3 дня не мог встать)
Контроль осанки, как и любое волевое действо, бесполезен. Поэтому я решил изменить обстоятельства. Купил ортопедический стул.
Но и этого было не достаточно. Позиция на этом стуле очень высокая, и начал болеть грудной отдел, так как руки теперь были на весу.
В результате купил себе стол на электроприводе и, наконец, идеально себе всё настроил
Результат: 10 часов за компом – спина и шея в проядке. + приятная усталость во всём теле, так как все стабилизаторы равномерно нагружены
3 939
2023 – год преодоления внутренних границ
Вместе с новым смыслом я вошёл заряженный в 2023. И то, что тут произошло, в одном посте сложно описать)
Я специально шёл на страх и некомфортные обстоятельства, чтобы открыть для себя возможности, которые раньше считал "не своим предназначением".
Ставил цели для того, чтобы они давали мне энергию двигаться дальше, и жить всё более насыщенную и интересную жизнь.
И сейчас, оглядываясь назад, весь 2023 год видится мне как одно сплошное преодоление моих внутренних границ:
1. Начал вести инстаграм – преодолел страх раскрывать свою личность на публику
2. Пошёл к психологу – смог закрыть энергетическую дыру в отношениях с женой
3. 90 дней записывал видео без перерыва – смог доказать себе, что могу быть ответственным
4. Смог выпускать "не идеальные видео" – преодолел внутреннего перфекциониста
5. Смог отказаться от запуска платформы "непрерывного обучения" – преодолел свой максимализм
6. Смог запустить платный курс – преодолел страх продавать
7. Первый раз в жизни отдохнул в отпуске – смог преодолеть свои установки и прислушаться к себе
И ещё куча вещей, таких как преодоление страха критики, усталости, апатии, проблем в семье, с родителями и так далее.
Раньше всё это я загребал под ковёр и игнорировал. Сейчас я это преодолеваю и становлюсь счастливее 🧘♂️
3 939
В жизни нет смысла - и это классно
Судя по комментариям к прошлому посту, многие подумали, что если "жизнь бесмыслена", то это плохо.
Но вот, что я чувствовал в момент этого осознания:
Лежу на пустынном пляже в Анапе в октябре. Ноги в песке, мой взгляд направлен на бушующее штормовое море. Мне прохладно, но так спокойно.
До меня правда нет никому дела?
Я правда могу делать всё, что хочу?
Я просто могу быть счастлив?
Спасибо...🙏🏼
В этот момент, возможно, первый раз в жизни я почувствовал себя по-настоящему свободным.
3 939
2022 – год обретения нового смысла
В 2022 передо мной встал большой вопрос: а куда дальше? Если до этого всё получалось играючи, то сейчас требовались огромные усилия для дальнейшего движения.
Стандартный путь разработчик -> тимлид -> СТО уже не казался таким радужным. Тут же всплыли мои старые экзистенциальные проблемки. А зачем мне это всё?)
Может, моё предназначение в другом. И вообще, есть ли предназначение? В чём моя миссия?
Чтобы принимать сложные решения нужно знать, для чего живёшь. А я не знал
Я перенёс фокус с основной работы и ударился в поиски смысла.
Найти мне его помогла щедрость. Если вкратце: я начал делать мобильное приложение для одного эзотерического фестиваля, и в команде организаторов бесплатно туда 2 раза за год съездил. Там и нашёл все нужные для себя ответы:
1. Смысла в жизни нет
2. Моя личность является результатом деятельности мозга
3. Моё ощущение жизни есть результат гормонального коктейля в моём мозгу
Забавные выводы после фестиваля про эзотерику и духовность)
Кому-то может показаться, что это достаточно удручающие выводы. Но мне стало проще.
Самое главное, у меня появилась цель: гормоны счастья.
И инструмент: личная ответственность. (Только я ответственен за свои гормоны)
3 939
2021 – встреча с внутренними ограничениями
Это был год рассвета меня, как программиста. Я стал лидером React направления в небольшой outstaff компании. Нанимал людей, обучал их, сам активно разрабатывал, и очень даже успешно. На каких-то проектах как разработчик, а на каких-то как тимлид.
Но в конце года начались проблемы. Нагрузка, которую я на себя взял, была не сопоставима моим возможностям. Но самое грустное было не это. Я упёрся в свои внутренние ограничения. Если у меня, как разработчика получалось всё легко и офигительно. То тимлид получился из меня такой себе.
В общем, я словил нешутёвое такое выгорание в 2021. И в этом состоянии начался мой 2022.
