codemonsters.log
572 subscribers
178 photos
19 videos
105 links
| Просто рассказываю про
| Научно обоснованный подход
| Рациональной и качественной разработки софта
@maxology
Download Telegram
💻 Недавно на митапе о стандарте разработки нам с Heads of Profession задали вопрос, который завис в воздухе, как нерешенный баг в коде. Пятый по популярности в сообществе, он звучал так:

А что за потребность всё делать %-as-code? Какая от этого польза? Зачем число комитящих в код?”

Мы, как архитекторы инженерной культуры, внедряем лучшие практики и подходы: Infrastructure-as-Code, API-First, unit-тесты, компонентное тестирование, TBD (trunk based development), GitOps, Doc As Cod, ..as code. Хаос необходимо упорядочить. Мы дорабатываем пайплайн, как инженеры, собирающие сеть в подвале старого дата-центра. Мы создаем условия для Continuous Deployment с продуктовыми платформами, где blue-green deployment и canary deployment становятся порталами для перехода прода из одного состояние в другое..

Каждый коммит — это шаг в будущее, где код уже не просто текст, а нить в живой ткани новой реальности. Число комитящих — это не просто метрика, это сигнал, что система жива, что она дышит, что она развивается.
As-code — это философия, где всё, от инфраструктуры до документации, становится частью единого цифрового сада.

Я провалился в момент осознания вопроса в другой слой реальности, задумался об истории ..as code и собрал этот текст из разбросанных по сети слепков.

И когда кто-то спрашивает: “Зачем?”, я отвечаю: “Потому что иначе мы останемся в прошлом, где ручные процессы, как старые провода, тянут нас назад в тишину, замедляя каждый шаг. ” Мы строим мир, где as code не просто слова, код - наша новая реальность. И каждый, кто коммитит, становится частью этой вселенной.

Читать полностью

#codemonsterslog #code
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8🤔4
Написал
1 Заклинателю приложений
Хагакурэ:

Всю свою жизнь учись. Каждый день становись более искусным, чем был вчера, а завтра — более искусным, чем сегодня. Совершенствование не имеет конца.

Осознанность в разработке — это кибер-имплант, который нужно установить как можно раньше.

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

Ты видишь как важные и простые принципы буквально пронизывают киберпространство?

Я пишу себе в прошлое, тому джуну с горящими глазами, который без устали сутками вбивал на деке команды машине, а та покорно их исполняла. Теперь, оглядываясь назад, я понимаю: если бы мне, а точнее тебе, объяснили основные принципы доступно на старте — путь мог бы быть проще. Код, который ты наколбасил в те дни, мог бы быть качественнее и содержал бы меньше возможностей для ошибок.

https://codemonsters.team/codebook/

Читать полностью

#codebook #codemonsterslog
🔥12💯1
Японцы знают толк в развлечениях.
Собираю GUNDAM
BAN
DAI


Пойду напишу код

Ты что собираешь?

#codemonsterslog
👍4👏4🔥3
🎙 Переписал часть сервиса для лонгрида по рефакторингу

Линкос ведёт на код скрина 👋

Получилось норм.
Хорошие тесты.
Надежный код.
Есть что улучшить ещё и подойти к замене брокера.
Работа с легаси - это интересный вызов.

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

В ридмихе есть отсылки к истории.

Добавил asyncapi спеку 3.0.0 и валидацию в ci

Продолжу писать главу про хаос и порядок.

Может лонгрид дропнуть как есть?

#codemonsterslog
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
😱 Что значит быть инженером в новых реалиях? И какой смысл мы вкладываем в эти слова — расскажем на GPB CONF уже через неделю!

22 апреля в Москве пройдет ИТ-конференция от Газпромбанк.Тех 🤯

Что вас ждет?

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

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

А в экспозоне у вас будет возможность погрузиться в специфику каждого направления — от мобильной разработки до кибербеза и продуктового дизайна 🤒

Участие абсолютно бесплатное! Просто зарегистрируйтесь и получите персональный билет с подробной программой.

Ждем вас на GPB CONF! 😎

Наш канал в телеге
#codemonsterslog
6🔥2🥰2
Media is too big
VIEW IN TELEGRAM
💪 вчера гоняли с Андреем по трассам южного склона Байк-Парка в Архыз.

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

Спасибо Бро за видос и за то, что показал все трассы кроме черной).
Сегодня шел дождик, я на чилле читаю книги.

#codemonsterslog #lifestyle
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥232
💻 поставил cursor

Ну всё. Ещё и неоновая тема.

Экспериментирую,
Очень нравится.

VS Code зашёл давно, но руки не дошли до максимальной прокачки.

#codemonsterslog
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥5
Эксперименты в DevOps приводят к временным странным ландшафтным образованиям.
Комп на полу, админ на полу - классика

Часто рано утро я программирую.

Ты сидел/лежал на полу настраивая свой сервачок?

#codemonsterslog
🔥12
Вчера придумал, пока с инженерами продумывали как оптимизировать конвейер.

лучшая инженерная практика bypass


#codemonsterslog
😁11
Симбиоз с машиной при разработке. Компонентные тесты.

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

Иллюзия:
#gardener@core: закрываю глаза, обдумываю API компонента, проговариваю контекст, открываю глаза и вижу в git async api 3.0 спецификацию.

Я установил пару ИИ-имплантов в виде Claude и Cursor.
VS Code в сочетании с cursor меня очень порадовал на практике.
Возврат в IntelliJ IDEA теперь ощущается как деградация.
Горячие клавиши, молниеносные переходы между кодом и терминалом, древо проекта слева — интерфейс стал продолжением нервной системы.

С машиной я взялся за старый учебный сервис.

Задача: вшить компонентные тесты в проект

Читать полностью

#codemonsterslog #tests #componenttests
🔥41
О важности коммуникации в IT: встреча со студентами Бауманки

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

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

Код - побочный эффект коммуникации.


Часто бывает, что побочный эффект коммуникации - кот в мешке без ручки.

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

Мне нравится думать об этом через фразу:

Make me fucking care


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

Читать полностью

#codemonsterslog #community
👍15💯3
Если пропустил, JB выпустил сырой официальный LSP для VS Code

@d_r_q, спасибо за подсказку. Уже на тесте.

#codemonsterslog
🔥3
О том, как "пять минут" превратились в тот самый production deployment

Сидели, завтракали. Я вскочил и побежал записывать идею, сказал Вике:
— Я через пять минут вернусь.
— Хорошо, не забудь.
Я подумал, как можно забыть вкуснейший блин с яблоком и спешелти кофе. Я поставлю таймер на 5 мин и все.

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

Да. Так и не вернулся. Таймер прозвенел фоном. Не помню как его отключил.
Делал презентацию по результатам аудита команд.

Классический случай "just one more commit".

Рефакторинг

Рефакторинг — непрерывный процесс. Садовник следит за садом каждый день (код это или люди).
Так и я проверяю, как команды следуют стратегическим целям. Что у них творится в git, что пишут в тикетах в джирке.

Как говорят британские девелоперы:
«Рефакторинг — это как мытьё посуды: игнорируешь неделю, и вдруг ешь хлопья вилкой, потому что все ложки погребены под техническим долгом».

У некоторых заканчиваются вилки и они начинают есть хлопья руками.

P.S. Блин с яблоком остыл. Блин.

// TODO: implement breakfast.reheat() method
// FIXME: wife.mood = null
// Known issue: Food temperature decreases over time. Won't fix — working as designed.


#codemonsterslog
🔥134👍1🤔1
Дорогая, работа с AI-агентом превратила меня в супермена.
Или супер-мема — сейчас это почти одно и то же.

Я учусь и создаю автоматизацию в разы быстрее. Это новый темп, новый стиль работы.

Помнишь «Джонни-мнемоника»? Как главный герой перевозил информацию в чипе, встроенном в череп? История материализовалась. До нас доходят фрагменты через текстовые каналы.

Где-то китайские специалисты везут 50 ТБ обученных моделей в самолёте из стран с более свободным интернетом. В неоновых лучах Токио якудза с лазерной нитью крадёт первоклассный датасет сверхновой нейросети и перепродаёт через даркнет военным подрядчикам. Проклятая Арасака.

А я тут со своим Go и unit-тестами — как уличный самурай с клавиатурой вместо катаны.

В отражениях небоскрёбов мегаполиса стильные корпораты в дизайнерских костюмах везут обученные модели в гоночных суперкарах. Машина улучшает машину. Recursive enhancement. БУМ.

Я словно с вшитым нейроимплантом: расширенная память, ускоренное написание кода на максималках, прямая связь с матрицей целей. Мои синапсы работают в режиме overdrive.

Быстрее тестирую гипотезы, исследую новые направления. Это прорыв. Digital awakening.

Я не могу объяснить всё — слишком много переварить. Я на эмоциях.

Даже читаю больше и быстрее.

Погнали к коду

Читай мой лог про то, как я за 5 часов написал сервис с тестами, прокачал CI и получил море эндорфинов.

#codemonsterslog
#code
4🔥4
Обожаю эту полочку вайб кодера 😂

#codemonstersmood
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥10
Что я сделал за 3 х 45 мин
код теста на геркин API Unleash
коммиты эксперимента и пошаговых улучшений кодовой базы
сразу улучшил фундамент, потом вкатил анлишь
https://git.codemonsters.team/guides/mq-rest-sync-adapter/-/commits/feature/component-tests-unleash

Добавил тесты интеграции с Unleash

В двух словах:
Unleash - это хранилище тоглов, к которому может быть подключен твой сервис. В UI анлиш или API ты включаешь тогл и твой сервис переключается на использование фичи, которую включает/выключает тогл.

Что такое тогл/ фича-флаг/ фича-тогл?

Фича-флаг (feature flag/toggle) — это механизм, который позволяет включать или выключать функциональность в приложении без изменения кода и без нового деплоя.

Простая аналогия
Представьте выключатель света в комнате:

Включен → функция работает для пользователей
Выключен → функция скрыта, хотя код присутствует в приложении

пример кода:
if (featureToggles.isFeatureEnabled("wallet-balance-workflow")) {
refactoredBalanceFlow(message)
} else {
legacyBalanceFlow(message)
}




sorry(нет):
Я с подозрением отношусь к проектам спроектированным полностью на TypeScript, JS. Оно идет инзутри моего нутра. Я понимаю, что это просто инструмент. Но это не самый хороший для бэка вариант.

С апи я помучался немного. Агент тоже не сразу справился, но я его научил.
API Unleash содержит ошибки в доке, например
API создания фичи описано с кодом 200 в ответе.
https://docs.getunleash.io/reference/api/unleash/create-feature
по факту 201.

Интеграция в компонентном тестировании с Unleash позволяет
сколь угодно тестировать сервис. И это просто.
Включая и выключая тоглы програмно по API прописываешь на геркине тест сервиса:
| включил тогл
| прогнал тест фичи
| выключит тогл
| прогнал тест фичи
Фича готова к установке

Автоматизавтор:
Дополнительно проверил есть ли мэтч с тоглами локального компонентного теста и с анлиш на stage, prod
чтобы не катить с тоглами, которых нет в мастер-системе - обеспечил согласованность.

P.S.
Есть несколько интересных проектов, на которые можно обратить внимание:

Flagsmith


Стек: Django/Python (backend), React (frontend)
Популярность: Активно развивается, хорошее сообщество
Простота: Есть облачная версия и self-hosted
Особенности: REST API, webhooks, интеграции

GrowthBook

Стек: Node.js/TypeScript (backend), Next.js (frontend)
Популярность: Новый, но быстро растущий
Простота: Фокус на A/B тестировании
Особенности: Интеграция с аналитикой, статистический движок

Flagr

Этот инструмент я покручу следующим.

Стек: Go
Популярность: Используется в Checkr
Простота: REST API, простое развертывание
Особенности: Легковесный, хорошая производительность
Client Libraries
(нет Java)
Language Clients
Go goflagr
Javascript jsflagr
Python pyflagr
Ruby rbflagr

#codemonsterslog
👍6🔥32🤔1
Ну что, Оптимус.
Дэйкстра в книге
«Дисциплина программирования»
1976 года меня очаровал с первой главы в послании от автора про перделки и свистелки в программировании:
Наверняка разочаруются все те, кто отождествляет трудность программирования с трудностью изощренного использования громоздких и причудливых сооружений, известных под названием «языки программирования высокого уровня» или — еще хуже! — «системы программирования». Если они сочтут себя обманутыми из-за того, что я вовсе не касаюсь всех этих погремушек и свистулек, могу ответить им только одно: «А вполне ли вы уверены, что все эти погремушки и свистульки, все эти потрясающие возможности ваших, так сказать, «мощных» языков программирования имеют отношение к процессу решения, а не к самим задачам?» Мне остается лишь надеяться, что, несмотря на употребление мною мини-языка, они все же прочтут предлагаемый текст.


А тем временем, Оптимус, некоторые инженеры (так называемые инфлюенсеры) не видят целесообразности в Соглашении Наименований (Name Conventions) при стандартизации работы команд.
Но это уже другая увлекательная история, брат.

#codemonsterslog
🔥8💯2
Делегирование — скользкая дорожка

Как не стать бутылочным горлышком в своей организации, мыслить масштабно и понимать, что происходит в развитии своих направлений — работа далеко не очевидная. Я решил для себя, что должен продолжать «марать руки» как инженер.

Убежден: тех-лид должен продолжать «марать руки». CTO тоже может марать руки - этого очень не хватает в работе.

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

Проблема «царя во дворце»

Проблема мистера «Царь во дворце» часто кроется в том, что он считает свою работу чисто стратегической. Думать масштабно и делегировать результаты своих размышлений подчиненным. Так поступают многие и теряют доверие.
О таких часто говорят на разных уровнях: «Ну все понятно, ему хорошо.
Но его не видно, и он ничего не делает».

Если только делегируешь — значит, забыл, что значит работать по-настоящему.
Мне нравится смотреть на свои направления как в стратегии (я про Starcraft, но скорее про Dawn of War 2): наблюдаю, куда движутся команды, что у них происходит в каналах коммуникации, вижу проблемные участки или нарушения коммуникации, спускаюсь на дропподе, погружаюсь в проблему до самой земли и даже до червей в земле. Ищу ключевые проблемы и работаю над тем, чтобы помочь команде увидеть общую картину, чтобы на основе стратегии применять тактику, а не просто бежать и делать.

Важность понимания корня проблемы

Если строю пайплайн — хочу видеть его в Git, хочу знать, как он работает и что будем делать для его ускорения, опираясь на дашборды, отражающие поток его работы. Хочу чувствовать и видеть стук машинного сердца каждого компонента конвейера.

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

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

тех-лид с чистыми ручками

Тех-лид, твоя работа — показывать делом и учить младших разработчиков. Ради всего святого, это же очевидно! Если ничего не делаешь, сидя на стуле в кабинете, с чего взял, что твоя команда начнет шевелиться вдохновенно и искать точки достижения успеха?
ТехЛид - это не про пенсию и покой. Это про другой уровень задач.

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

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



#codemonsterslog
🔥18👏65
Дописываем с командой утилитарный handbook. Получается круто. Я очень рад.

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

Сам хендбук при лёгком сканировании погружает в нашу инженерную культуру.
Содержит ссылки которые помогут понять :
- какие API есть для разработки продуктов
- где и как мы храним доки к сервисам. Спойлер - храним в git.
- ссылки на темплэйты сервисов

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

Мы строим Конвейер Непрерывной поставки (Continuous Deployment)
Внедряем практики, которые прекрасно поддерживают такой конвейер.

Наш манифест:

Меньше кода — простые архитектурные решения.
Меньше документации, но лучше — фокус на спецификации Async API 3.0, лаконичных README, понятный ландшафт API, документации в гит
Меньше тестов — акцент на 100% покрытие бизнес-логики юнит-тестами, мы пишем компонентные тесты и почти не используем E2E
Чаще устанавливаем на прод и реже ошибаемся — Continuous Deployment с автоматизированным контролем качества. Чтобы меньше совершать ошибок - нужно чаще устанавливать.
Единые артефакты ручного тестирования

Каждая глава - руководство к действию и описание задачи для реализации автоматической проверки артефакта на соответствие.

Например:
Мы используем компонентные тесты.
где они запускаются?
На этапе ci. Что это за этап?
Этап слияния в основной транк.
Мы используем trunk based development (TBD).

Как они запускаются автоматом?
Сколько таких тестов должно быть и почему?

#codemonsterslog
🔥9👍5👏2