tgindex
Всё о разработке | Леонид Ченский

Всё о разработке | Леонид Ченский

Статистика
@leoscodeрусский

Рассказываю об актуальных проблемах, с которыми сталкивался в своей работе. Делюсь полезными материалами, курсами, статьями и просто своими мыслями. GitHub: https://github.com/moguchev Linkedin: www.linkedin.com/in/leoscode

Последний пост
4 авг.
Последнее чтение
15 авг.
Постов за неделю
0
Всего постов
21
Тип
открытый
Язык
русский
В каталоге с
13 авг.
Подписчики
731
−1 за 4 дн.
Сутки
0
0,00%
Неделя
 
Месяц
 
Просмотров на пост
845
21 постов
Вовлечённость
115,6%
к подписчикам
Постов в день
0,0
всего 21
Упоминаний
0
каналов
Охват размещения
оценка
1/24сутки в ленте
335
1/48двое суток
383
1/72трое суток
414

Оценка по просмотрам недавних постов: пост набирает почти всё за первые сутки.

Посты

  • 4 авг.378183

    "Капризный день"

  • 17 июл.7821210

    Пользуюсь случаем, напишу тут: ищу заряжененного Go разработчика к себе в команду. Ссылка на вакансию: HH.ru

  • Утро вторника началось не с кофе… Кто положил, признавайтесь!)

  • 1 июл.978365

    Согласны? 👍 Да 🗿Нет

  • 28 июн.8322517

    Впечатление о прошедшей конференции TeamLead Conf Чтобы понять, что творится сейчас с отраслью, достаточно съездить на крупную конференцию. Именно поэтому я отправился на TeamLead Conf в Питере, чтобы посмотреть, что творится вокруг. Последний раз я был там в 2022 году и мне есть с чем сравнить. Итак, начнем: 1️⃣Число представленных компаний и стендов. Если в 2022 году было предоставлено более 20 IT компаний из разных секторов экономики , то в этом году их было всего порядка 6-7… Основная риторика стендов. Если раньше компании стремились перенять экспертизу, схантить крутых кадров и просто рекомендовать себя как хороший IT работодатель, то сейчас это просто реклама своих услуг и продуктов b2b и b2c… 2️⃣Присутствие топ-менеджеров. Лично помню, как в 2022 году познакомился в кулуарах с несколькими СТО из разных компаний. Топовых менеджеров, правда, было много, причем из разных компаний. В этом году их не было. Честно, я искал топов BigTech, я не нашел… (возможно, не там искал) 3️⃣Основная риторика докладов. Если в 22 году это были метрики, процессы, оптимизации в орг. структурах и soft скиллы. То сейчас, понятное дело, все внимание было уделено ИИ. Да, ряд крупных компаний, такие как Яндекс, Сбер, активно внедряю AI в процессы разработки. Однако объективных результатов пока еще нет и говорить об этом в этом году рано (ждем 2027-ой). 4️⃣Общая атмосфера и настроение. Бизнесу сейчас, по понятным всем причинам, не просто, и все это понимают. Уровень неопределенности большой, а тут еще и ИИ революция грядет, и непонятно, кто в итоге останется, а кого упразднят. В общем, понятно одно: золотые времена больших ЗП и крутых карьерных возможностей в IT заканчивается. Легальный и быстрый социальный лифт дорабатывает свои последние деньки… Как быть дальше? Лично мои выводы такие: если вы эксперт с глубокой экспертизой в чем-то одном, скорее всего вас не тронут и вы останетесь на своем месте. Если вы junior/middle в одном стеке без смежных знаний и навыков, вас скорее всего заменит не ИИ, а сеньер Валера с ассистентом ChatGPT, Claude, GigaChat, и т. д. Что делать сейчас? Честно, я пришел с таким же вопросом на эту конференцию, и четкого ответа так и не нашел… Думаю, тут уместно выражение: «Не дай вам Бог жить в эпоху перемен». Кто увидит новые перспективы и возможности, тот будет на коне, остальным придется ждать указаний.

  • Понеслась 🚀 Естественно mainstream в этом году — AI🤖. Послушаем что говорят эксперты.

  • 11 июн.9502019

    Единственный раз, когда подвел Go 😢

  • 29 мая1 00882

    Podlodka Go Crew 🚀 Пишете на Go и хотите узнать, как закладывать надёжную основу для своих проектов? С 1 по 5 июня Podlodka Go Crew вместе с 2ГИС проведут сезон «Лучшие практики в Go». Организаторы собрали сильную программу с акцентом на живой опыт и прикладные кейсы. Вот несколько сессий, на которые советуем обратить внимание: «Практика Go оптимизаций: растем вместе с нагрузкой», Алексей Акулович — про то, как сервис растёт до миллионов RPS, оптимизацию CPU, grpc и protobuf, а также про собственный GC поверх гошного. «Эволюция структуры Go-проекта: как 30 человек пушат в один репозиторий», Кирилл Возжеников — как развивается продуктовый монорепозиторий и строятся хорошие архитектурные практики. «Как и зачем писать свой CDC на Go», Юра Саргсян — когда приходится выходить за стандартные решения: Postgres, Kafka, гарантии доставки и подводные камни логической репликации. В конце сезона участников ждёт «Битва кейсов: 50 оттенков межсервисного взаимодействия» — разбор архитектурных задач с метриками, схемами и поиском решений в реальном времени. 🎟 И это ещё не всё — смотрите полную программу на сайте и забирайте билет! 🎁 По моему промокоду скидка 500р: leoscode_7

  • 19 мая9361426

    Давно что-то ничего не публиковал тут... Продолжаю в свободное время осваивать "Agent Driven Design". На прошлой неделе решил проблему с подписками в Claude и начал с ним играться. Установил себе сразу следующие SKILLS: * https://github.com/blader/humanizer - чтобы документация кода писалась "по-человечески". Без нее правда хуже (особенно на русском) * https://github.com/obra/superpowers - джентельменский набор не требующий рекламы (почти 200k звезд) * https://github.com/rustyrazorblade/skills - cassandra expert - лично мне нужно в работе) * https://github.com/JetBrains/go-modern-guidelines - нужная вещь для тех кто пишет на Go Кто в теме, что еще посоветуете в качестве must-have? На выходных решил закрыть один issue в go cassandra драйвере — адаптировал обертку gocqlx и разместил у себя: https://github.com/moguchev/cqlx. Надеюсь комьюнити оценит). Благодаря агентам работать с кодом стало сильно проще и быстрее: очень много рутинных операций уходит (если, конечно, промт верно составить и нормально описать спецификации). Продолжаем изучать чудо-инструмент дальше...

  • без подписи

  • без подписи

  • без подписи

  • без подписи

  • без подписи

  • Посчастливилось сегодня выступить в Самаре перед студентами в 2-ух университетах с докладом о том, как начать карьеру во время учебы и как это получалось у меня. Приятно делиться опытом и инсайдами. Хочу отметить, что в Самаре был первый раз и это очень красивый город. Еще раз точно приеду.

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

  • 5 апр.973218

    Мой первый удачный опыт вайбкодинга Agent Driven Development Пока возился с активацией аккаунта Claude, вспомнил, что у меня есть подписка ChatGPT, и решил пока потестировать Codex на реальной задаче. Взял go-ycsb: нужно было разделить адаптеры для Scylla и Cassandra и обновить драйверы до последних версий (точнее перейти на новые, но не суть). Эту задачу я уже делал сам — потратил около часа, включая погружение в проект. Потом стало интересно: а как с этим справится Codex? Решил не мелочиться и начать с режима планирования. Сначала попросил его собрать Architecture.md, чтобы модель поняла структуру проекта. Потом, скорее для учебных целей, добавил ещё SKILL brainstorming. И тут был первый приятный сюрприз: нейронка начала задавать очень хорошие уточняющие вопросы, о которых я сам на старте даже не подумал. Да, для такой простой задачи это уже был overengineering. Но как первый опыт — очень ценный. Что понравилось больше всего: Codex не ограничился только кодом. Он поправил документацию, сохранил совместимость API, ничего не сломал, прогнал всё в Docker и ещё написал тесты. И вот тут стало особенно интересно, потому что мой собственный вариант был слабее: я не сохранил обратную совместимость и не обновил документацию с интеграционными тестами. В итоге на всё ушло около полутора часов в спокойном режиме. Если честно сравнивать результаты, то я справился примерно 60-80%, а Codex на все 100% по полноте выполнения задачи. После этого у меня довольно простой вывод: начинать использовать AI в разработке можно с более простых сценариев — ревью, планирование, архитектурные заметки, документация, проверки на совместимость, актуализация тестов. Это позволит привыкнуть к экосистеме AI агентов и появится понимание как с этим всем работать. Кстати, у нас в команде мы уже договорились прогонять ревью через AI и сейчас тестируем разные open-source модели. Нейронки правда бывают более дотошными и внимательными, чем человек, особенно в рутинных проверках. Нас они уже несколько раз выручали. На следующей неделе буду тестировать Claude (все-таки у нее больше комьюнити и прикольных фич). Кто уже гуру вайбкодинга, поделитесь своими успешными (и не очень) кейсами.

  • Наблюдая год за всей этой историей с AI агентами в разработке понял, что прогресс слишком быстрый и виден на лицо. Забавный факт из моих наблюдений на работе: Senior+ разработчики, использующие AI агенты в работе выходят на сверх продуктивный уровень генерируя тонны хорошего кода и готовых решений, на которые раньше могли уйти месяцы. При этом продуктивность разработчиков уровня Junior/Middle использующие AI не изменилась, а вот качество решений как будто хуже, если бы они сами писали… (не говорю что у всех так, но как есть). Выходит, что AI агенты это именно инструмент. И в руках профессионалов оно генерирует огромный “value”🙂 Решил, что пора тоже втягиваться и начать все это дело изучать. Буду переодически делиться тем, что узнал и использую для обучения. Сегодняшняя попытка зарегистрировать аккаунт в Claude провалилась об верификацию по номеру телефона… У меня есть зарубежные номера, но они все не подходят. Проблема не у меня одного (issue свежий). Навайбкодили получается 😐 Пока что штудирую документацию Claude. Из того что вынес: - как и у всех LLM — большой контекст проблема. Нужно держать его как можно меньше, используя разные «хаки» с инструкциями, файлами, скилами. - Claude довольно умная, чтобы самостоятельно решать задачи. Главное — четко и кратко сформулировать цель и дать необходимый контекст и критерии для самостоятельной проверки решения. В общем, к Claude надо относиться как к новому разработчику в команде и делегировать ему, используя документации и регламенты. Пошел дальше читать документацию…

  • 23 мар.8052421

    НАПИСАНИЕ HIGHLOAD СЕРВИСОВ ОСТАВЛЯЕТ СЛЕД... 2 года я проектировал сервисы на Go, которые должны были держать 200k+ RPS и иметь время ответа менее 50ms в 99p. При таких условиях недостаточно написать просто рабочий код, он должен быть потреблять как можно меньше ресурсов. В общем, вырабатывается привычка экономить «каждый байт и аллокацию». На другом проекте (не highload) как-то раз мне попадает на код ревью MR. В глаза сразу бросается стандартное преобразование слайса байт в строку: str := string(bytes) Я сразу пишу в комментариях: «тут можно сделать дешевое преобразование через unsafe» Разработчик отвечает: «а как это сделать и зачем?» И тут я понял сразу 2 вещи: Во-первых далеко не все Go-разработчики работали с unsafe (оно и понятно, не все разрабатывают highload-решения). Во-вторых, разработчик задал верный вопрос: «Зачем?». Действительно, преждевременные оптимизации скорее мешают, чем помогают. Тем более в сервисе с 1-5 rps… В общем, свою привычку "оптимизировать все сразу" я отбросил. Но мне все не давало покоя, что какие-то хаки остаются скрытыми от публичных глаз… Поделюсь одним из неочевидных здесь 👉 В Go на каждую аллокацию в куче вызывается функция mallocgc, которая имеет определенную скрытую от наших глаз логику. Когда в одном цикле мы выделяем 1000+ объектов, overhead от mallocgc становится заметным... type MyStruct struct { someFields [64]byte Value bool } func simpleAllocate(n int) []*MyStruct { result := make([]*MyStruct, 0, n) for range n { result = append(result, &MyStruct{Value: true}) } return result } BenchmarkAllocate/100/Simple-10 655094 1872 ns/op 8896 B/op 101 allocs/op BenchmarkAllocate/1000/Simple-10 67028 18604 ns/op 88192 B/op 1001 allocs/op BenchmarkAllocate/10000/Simple-10 5565 201100 ns/op 881925 B/op 10001 allocs/op BenchmarkAllocate/100000/Simple-10 526 2377439 ns/op 8802821 B/op 100001 allocs/op Мы имеем издержки при аллокации на каждой итерации! Как это можно оптимизировать? Идея стара как мира — вынести из цикла: func hackAllocate(n int) []*MyStruct { var ( result = make([]*MyStruct, n) resultV = make([]MyStruct, n) ) for i := range n { resultV[i].Value = true result[i] = &resultV[i] } return result } Да, это кажется на первый взгляд контр-интуитивно, однако мы аллоцируем сразу нужное нам количество структур с помощью слайса, а далее просто сохраняем ссылки на них. BenchmarkAllocate/100/Hack-10 1657069 754.9 ns/op 7424 B/op 2 allocs/op BenchmarkAllocate/1000/Hack-10 162456 7304 ns/op 73728 B/op 2 allocs/op BenchmarkAllocate/10000/Hack-10 17347 70141 ns/op 737284 B/op 2 allocs/op BenchmarkAllocate/100000/Hack-10 1492 763791 ns/op 7307279 B/op 2 allocs/op Итого: мы можем получить выигрыш в скорости до 3 раз! Тут нет никакой магии, просто сделать одну большую аллокацию проще чем много маленьких. Хорошо, а есть более прозрачный способ решить проблему с множеством аллокаций? Да, начиная с версии Go 1.20 появились арены (но все еще как экспериментальная фича): func arenaAllocate(mem *arena.Arena, n int) []*MyStruct { result := arena.MakeSlice[*MyStruct](mem, n, n) for i := range n { s := arena.New[MyStruct](mem) s.Value = true result[i] = s } return result } Арены правда убирают аллокации и облегчают жизнь GC, однако по скорости работы они уступают... BenchmarkAllocate/10000/Simple-10 6948 161145 ns/op 881920 B/op 10001 allocs/op BenchmarkAllocate/10000/Hack-10 27702 43448 ns/op 737280 B/op 2 allocs/op BenchmarkAllocate/10000/Arena-10 4921 219361 ns/op 729991 B/op 2 allocs/op В итоге такой Hack-аллокатор даже без unsafe дает буст... P.S. Про unsafe рассказываю на курсе в своем бесплатном уроке

  • 🌍 Мир становится многополярным, а это значит, что надо становиться многоканальным. Я очень трепетно отношусь к своем каналу, честно. Каждый пост здесь — это частичка моей души и вдохновения. На поток такое тяжело поставить... Мне бы очень не хотелось потерять своих дорогих подписчиков, если вдруг ИНТЕРНЕТ все же станет ИНТРАНЕТОМ 😐. В общем, я завел канал в... 🥁 💙 https://vk.com/leoscode Подписывайтесь, будем на связи!