Уютный IT адочек
3.44K subscribers
67 photos
7 videos
4 files
201 links
С любовью к людям и их горящим задницам
Download Telegram
Фу, опять какие-то новые модные слова на хайпе. Опять кто-то придумал очередной "мета-фреймворк системной сингулярности". Достали уже, честно.

Или нет?

Я утверждаю: нам всем нужна мода и хайп в IT. Сейчас объясню.

Рынок труда не любит уникальных снежинок. Он любит чёткие ярлыки. Никто не ищет себе в команду "разностороннего энтузиаста по всему и сразу". Ищут мобильного разработчика с опытом в Swift и Kotlin. Или DevOps-инженера с Kubernetes и Terraform. Никому не нужен разработчик-железячник-аналитик-сомелье. Даже если он классный.

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

И тут наступает самый неприятный момент. Чтобы всем было проще договариваться о ролях, нужны эти самые новые слова, термины и ярлыки.
Их придумывают на конференциях, в статьях, в постах в телеграмчиках. Они раздражают, выглядят как маркетинговая муть, но именно они формируют общее поле понятий, через которое люди начинают понимать друг друга без многостраничных объяснений.

Например, никто уже не объясняет, что такое DevOps — хотя лет 10 назад это слово вызывало столько же ненависти, как сейчас "Platform Engineering". Или "SRE". Сначала смеялись, теперь нанимают пачками.

Это неприятно признавать, но без этих "хайповых" слов отрасль бы не смогла сама себя описать. А без общего языка у нас не будет общих рамок, понятных рынку.
И придётся снова объяснять на пальцах, что вы умеете делать и зачем вам платить зарплату.

Так что да, новые термины бесят. Но они — наш инструмент.
👍35🤔2💩2
Для серьёзного продукта, его инфраструктура — это не тулза. Это тоже продукт. А девопсы — не просто люди с доступом к кластеру, а овнеры этой самой инфры.

Смотрите:
— у инфры есть код (надеюсь, всё-таки в 2025 не надо обсуждать необходимость IaC?), и у этого кода есть овнеры. Те, кто не просто накатывают, а проектируют, развивают и реагирует, если что-то не так;
— у инфры есть product owner. Тот, кто формулирует, куда мы вообще движемся, какую боль лечим, какие косты срезаем, управляет бэклогом, обладает пониманием что перспективно, а что не очень;
— у инфры есть метрики. Доставка изменений, стабильность, скорость развёртывания, NPS среди команд — всё, как у людей. Иногда их даже считают и даже(!) оптимизируют;
— у инфры есть поддержка. Ну вы понимаете, кто чинит, когда всё упало?
— у инфры есть регламенты и может быть даже дока, потому что инфра — часть общего ландшафта, и без договорённостей с остальными командами будет боль и страдания.

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

А часто никто. Потому что "девопс-инженеры" у нас не про овнерство, да? Они про "мы сделали — а дальше как-нибудь сами". Документации нет, роадмапа нет, техдолг "ну вы чо, у нас тут всё сложно".
DevOps — это development и operations, а не “я тут ямлики поправил, подик вроде поднялся”.

Хочешь, чтобы инфраструктура была надёжной, предсказуемой и удобной?
Начни относиться к ней как к продукту. И овнить её так же.
👍299🤣3
Forwarded from Михаил SinTeZoiD
Если кто-то в айти говорит, что знает как правильно делать, то он или хайпожор или не квалифицированный.
23🤣21👍6🤔2
Один из главных источников боли — изменения и релизы. Новые фичи, конечно, радуют глаз. Но если из-за инцидентов вы не успеваете зарабатывать — рано или поздно за вами приедет бизнес с веником.
Но есть приём, который помогает держать баланс между разработкой и устойчивостью. Простая (очень! 😳) штука — считать деньги.

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

Если случился инцидент — дело не только в том, чтобы пофиксить баг. Нужно "списать" полученный убыток из error budget-а и смотреть, не ушёл ли баланс в минус. Потому что если ушёл — значит пора остановиться и подумать: всё ли мы так делаем?
Может быть накопился техдолг? Может быть что-то не так в процессах? Может что-то не так в головах?
Пришло время латать дыры, а потом — можно будет снова приоткрыть краник восхитительных изменений, которые принесут миллиарды денег когда-нибудь потом.

Латать дыры в одиночку бесполезно — нужно собрать всех: инженеров, разработчиков, менеджмент, саппорт. Посмотреть, что ломалось, что уже давно бесит, что надо пофиксить в первую очередь, чтобы система снова начала держаться на ногах.
Потому что фичи подождать могут, а если по итогам месяца кончатся деньги — то и новые отличные идеи делать будет не на что.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥22👍3
Хватит умножать сроки проекта на π (потому что, ну, «п***ц же!»). Это не научно!
И вообще — π хорош только в кружках и татухах. В оценках — он вреден.

Если хотите реалистичную прикидку по срокам — умножайте на e.
Потому что рост неопределённости — экспоненциален, детка.

Теперь, давайте подушним?! Итак, почему π — фиговый множитель в управлении неопределённостью:

1. В искривлённом пространстве — π плавает. В геометрии Лобачевского, например, сумма углов треугольника уже не 180°, а π там вообще не тот. Ну и как вы собираетесь на этом считать дедлайны?
2. В пространствах с размерностью больше 3 всё ещё веселее: для расчёта объёмов и площадей вместо π всплывает π², πⁿ и прочие сущности, о которых вы точно не думали, когда прибавляли ещё месяц «на всякий».
3. На планковском уровне вообще всё теряет смысл. Там нет ни окружности, ни радиуса, ни уверенности. Оценки становятся вероятностными, и вся эта арифметика — чисто философский экспириенс.

Так что забудьте про π! Хотите работать с хаосом — думайте в терминах экспоненты. Она строго аналитическая, абсолютная и неизменная!
А ещё у экспоненты есть производная. И она равна самой себе. Ещё один повод для уважения!
🤣33🔥169💩5
Как-то раз наблюдал мастер-класс под названием "Принятие решений в условиях неопределённости, которую мы сами же и создали".

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

Говорить и покручивать ситуацию с разных сторон – норм. Но если можно добыть информацию за пару кликов, или добыть того, кто добудет нужные ответы, но вместо этого устраивать круглый стол на полчаса – это уже трындец.

Не надо так.

Принимайте решения “на месте”, а не в облаках.
👍22🤯4
👀 А код-ревью — вообще нужен для качества?

Мне иногда кажется, что вокруг код-ревью построен культ. Тимлиды часами обсуждают, как "оптимально распределять ревьювера", как "улучшить процесс", как это якобы "повышает качество продукта". Но у меня с этим опытом — по-другому.

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

Но как quality gate — это слабый инструмент. Он не гарантирует, что баг не пройдёт. Не страхует от архитектурной кривизны. И откровенно тормозит delivery.

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

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

Или я чего-то не вижу?
Поговорите со мной в комментах, мне очень кажется, что я что-то упускаю, а для всех это очевидно.
👍25💩2
Дарья Мулык Как грамотно общаться с экспертами, от которых вам нужны знания.

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

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

Можете брать готовый чек-лист вопросов для брифа эксперта и адаптировать под себя.
#KnowledgeConf
👍6💩53🔥2
Когда Agile — это не про гибкость, а про хоть какую-то опору

Вы тоже немного устали от того, как насильно пытаются внедрить Scrum и Agile куда ни попадя? Особенно когда, кажется, это делается просто чтобы "как у всех".
Но вот интересный инсайт у меня случился. Сейчас я учусь на курсе "Руководитель отдела" в Стратоплане — и начинает вырисовываться новый уровень понимания того, как работает компания в целом.

Давайте представим: вы — CТО в крупной компании. Не стартап из пятерых человек, а такая развесистая структура, тысячи людей, несколько бизнес-доменов, десятки команд в каждом.

Приходите вы туда — и видите:
— задачи ставятся кто во что горазд
— планирование везде устроено по-разному
— какие-то “проекты”, где-то "инициативы", где-то просто список задач
— поводы у заведению задач у всех тоже разные — кто-то поквартально работает, кто-то в режиме "фигачь и будь что будет"
— трекинг как получится,
— дай бог 20% выполнения обязательств, взятых на себя

И вам прилетает сверху, от борда директоров: "у вас тут плохо всё с выполнением задач, стратегические цели не выполняются, исправь".
И вы такие: а где тут в этом "плохо" — то самое "всё"? Где границы, где процессы, где точка отсчёта?

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

И вот тут Agile и Scrum, какими бы словами их не хотелось назвать — внезапно становятся полезны! Потому что они дают общий язык, потому что они дают возможность нанять людей, которые хоть где-то наводили порядок с морем команд. Пусть не идеально, пусть отчасти формально — но хоть как-то!
А внутри системы, где все заняты выживанием и сохранением статус кво, редко кто способен организовать изменения сам. Нужно внешнее усилие: консультанты, обучение, давление руководства "сверху".

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

Agile — это конечно не решение, но это перила, которые нужны этой лестнице. А идти по ней, конечно, придётся всей компании.
👍21🔥7🤔5💩1🤣11
Куда вы деваете людей из своей головы?

Вот вы с кем-то поговорили на конференции/по работе, вроде интересный человек. Полезный, важный, смешной, талантливый. Что дальше?

- Кто-то сохраняет такие контакты в телефоне — и пишет туда кучу заметок.
- Кто-то — кидает себе в "Избранное" в Телеге, чтобы не забыть.
- Кто-то ведёт отдельную таблицу с пометками вроде “Максим — делает мебель" / "Пётр — javascript" / "Василий — devops", "Кристина — Яндекс"
А кто-то — вообще ничего не делает, полагается на мозг. (Удачи, лол!)

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

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

Но вот в чём вопрос.

А вы вообще как? Храните контакты, ведёте базу? Или это всё слишком?
🤯10👍3🤔1
Когда "управление ожиданиями" — это не про честный диалог, а про угадайку

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

Есть такой миф, что управление ожиданиями — это про зрелый разговор двух взрослых людей, мол: "давай обсудим, чего ты хочешь, а что реально, и найдем середину". Но что делать, если один из этих "взрослых" — твой руководитель, который не особо настроен на разговор?
Что делать, если он уже всё придумал? Ему некогда. Он занят "стратегией". А тебе, подчинённому, — удачи в угадайке, как с этим жить!

Спойлер: ты всё равно отвечаешь за эту угадайку. Потому что управление ожиданиями — это всегда задача снизу вверх. Не хочешь — не справишься. Ушёл в обиду — остался в стороне. А в стороне быть не получится — ведь ты в операционке, а значит тебя закрутит по-полной!

И вот тут важно понимать: никакая аргументация "на словах" не пробьёт глухую стену.
Что нужно? Фактура. Прецеденты. Цифры.
Хочешь донести, что начальник выдумал фигню? Приноси доказательства. Не эмоциональные "мы так не вывозим", а "смотри, вот три примера, где мы так делали — и не сработало". И — "а вот тут сделали по-другому — и получилось".

Это не пассивная агрессия. Это конструктивная конфронтация.
Это не бунт. Это одна из важных функций менеджеров как таковых.

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

Потому что если ты хочешь, чтобы наверху услышали, — сначала найди, как туда вообще достучаться.
👍49🔥5🤯1
Я продолжаю обдумывать перспективы развития канала и новые проекты. Помогите, пожалуйста, проголосуйте и, по возможности, накидайте мыслей в комменты в посте выше.
Спасибо!
🔥2
"Эти работы нельзя оценить!"
Ой, правда, что ли?

Любимый рефрен девопсов (да и не только их) — работы сложные, там всё непредсказуемо, надо влезать, разбираться, и, может быть, когда-нибудь потом они что-то скажут (нет, скажут "мы выкатили", когда уже всё сделали).

Особенно умиляет, когда это заявляет lead-devops-$500k-nanosec. И вот почему.

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

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

- Они помогают команде научиться формулировать мысли.
- Запускают внутри обмен экспертизой (а почему вот так, а не эдак?).
- Позволяют разобраться в неизвестной технологии или продукте.
- Заставляют рефлексировать и улучшать процессы.

И если lead-ml-dev-sec-llm-ops-$500k-nanosec этого не понимает — он просто создаёт себе уютное болотце. Вместо того чтобы разгружать себя через нормальные процессы, вводить стадию анализа и оценки, учить команду анализировать и формулировать — он увеличивает свою незаменимость и делает хуже всем.

Так что давайте без этих "нельзя оценить". Можно. И нужно.
19👍16💩9🔥1🤔1
CI/CD для ленивых: самая база, как сделать так, чтобы всё само разворачивалось и не падало

Казалось бы, 2025 год, а CI/CD до сих пор есть не везде, где релизы — регулярная рутина. А там, где есть, оно порой работает так, что лучше бы не работало.

🤔 Для начала разберёмся с терминами

Есть путаница. CD — это не просто “нажал кнопку — код задеплоился”. Это подход к разработке, в котором каждое изменение потенциально готово к релизу (см. Фаулера — он пишет сложно, но полезно).
Но когда говорят “CI/CD”, чаще всего имеют в виду: “я запушил код, и он магически оказался на серверах”. Ну, магия магией, но работать это должно стабильно.

🤔 Как это устроено

Есть две модели доставки кода:

- Push — код выталкивается в среду (Jenkins, GitLab CI).
- Pull — среда сама забирает нужное из репозитория (ArgoCD, Flux).

Если триггернуться на слово "ArgoCD" — можно развести холивар про gitops-подходы, в этой заметке хотелось бы этого избежать. Поэтому сосредоточимся на GitLab CI — удобной системе, где CI/CD строится на простых скриптах.

Pipeline в GitLab CI — это просто последовательность команд. Например:


stages:
- update_code
- restart_service

update_code:
stage: update_code
script:
- git pull origin main

restart_service:
stage: restart_service
script:
- systemctl restart myservice


Этот pipeline обновляет код и перезапускает сервис. Всё просто? Нет.

🤔 Проблема с git pull

Наивная схема с git pull кажется рабочей, но тут две проблемы:

1. Изменения не атомарные!
Когда идёт git pull — файлы подменяются прямо на работающем сервисе. Если код обновился не весь (например, разорвался посреди обновления), приложение скорее всего разнесёт на куски.

2. Неуправляемое состояние.
Файлы на сервере могли быть случайно (или не случайно) изменёны вручную. Где гарантия, что git pull не выдаст конфликт? А если обновление потребует миграции БД?

Не получится сделать просто git pull && restart. Должен быть механизм откатов, контроль за зависимостями, тестирование перед выкладкой.

Ой, что-то сложно, давайте не делать? Можно сделать сначала "наивный" вариант, а по мере того, как будет отстреливать и придётся решать конфликты руками — обкладываться костылями вокруг. Эволюционный подход.
Ну или – сделать доставку атомарной сразу. Например, с помощью Docker?

🤔 Почему Docker не спасает

Окей, допустим, вместо git pull мы собираем и выкатываем контейнеры:


script:
- docker build -t my-app .
- docker run -d my-app


Но тут свои нюансы, которые иногда могут отстрелить нам ноги:

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

То есть Docker решает часть проблем, но не все (и создаёт новые 😳)

🤔 Почему у вас до сих пор нет CI/CD

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

2. Возможно у вас нет времени? CI/CD как раз освобождает время. Задумайтесь, сколько часов в неделю уходит на ручные сборки, регрессы, конфликты при мерже. Выявите это и автоматизируйте.

3. Вас кидает с проекта на проект? Если нет времени на наведение порядка, может, пора сменить работу?

🤔 С чего начать

Начните с простого — автоматизируйте любую рутинную задачу. Например, вместо ручного git pull && restart сделайте скрипт:


#!/bin/bash
git pull origin main && systemctl restart myservice


И хотя бы проверьте, что он сработает, а не развалит всё к чертям.

CI/CD — это не про сложные пайплайны, а про здравый смысл. Чем раньше начнёте, тем меньше будете тратить время на рутину.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍19🤣6
Некоторые люди, кажется, рождаются с убеждением, что они альфа, омега и вообще мерило всего сущего. Особенно ярко это проявляется на рабочих обсуждениях. Стоит предложить альтернативный подход, как тут же слышишь: "Так это не работает!" или "Давай доказательства, где это так?".

Такая жесткая модерация может быстро погасить инициативу и вовлечённость в команде. Вокруг "лидера" останутся лишь те, кто безропотно соглашается, и готов убить свою мысль под давлением авторитета.

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

Что делать, если вы столкнулись с таким "лидером"?

1. Берите ответственность на себя. Вместо расплывчатого "можно попробовать сделать так" говорите чётко: "Я сделаю это к такому-то сроку". Это вызовет агрессию, риски высоки, но это единственный путь сохранить свою позицию.

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

И помните: быть главным — это не безусловное доминирование, а умение слушать и вдохновлять.
👍28💩2🤔1
Если вы тоже пользуетесь Obsidian - присмотритесь к новой фиче, которая пока что доступна в альфа-режиме
https://obsidian.md/changelog/2025-05-21-desktop-v1.9.0/
Они завозят базы как в Notion!
🔥13🎉4👍2
40🤣26🔥6
"Твоя психика — феникс"

#цитата_дна #цитата_дня
🔥17