ТОП - Тёма о программировани – Telegram
ТОП - Тёма о программировани
2.83K subscribers
9 photos
1 file
41 links
Канал о программировании
Реклама - @vlad_0045
Мой личный контакт - @ngArchie

Мой ютуб канал - https://www.youtube.com/@temaProg
Download Telegram
Манипуляция vs. Вдохновение
#тимлидство

👋 Здарова, работяги!

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

Как и большинство вопросов в менеджменте, этот тоже многогранен и не имеет точного ответа 🤷‍♂️. И я бы мог ответить на него коротко:
«Руководствуйтесь здравым смыслом и ориентируйтесь по ситуации, а в идеале еще и не будьте мудаком» 😉

Но давайте все же постараемся добавить конкретики.

Когда я думаю над этим вопросом, вижу два пути, две дороги. И тут как в сказке — налево пойдёшь... Что же это за дороги?

1️⃣ Манипуляция
Уверен, что у большинства это слово ассоциируется с негативом. И вряд ли вы хотели бы, чтобы вами манипулировали. Но ведь нами манипулируют постоянно 💡

Яркий тому пример — реклама:
«Если вы не купите нашу пасту, то у вас будет кариес» 🦷

Да, это именно манипуляция. Если быть точнее, то манипуляция через страх 😨. И страх не единственный инструмент:

📌 Инструменты манипуляции:
- Страх
- Выгода - скидки, акции, бонусы и т.д.
- Давление времени - искусственная срочность. Скорее всего вы видели эти "ограниченные" предложения
- Манипуляция рейтингами и сравнениями - так делают все и даже тот супер крутой специалист в этом деле, поэтому вы тоже должны

Самое главное, что стоит знать про манипуляцию — работает на короткой дистанции, но убивает лояльность 💔. Поэтому для «игры в долгую» — не лучший выбор..

2️⃣ Вдохновение
Тут всё уже не так просто, как с манипуляцией. Здесь не получится просто напугать сотрудника дедлайнами, штрафами и увольнениями 🚫.

Тут нужно действовать иначе. Самое главное и самое основное, с чего вам стоит начать — вопрос «Зачем?»

Тут уже нельзя просто сказать, ЧТО делать, придется объяснять. Скорее всего, это займет больше времени, больше сил. Зато именно так и рождается команда, которая готова следовать за лидом осознанно:

Отвечая на вопрос «Зачем?», вы:
Собираете вокруг себя людей, которые разделяют ваше «Зачем?»
Они следуют за вами добровольно 🤝
Они чувствуют смысл, а не обязанность

Да и вам самим тоже будет полезно отвечать на этот вопрос, т.к. это позволит не просто «разгребать таски», а видеть суть решаемой задачи и предлагать лучшие решения 💡.

На первый взгляд кажется, что:
- Манипуляция = зло 👿
- Вдохновение = добро 😇

Я с этим не согласен.

Иногда манипуляция уместна: например, если у вас форс-мажор, срочная таска или что-то подобное требующее максимальной мобилизации команды и выдачи быстрого результата. В таких случаях можно — и нужно — честно озвучить критичность, ограниченность сроков и сделать акцент на реальные последствия, если не успеем. Это манипуляция? Да. Можно ли “жить” на таком подходе всё время? По моему мнению, нет. Страх действительно мобилизует, но в долгую это плохой инструмент.

Это просто инструменты 🔧. Выбор инструмента зависит от многих факторов, как минимум от задачи, которую вы решаете.

Ну и давайте закончим тем, с чего начал:
«Руководствуйтесь здравым смыслом и ориентируйтесь по ситуации, а в идеале еще и не будьте мудаком» 😉

А как у вас — вы (или ваш лид) чаще используете манипуляцию или вдохновение? Делитесь в комментах 👇

🔥 Всем хорошего дня!
🔥232🐳1
Интересны ли вам обзоры книг/статей?
Anonymous Poll
88%
Да 👍
12%
Нет 👎
ТОП - Тёма о программировани
Здарова, работяги! В выходные было два стрима. Не часто я выхожу в таком формате, но мне понравился. Серьезно задумался о лайвкодинге в формате стримов. Выходной день, кофеек, чиловая музыка и пет-проект... Ммм... Красота! Что думаете, было бы вам интересно?…
Здарова, работяги!

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

Темы месяца:

1. Что такое команда? Чем отличается команда от просто коллектива.
2. Этапы развития команды (по Такману) и роль лидера на каждом этапе — что/где/как может делать руководитель, чтобы не тормозить прогресс, а сли нужно и ускорять его.
3. Пороки команды по Ленсиони — как их замечать и устранять.
4. Аудит команды: разобрали чёткий алгоритм, как оценивать состояние своей команды и находить точки роста.
5. Найм и увольнение: обсуждали, как нанимать имено тех, кто нужен команде/проекту и прощаться с сотрудниками бережно, честно и максимально корректно.
6. Конструктивная конфронтация «вниз»: как говорить с подчинёнными о сложных проблемах, чтобы не испортить отношения и при этом добиться результата.

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

Некоторые интересные идеи:

- Групповая динамика по Такману. Оказалось, мало знать про этапы развития команды — важно понимать, КАК вести себя лидеру во время каждого этапа. Например, в самом конфликтном этапе ("шторминг") нельзя затягивать конфликты или замалчивать их: задача лидера вскрыть все противоречия, найти решения и чётко зафиксировать договорённости. И очень важно — именно лидер должен стать гарантом выполнения этих договорённостей, контролировать процесс самому, не делегировать.

- Увольнение сотрудника. Для многих руководителей (и для меня в том числе) — это один из самых стрессовых моментов. На курсе подсветили важную мысль, которую многие забывают: увольнение — это не про плохих сотрудников, это про несовпадение с командой, компанией или проектом. Такое бывает! И, возможно, в другом месте человек засияет как суперзвезда. Поэтому важно доносить эту мысль и держать ее в фокусе при разговоре.

Что дальше?

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

Был ли у вас опыт увольнения сотрудника? Что для вас оказалось самым трудным и как вы справлялись со стрессом если испытывали его? Пишите в комменты 👇
1🔥23👍1413
Общаемся про прошедшие лекции, подключайтесь)
Используете ли вы AI в разработке?
Anonymous Poll
92%
Да🤖
8%
Нет👨‍💻
6🔥3🙏2🍌1
Очень часто говорю о том, что в первую очередь нужно вкладываться в базу и стараться быть инженером, а уже потом — разработчиком на React/Vue/чём-то-ещё. Вот выжимка хорошей статьи от "старины" Фаулера.

!!!Важно!!! хорошая база не исключает специализацию в каких-то областях, а скорее помогает вам быстрее погружаться в эту область и растить там экспертность, если это требуется.
🔥192
Expert Generalists

Статья в блоге Мартина Фаулера про T-shaped специалистов. Точнее, все текущие термины (T-shape, П-shape, и другие) плохо подходят, поэтому в статье вводится термин Expert-Generalist, который означает, что человек одновременно является и экспертом (в противовес generalist) и использует свою экспертизу во многих областях (в противовес эксперту в одной области).

В данном случае имеется в виду, что человек является экспертом в фундаментальных понятиях, которые позволяют ему быть успешным в областях, которые построены на этих понятиях. Классический пример из IT, это когда человек имеет опыт написания ПО на 3-4 языка программирования и ему после этого уже не так важно, на каком именно другом языке писать код, пока этот язык следует общим парадигмам (основан на том же фундаменте). Условно, человек, который писал на JS, PHP, JAVA, C++ с легкостью может войти в Go, Rust, Kotlin. Но, вероятно, столкнется с некоторыми проблемами при входе в Haskell. Но, скорее всего, сможет это сделать в короткие сроки.

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

В этом кроется ключевая разница между генералистами и экспертами-генералистами. Чистые генералисты знают все поверхностно. Эксперты-генералисты - знают фундаментальные принципы, знание которых позволяет им погружаться в смежные области

В чем сила таких специалистов:

Как правило, такие люди быстро обучаются - они изучат новый инструментарий, если он решает текущую задачу. Как следствие, они создадут более лучшее решение за счет подходящих инструментариев.

Эксперты-генералисты должны иметь хорошие навыки коммуникации и совместной работы. Т.к. они не являются экспертами в областях, они должны уметь запрашивать помощь у коллег. Понимание основных принципов помогает им быстро погружаться в контексты специалистов

Эксперты-генералисты игнорируют барьеру между отделами, командами, функциями. Это те люди, которые могут ускорить выполнение проекта т.к. для них не существует барьеров и, как следствие, они ускоряют коммуникацию, которая необходима для решения задачи

Ключевые качества экспертов-генералистов:
- Любознательность
- Умение сотрудничать
- Фокус на клиенте (бизнесовая направленность)
- Ставка на фундаментальные знания
- Широта знаний
- Способность понимать позицию смежных доменов (например, понимать проблемы SRE или DevOps)

Многие эксперты-генералисты вырастают в технических лидеров

Встает закономерны вопрос: "где брать таких специалистов?". Текущий найм устроен так, что мы скорее наймем ультра-эксперта в технологии, чем наймем человека, который любознателен и умеет погружаться в новые домены. В статье предлагается подход из двух решений:
- Перестать смотреть только на узкие хард-скилы. Вместо этого следует проверять человека на обучаемость, любознательность, создание условий для совместной работы
- Проводить внутренние тренинги и воркшопы, цель которых - погрузить специалистов в смежные области. В Thoughtworks есть 3 воркшопа, в которых специалисты делают решения из смежных областей. В рамках воркшопа они реализуют простые прототипы kafka, kubernetes, delta lake (штука для работы с данными). Создав прототип, люди начинают понимать базовые принципы, на которых основаны эти системы и начинают видеть рабочие ситуации с другой стороны

Это не означает, что больше не нужны специалисты, которые глубоко погружены в какую-то область знаний. Они, конечно же, нужны. В идеале в команде нужны и генералисты и специалисты. Специалисты в этом сетапе:
- Обучают генералистов, подсказывают им какие-то неочевидные нюансы, потеря которых сильно ухудшит решение
- Используют свои знания для создания лучших решений

Для каждой ключевой компетенции в команде нужен 1-2 специалиста.

---

Мое личное мнение: статья топ. По моему личному опыту, люди, которые умеют быстро погружаться в любые домены и находят общие паттерны - одни из самых драйвящих и ценных кадров. По крайней мере в моем опыте продуктовой разработки.



https://martinfowler.com/articles/expert-generalist.html

#managment #tshape #martinFowler
👍20🔥63
ТОП - Тёма о программировани
Здарова, работяги! В выходные было два стрима. Не часто я выхожу в таком формате, но мне понравился. Серьезно задумался о лайвкодинге в формате стримов. Выходной день, кофеек, чиловая музыка и пет-проект... Ммм... Красота! Что думаете, было бы вам интересно?…
#тимлидство

Здарова, работяги!

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

Темы последних занятий:

1. GRPI — модель построения эффективной команды: как держать баланс между целями, ролями, процессами и человеческими отношениями.
2. Идеальный командный игрок (по Ленсиони) — почему одного “перформанса” мало и почему так важны сочетание скромности, голода до результата и социального интеллекта.
3. Управление вовлечённостью — как реально создавать среду, где людям хочется работать вместе и включаться на максимум, а не просто “отсиживать часы”.
4. Командная идентичность и ритуалы — что помогает почувствовать себя не просто “сотрудником”, а частью настоящей команды (символы, тотемы, ценности, традиции и даже свои ритуалы).
5. Модели Белбина и Адизеса — что такое роли в команде, зачем “мотиваторы”, “стратеги” и “артефакты”, и почему просто собрать сильных специалистов недостаточно.
6. Лидерство и стили управления — зачем лидеру быть не только “вождём”, но и хранителем командных ритуалов, и как каждый стиль влияет на динамику.
7. Работа c low/high performers — как справляться с теми, кто “тащит” процесс или наоборот "буксует", и почему важно замечать “слепые зоны” в команде.

Материала очень много и разобраться сразу во всем сложно. Благо изучали мы его не только в теории, но и на практике: групповые задания, ролевые кейсы и куча обсуждений. Иногда решение кейса кажется элементарным — пока не услышишь, как по-другому на ту же ситуацию смотрят твои коллеги.

Основные инсайты:

- Даже если в команде много профи, без чётких ролей и честного обсуждения проблем всё буксует. А самое главное - лид не должен закрывать собой недостатки ролей, а осознано распределять роли среди членов команды, а также если требуется уходить в найм, если какие-то роли не получается покрыть в нужной степени.

Как обычно, подробнее по каждой из этих тем буду писать отдельными постами — как только опробую всё это в реальной жизни.

Ну и вопрос к вам: с чем из этого сталкивались в своей работе? Какие приёмы или фишки реально работали на практике, а что оказалось теорией? Пишите ваши истории и советы 👇
🔥26👍169
Режим агента

Здарова, работяги!

Думаю, что выпускать пост на тему необходимости использовать ИИ-тулзы в работе с кодом уже поздно, о чем и говорит опрос выше. Уже используют и те, кто признаются в этом, и те, кто нет)
Плохо ли это? Смотря как использовать. Давайте разберемся.

Вы стажер, только начинаете свой путь, у вас еще мало опыта и код вы пишете плохо.
Чтобы не выглядеть лоуперформером в глазах коллег, вы активно используете агенты для написания кода.
Хорошо ли это? Мое мнение — нет.
Для стажера я считаю крайне важно набираться опыта в написании кода, обязательно нужно сперва самостоятельно придумывать решения и расти в этом, в первую очередь самостоятельно пробовать себя в проектировании маленьких фич и набираться опыта.

Где в кейсе стажера(джуна) может помочь ИИ?
1. Помощь в понимании чужого кода. Вы стараетесь самостоятельно разобраться в коде, с которым предстоит работать. После того как вы разобрались, тыкаете агент и сверяете то, как вы поняли, с тем, что выдает он. Таким образом вы как бы сможете обсудить то, как поняли вы, с виртуальным собеседником.

2. Помощь в придумывании/проектировании решения. Вы сами придумываете решение, описываете его понятным языком(это очень полезный навык). Заранее предусматриваете в нем обработку корнер-кейсов и т. д. После чего скармливаете его в иишку. В таком варианте вы опять же сможете как бы обсудить свое решение, попробовать его почеленджить.

3. Помощь в реализации решения. После написания решения вы можете попросить агента пошатать то, что вы написали, поискать проблемы, неоптимальности и т. д. В идеале попросите объяснить, почему он предлагает те или иные улучшения. После обсуждения поправьте их самостоятельно.

Думаю, смысл вы поняли. Сперва сам, а ИИ помогает вам получать больше опыта, учиться эффективнее. Я уже вижу как ускоряется рост стажеров и джунов, которые используют такой подход.

Когда написание кода c ии оправдано.
Мой кейс. Я уже какое-то время перебираю разные курсоры, рукоды и т. д. Сейчас на пет-проектах тестирую плагинчик Explyt от выходцев из Jetbrains, поэтому давайте рассмотрим кейс с ним.

Как я уже говорил ранее, я начинал с джавы и какое-то время работал именно бэкенд (позже уже фулстек) разработчиком. На протяжении всей карьеры я пишу разные пет-проекты и сам ими пользуюсь(апка для учета финансов и т. д.). Конечно, я писал для себя и бекенды на джаве. Сейчас я уже давно не джава-разработчик, поэтому язык я подзабываю, за всеми новинками не слежу. Следовательно поддерживать старые бекенды сложнее, желание лезть туда меньше.
Но! Есть агенты, например, такой режим есть в Explyt. Благодаря ему я могу рефачить, добавлять что-то новое в проект, какие-то тесты дописывать(да, даже в пет-проекте, т. к. мне нравится делать петы точно по книгам из идеального мира). Приятность этой тулзы еще и в том, что после месяца бесплатного триала ее можно оплатить ру-картой. Также, если у вас не пет-проект и всё строго с безопасностью, то у них есть решение для таких кейсов. Но советую начать с пет-проектов.

Почему в таком случае оправдано такое использование?
1. В таких кейсах у меня не стоит цель прокачать свои скилы в написании кода/проектировании/и т. д. (а для новичка это цель номер один на первые n месяцев), мне нужно быстро реализовать фичу.
2. Я знаю этот язык(подзабыл просто), знаю, как выглядит хороший оптимальный код, понимаю, какие решения я хочу видеть, понимаю, как бы я это реализовал. Поэтому я не апрувлю всё, что предлагает агент, а просто провожу ревью, где-то дописываю сам, подхватываю новые возможности языка и т. д. В итоге я быстро получаю то решение, которое мне нужно, без вспоминания и гуглежки.

Резюмируя, не стоит бояться новых технологий, используйте их себе на пользу, усиливайте ими свои скилы, свои умственные способности, ускоряйте обучение и т. д. Но! Не нужно ограничиваться себя инструментами и становиться их заложниками.
5🔥41👍137💯4👏3😎1
#тимлидство

Здарова, работяги! 👋

Накопилось много материала по последнему интенсиву про продукт и инженерку, делюсь кратким обзором — что прошли и что утащил в рабочий арсенал. Как обычно, подробные разборы разложу по отдельным постам, когда покручу всё в проде и на грабли тоже наступлю.

Темы последних занятий📚:

1. Продакт vs инженерка: где конфликт и как его гасить ⚔️
- Скорость на рынок vs качество/техдолг
- Фичи vs масштабируемость/рефакторинг
- Квартальные KPI vs долгосрочная устойчивость

2. Lean/MVP и цикл Build–Measure–Learn 🚀
- Как проверять гипотезы быстро (видео-MVP, ручные процессы) и не закапываться в «полноценную разработку»

3. Метрики: общий язык для всех 📊
- North Star, продуктовые (DAU/MAU, Retention, NPS/CSAT), бизнес (ARR, LTV/CAC), инженерные (TTM, MTTR, Deploy Frequency)

4. Переводчик метрик 🔁
- Как превратить «p95 вырос на 300 мс» в «минус X $/день и −Y п.п. конверсии», чтобы нас понимали продакты и бизнес

5. Юнит-экономика 💸
- Как техрешения влияют на LTV/CAC и прибыльность «на единицу»: считать не «красиво», а «окупаемо»

6. OKR: совместные цели 🎯
- O — куда идём, KR — как поймём, что пришли. В одной связке бизнес+инженерия

7. Приоритизация без срачей 🧮
- MoSCoW для быстрой классификации и RICE для ранжирования внутри Must. Как учитывать ограничения инженерки в Impact/Confidence/Effort

8. Управление рисками и запуском 🛡️
- Фича-флаги, канареечные релизы, поэтапный раскат, SLO/SLA, go/no-go чек-листы и пороги отката

9. Scope creep: как жить 🧵
- Буфер 60-20-20, «Да, и…» вместо «Нет, потому что…», прототипы вместо мгновенных коммитов, явные trade-off’ы срок/объём/ресурсы

10. Инженерная операционка и продуктивность ⚙️
- DORA, SPACE, DX Core 4: что мерить, где утекает время (большие PR, ревью без SLA, долгие пайплайны, контекст-свитчинг) и как ускоряться

11. Технический долг: современная трактовка 🧰
- Долг — это всё, что замедляет доставку ценности, бьёт по метрикам или создаёт измеримые бизнес-риски. Не всё «техническое» надо чинить

12. Стейкхолдеры и отчётность 🤝
- Rhythm of Business: регулярные статусы, общие дашборды (бизнес+техника), прозрачные решения и эскалации

Основные мысли💡:
- Говорить в деньгах и пользовательском эффекте — универсальный ключ к приоритетам. «−2.3 с к p75 LCP = −7% конверсии = −$Х/день» работает лучше, чем «надо оптимизировать фронт».
- Совместные OKR выравнивают команды сильнее любых митов, кучи синков и прочего-прочего-прочего.
- RICE внутри Must экономит недели споров. Учитывать техограничения прямо в Impact/Confidence — честнее, чем «как-нибудь сделаем».
- Запуски без фича-флагов и порогов отката — лотерея. Канарейки и go/no-go спасают репутацию и нервы.
- Техдолг — не «стыд за некрасивый код», а денежные потери/риски. Чиним то, что бьёт по DORA/SLO/инцидентам и скорости поставки.
- «Нет» почти всегда звучит как «Да, и…»: делаем, и для этого сдвигаем X, урезаем Y, добавляем ресурсы Z, или идём через прототип/фазу пилота.

Также хочу отдельно остановиться на одной теме от которой у меня бомбит, сильно бомбит🤬:

Продакт дурак, ничего не понимает и ему важны только деньги, заставляет нас что-то делать и тд - оооочень часто слышу от знакомых разработчиков такое, скорее всего с его стороны вы выглядите аналогично - "кроме своего кода ничего не понимает, совсем не думает про то как мы будем дальше зарабатывать на весь этот техдолг и тд". Что с этим делать? Для начала хватит искать виноватого во всех бедах, а далее:
1. Учитесь общаться на одном языке и понимать мотивацию продакта(любого друго специалиста). Вы в первую очередь команда - дополняйте друг-друга, а не ругайтесь.
2. Метод «Грозовая туча». Полезная практика, впервые прочитал о нем у Элияху Голдрата.

Ну и к вам вопрос: где у вас чаще всего рвётся связка продуктинженерия — метрики, приоритизация, скоуп или релизы? Какие приёмы реально зашли (фича-флаги, RICE, OKR, Debt Day), а что осталось теорией? Делитесь кейсами и граблями 👇
🔥2216👍15
Здарово, работяги! 💪

В прошлом посте я начал разговор про System Design, давайте продолжим.

Представим ситуацию. Солнечный денёк, ветер за окном треплет листья деревьев... 🍃☀️ Вы сидите, себе работаете, попиваете кофеёк ☕️... У вас интересные задачки... Вы можете сконцентрироваться на работе... Представили? Тогда идём дальше. Сидите, работаете, никого не трогаете...
И тут вам прилетает сообщение, сообщение от коллеги из саппорта 😈... В письме он говорит, что у них за час/день/другой промежуток времени накопилось большое количество обращений от пользователей, которые жалуются, что не могут использовать какую‑то функциональность вашего приложения. Вы начинаете судорожно вспоминать, когда был последний релиз, и понимаете, что совсем не 5 минут назад... И тут вашу концентрацию, великолепный настрой и всё хорошее просто сметает к чёртям, заменяя холодным потом и кучей тревог 😰, да ещё и кофе перестал быть вкусным, а приобрёл вкус страданий — если ещё не пили такой, то попробуйте, считаю его самым бодрящим.

Знакома ли вам такая ситуация? Мне — да. И, к сожалению, в моей памяти количество таких эпизодов не равно одному... Бррр, как вспомню — аж передёргивает...

Что же делать, чтобы в такой ситуации не оказаться? Писать хороший код, скажете вы. Хорошее решение!) Конечно, нужно стараться, но ошибки действительно случаются, случаются баги и т. д. И в таких ситуациях самое главное — скорость детекта проблемы и скорость восстановления ⏱️.

Сегодня начнём с первого — скорость детекта. И главным решением тут является хорошо настроенная система мониторинга, которая позволит вам узнавать о проблемах не когда количество обращений пользователей стало критичным и ваша компания стремительно теряет деньги, а намного раньше.

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

- Вы сможете увидеть текущий фон - какие ошибки уже возникают у ваших пользователей и выстроить процесс постепенного снижения фона;
- Отслеживать появление новых ошибок.
- Отслеживать тренды — рост и падение 📈📉. Важно! Падение тоже очень важно, т. к. неожиданное падение может тоже быть сигналом о проблеме.

Также не забывайте, что для разбора важно логировать информацию не только о названии ошибки, но и контекст - версия/релиз, окружение, браузер/ОС, stacktrace и другую подобную информацию, которая позволит вам быстрее разобраться с ошибкой и ускорит время восстановления.

Следующим шагом может стать настройка алёртов(автоматическое оповещение, при возникновении определеныых условий) — они позволят вам узнавать о проблемах быстро и не сидеть, гипнотизируя графики, весь день.🚨 Реакцию на них добавьте в рутину вашего дежурного (On call)

Для организации мониторинга ошибок есть множество решений. Скорее всего вы слышали про Sentry, Raygun, Bugsnag и прочее. Но вы, может быть, уже заметили, что я в последнее время часто пишу про открытые отечественные решения, т. к. у многих из вас могут быть проблемы с использованием зарубежных решений. Тут тоже задался вопросом, а что такого на рынке есть, и нашёл — Хоук. Потыкал его какое‑то время на своих пет‑проектах и могу вам его посоветовать.
Основные фичи(критичные для меня):
- Реалтайм мониторинг ошибок
- Возможность логировать не только название ошибки, но и контекс - stack trace, релиз, коммит, окружение и тд
- Алерты
- Поддержка Source Maps
- Настройка доступов
- Open source SDK(полезно посмотреть как устроен инструмент, котрый вы используете)

Также, как я и говорил выше, ПО отечественное, поэтому:
- Серверы в РФ, а для многих это сейчас критично;
- Можно оплачивать RU‑картой (для меня это супер‑критерий, т. к. я очень не люблю всю бумажную, банковскую волокиту). 💳

Резюмируя: мониторинг — это маст‑хэв. Начинайте с мониторинга ошибок, следите за трендами ошибок, настройте алерты и выстраивайте процесс постепенного уменьшения уровня ошибок. Ну и ссылочка на Хоук — хороший кандидат для старта.
🔥16👍106🤡5💯21🏆1
Здарова, работяги!

Я уже достаточно давно подписан на Никиту и со многими его постами согласен - например с этим.

Плюсом к посту хотел с вами поделиться небольшой подборкой книг по прокачке таких навыков:

Критическое мышление. Анализируй, сомневайся, формируй свое мнение. Том Чатфилд

Думай как математик: Как решать любые задачи быстрее и эффективнее. Барбара Оакли

Думай медленно… Решай быстро. Даниэль Канеман

Джедайские техники и Путь джедая. Максим Дорофеев

Эссенциализм. Путь к простоте. МакКеон Грег

Программист-прагматик. Путь от подмастерья к мастеру. Томас Дэвид, Хант Эндрю

Атомные привычки. Джеймс Клир
🔥19
Forwarded from Никита Ульшин про IT (Nikita Ulshin)
Навык, который ускоряет прокачку любых других

Как много в нашей работе всего интересного, что хочется изучить и разобрать! Практически любой инженер является счастливым автором бэклога «штук, которые неплохо бы потыкать» и «штук, про которые неплохо бы почитать». Штук этих обычно гораздо больше, чем свободного времени. Поэтому бэклоги испытывают back pressure – набиваются быстрее, чем опустошаются.

Своё драгоценное время всегда хочется вложить максимально выгодно, получив как можно бОльшую отдачу на затраченные усилия. К счастью, для этого есть отличное направление – метанавыки.

⭐️ Что такое метанавыки

Метанавыки – это универсальные, широкие навыки, которые позволяют затем проще и быстрее осваивать более узкие, точечные умения. Их особенность заключается в переносимости между сферами жизни – один метанавык зачастую можно применять во множестве разных контекстов.

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

⭐️ За что хвататься?

Метанавыки круты тем, что при их изучении сразу же открываются огромные возможности для применения. Возьмём, к примеру, тему когнитивных искажений: в жизни полно ситуаций, где знание искажений и умение их обходить может принести огромную пользу (я лично постоянно замечаю confirmation bias и стараюсь ему не поддаваться).

Метанавыки настолько интересны, что мне лично хочется изучать их все, сразу и побольше. Но проблема ограниченных времени и сил никуда не делась, поэтому выбирать всё же приходится.

Один метанавык я искренне считаю королём всех метанавыков. И этот метанавык – умение учиться.

⭐️ Не знаешь, чему учиться? Учись учиться.

Грустный факт: выходя из образовательной системы, мы в среднем не умеем учиться. Мало кому из нас на жизненном пути попадались хорошие преподаватели, которые учили бы разбираться в проблеме и докапываться до истины, а не просто зазубривать информацию. Поэтому большинство из нас после учёбы умеют запоминать информацию, но не умеют её нормально анализировать и применять.

Само по себе слово «научиться» имеет глубокий и сложный контекст. Что вообще значит «учиться»? Как понять, что я чему-то научился (особенно если это не физический навык, а какая-то более тонкая материя)? Готовых ответов на эти вопросы у меня нет.

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

Умение учиться открывает дорогу к более быстрому и качественному самообразованию в любой другой области. В том числе оно позволяет осваивать другие интересные метанавыки (которые, в свою очередь, могут прокачивать процесс обучения).

// А какие метанавыки вы считаете самыми важными?
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥123💊3👏2💩1
Когда-то давно я запускал подобную голосовалку, прошло уже много времени.

Интересно, как поменялись ваши интересы за это время. Сейчас налаживаю канал, и это сильно поможет мне приоритезировать идеи и делать действительно полезный для вас контент.
Anonymous Poll
62%
🖼️ React и его экосистема(тут есть идеи возродить видеоформат)
60%
💻💻 JS/TS
76%
🏛 Архитектура и проектирование
30%
🤓 Computer science
23%
😴 Личная эффективность
29%
😱 Тимлидство/engineering management(сейчас заканчиваю обучение, да и опыта уже подкопилось поболее)
1%
🤔 Другое(пишите в комменты)
Cohesion и Coupling 🧩🔗

Здарова, работяги!

Если очень коротко: хорошая архитектура — это высокая связность внутри модулей (cohesion) и низкая связанность между ними (coupling). Эти два термина отлично объясняют, почему код либо живёт годами, либо рассыпается от каждого чиха.

В оригинале различить их достаточно просто, но вот в переводе… связанность и связность… Если у вас есть дефекты речи или вы просто устали к концу дня, то готовьтесь к сумбуру. Поэтому я обычно использую другой перевод:
— Cohesion — Связность
— Coupling — Сцепленность

Связность (Cohesion) 🧲
— Насколько сильно и «по делу» связаны части внутри модуля/компонента.
— Высокая связность = модуль делает одну понятную вещь.
— Сигнал проблемы: описываете модуль через «и-и-и» — «карточка товара грузит, форматирует цену, читает локаль и отправляет аналитику».

Сцепленность (Coupling) 🔗
— Насколько сильно модуль зависит от других.
— Низкая сцепленность = модуль знает только минимально необходимое о внешнем мире.
— Сигнал проблемы: изменение структуры store/API ломает полприложения.

Пример 🍿

Плохо: низкая связность + высокая сцепленность

function ProductCard({ id }: { id: string }) {
const [product, setProduct] = React.useState<any>(null);

React.useEffect(() => {
fetch(`/api/products/${id}`)
.then(r => r.json())
.then(setProduct);

window.analytics.track('view_product', { id });
}, [id]);

if (!product) return <>Loading...</>;

const currency = localStorage.getItem('currency') || 'USD';
const priceText = new Intl.NumberFormat('en', { style: 'currency', currency })
.format(product.price);

return (
<div>
<img src={product.image} />
<div>{product.name}</div>
<div>{priceText}</div>
</div>
);
}

— Компонент делает всё: загрузка, форматирование, аналитика, работа со storage, UI.
— Жёсткая привязка к fetch, analytics, localStorage, Intl и структуре product.
— Любое внешнее изменение тянет правки сюда.

Хорошо: высокая связность + низкая сцепленность

type Product = { id: string; name: string; image: string; price: number };
type ProductApi = { getById(id: string): Promise<Product> };
type CurrencyFormatter = (currency: string, amount: number) => string;

function ProductCardView({ product, priceText }: { product: Product; priceText: string }) {
return (
<div>
<img src={product.image} />
<div>{product.name}</div>
<div>{priceText}</div>
</div>
);
}

type Props = {
id: string; api: ProductApi; currency: string; formatPrice: CurrencyFormatter;
}

function ProductCard({ id, api, currency, formatPrice }: Props) {
const product = useProduct(id, api);

if (!product) return <>Loading...</>;

const priceText = formatPrice(currency, product.price);

return <ProductCardView product={product} priceText={priceText} />;
}

— ProductCard оркестрирует UI конкретной карточки (высокая связность).
— Зависимости приходят снаружи: api, formatPrice, currency (низкая сцепленность).
— Легко подменять реализации.

Опасные виды сцепленности на фронте 🛑
— Компонент знает «внутренности» ответа бэкенда и лезет в deeply.nested.a.b.c.
— Временная: функция/эффект B должна вызываться строго после функции/эффекта A (завязка на порядок эффектов).
— Прямое использование window, document, localStorage прямо в компоненте.
— Зависимость от окружения: компонент «знает», что он в проде/тесте.

Как снижать coupling и повышать cohesion 🛠
— Интерфейсы и адаптеры: компоненту нужен api.getById, а не fetch/axios.
— DI через props/context: прокидывайте зависимости сверху.
— Разделяйте UI и данные: View без побочек, отдельные сервисы для данных и бизнес-логики.
— Избегайте «utils.ts на 1000 строк»: маленькие тематические модули (price/strings/date).
🔥3217❤‍🔥2👍2
...продолжение

Как понять, что связность низкая? 🔍
— Трудно назвать модуль одним коротким предложением.
— Слишком много зависимостей «на всякий случай».
— Тесты громоздкие: чтобы проверить одну вещь — поднимаете полприложения.

Как понять, что сцепленность высокая? ⚠️
— Изменение структуры ответа API ломает десяток компонентов.
— Нельзя протестировать без реального network/localStorage.
— Переезд на другую библиотеку (http, стейт) требует массовых правок.

Мне очень нравится идея Ларри Константина: «Попытка разбиения на части модуля, обладающего связностью, приведёт лишь к увеличению степени связанности кода и снизит его удобочитаемость».

Итого 🧾
— Высокая связность = модуль делает одну вещь и делает её хорошо.
— Низкая сцепленность = модуль знает минимум о внешнем мире и легко заменяет зависимости.

Хорошое решение для снижения coupling - Dependency Injection. Интересно ли вам почитать про DI?
35🔥26👍17🤯2
Зачем разработчику комьюнити, если есть книги и YouTube? 🧠🤝

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

Но у этого пути есть предел — актуальность. Для фундаментальных вещей книги — мой топ-1. А вот для новых технологий, библиотек, подходов и каких-то «затычек» в решениях, исследованиях лучший источник оказался другой — общение с людьми. Комьюнити, митапы, конференции, кулуарные разговоры после докладов. Самые яркие инсайты за последний год-два я получал именно там.

Плюсы комьюнити:
— Актуальные практики «как делают сейчас», а не год назад - книги пишутся не один день
— Контекст решений: почему сработало и какие компромиссы приняли - часто в статьях упускают важные для вашего кейса детали
— Быструю обратную связь и проверку гипотез
— Контакты, которые помогают с карьерой и проектами - сейчас всё чаще слышу про этот плюс

Может показаться, что чтобы начать погружаться в сообщество необходимо покупать дорогущий билет на крутую конфу (тоже хороший вариант, там еще и доклады интересные😏), но начать можно с ваших локальных сообществ, митапов, либо с формата, который организуют ребята из mindbox — Frontend Speed Dating.

7 октября ребята проводят вечер коротких онлайн-знакомств для фронтенд разработчиков - формат позволяет найти единомышленников, которые решают такие же проблемы, как и вы, познакомиться и после уже продолжить общаться, обсуждать решения и делиться опытом.

📅 Когда: 7 октября

Во сколько: 19:00–20:30 по мск

📍 Где: Zoom (ссылку пришлём после регистрации)

Зарегистрироваться
👍952👀2