itkvas

На Пикабу
100 рейтинг 0 подписчиков 0 подписок 3 поста 0 в горячем

Definition of done

Разгребаем кладезь мудрости от WeMakeServices. Сегодня поднимем вопрос о том, что значит "сделано"?

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

Для чего мы выполняем какие-то задачи? Для того, чтобы получить какой-то целевой результат. Если мы этого достигнем, затратив мало усилий и ресурсов, то круто! Если придется "попотеть", то тоже круто. Однако, если мы выгорели, но результата нет, то это полная херня. Я сам часто об это спотыкаюсь и вижу, как спотыкаются другие. Фокус на процессе не дает "увидеть лес". Как отметил автор статьи:

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

1

Мониторинг vs логи

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

1️⃣ Real-time insights

Визуальные инструменты мониторинга позволяют отобразить состояние системы удобными для восприятия формами. Обычный человек не способен быстро переваривать поток текстовой информации и вычленять из нее какие-то знания.

Как шутили в лаборатории, где я работал в студенческие годы "Дебаг бигдаты приводит к эпилепсии".

2️⃣ Более мощные контекст и корреляции

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

3️⃣ Стандартизация логов

Использование мониторинга накладывает определенные требования на формат логов. Они должны соответствовать определенному контракту, чтобы система могла их распарсить и обработать. Такая своего рода типизация. Это значительно упрощает любую работу с логами(как использование third-party products, так и самописные скрипты).

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

4️⃣ Supporting data

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

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

P.S. пока писал этот пост наткнулся на концепцию observability-driven development, про которую, к своему стыду раньше никогда не слышал. Этой теме будет посвящен один из следующих постов. Заодно будет повод рассказать про Logfire, инструмент мониторинга от создателей Pydantic. Уж очень давно чешутся руки рассказать про него.

В своем телеграмм канале t.me/itkvas я разбираю разные способы подходы к улучшению рабочих процессов в IT. Подписывайтесь, если вам это интересно!

Показать полностью
1

Тест Джойля

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

В подобной ситуации требуется использовать какой-то более простой способ определения качества команды. Например, описанный в 2000 году Joel Test.

Суть теста - дать бинарные( "да" или "нет") ответы на 12 простых вопросов.

1. Используете ли вы контроль исходников (Do you use source control)?

В статье про git ничего не говорится, потому что первую версию git выпустили лишь в 2005(fun fact, выпустил его Линус Торвальдс для разработки Linux).

2. Возможно ли сделать сборку одним действием(Can you make a build in one step)?

3. Выполняется ли сборка ежедневно(Do you make daily builds)?

4. Ведете ли список багов(Do you have a bug database)?

5. Исправляются ли баги до написания нового кода(Do you fix bugs before writing new code)?

6. Есть ли план релизов(Do you have an up-to-date schedule)?

7. Есть ли документация(Do you have a spec)?

8. Достаточно ли спокойные условия работы(Do programmers have quiet working conditions)?

9. Лучшие ли у вас инструменты(Do you use the best tools money can buy)?

10. Есть ли тестировщики(Do you have testers)?

11. Пишет ли кандидат код на интервью(Do new candidates write code during their interview)?

12. Практикуется ли "коридорное" тестирование удобства(Do you do hallway usability testing)?

Поймайте несколько человек в коридоре и попросите провзаимодействовать с вашим продуктом. Их отзывы покроют 95% проблем с удобством пользования.

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

Понятное дело, что пункты выше - не панацея. Есть команды, которые могут не соответствовать им, но при этом делать крутые продукты(я слышал про кейсы, когда не используется даже гит). Однако при прочих равных жизнь в проекте, который набирает в тесте 10+ очков будет намного проще, чем в проекте с более слабым результатом(неважно, уже внутри ли вы или еще только присматриваетесь).

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

В своем телеграмм канале t.me/itkvas я разбираю разные способы подходы к улучшению рабочих процессов в IT. Подписывайтесь, если вам это интересно!

Показать полностью
Отличная работа, все прочитано!