Классический источник напряжений и дисфункций в командах разработки — да на самом деле, в любых командах — это путаница между целями и ограничениями. Команды часто ошибочно принимают ограничения за цели. Типичнейший пример: команда принимает требования к продукту за свою цель, теряя из виду реальные потребности, которые изначально породили эти требования. Требования, архитектура, дизайн приложения — это ограничение. Как правило, одну проблему можно решить бесчисленным количеством способов, но мы просто выбрали один конкретный. Это по определению и есть ограничение. Я видел много технических стартапов, которые теряли из виду, что, как и зачем они делают, и скатывались к 100-процентному фокусированию на добыче денег, необходимых исключительно на поддержание текущего состояния дел. Такое встречается очень часто. Подумайте о всех этих благотворительных фондах, которые начинали с чёткой цели (условно говоря, "спасти кота"), но спустя несколько лет вперёд оказывается, что большинство их усилий — если не все — направлены лишь на то, чтобы найти денег на то, чтобы выплатить всем зарплату и продолжать "благотворительность". Конечно, вы можете возразить мне, что делать деньги — это и есть задача бизнеса, и эти деньги являются платой за то, что бизнес решает задачи пользователей. Цель ресторана — делать деньги. Цель ужина — быть съеденным. Я даю вам денег. Вы утоляете мой голод. Поэтому, если вся суть существования вашей организации состоит в делании денег, то вам жизненно необходимо иметь хорошее, глубокое понимание целей и потребностей вашего клиента. Такое представление о бизнесе идёт ещё из XIX века. Но даже тогда встречались прогрессивные промышленники, которые ставили цели большие, чем просто получение прибыли. В своём лучшем проявлении, компания может создавать смысл и цель для своих сотрудников, обогащать их жизни и жизнь сообщества, и добавлять привлекательности окружающему ландшафту. Но я отвлёкся. Где я остановился? Ах да. Цели против ограничений. Представьте, что вы планируете путешествие из своего дома в Лос-Анджелесе в Сан-Франциско. Ваша цель — посетить Фриско. Ограничением же может быть тот факт, что вы хотите ехать на своей машине, а бензина у вас не хватит на всю поездку. Вы решаете добыть денег на бензин. Для этого вы начинаете делать лимонад и продавать его в киоске у своего дома. Дело идёт хорошо. Людям нравится ваш лимонад, и, благодаря удачному расположению вашего дома, около него всегда много прохожих, которым надо утолить жажду. Вскоре денег на бензин уже более чем хватает. Но продажа лимонада идёт так бойко, что вы только и заняты мыслями о нём, а не о Сан-Франциско. Вы планируете добавить в ассортимент свежевыжатый апельсиновый сок, а также смузи. Вы покупаете стол побольше. Вы нанимаете помощника, просто потому что не успеваете всё делать самостоятельно. Вы покупаете новый дом на этой же улице, крупнее и с более просторным двором. Затем вы начинаете поставлять свои напитки местным ресторанчикам, когда им не хватает собственных. Спустя 10 лет вы запускаете собственную сеть лимонадных киосков по всему городу. Между тем, вы так и не побывали в Сан-Франциско. Да и сейчас вы слишком заняты, поэтому вряд ли найдёте время когда-нибудь съездить туда. Теперь, если вы прожжённый капиталист, вы можете возразить: "и что?" Ваш лимонадный бизнес — это ли не достойная компенсация упущенному путешествию? Может быть, да, а может быть, и нет. Становясь всё старше и старше, я всё чаще начинаю задавать себе вопрос "почему я делаю это?" Я знаю слишком много людей, которые слишком отвлечены "успехом" и никогда не ездили в путешествия, никогда не получали этот опыт, никогда не создавали домашнюю студию звукозаписи, никогда не могли выучить иностранный язык… и сделать всё остальное, что ещё было в их планах. Для большинства из нас, равно людей и организаций, необходимость добывать деньги — это данность, от которой никогда не избавиться. Это ограничение, которое может помогать или мешать нам достигать своих целей. Точно так же, в командной работе мы крайне легко опускаемся до деталей и перестаём обращать внимание на то, почему мы создаём программы и системы так же, как это делали изначально. Поэтому я считаю, что здесь нужно искать баланс. Стараясь достичь цели, нужно уделять внимание имеющимся ограничениям, но если думать только о них и забывать про цели, то все наши усилия могут стать напрасными. Слишком сильная привязка к ограничениям снижает наши шансы на достижение целей. Ограничения ограничивают. В этом их суть. Например, если мы ограничили себя одним конкретным маршрутом из Лос-Анджелеса до Сан-Франциско, а на полпути обнаружили, что дорога перекрыта, то нам придётся искать другие способы достигнуть точки назначения. Я не раз видел, как команды разбивали свои головы об стены, стараясь реализовать требования, которые по каким-либо причинам не могли быть выполнены. Слишком сложно оказывалось просто сделать шаг назад и напомнить себе, какой цели они хотели достичь, спросить себя "есть ли другой способ?". Я видел, как проваливаются проекты на многие миллионы долларов из-за того, что другого пути никто не видел. Это должен быть Oracle. Это должна быть Java. Это должен быть веб-сервис. Нет. Не должен. Большинство ограничений, с которыми мы сталкиваемся, на самом деле являются чьим-то выбором — может быть, даже, выбором, который сделали мы сами — мы просто забыли, что это был выбор. Конечно, постарайтесь сделать так, чтобы это работало. Но не путайте выбор с целью. Примечание переводчика: меня зацепил этот текст, потому что он напомнил один старый спор с коллегой о том, как программисту следует относиться к требованиям к продукту. Коллега утверждал, что требование нужно реализовывать дословно, даже если оно неполное или не оптимальное. Я же пытался доказать ошибочность такого формального подхода. Возможно, думал я, эта статья добавит ещё один кирпичик в кладку моих аргументов. Но в процессе перевода стало понятно, что автор затрагивает более сложную проблему. Зачастую инерция мышления приводит к тому, что мы раз за разом повторяем свои старые решения, даже не думая об альтернативах. Какую технологию использовать. Как строить процесс. Кто за что отвечает. Продолжаем делать всё как привыкли, ничего не меняя. Порой инерция помогает экономить силы, но она же может долго причинять боль и дискомфорт. С аргументацией автора всегда можно поспорить, но один совет я считаю исключительно ценным: не забывайте поднимать голову и спрашивать себя "почему я это делаю? почему я делаю это именно так?" Человек-оркестр