Ответ
Да, обратная связь — неотъемлемая часть моего рабочего процесса. Я ценю как регулярные формальные сессии, так и ежедневное неформальное взаимодействие.
Code Review — основной инструмент технической обратной связи. Например, в моем последнем проекте ревью помогло улучшить реализацию кэширования:
// Было до ревью
public Product GetProduct(int id)
{
var cacheKey = $"product_{id}";
if (_cache.Contains(cacheKey))
return _cache.Get(cacheKey);
var product = _db.Products.Find(id);
_cache.Set(cacheKey, product);
return product;
}
// Стало после ревью с учетом замечаний коллег
public async Task<Product> GetProductAsync(int id, CancellationToken ct)
{
var cacheKey = $"product_{id}";
// Коллега предложил использовать GetOrCreate для атомарности
return await _cache.GetOrCreateAsync(cacheKey, async entry =>
{
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(30);
entry.SlidingExpiration = TimeSpan.FromMinutes(10);
// Другой разработчик отметил важность отслеживания метрик
_metrics.IncrementCacheMiss();
return await _db.Products
.AsNoTracking()
.FirstOrDefaultAsync(p => p.Id == id, ct);
});
}
Регулярная обратная связь включает:
- Еженедельные 1:1 с тимлидом — обсуждаем прогресс, сложности, цели развития
- Ретроспективы спринта — что улучшить в процессах команды
- 360-градусная обратная связь раз в полгода
- Мгновенная обратная связь в Slack/Teams по конкретным задачам
Такая система помогла мне вырасти от middle до senior-разработчика, так как я постоянно получал конкретные, actionable советы по улучшению кода и рабочих процессов.
Ответ 18+ 🔞
А, обратная связь, говоришь? Ну это, блядь, святое, без этого нихуя не работает. Я её как воздух воспринимаю — и по плану, и просто так, в курилке.
Code Review — это вообще, ёпта, мой любимый вид спорта. Вот реально, без этого ты как слепой котёнок, нихуя не видишь. Помню, недавно один такой разбор полётов мне всю архитектуру кэша перевернул. Смотри, как было:
// Было до ревью (пиздец, стыдно даже вспоминать)
public Product GetProduct(int id)
{
var cacheKey = $"product_{id}";
if (_cache.Contains(cacheKey))
return _cache.Get(cacheKey);
var product = _db.Products.Find(id);
_cache.Set(cacheKey, product);
return product;
}
Ну классика же, да? Написал и думаешь — а чё, вроде норм. А потом приходит коллега, смотрит на это и говорит: «Ты в курсе, что тут race condition на ровном месте? Два запроса придут — оба кэш промажут и оба полезют в базу, ебать колотить». Я, конечно, сам от себя охуел. А он такой: «Давай-ка, дружок, используй нормальный GetOrCreateAsync, не выёбывайся». И вот что получилось:
// Стало после ревью (спасибо, мужики, не дали опозориться)
public async Task<Product> GetProductAsync(int id, CancellationToken ct)
{
var cacheKey = $"product_{id}";
// Коллега предложил использовать GetOrCreate для атомарности (гений, блядь!)
return await _cache.GetOrCreateAsync(cacheKey, async entry =>
{
entry.AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(30);
entry.SlidingExpiration = TimeSpan.FromMinutes(10);
// Другой разработчик отметил важность отслеживания метрик (вот это уже серьёзно)
_metrics.IncrementCacheMiss();
return await _db.Products
.AsNoTracking()
.FirstOrDefaultAsync(p => p.Id == id, ct);
});
}
Вот так, с одного комментария, целая хитрая жопа в коде исправилась. Ценность — овердохуища.
А регулярная фидбек-движуха у меня вообще по полной программе:
- Еженедельные тет-а-теты с тимлидом. Сидим, кофе хлебаем, обсуждаем, что я за неделю наворотил, где в говне вяз, а где взлетел. Без этого — терпения ноль, ебать, можно в неправильную сторону надолго уехать.
- Ретроспективы в конце спринта. Тут вся команда собирается и начинает вздрачивать процессы: «Почему опять дедлайны горели?», «Почему тесты кривые?». Иногда подозрение ебать чувствую, что все друг на друга косо смотрят, но в итоге всегда что-то полезное выносим.
- Раз в полгода — этакая круговая порука, когда тебя оценивают все, от джуна до проджекта. Честно, волнение ебать перед этим, но всегда пара инсайтов выстреливает.
- И самое главное — ежедневная движуха в слаке. Написал ты какую-нибудь дичь, тебе сразу: «Вася, ты чё, хуй с горы?». Или наоборот: «О, Вася, красава!». Мгновенно и по делу.
Вот благодаря всей этой системе я, можно сказать, из распиздяя middle-уровня в более-менее вменяемого senior'а вырос. Потому что тебе не абстрактно «развивайся» говорят, а конкретно тыкают пальцем: «Вот тут, чувак, у тебя пидарас шерстяной, а вот тут — вообще манда с ушами, переделывай». И ты переделываешь. И растёшь. А иначе будет вам хиросима и нигерсраки в продакшене.