fa
Feedback
Fedkin is thinking

Fedkin is thinking

رفتن به کانال در Telegram

Сотрудничество: @qsqnk

نمایش بیشتر
9 134
مشترکین
-324 ساعت
+2537 روز
+1 18330 روز
جذب مشترکین
سپتامبر '26
سپتامبر '26
+126
در 0 کانال‌ها
اوت '26
+1 177
در 0 کانال‌ها
Get PRO
ژوئیه '26
+328
در 1 کانال‌ها
Get PRO
ژوئن '26
+120
در 0 کانال‌ها
Get PRO
مه '26
+120
در 0 کانال‌ها
Get PRO
آوریل '26
+71
در 0 کانال‌ها
Get PRO
مارس '26
+94
در 0 کانال‌ها
Get PRO
فوریه '26
+102
در 1 کانال‌ها
Get PRO
ژانویه '26
+118
در 0 کانال‌ها
Get PRO
دسامبر '25
+102
در 0 کانال‌ها
Get PRO
نوامبر '25
+91
در 1 کانال‌ها
Get PRO
اکتبر '25
+131
در 1 کانال‌ها
Get PRO
سپتامبر '25
+369
در 2 کانال‌ها
Get PRO
اوت '25
+134
در 0 کانال‌ها
Get PRO
ژوئیه '25
+444
در 4 کانال‌ها
Get PRO
ژوئن '25
+584
در 1 کانال‌ها
Get PRO
مه '25
+248
در 0 کانال‌ها
Get PRO
آوریل '25
+204
در 0 کانال‌ها
Get PRO
مارس '25
+825
در 1 کانال‌ها
Get PRO
فوریه '25
+78
در 0 کانال‌ها
Get PRO
ژانویه '25
+88
در 1 کانال‌ها
Get PRO
دسامبر '24
+80
در 0 کانال‌ها
Get PRO
نوامبر '24
+93
در 0 کانال‌ها
Get PRO
اکتبر '24
+192
در 0 کانال‌ها
Get PRO
سپتامبر '24
+96
در 0 کانال‌ها
Get PRO
اوت '24
+438
در 4 کانال‌ها
Get PRO
ژوئیه '24
+1 282
در 37 کانال‌ها
Get PRO
ژوئن '24
+40
در 0 کانال‌ها
Get PRO
مه '24
+38
در 0 کانال‌ها
Get PRO
آوریل '24
+85
در 0 کانال‌ها
Get PRO
مارس '24
+930
در 10 کانال‌ها
Get PRO
فوریه '24
+2 466
در 5 کانال‌ها
تاریخ
رشد مشترکین
اشارات
کانال‌ها
05 سپتامبر+2
04 سپتامبر+5
03 سپتامبر+32
02 سپتامبر+20
01 سپتامبر+67
پست‌های کانال
Полезно понимать, какие проблемы решает твой руководитель
Повышение обычно происходит, когда человек уже стабильно решает задачи следующего уровня
Думаю все слышали эту формулировку, но мало кто знает, что это за мифические задачи следующего уровня На самом деле задачи следующего уровня часто находятся в зоне ответственности твоего руководителя: конфликтующие приоритеты, проекты между командами, технические риски, передача контекста, рост людей, предсказуемость результата И при таком взгляде на вещи механика становится довольно простой:
Повышение обычно происходит, когда ты стабильно забираешь на себя часть проблем своего руководителя
И для этого не обязательно становится менеджером. Например, опытный IC может • менторить и развивать разработчиков • онбордить новичков • отвечать за техностратегию • вести проекты на стыке команд А это и есть те вещи, которыми регулярно болят у твоего руководителя Если хотите чуть больше узнать про проблемы тимлидов, welcome на завтрашний интенсив в 18:00 по мск. Можно будет послушать и потом обсудить со своим руководителем, что у него из этого болит:)

2
Все заняты, а продукт не двигается — Миш, вижу у тебя десять задач по бэку, какой статус? — Пять сделал, приступаю к шестой — Круто! — Лен, а у тебя как дела со фронтом? — Я почти все сделала, но вот тут заблокировалась — Давай пока заблочены, вот эту задачку еще возьмем — Окей А какие фичи дошли до прода? Да хрен знает:) —— Если на дейлике вы по очереди спрашиваете каждого человека о его задачах, то, скорее всего, оптимизируете занятость людей, а не движение продукта Так появляется ложное ощущение, что цель разработчика — закрыть как можно больше своих задач. Хотя на самом деле цель продуктовой команды — доталкивать фичи до пользователя, а не поддерживать стопроцентную загрузку каждого участника Бэкендер берёт следующую задачу, фронтендер — следующую. Количество одновременно начатых фич растёт, и по закону Литтла вместе с WIP растёт и Cycle Time Итог весьма печальный — куча задач в работе, фичи переносятся между спринтами, на проде появляются только через месяц после того, как их взяли в работу —— Вместо этого попробуйте ограничивать кол-во user story, которые одновременно в работе, и на дейликах смотреть именно на них Например, в работе одновременно три user story. Проходимся по каждой из них и выясняем: • что сейчас мешает довести фичу до пользака • кто заблокирован • кто может помочь • какой следующий шаг Таким образом меняется и смысл дейлика. Мы не пытаемся убедиться, что каждый чем-то занят. А вместо этого пытаемся понять, что нужно сделать команде, чтобы закончить начатое и с чистой совестью перейти к следующей user story
3 303
3
Примерно год назад меня позвали поучиться на одном из курсов Стратоплана (почитать можно тут), что мне неплохо помогло прокачаться в управленке и на тот момент сдвинуть мозги в нужное русло) Сейчас ребята проводят курс-интенсив про четыре управленческие позиции: тимлид, рук. отдела, CTO, COO. В каждый из дней будет про то, как вкатиться в роль, какой основной инструментарий, и что делать в первые несколько месяцев после получения позиции Я буду участвовать в тимлидском блоке — поразгоняем про топ факапов начинающего тимлида Так что если вы либо планируете, либо только вкатились в новую роль, приходите послушать! Регистрация (link) — бесплатная по подписке на каналы, но есть и платный вариант Даты и время — 1–4 сентября, с 18:00 до 21:00 GMT+3
5 215
4
Если в постгре кончается диск, но даунтайм нельзя Если твоя постгря много весит, на то есть две причины: 1. Сам по себе датасет большой 2. Table bloating ... table bloating — это ситуация, когда физический размер таблицы существенно превосходит размер датасета. Это происходит из-за: 2.1. Накопления dead tuples 2.2 Фрагментации таблицы, когда текущих "дырок" не хватает для записи новых данных и приходится выделять новые страницы —— Чисткой dead tuples занимается autovacuum, а как бороться с фрагментацией — сильно интереснее. Схематично она выглядит так: page 1: [row][free][row][free] page 2: [free][row][row][free] page 3: [row][free][free][row] ... То есть когда данные по страницам расположены не плотно, а разреженно. Наша цель — освободить место, для этого нужно "уплотнить данные", чтобы они выглядели так: page 1: [row][row][row][row] page 2: [row][row][row][row] page 3: [row][row][row][row] ... page 999: [free][free][free][free] В таком случае autovacuum сможет физически освободить место: The standard form of VACUUM ... will not return the space to the operating system, except in the special case where one or more pages at the end of a table become entirely free —— Как этого достичь? 1. vacuum full — долгая блокировка на таблицу и перезапись ее в новый файл. Требует даунтайма 2. pg_repack — копирует таблицу без блокировки, доливает дифф, под локом подменяет таблицы. Требует х2 диска от размера таблицы, генерирует burst IO нагрузку, держит долгую транзакцию 3. pgcompacttable pgcompacttable построен на простой и красивой идее. Вспомним, что update в postgres создает новую версию строки, а старую помечает dead На основе этой механики и работает pgcompacttable: 1. Он берет последние страницы: page 1: [row][free][row][free] page 2: [free][row][row][free] ... → page 998: [free][row][free][row] → page 999: [row][row][free][row] 2. Делает у строк с этих страниц фиктивный апдейт, который текущие версии пометит dead, а новые запишет в свободные дырки в начале таблицы: page 1: [row][row][row][row] page 2: [row][row][row][row] ... → page 998: [free][dead][free][dead] → page 999: [dead][dead][free][dead] 3. autovacuum помечает dead tuples как свободные page 1: [row][row][row][row] page 2: [row][row][row][row] ... → page 998: [free][free][free][free] → page 999: [free][free][free][free] 4. Постгрес может с чистой совестью освободить эти страницы, потому что они полностью пустые и находятся в конце таблицы И так далее для следующей пачки Такой способ работает медленно, но • не требует даунтайма • не требует доп места на диске • не генерирует burst нагрузки Пользуйтесь!
5 075
5
Меня так умиляет риторика "ллмный код не надо читать, достаточно почитать спеку! вы же машинный код компилятора не читаете" Ну да, компилятор же тоже может удалить тебе тест, потому что "ну чето он не проходит, а надо чтобы все зеленое было"
5 221
6
Ну мы вроде договорились — когда сделаете задачку? — в четверг ... наступает четверг — привет, доделали? — да — а где можно потыкать? — ну мы код со своей стороны написали, передали в тестирование Как бы это глупо ни выглядело, а ситуация реальная:) Даже слово "сделать" разные люди могут интерпретировать по разному. Поэтому если у тебя возникает подозрение, что тебя могли не так понять, переспроси то, как ты понимаешь договореннсть, только другими словами — когда сделаете задачку? — в четверг — то есть в четверг будет на проде и сможем пользоваться? — нууу, не совсем ... передоговариваются на другую дату — Это актуально примерно для любых взаимодействий: • "хочу роста" — зарплаты? грейда? экспертизы? ответственности? • "я перегружен" — не хватает времени? слишком много параллельных задач? постоянно дергают? • "возьми эту задачку на себя" — написать код? организовать работу? отвечать за результат целиком? • "всё согласовано" — все сказали да? или просто никто явно не возразил?
5 139
7
Пару месяцев назад я ходил на конфу Тинька, посвященную в основном GenAI в поддержке В одном из докладов был интересный подход, как можно собирать контекст для агентов, если он разбросан по куче разных мест (в т.ч. головам людей) — Проблема формулируется примерно так: операторы поддержки отвечают пользователем на основе базы знаний. Но... много контекста живет еще в каких-то левых пдфках, чатах, таблицах, неявных договоренностях, опыте операторов и тд При этом качество агента = качеству контекста. Если агенту явно не подложить весь этот неявный контекст, он не будет хорошо работать Встает вопрос — как этот контекст собрать — Предлагается такой подход: 1. Берем нашу базу знаний 2. Ставим агента, который смотрит на поток обращений и ответов операторов. Этот агент пытается пруфануть ответ оператора какой-то инструкцией из БЗ 2.1. Пруфануть получилось => отлично, контекста хватает 2.2. Не получилось => оператор ответил на основе какого-то знания, которого нет в базе. Заводится задачка на бизнес-эксперта, мол было такое-то обращение и такой-то ответ, текущих инструкций из БЗ не хватает, нужно добавить новую То есть собирается feedback-loop между потоком, агентом и бизнес-экспертом, который позволяет обогащать базу знаний, и привести ее к виду, где на каждое обращение можно ответить правилом/инструкцией из БЗ — К чему это я все?) Как будто похожий подход можно применить к разработке. Аналогии примерно такие: • тикет в поддержку => тикет с задачкой • ответ оператора => пулреквест с кодом • база знаний операторов => дока к системе • бизнес-эксперт => разработчик То есть ставим агента, который проходится по задачкам и пулреквестам к ним, пытается запруфать, почему надо было сделать именно так на основе документации, получилось => отлично, не получилось => заводится таска на разработчика, что надо обогатить доку Что думаете? Мб кто то уже пробовал похожее
6 032
8
Первый шаг к хорошей техностратегии Команда упорно работала 3 месяца и подняла аптайм системы с 99.9% до 99.99%, перепилив архитектуру модуля, из-за которого каждую субботу апишки пятисотили 10 минут. Молодцы конечно, а это точно кому-то было важно? И может вполне оказаться, что бизнесу это было ок и "ваще на че вы потратили 3 месяца???" — Любая система обладает набором свойств: надежность, секьюрность, скорость доставки фич, масштабируемость, ... Они конкурируют за один и тот же ресурс — твое время. Вкладываясь в одно, ты по определению недооинвестируешь в другое Поэтому главный вопрос, во что вкладываться. Мне нравится такой фреймворк (возможно у него даже есть название): • Выписать все свойства, которые для системы имеют значение • Отранжировать их под текущее направление бизнеса • Выделить топ 3, во что вкладываемся. Остальным сознательно жертвуем Самый важный момент, что ранжировать надо вместе с бизнесом. Потому что в моменте может быть нужна скорость выкатки фич, и мы готовы осознанно пожертвовать аптаймом. Иногда может быть известно, что в следующем полугодии к нам заезжает крупный клиент, и надо бросить все силы на то, чтобы сделать возможным масштабирование под него И как фокусы известны, думаешь какие проекты нужны, чтобы прокачать эти свойства системы. И эти проекты будут с понятным эффектом и гарантированно важны бизнесу
6 200
9
Продукт, тех и взаимопонимание Уверен, все были свидетелями обсуждений где продакт говорит про пользовательский путь, ценность и сроки, а разработка про какие-то мистические "сущности", апишки и очереди. Вроде все всё правильно говорят, но чето обсуждение не двигается На помощь приходят хорошие практики типа ubiquitous language, event storming, user story mapping, ... ... и прототипирование. Год назад я писал пост, что один из классных методов борьбы с неопределенностью — это взять самое простое и логичное решение, покрутить его, собрать фидбек, отправиться на следующую итерацию Сейчас прототипировать стало очень дешево. Поэтому если у тебя есть непонятный проект с кучей неопределенности, возможно вместо того, чтобы неделями на грумингах обсуждать требования толпой в 10 человек, имеет смысл потратить пару дней на вайбкод-поделку и позволить пройти полный пользовательский путь всем заинтересованным лицам. Затем собрать фидбек и идти в нормальное решение Последнее время активно применяю с командой, работает офигенно ВАЖНО!!! • прототип может быть немасштабируемым, несекьюрным, непроизводительным — это окей, его задача снять продуктовую неопределенность • поэтому не забудь его выкинуть, и нормально продумать НФТ для целевого решения
5 335
10
У меня иногда возникает желание почитать что-то эдакое забористое про бэкенд И если бы меня попросили порекомендовать что-то русскоязычное по теме, я бы порекомендовал канал Лёши Рыбака (многие из вас его знают по курсам по сисдизу devhands) Леша делает классные разборы: - PostgreSQL на 800млн пользователей от OpenAI — что с ним не так https://t.me/rybakalexey/402 - SPDY, QUIC, HTTP/2 и HTTP/3: кратко: https://t.me/rybakalexey/479 - Бенч-порн: HAProxy vs Angie: https://t.me/rybakalexey/289 И пишет про насущные темы без булшита: - Фриз найма и что на рынке: https://t.me/rybakalexey/514 - Про «пузырь в AI» и «несерьезность» кодинга с агентами: https://t.me/rybakalexey/457 - Критика исследования Гарварда про AI https://t.me/rybakalexey/461 Рекомендую начать с первой статьи про постгрю. Мне всегда интересно, что под капотом у таких неконвенциональых решений типо постгри почти на лярд юзеров:)
6 059
11
Длиннопост про сон 50 реакций набрали оч быстро, поэтому ловите! Важное уточнение: причиной плохого сна могут быть конкретные заболевания • апноэ • синдром беспокойных ног • гормональные сдвиги / дефициты витаминов Поэтому по-хорошему сначала надо сходить к врачу и удостовериться, что у тебя с этим все норм Далее речь про мой опыт. Показатели сна трекаю кольцом oura, неплохо отражает реальную картину Низкое влияние • Витамины Магний, железо, D3 — эффекта не было, т.к. не было больших дефицитов • Бады l-теанин, глицин, ашваганда, валериана — легкий седативный эффект, но не сильно заметно • Ложиться рано (23:00 или раньше) Не мое, почти всю жизнь ложился в час или позже • Тяжелое одеяло Есть такие одеяла, которые весят по 10кг (перестилать постель тот еще ад). Прикольно, но эффекта не заметил Среднее влияние • Беруши Помогало не просыпаться, когда в соседней квартире кто то просыпается раньше и начинает шуметь • Блэкаут шторы Хорошо помогает, когда просыпаешься посреди ночи и надо обратно заснуть. Если в комнате будет светло, тяжелее уснуть обратно • Силовые нагрузки На сам процесс сна влияния не заметил, но засыпаешь сильно быстрее. Важно, чтобы было не близко ко сну, а то эффект будет противоположный • Прогулки перед сном Влияет, но не сильно. Спишь чуть крепче Высокое влияние • Отказ от кофеина Мой tier s. Кофе/энергосы выпитые даже до 12 дня на меня прям плохо влияют — спать начинает хотеться сильно позже, чем надо • Алкоголь В ночь после посиделок/тусовок сон ужасный, что по ощущениям, что по показателям • Не думать про что то сложное ~за час до сна И куда-то в заметки выписывать, если что-то крутится в голове. Тоже отлично влияет • Раскатываться на валике Помогает расслабить мышцы шеи, спины, ног. Оч помогает как засыпать, так и поддерживать сон • Стабильное время подъема Не обязательно супер рано, просто в одно и то же время. Это + факторы выше = начинаешь и засыпать в одно и то же время • Дефицит калорий Очень плохо влияет на сон. Помогало переносить бОльшую часть калорий ближе к вечеру и ужинать "медленными" белками и углеводами — Если суммаризировать, то что сейчас использую на постоянной основе: • Вставать +- в одно и то же время • Силовые нагрузки утром • Отказ от кофеина • Раскатываться на валике перед сном • За час до сна не думать о чем-то сложном + выписывать мысли • Блэкаут шторы В выходные чуть продалбываюсь и позволяю себе лечь/встать попозже
5 913
12
Есть простая ловушка, в которую легко попасть, если тебе нравится твоя работа - начать слишком сильно в нее вкладываться и забивать на остальное Пока всё получается - кайф, ты растешь, получаешь постоянное позитивное подкрепление, вкладываешься еще больше Но как только начинаются первые проблемы, мозгу начинает казаться мол вся жизнь говно. И формально это правда, если работа занимает большую часть жизни Поэтому в какой-то момент более эффективной стратегией становится вкладываться не в работу, а в остальные сферы жизни: хороший сон, спорт, хобби, встречи с друзьями. Если у тебя помимо работы есть много всего хорошего/приятного, устойчивость сильно выше — Сам я дольше всего разбирался со сном: несколько лет спал по 5-6 часов урывками, сейчас 7-8 достаточно качественно Накидаете 50 реакций - расскажу, что помогло, а что нет
4 441
13
Как чуть меньше страдать от нейрослопа Или небольшой полезный тех, который ты можешь сделать за пару дней Давеча я писал, что агенты без должного контекста о системе склонны к локально оптимальным решениям. Это часто приводят к: • нарушению направления зависимостей в коде • смешиванию доменной логики и инфраструктурной • странному неймингу и расположению классов Хорошая новость — многое из этого можно ловить детерминированными тестами Есть прекрасные инструменты, как например ArchUnit для Java (если знаете похожие инструменты для других языков, пишите в комменты), которые позволяют писать декларативные тесты на архитектуру приложения: Домен не должен зависеть от инфры: noClasses() .that().resideInAPackage("..domain..") .should().dependOnClassesThat() .resideInAPackage("..infrastructure.."); In-порты называются ...UseCase classes() .that().resideInAPackage("..port.in..") .should().haveSimpleNameEndingWith("UseCase"); Все порты должны быть интерфейсами: classes() .that().resideInAnyPackage("..port.in..", "..port.out..") .should().beInterfaces(); Потратив пару дней на обдумывание и написание таких правил в паре с агентом, можно заметно увеличить качество летящих в тебя пулреквестов, потому что они будут корректны как минимум по структуре. По ходу движения список правил может дополняться Как уже многие писали, разработка с агентами не привносит каких-то кардинально новых принципов, а только усиливает значимость старых добрых бест-практисов p.s.: зачем эти детерменированные проверки, если я могу дать агенту правила в виде текста: • промпты не дают гарантий • не проверяют уже написанный код
5 764
14
Пора
Пора
2 744
15
Несколько избитая тема, но мне кажется очень красивой идея, которая стоит за structured output в современных ллмках Задача — пользователь передает json-схему, нужно сгенерировать ответ строго по переданной схеме 1. Наивный вариант Подложить схему в контекст: ... Return a JSON object that strictly matches the following schema: { "type": "object", "properties": { "status": { "enum": ["SUCCESS", "FAILED"] } }, "required": ["status"], "additionalProperties": false } Будет ли работать? Да, в большинстве случаев. Но без каких либо гарантий, что схема в итоге будет корректная 2. Добавляется constrained decoding LLM генерирует ответ токен за токеном, на каждом шаге строя распределение вероятностей: "{" = 0.75 "status" = 0.20 ":" = 0.04 "answer" = 0.01 А дальше в процесс вмешивается constrained decoding Из json-схемы строится контекстно-свободная грамматика (CFG), которая позволяет понять, какие продолжения ответа в текущий момент всё еще могут привести к валидному результату Например, для схемы выше грамматика могла бы выглядеть как-то так: root ::= "{" ws "\"status\"" ws ":" ws status ws "}" status ::= "\"SUCCESS\"" | "\"FAILED\"" И, согласно грамматике, инференс-движок накладывает маску на распределение вероятностей следующего токена "{" = 0.75 "status" = 0.20 ":" = 0.04 "answer" = 0.01 Превращается в "{" = 0.75 "status" = 0 ":" = 0 "answer" = 0 Сгенерили { — "status" = 0.6 ":" = 0.3 "answer" = 0.2 Превращается в "status" = 0.6 ":" = 0 "answer" = 0 Сгенерили {"status" ... и так далее — С относительно небольшим оверхедом это позволяет генерить ответ, строго соответствующий схеме
6 641
16
Если ты слишком хорошо решаешь проблемы — возможно, ты решаешь не те Пост по мотивам одного из худших полугодий на работе:) Когда всё вокруг горит, мы начинаем преувеличивать значимость каждой конкретной проблемы. Каждая проблема кажется той самой, что нужно решить прямо сейчас. Естественная реакция на такое — сделать хоть что-то, что продвинет ситуацию вперед • Команды не договорились — синхронизировать • Сроки едут — заовертаймить • Где-то возник затык — лично прийти разблокировать ... Это дает ощущение движения и контроля — ты же что-то делаешь, постоянно кому-то помогаешь, с каждым разом все лучше и быстрее решаешь проблемы. Становишься эдаким эффективным пожарным. Результат у этого всегда один — выгорание и демотивация Что делать — вы и без меня знаете: остановиться и позадавать себе вопросов • А почему проблема дошла до меня? • Почему глобально система допускает возникновение таких проблем? • Что сделать, чтобы починить корневую причину таких проблем? В условиях горящих сроков и давления такое бывает сделать правда сложно, но нужно сделать волевое усилие и "zoom-out"-нуться Поэтому если ты N-ый раз решаешь одну и ту же проблему, подумай, ту ли проблему ты решаешь
4 970
17
Приглашаем на курс для прокачки навыков архитектора и проектировщика, которые важны для профессионального роста программиста.
Приглашаем на курс для прокачки навыков архитектора и проектировщика, которые важны для профессионального роста программиста. 🌐 С курсом «Системный дизайн высоконагруженных проектов» вы: ▪️изучите ключевые фундаментальные паттерны и получите навыки проектирования проектов с миллионной аудиторией (балансировка, масштабирование апп/кешей/субд, высокая доступность и кластерные решения, шардинг, CAP/PACELS, консистентность, саги, транзакционные очереди и многое другое) ▪️поупражняетесь в проектировании и получите обратную связь на реальных задачах: магазин/маркетплейс, такси/доставка, обьявления, соцсети, дейтинг, игры, википедия, мессенжер, CDN, хранилище файлов, онлайн-кинотеатр, счетчики, удаленный мониторинг, интеграционные вебхуки, рассылки и тд. ▪️ научитесь планировать нагрузку и связывать бизнес-показатели с нефункциональными требованиями к системе ▪️ попрактикуемся в проведении и прохождения секций системного дизайна на интервью. Всё в формате живых онлайн-сессий (лекции, брейнштормы, презентации домашних проектов). 🥸 Кто мы: R&D-центр Devhands.ru, наш канал (https://t.me/rybakalexey). Основатель школы и автор курса Алексей Рыбак, ex-СТО Badoo, с 20-летним опытом высоконагруженных проектов и управления глобальными технологическими организациями. 🗓 Старт 25 июня, изучаем программу, записываемся здесь Реклама. ИП Рыбак А.А. ИНН 771407709607 Erid: 2VtzquZx6c8
1 959
18
Очень грубо инженеров можно классифицировать на два типа: 1. Те, кто работает с техническими проблемами проактивно: • Увидел плавное повышение cpu usage на БД => раздебажил из-за чего, добавил нужных индексов, предотвратил инцидент • Увидел, что новая функциональность в модуль добавляется очень странным образом => инициировал и довел до конца рефакторинг, благодаря этому крупный проект сошелся в срок • Сделал удобные алерты, что позволило видеть проблему раньше пользователей и предотвращать инциденты 2. Те, кто работает с техническими проблемами реактивно: • TTM фичей вырос в два раза, постоянные баги => только тогда начинаем рефакторинг • Количество инцидентов стало совсем неприемлемым => только тогда инициируем проект по стабилизации (да, не существует чистых типов 1 и 2, это всегда спектр, и всегда нужно уметь работать в обоих режимах) Но в чем неприятный парадокс — признание за технический вклад в основном получают люди, работающие во втором режиме Почему так происходит? Потому что для наблюдателей есть прозрачная логическая цепочка: что-то сломалось, конкретный человек это починил, он молодец Если же чинить проблемы проактивно, то со стороны может показаться, мол ничего особенного, все так и должно работать — фичи делаются быстро, система работает стабильно Поэтому очень важно для всех опрозрачивать эту логическую цепочку: "что бы произошло, если бы мы не сделали эту техническую доработку". Да, это сложно. Но оно того стоит Хороший руководитель безумно ценит людей, которые самостоятельно предупреждают проблемы. И задача руководителя — помочь опрозрачить такой вклад сотрудника для остальных
5 811
19
Разработка фичей без достаточной экспертизы в системе зачастую превращается в набор "локально-оптимальных" решений: здесь добавили ифчик, здесь протянули новую зависимость, здесь скопипастили похожий код, здесь обошли существующую точку расширения Каждое такое решение обычно выглядит норм в моменте — оно закрывает задачу, проходит тесты, не выглядит совсем плохо на ревью Проблема начинается, когда такие решения последовательно наслаиваются друг на друга. Это приводит к architecture drift: фактическая архитектура системы постепенно отклоняется от той, которая была задумана С агентской разработкой принципы те же — если у агента нет достаточного контекста о системе, он будет стараться делать минимальные локальные изменения, которые приведут к решению задачи. Только с агентами это все происходит быстрее Главная проблема в том, что самая полезная архитектурная экспертиза обычно живет не в документации, а в головах людей, которые годами работали с системой. Они держат огромный набор фактов о том, почему сделано так, как это развивать, как точно делать не надо и т.д. И честно говоря, я пока не видел чтобы такая экспертиза была в достаточной степени оцифрована — всегда остается много вещей, которые живут только в чьей-то голове. В таком сетапе агенты всегда будут медленно тянуть архитектуру куда-то в сторону (зачастую не самую хорошую) А как вы боритесь с этим явлением?
5 191
20
Как сделать карьерный рост чуть приятнее Чем выше роль, тем меньше работа про сами задачи и тем больше — про людей. Всегда кто-то что-то требует, кто-то не согласен, кто-то аккуратно тянет одеяло на себя. Кто-то заходит в разговор так, что выходишь после него с ощущением, будто из тебя высосали всю энергию Но, на самом деле, в таких сложных разговорах у разных людей одни и те же паттерны — тебя уводят от сути разговора, тебя пытаются ставить в оправдывающуюся позицию, разговор о предмете обсуждения подменяется разговором о личности и так далее Нормально это осознать помог курс от ребят из SSL, который я проходил аж в 2024 (и до сих пор считаю одним из лучших вложений) Один из тренеров курса — Миша Ромашов, который параллельно преподает переговоры в ВШЭ и лидит одно из направлений в Сбере. Миша ведет свой тг канал, где рассказывает интересные кейсы из практики: • Про эмоции • Про чужую картину мира • Про конфликты без права сепарации Если у вас в работе много сложных коммуникаций — рекомендую
5 591