Семь принципов выпуска: Как 37signals создаёт и выпускает качественное ПО.
Я давно являюсь поклонником компании 37signals. То, что они делают, действительно впечатляет. Вы, наверное, знаете их как создателей популярного инструмента для управления проектами — Basecamp, а также фреймворка Ruby on Rails, который в своё время стал революционным решением в веб-разработке.Основатели компании — Джейсон Фрайд и Дэвид Хайнемайер Хенссон — неоднократно делились своим опытом, написав несколько книг, ставших бестселлерами. Их подход к продуктам и корпоративной культуре строится на простых, но эффективных принципах. Многие из этих идей кажутся очевидными, однако единицы следуют им на практике.Среди ключевых ценностей компании — открытость и простота. Используя их продукты, сразу понимаешь, что этот результат достигнут глубоким пониманием потребностей конечных пользователей.Особое внимание они уделяют процессу создания продуктов. На официальном сайте 37signals опубликованы семь ключевых принципов доставки (Shipping Principles) — философский и практический фундамент, который определяет не только как создаются их продукты, но и когда они считаются готовыми к использованию.Ниже я привожу мой перевод/конспект этих принципов — наслаждайтесь.
Принцип 1: Мы выпускаем только качественную работу
На первый взгляд это кажется очевидным, однако в реальности существует множество факторов, которые могут подтолкнуть к выпуску посредственной или даже сомнительной реализации: «Мы обещали эту функцию!», «Мы потратили на неё много времени!», «Она не такая уж плохая!».
В 37signals ни одно из этих оправданий не считается достаточным для выпуска чего-либо, кроме действительно хорошей работы. Под этим понимается надёжная реализация с точки зрения дизайна, кода и эксплуатации. Работа, к которой можно будет вернуться через несколько месяцев без чувства тревоги.
Большинство продуктов компании рассчитаны на долгий срок жизни. Поэтому любые краткосрочные выгоды от выпуска недостаточно качественных решений будут потеряны, когда придётся снова работать над тем же самым.
Это касается не только производительности, но и удовлетворения за свою работу. Известно, что правильно написанный код и грамотный дизайн приносят удовольствие. Хотя сложно точно оценить этот аспект, легко заметить, как он влияет на моральный климат команды.
При этом компания осознанно ограничивает себя циклами Shape Up, чтобы избежать перерасхода ресурсов на задачи, требующие меньших усилий. Если качество работы ниже «8 из 10», она, вероятно, не должна отправляться в продакшн. Ниже «7 из 10» — выпуск невозможен, за исключением чрезвычайных ситуаций.
Принцип 2: Мы выпускаем, когда уверены
Автоматизированное тестирование проводятся именно для того, чтобы иметь возможность выпустить работу с уверенностью в её надёжности. Однако необходимый уровень уверенности зависит как от команды, так и от критичности задачи.
Для небольших изменений с низкой степенью критичности объём проверок может быть меньше, чем для крупных и ответственных задач. Например, всё, что связано с изменением данных или масштабными существующими функциями, требует особого внимания. Если данные могут быть потеряны — это критично.
Решение о степени критичности принимает сама команда. При этом опыт участников играет важную роль. Лид с десятилетним стажем воспримет одни и те же изменения иначе, чем новичок — и это естественно.
Если требуется участие QA для повышения уверенности в результате, такое тестирование должно быть заложено в план. Но если уверенность уже достигнута, работу можно смело выпускать, оставаться рядом на случай возникновения проблем и двигаться дальше.
Принцип 3: Мы выпускаем, когда работа завершена
Мы не начинаем много спекулятивных проектов. Если проект запущен, значит, мы решили, что он нам нужен, и тогда он отправляется в продакшн, как только готов.
Такой подход позволяет избавляться от лишнего и сосредотачиваться на новых задачах. Конечно, иногда случается, что после публикации оказывается, что решение не идеально. Это нормально. Если ошибка действительно серьёзна — её исправят. У компании нет миллиардов пользователей, и один промах не вызовет массового оттока.
Инерция выпуска качественной работы имеет ценность сама по себе. Останавливать её стоит лишь в действительно тяжёлых случаях. Коллектив старается не терять времени на бесконечные сомнения — шоу должно продолжаться.
Принцип 4: Мы отвечаем за всё после выпуска
Если что-то сломалось — исправляйте! После выпуска важно наблюдать за ошибками, быть первым контактом для техподдержки, если клиенты сообщают о проблемах. Контекст у вас есть, и вы должны исправить то, что сделали неправильно.
Иногда это означает, что вы начали что-то новое, а потом были отвлечены, чтобы исправить старое. Если проблема существенная — так и должно быть. Новое можно приостановить, чтобы исправить старое.
Но важно различать, что считать «существенным». Люди всегда хотят «больше, меньше, иначе, лучше» — независимо от качества работы. Можно потратить вечность, постоянно улучшая даже самую маленькую правку, если позволить этому случиться. В 37signals так не делают.
Поэтому каждый несёт ответственность за то, чтобы всё работало, как задумано, но дополнительная обратная связь сохраняется для дальнейшего анализа.
Принцип 5: Мы не выпускаем, если это не готово
Бывает обидно, когда работа останавливается в последний момент из-за внезапно выявленной проблемы или нового понимания. «Почему ты не сказал об этом три недели назад?» — такой вопрос вполне естественен.
Действительно, лучше получать обратную связь заранее, но часто это невозможно, потому что проблема становится очевидной только в момент запуска. Именно тогда проявляется истинное понимание ситуации.
Однако временное прекращение работы — это меньшее зло, чем выпуск неготового продукта. Как только что-то попадает в production, его нельзя просто откатить.
Главное — чтобы то, что выпускается, было действительно правильным, а не просто удобным или ради избегания конфликта. Лучше всего, если всё будет сделано правильно заранее, но если реальность этого не позволяет, компания останавливает процесс.
Принцип 6: Мы выпускаем лучшее, что можем предложить все вместе
Обнаруживать проблемы с качеством реализации, дизайна или концепции — дело каждого. Это не значит, что все имеют право решать, стоит ли останавливать выпуск. Но каждый имеет право выразить опасения или предложить улучшение.
Естественно чувствовать некоторую защиту, когда кто-то указывает на недостаток. Не боритесь с этим чувством, но позвольте ему "проплыть". Используйте его, чтобы рассмотреть вопрос с разных сторон — как за, так и против. Вы не обязаны соглашаться с каждым возражением, но вы обязаны их рассмотреть.
Если отзыв поступил от более опытного коллеги, велика вероятность, что у него есть основания для такого мнения. Это не гарантирует правоты, но даёт пищу для размышлений.
Если же замечание поступило от менее опытного члена команды — это отличная возможность обучить его. Объясните, почему предложение неактуально, неверно или несущественно на данном этапе. А если идея принята — радуйтесь вместе.
Качество остаётся главным критерием. Если работа может быть лучше, проще, быстрее, и у команды есть время — они это сделают.
Принцип 7: Мы выпускаем в соответствии с нашим аппетитом
Один из ключевых принципов методологии Shape Up — «аппетит». Проекты запускаются с предположением, что они стоят усилий, только если хороший вариант идеи можно реализовать за 2–6 недель. Даже отличная идея может стать ошибкой, если на неё тратить слишком много времени.
Временные рамки, установленные «аппетитом», нужны для принятия компромиссов. Они помогают сдерживать стремление к совершенству, которое может превратить каждую идею в бесконечный проект.
Часто к окончанию срока остаются идеи для доработки, мелкие баги и желание добавить полировки. Это может раздражать: «Если бы ещё две недели!» Но, скорее всего, с этими двумя неделями амбиции бы расширились, и потребовались бы ещё две.
Ограничения заставляют делать выбор между «или», а не «и». Они служат объективным способом помочь всем участникам принять реальные возможности. Что обычно нужно — замены, а не добавления.
Feature creep и завышенные оценки — стандарт отрасли. В 37signals стандарт другой: выпускать лучшую возможную работу в рамках выделенного времени и гордиться принятыми компромиссами.
PS. Эти принципы не являются догмой, но они отражают философию и культуру, которая помогает 37signals создавать устойчивое, качественное программное обеспечение год за годом.