А теперь первый душный пост на нашем новом ресурсе. Выжимка из опыта — как собрать команду мечты.
Внутри:
- Почему команда мечты — это не 10 суперзвёзд, работающих по 16 часов (а суперзвезда вообще антипаттерн)
- Каких людей надо гнать ссаными тряпками в первую очередь
- Какие роли необходимы в команде
- Почему собес почти ничего не решает
- И как понять на нём, что перед вами хорошая команда, а не очередной филиал ада
Читать →
Внутри:
- Почему команда мечты — это не 10 суперзвёзд, работающих по 16 часов (а суперзвезда вообще антипаттерн)
- Каких людей надо гнать ссаными тряпками в первую очередь
- Какие роли необходимы в команде
- Почему собес почти ничего не решает
- И как понять на нём, что перед вами хорошая команда, а не очередной филиал ада
Читать →
😁11🔥7🌚5👍1
Please open Telegram to view this post
VIEW IN TELEGRAM
💯23❤10👍8🔥7
Тут опять произошло прекрасное.
Исследователи из JFrog решили проверить, что там с найденными (как выяснилось, в основном ИИ) уязвимостями в SQLite, и оказалось, что из 55 зарегистрированных CVE реальной была всего одна, а остальные — обычные галлюцинации ИИ: тут и выдуманные методы, и несуществующие пути эксплуатации, и нерабочие эксплоиты, и прочие радости жизни. Самое фиговое, что эти уязвимости уже успели попасть в CVE. То есть в следующем релизе вполне возможно, что какой-нибудь сканер начнет сношать вам мозг относительно критической уязвимости, которой никогда не существовало.
Можно подумать, что ИИ тут бесполезна. Но нет.
На мой взгляд, ИИ сейчас довольно неплохо работает там, где есть четко сформулированные правила, которые можно проверить. Например, при разработке агрегатов и инвариантов к ним. Можно попросить ИИ оценить белые пятна: не нарушается ли владение объектами, не забыли ли мы проверить уникальность, нет ли сценария, при котором агрегат может попасть в неконсистентное состояние и все в этом духе. Понятно, что это не магический анализатор, который найдет все проблемы. Но результаты иногда бывают довольно неожиданные и реально полезные. Как минимум, помогает посмотреть на модель с другой стороны и найти потенциальные баги до того, как они доедут до прода.
Вторая полезная штука — проверить наличие или отсутствие проверок безопасности. Но тут есть важный момент (и, кстати, он справедлив и для первого случая). Эти проверки должны быть единообразны и желательно централизованы.
Условно, если у вас простая модель разделения доступа, то на каждом контроллере должна быть аннотация
Вообще, для таких критичных вещей я большой фанат подхода fail fast. В одном из проектов мы сделали следующим образом: если в конфигурации явно не задано, какая роль нужна для контроллера (или он не добавлен в список исключений), приложение просто не стартует. Что-то вроде:
Но это довольно примитивный случай. Проблемы начинаются дальше. Например, нам нужно проверить не просто наличие роли, а доступ к конкретному ресурсу. Пользователь может видеть только свои счета, свои документы и т.д. Тут уже одной аннотации с ролью на контроллере может быть недостаточно. И вот здесь как раз хорошо работает комбинация из архитектурных правил, статического анализа и ИИ. Допустим, мы договариваемся, что любой Use Case, который работает со счетом, обязан использовать интерфейс безопасности:
Дальше можно кастомный статанализатор (мы так делали, дописывали правила уже к существующему), который будет проверять наличие такого вызова (и имеет ли он вообще отношение к сущностям, над которыми происходит действие), можно ронять сборку при нарушении правила, а еще можно попросить ИИ проверить не упустили ли мы чего.
Конечно, это не панацея и не заменяет нормальные тесты и security review. Но вероятность забыть критичную проверку становится заметно ниже. Мне вообще кажется, что именно в этом сейчас одна из самых сильных сторон ИИ. Мы не пытаемся заставить его быть магическим сканером уязвимостей, который найдет неизвестную дыру в миллионах строк кода, а использовать его как дополнительный слой контроля за тем, что ваши собственные правила действительно соблюдаются. Но для этого сначала нужно эти правила иметь . Если у вас просто сопли, размазанные по всему проекту, слоям и сервисам (99% того что я видел выглядит именно так), то ИИ просто поможет вам быстрее расстаться с бюджетом
Исследователи из JFrog решили проверить, что там с найденными (как выяснилось, в основном ИИ) уязвимостями в SQLite, и оказалось, что из 55 зарегистрированных CVE реальной была всего одна, а остальные — обычные галлюцинации ИИ: тут и выдуманные методы, и несуществующие пути эксплуатации, и нерабочие эксплоиты, и прочие радости жизни. Самое фиговое, что эти уязвимости уже успели попасть в CVE. То есть в следующем релизе вполне возможно, что какой-нибудь сканер начнет сношать вам мозг относительно критической уязвимости, которой никогда не существовало.
Можно подумать, что ИИ тут бесполезна. Но нет.
На мой взгляд, ИИ сейчас довольно неплохо работает там, где есть четко сформулированные правила, которые можно проверить. Например, при разработке агрегатов и инвариантов к ним. Можно попросить ИИ оценить белые пятна: не нарушается ли владение объектами, не забыли ли мы проверить уникальность, нет ли сценария, при котором агрегат может попасть в неконсистентное состояние и все в этом духе. Понятно, что это не магический анализатор, который найдет все проблемы. Но результаты иногда бывают довольно неожиданные и реально полезные. Как минимум, помогает посмотреть на модель с другой стороны и найти потенциальные баги до того, как они доедут до прода.
Вторая полезная штука — проверить наличие или отсутствие проверок безопасности. Но тут есть важный момент (и, кстати, он справедлив и для первого случая). Эти проверки должны быть единообразны и желательно централизованы.
Условно, если у вас простая модель разделения доступа, то на каждом контроллере должна быть аннотация
@Secured (или что-то подобное), а не где-то глубоко в DAO. Иначе вы просто сожжете токены ибо ИИ не сможет понять, что именно является правилом, а что случайностью.Вообще, для таких критичных вещей я большой фанат подхода fail fast. В одном из проектов мы сделали следующим образом: если в конфигурации явно не задано, какая роль нужна для контроллера (или он не добавлен в список исключений), приложение просто не стартует. Что-то вроде:
.addRole(SomeController::method, Roles.ADMIN)Но это довольно примитивный случай. Проблемы начинаются дальше. Например, нам нужно проверить не просто наличие роли, а доступ к конкретному ресурсу. Пользователь может видеть только свои счета, свои документы и т.д. Тут уже одной аннотации с ролью на контроллере может быть недостаточно. И вот здесь как раз хорошо работает комбинация из архитектурных правил, статического анализа и ИИ. Допустим, мы договариваемся, что любой Use Case, который работает со счетом, обязан использовать интерфейс безопасности:
CheckHasAccountAccess(accountUID)Дальше можно кастомный статанализатор (мы так делали, дописывали правила уже к существующему), который будет проверять наличие такого вызова (и имеет ли он вообще отношение к сущностям, над которыми происходит действие), можно ронять сборку при нарушении правила, а еще можно попросить ИИ проверить не упустили ли мы чего.
Конечно, это не панацея и не заменяет нормальные тесты и security review. Но вероятность забыть критичную проверку становится заметно ниже. Мне вообще кажется, что именно в этом сейчас одна из самых сильных сторон ИИ. Мы не пытаемся заставить его быть магическим сканером уязвимостей, который найдет неизвестную дыру в миллионах строк кода, а использовать его как дополнительный слой контроля за тем, что ваши собственные правила действительно соблюдаются. Но для этого сначала нужно эти правила иметь . Если у вас просто сопли, размазанные по всему проекту, слоям и сервисам (99% того что я видел выглядит именно так), то ИИ просто поможет вам быстрее расстаться с бюджетом
Jfrog
SQLite Critical CVEs or LLM Slop? | JFrog
The JFrog security research team recently identified a supply chain attack targeting the `xinference` package on PyPI. Versions 2.6.0, 2.6.1, and 2.6.2 were compromised and yanked by maintainers after users reported suspicious behavior. If you installed or…
👍19😁5❤3
Как ИИ превратил плохих менеджеров в плохих разработчиков
Не знаю, как у вас, но у меня с появлением ИИ собеседования превратились в боль.
Раньше плохих разработчиков можно было отсеять ещё на этапе тестового задания. Сейчас любое тестовое выполняют как минимум на «сойдёт»:
— пользоваться ИИ не запретишь;
— какое-никакое решение он всё-таки состряпает.
Поэтому количество очных собеседований у нас выросло в разы.
Но недавно я столкнулся с новым типом кандидатов: плохими менеджерами, которые с помощью ИИ переквалифицировались в плохих разработчиков.
Попался мне один такой. Рассказываю.
Читаю резюме — вроде всё нормально, но нет какого-то коннекта на уровне «свой — чужой». Чувствую подвох. Резюме слишком вылизано, в достижениях слишком много бизнесовых показателей. Разработчики обычно так не пишут.
Открываю тестовое — и там тоже на первый взгляд всё хорошо. Но вместо Gradle вижу build.sh, который заканчивается командой:
Уже подозрительно.
На собеседовании выяснилось, что кандидат работал менеджером разработчиков в крупном криптостартапе. После внедрения ИИ многих менеджеров там заставили писать код.
В ядро продукта их, конечно, никто не пустил, но поручили делать сопутствующие инструменты — например, для KYC.
На собеседовании кандидат не смог реализовать ни одного бизнес-требования. А когда мы попросили отрефакторить компонент бизнес-логики и сделать его немного более объектно-ориентированным, он почему-то начал рассуждать про JSON.
В общем, будьте внимательны. Обязательно просите кандидатов писать код прямо на собеседовании. Я все так же против того, чтобы заставлять на собеседованиях вертеть деревья. Но отрефакторить свой код, заимплементировать фичу и написать на это тест кандидат, имхо, обязан.
И на сладкое.
Файл с тестовым заданием назывался
Ну а что? В требованиях было сказано использовать Git. Вот, пожалуйста, использовал.
Расскажите в комментариях как ИИ повлиял на процессы собеседований в ваших командах
Не знаю, как у вас, но у меня с появлением ИИ собеседования превратились в боль.
Раньше плохих разработчиков можно было отсеять ещё на этапе тестового задания. Сейчас любое тестовое выполняют как минимум на «сойдёт»:
— пользоваться ИИ не запретишь;
— какое-никакое решение он всё-таки состряпает.
Поэтому количество очных собеседований у нас выросло в разы.
Но недавно я столкнулся с новым типом кандидатов: плохими менеджерами, которые с помощью ИИ переквалифицировались в плохих разработчиков.
Попался мне один такой. Рассказываю.
Читаю резюме — вроде всё нормально, но нет какого-то коннекта на уровне «свой — чужой». Чувствую подвох. Резюме слишком вылизано, в достижениях слишком много бизнесовых показателей. Разработчики обычно так не пишут.
Открываю тестовое — и там тоже на первый взгляд всё хорошо. Но вместо Gradle вижу build.sh, который заканчивается командой:
javac -d "$BUILD_DIR" "@$SOURCES_FILE"Уже подозрительно.
На собеседовании выяснилось, что кандидат работал менеджером разработчиков в крупном криптостартапе. После внедрения ИИ многих менеджеров там заставили писать код.
В ядро продукта их, конечно, никто не пустил, но поручили делать сопутствующие инструменты — например, для KYC.
На собеседовании кандидат не смог реализовать ни одного бизнес-требования. А когда мы попросили отрефакторить компонент бизнес-логики и сделать его немного более объектно-ориентированным, он почему-то начал рассуждать про JSON.
В общем, будьте внимательны. Обязательно просите кандидатов писать код прямо на собеседовании. Я все так же против того, чтобы заставлять на собеседованиях вертеть деревья. Но отрефакторить свой код, заимплементировать фичу и написать на это тест кандидат, имхо, обязан.
И на сладкое.
Файл с тестовым заданием назывался
ATM-final-v6. Внутри лежал Git-репозиторий с одним-единственным коммитом.Ну а что? В требованиях было сказано использовать Git. Вот, пожалуйста, использовал.
Расскажите в комментариях как ИИ повлиял на процессы собеседований в ваших командах
🙈20❤11👍1
Я на работе запилил такое правило — мы работаем с подходом Monolith First. Это когда мы сначала запиливаем монолит, а потом нарезаем его по мере необходимости. Тут даже не то чтобы правило, меня прям бомбить начинает от слова «микросервисы».
А всё почему? Да потому что вы, наверное, помните офигительную историю про 80 микросервисов. Выяснилось, что, чтобы собрать эти 80 микросов, нам нужно 220(!) репозиториев. Ну а вендор, который продал это чудище, просто сказал: «У меня лапки, я не могу поддерживать это больше». Даже развернуть на новом стенде оказалось нереально.
И тут хорошо видна ещё одна проблема с вендорами. Мы обычно думаем, что покупаем у них продукт, который потом будем несколько лет развивать и поддерживать. А вендор зачастую думает, что он делает проект. Есть набор задач, за который ему заплатили, — надо этот набор и закрыть. Что будет с системой через два года, когда её придётся обновлять, развивать или просто развернуть на новом стенде, — это уже как бы отдельная история (обычно после нас хоть трава не расти).
Получается интересная ситуация: мы строим продукт, а вендор закрывает проект. И вот из таких проектов потом и вырастают 80 микросервисов, 220 репозиториев и система, которую уже никто не может нормально собрать.
Зато как красиво звучали слова про масштабируемость (наверное).
А всё почему? Да потому что вы, наверное, помните офигительную историю про 80 микросервисов. Выяснилось, что, чтобы собрать эти 80 микросов, нам нужно 220(!) репозиториев. Ну а вендор, который продал это чудище, просто сказал: «У меня лапки, я не могу поддерживать это больше». Даже развернуть на новом стенде оказалось нереально.
И тут хорошо видна ещё одна проблема с вендорами. Мы обычно думаем, что покупаем у них продукт, который потом будем несколько лет развивать и поддерживать. А вендор зачастую думает, что он делает проект. Есть набор задач, за который ему заплатили, — надо этот набор и закрыть. Что будет с системой через два года, когда её придётся обновлять, развивать или просто развернуть на новом стенде, — это уже как бы отдельная история (обычно после нас хоть трава не расти).
Получается интересная ситуация: мы строим продукт, а вендор закрывает проект. И вот из таких проектов потом и вырастают 80 микросервисов, 220 репозиториев и система, которую уже никто не может нормально собрать.
Зато как красиво звучали слова про масштабируемость (наверное).
martinfowler.com
bliki: Monolith First
Going directly to a microservices architecture is risky, so consider building a monolithic system first. Split to microservices when, and if, you need it.
💯23👍14🔥7❤3
Notebook → прод, метод на 1000 строк, цикл в цикле в цикле, никто не понимает что происходит - это классика от MLщиков. Мы применили DDD и чистую архитектуру к реальному ML-проекту. Value Objects, агрегаты, доменные сервисы, порты — на конкретных примерах кода (осторожно, петухон).
Читать что получилось →
Читать что получилось →
❤14😁5🔥3👍1
Знаем, что большинству удобнее читать текст, чем смотреть видосики, поэтому решили выложить в открытый доступ текстовую версию видосов про Value Objects.
Внутри — примеры из реальных проектов с логикой чуть сложнее, чем просто валидация, а ещё разбор такого явления, как коллекции в виде VO.
P.S. Если найдёте опечатку или какой-нибудь косяк — пишите прямо там, в комментах. Мы вроде всё вычитывали, но где-то на 35-й странице внимание начинает немного угасать
Ну и ставьте лойсы и делитесь постом. Если такой формат зайдёт — будем делать больше текстовых материалов.
Внутри — примеры из реальных проектов с логикой чуть сложнее, чем просто валидация, а ещё разбор такого явления, как коллекции в виде VO.
P.S. Если найдёте опечатку или какой-нибудь косяк — пишите прямо там, в комментах. Мы вроде всё вычитывали, но где-то на 35-й странице внимание начинает немного угасать
Ну и ставьте лойсы и делитесь постом. Если такой формат зайдёт — будем делать больше текстовых материалов.
❤27👍12🔥2
В комментариях к предыдущему посту читатели оставили пару комментов. Они интересные, поэтому давайте разберём. Кратко передам суть первого:
То, что логика локальная, — это не значит, что её необходимо оставлять как есть (иначе получатся анемичные объекты с логикой в агрегатах). Конкретно в моём случае эта логика постоянно переиспользовалась в разных местах, в том числе за пределами агрегата (для построения графиков, отчётиков и т. д.).
Сам VO распространяется не на все контексты — ограничение таки есть (это сам контекст как раз). Также в тексте есть про общие типы, которые могут использоваться везде. Это как раз норм, так как логика 100% всегда одинаковая (email он и в Африке email), но там тоже есть оговорки (подробнее в статье).
Второй комментарий придётся разобрать по частям.
В целом это норм, обычно на практике проблем не вызывает. При работе с VO мы примерно представляем, из чего собирается объект (email — строка, денежка —double BigDecimal). Если есть проблемы с тем, во что сериализовывать и десериализовывать, — можно воспользоваться механизмом функций-расширений (об этом тоже есть в статье).
Вот как раз-таки и не должен. У VO клиент — это вызывающий его код, а не конечный потребитель. Вы бы знали, сколько раз я переделывал с JSON-ов не на JSON-ы и обратно, подключал вообще не HTTP-каналы и т. д. Если логика отображения заложена в VO, вы никогда больше не сможете поменять бизнес-логику, потому что «ой-ой, у нас отображение формочки сломалось».
«А минусы?» Тут возникает проблема — а какой валидатор брать? Спринговый? Хиберовский? Ещё какой-то? Выпилили/обновили Хибер — а что теперь делать? Поэтому вся логика валидации аккуратно запихана в сам домен. Вообще мы используем инструмент для валидации в виде ArrowKt, про это тоже есть в посте. Он действительно упрощает сбор ошибок, и мы считаем его частью домена на системном уровне.
Собсна, в этом и заключается суть чистой архитектуры — отделить инфру от домена. Очень любим такой подход, потому что уже наелись. Про сохранение тоже в статье было — проблем, как правило, не вызывает, если умело пользоваться.
VO на практике бывает очень локальным, поэтому не всегда есть смысл их выделять в отдельные классы и можно вообще оставить.
То, что логика локальная, — это не значит, что её необходимо оставлять как есть (иначе получатся анемичные объекты с логикой в агрегатах). Конкретно в моём случае эта логика постоянно переиспользовалась в разных местах, в том числе за пределами агрегата (для построения графиков, отчётиков и т. д.).
Сам VO распространяется не на все контексты — ограничение таки есть (это сам контекст как раз). Также в тексте есть про общие типы, которые могут использоваться везде. Это как раз норм, так как логика 100% всегда одинаковая (email он и в Африке email), но там тоже есть оговорки (подробнее в статье).
Второй комментарий придётся разобрать по частям.
Получается, во-первых, что VO должен что-то знать об объектах, из которых он может быть сконвертирован (например, IP-адрес знает о том, что может быть создан из строки и о формате этой самой строки),
В целом это норм, обычно на практике проблем не вызывает. При работе с VO мы примерно представляем, из чего собирается объект (email — строка, денежка —
VO должен заботиться о том, чтобы отдать клиенту ошибку создания в красивом и понятном виде. А в этом последнем трудно соперничать со специальными инструментами валидации, которые готовы тебе указать локализацию вплоть до json-path свойства и позиции в строке.
Вот как раз-таки и не должен. У VO клиент — это вызывающий его код, а не конечный потребитель. Вы бы знали, сколько раз я переделывал с JSON-ов не на JSON-ы и обратно, подключал вообще не HTTP-каналы и т. д. Если логика отображения заложена в VO, вы никогда больше не сможете поменять бизнес-логику, потому что «ой-ой, у нас отображение формочки сломалось».
Плюс множество встроенных валидаторов этих инструментов, которые придётся тогда игнорировать и велосипедить.
«А минусы?» Тут возникает проблема — а какой валидатор брать? Спринговый? Хиберовский? Ещё какой-то? Выпилили/обновили Хибер — а что теперь делать? Поэтому вся логика валидации аккуратно запихана в сам домен. Вообще мы используем инструмент для валидации в виде ArrowKt, про это тоже есть в посте. Он действительно упрощает сбор ошибок, и мы считаем его частью домена на системном уровне.
На другой стороне инфраструктуры (ORM) тоже достаточно заморочек с сериализацией/поиском по ValueObject. Entity Framework дотнетовский за последние годы многому в этом направлении научился, но всё равно сохраняются ограничения на применимость VO-подхода "мощностью" нижележащего ORM-фреймворка.
Собсна, в этом и заключается суть чистой архитектуры — отделить инфру от домена. Очень любим такой подход, потому что уже наелись. Про сохранение тоже в статье было — проблем, как правило, не вызывает, если умело пользоваться.
Telegram
StringConcat - разработка без боли и сожалений
Notebook → прод, метод на 1000 строк, цикл в цикле в цикле, никто не понимает что происходит - это классика от MLщиков. Мы применили DDD и чистую архитектуру к реальному ML-проекту. Value Objects, агрегаты, доменные сервисы, порты — на конкретных примерах…
👍12❤2🔥2
Начинаем сезон видосиков с обзора карьерных путей (не переживайте, духота тоже будет, но попозже).
Обозрел основные ветки развития на собственном опыте: успел поработать практически во всех ролях и рассказываю, как там дела, куда расти и чего вообще ждать.
Смотреть YouTube | VK
Обозрел основные ветки развития на собственном опыте: успел поработать практически во всех ролях и рассказываю, как там дела, куда расти и чего вообще ждать.
Смотреть YouTube | VK
YouTube
Я прошел путь от стажера до CTO чтобы вам не пришлось: деньги, технологии и проблемы с кукухой
После Senior лестница заканчивается. Дальше уже не код, а выбор: люди или технологии, стабильность или потолок, свобода или влияние. Разбираю реальные пути — техлид, стаф, архитектор, тимлид, CTO, консалтинг и свой продукт — и что за каждым на самом деле:…
🔥10👍5❤🔥3😁1👀1
Евгений
Я на работе запилил такое правило — мы работаем с подходом Monolith First. Это когда мы сначала запиливаем монолит, а потом нарезаем его по мере необходимости. Тут даже не то чтобы правило, меня прям бомбить начинает от слова «микросервисы». А всё почему?…
Продолжаем обзор микросервисных изделий. На этот раз подписчики прислали мне архитектуру, состоящую примерно из сотни микросов. Вы скажете: а что такого? Где 80, там и 100, невелика разница. Но есть маааааленький нюансик. Это — коробочное решение, то есть программа, которая продается в товарных количествах.
Как-то я имел возможность делать подобные штуки, и там было далеко не 100 микросервисов, а до десятка. В чем прикол — обновлять у клиента руками админов, которые не читают инструкции — это отдельное развлечение.
Классика: не прочитали инструкцию, перепутали порядок установки, не вписали настройки (или вписали, но не те), забыли перезапустить и много других приколов. А если еще они пропустили несколько обновлений — то жди беды. А если что-то у клиента сломается, то вообще концов не найдешь. Проблема даже получить целостные логи.
Высший пилотаж — обновление без простоя, но, учитывая, кто это будет делать, — лучше не надо. Отчасти это решается скриптами автоматизации, контейнеризацией и прочим, но не до конца. Мы сначала передали поддержку (развертывания и обновления) вендору, но он через некоторое время исчез и перестал отвечать (интересно, почему?).
Поэтому мне сложно представить, каково это — поддерживать коробочное решение из сотни микросов. Может, сейчас появились какие-то модные практики, но, глядя на то, как работает куча вендоров, как будто бы ничего не поменялось.
Как-то я имел возможность делать подобные штуки, и там было далеко не 100 микросервисов, а до десятка. В чем прикол — обновлять у клиента руками админов, которые не читают инструкции — это отдельное развлечение.
Классика: не прочитали инструкцию, перепутали порядок установки, не вписали настройки (или вписали, но не те), забыли перезапустить и много других приколов. А если еще они пропустили несколько обновлений — то жди беды. А если что-то у клиента сломается, то вообще концов не найдешь. Проблема даже получить целостные логи.
Высший пилотаж — обновление без простоя, но, учитывая, кто это будет делать, — лучше не надо. Отчасти это решается скриптами автоматизации, контейнеризацией и прочим, но не до конца. Мы сначала передали поддержку (развертывания и обновления) вендору, но он через некоторое время исчез и перестал отвечать (интересно, почему?).
Поэтому мне сложно представить, каково это — поддерживать коробочное решение из сотни микросов. Может, сейчас появились какие-то модные практики, но, глядя на то, как работает куча вендоров, как будто бы ничего не поменялось.
😁16😱5👍3🌭2
Евгений
А теперь первый душный пост на нашем новом ресурсе. Выжимка из опыта — как собрать команду мечты. Внутри: - Почему команда мечты — это не 10 суперзвёзд, работающих по 16 часов (а суперзвезда вообще антипаттерн) - Каких людей надо гнать ссаными тряпками в…
Я частенько в своих постах упоминаю ключевую характеристику для сотрудника — автономность. Хотелось бы проиллюстрировать реальным примером, как это может выглядеть.
Ситуация следующая. Сотрудник взял микроотпуск на один день. Чтобы ничего не простаивало — дела были переданы другому, так как задача важная и горящая.
И вот примерно такая переписка происходит перед его уходом:
Вместо того чтобы сказать «да сами разберетесь», было предусмотрено всё, чтобы работа не простаивала. Вот вам исходники, логи теребить через вот этого чела, вот что уже накопал, вот задача, чтобы не потерялась. Причём никто не просил его составлять какой-то план передачи дел, тем более на один день. Он просто сам подумал, что понадобится человеку, который будет разбираться с задачей без него. Если у вас есть такой сотрудник — целуйте его в жопу.
Ситуация следующая. Сотрудник взял микроотпуск на один день. Чтобы ничего не простаивало — дела были переданы другому, так как задача важная и горящая.
И вот примерно такая переписка происходит перед его уходом:
— По колбекам: там короче внешняя система пытается нам колбек отправить, но, как и выяснилось, у неё нет доступа. Нашли в логах пример того, что она пытается нам отправить — приложу в тикет. Ещё в логах нашёл полный объект, который она пыталась отправить
— Ещё нашёл заметки предыдущего разработчика по раскопкам этой шляпы. всё сюда приложил: и раскопки по реализации колбеков, и пример из логов
— Ещё на почту отправил тебе куски исходников этой системы, если вдруг захочешь в них разобраться. К логам ты сам доступа, скорее всего, не получишь, но вот человек, который может посмотреть
— Задачу на тебя перекинул на понедельник, чтобы не потерялась. убежал, хороших выходных 💖
Вместо того чтобы сказать «да сами разберетесь», было предусмотрено всё, чтобы работа не простаивала. Вот вам исходники, логи теребить через вот этого чела, вот что уже накопал, вот задача, чтобы не потерялась. Причём никто не просил его составлять какой-то план передачи дел, тем более на один день. Он просто сам подумал, что понадобится человеку, который будет разбираться с задачей без него. Если у вас есть такой сотрудник — целуйте его в жопу.
❤29😁5👍2🔥2💯2🤣2
Сегодня необычный выпуск — подкаст с нашим старым бро Константином Могилевкиным.
Константин — IT-предприниматель, в айтишечке с незапамятных времён, как и мы.
Воздуханим 1ч 9 мин Разговариваем за бизнес, за жизнь, за то, как в нынешних непростых условиях оставаться на плаву, как немного лутануть бабосиков и причем тут ДэДэДэ.
Смотреть: YouTube | ВК
Константин — IT-предприниматель, в айтишечке с незапамятных времён, как и мы.
Смотреть: YouTube | ВК
YouTube
Где брать деньги в IT в 2026? Подкаст с ИТ-предпринимателем
Полезные материалы:
🎯 Разработка без боли и сожалений - https://t.me/stringconcat
🎯 Канал Константина - https://t.me/prezmog
🎯 Видео про теорию всего - https://www.youtube.com/watch?v=1pan4dalh3M
Где брать деньги в IT в 2026? Разговор с Константином —…
🎯 Разработка без боли и сожалений - https://t.me/stringconcat
🎯 Канал Константина - https://t.me/prezmog
🎯 Видео про теорию всего - https://www.youtube.com/watch?v=1pan4dalh3M
Где брать деньги в IT в 2026? Разговор с Константином —…
🔥16❤5👍3💯3
А сегодня снова не совсем обычный пост (пока я занят написанием духоты).
Знаю, что у многих подписчиков есть собственные каналы, а кто-то задумывается о том, чтобы изготовить из себя личный бренд. Поскольку мы занимаемся чем-то похожим и у нас есть опыт помощи другим, я решил оформить это в виде небольшого гайда, в течение которого буду всячески отговаривать вас заниматься подобными вещами.
Если будет интересно, в следующем посте обсудим монетизацию.
Как стать инфоцыганом. Личный бренд для ИТшника
А если вам нужно подушнее, то рекомендуем к ознакомлению:
- Кто мы такие (открытый пост)
- Полное руководство по Value Objects (открытый пост)
- DDD в машинном обучении - опыт реального проекта
- Как собрать команду мечты
Знаю, что у многих подписчиков есть собственные каналы, а кто-то задумывается о том, чтобы изготовить из себя личный бренд. Поскольку мы занимаемся чем-то похожим и у нас есть опыт помощи другим, я решил оформить это в виде небольшого гайда, в течение которого буду всячески отговаривать вас заниматься подобными вещами.
Если будет интересно, в следующем посте обсудим монетизацию.
Как стать инфоцыганом. Личный бренд для ИТшника
А если вам нужно подушнее, то рекомендуем к ознакомлению:
- Кто мы такие (открытый пост)
- Полное руководство по Value Objects (открытый пост)
- DDD в машинном обучении - опыт реального проекта
- Как собрать команду мечты
👍13❤4😁4