Партнер компании 37signals

В начале 2004 года Дэвид Хейнемейер Ханссон помог реорганизовать 37signals из компании, занимающейся ИТ?консалтингом, в компанию, которая производит программное обеспечение. Он создал для 37signals первый программный продукт. Этим продуктом стала программа Basecamp, представляющая собой онлайн?инструмент для управления проектами. Ханссон также создал сопутствующее программное обеспечение для приложения Basecamp, а именно программы Backpack, Ta?da List и Campfire.

В июле 2004 года Хейнемейер Ханссон презентовал тип программного обеспечения, который стал бесплатной программной платформой для этих приложений как шаблон для разработки веб?приложений. С тех пор платформа Ruby on Rails стала одним из наиболее популярных инструментов среди веб?разработчиков. За создание этой платформы в 2005 году Дэвид был провозглашен на конференции OSCON хакером года (Hacker of the Year).

В июле 2006 года (после этого интервью) президент компании 37signals Джейсон Фрид объявил в корпоративном блоге о том, что Джефф Безос (основатель Amazon.com) стал одним из миноритарных акционеров компании.

Ливингстон. Правда, что компания 37signals не начинала свою деятельность как стартап?

Хейнемейер Ханссон. Правда. Дело в том, что компания 37signals была основана Джейсоном Фридом в 1999 году как магазин, где можно было заказать услуги веб?дизайна. Благодаря созданию программы Basecamp мы реорганизовали 37signals из компании, занимающейся ИТ?консалтингом, в компанию по выпуску программного обеспечения. И я являюсь частью команды по управлению проектами Web 2.0 компании 37signals.

Ливингстон. Получается, что создание программы Basecamp стало поворотным моментом в истории компании?

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

Ливингстон. Расскажите мне больше о том периоде, когда появилась программа Basecamp и была реорганизована компания.

Хейнемейер Ханссон. Я начал работать в компании 37signals подрядчиком, когда учился на четвертом курсе университета и готовился к получению диплома бакалавра. Компания занималась веб?дизайном, а я – программированием. Через несколько лет совместной работы стало ясно, что компания нуждается в программном инструменте для управления проектами при работе с клиентами. Иногда возникали ситуации, когда при совместной работе над проектом команде трудно было следить за действиями своих коллег, из?за чего снижалось качество предоставляемых услуг. Оказалось, что ведение блогов облегчает обмен информацией между сотрудниками. Я сам веду блог «Loud Thinking», а наша компания 37signals вела блог на своем сайте под названием «Signal vs. Noise». И тут мне в голову пришла идея: а что, если применить блог в создании программы для управления проектами? С этого все и началось. Первым созданным элементом программы Basecamp стал блог для проекта. Через месяц мы начали вести его с целью поддержки самой программы Basecamp. Таким образом, очень скоро она стала автономной: фактически мы использовали Basecamp для создания самой же программы.

После того как мы продемонстрировали свою разработку коллегам по отрасли, оказалось, что многие разработчики программного обеспечения сталкиваются с теми же проблемами, что и в нашей компании. На самом деле не так много программ для управления проектами доступны небольшим компаниям. Microsoft Project и прочие сверхсложные программы, в основу которых положен метод критического пути, успешно применяются в компаниях, где над проектами по разработке сайтов работают свыше двухсот сотрудников. Когда же работают три человека, например, над созданием веб?приложения, громоздкие программы только тормозят процесс.

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

Ливингстон. Вы помните, когда это произошло?

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

Ливингстон. Так какие же возможности программы Basecamp больше всего нравились людям?

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

Возникла дилемма: либо у вас установлена программа Microsoft Project, либо электронная почта. Пользователям приходилось выбирать между тем или иным набором возможностей. Управление проектами при помощи многочисленных сообщений электронной почты никак нельзя назвать надежным методом. В противном случае (если нет желания использовать электронную почту) пользователям приходится адаптировать свой рабочий процесс к тем возможностям, которые предоставляют другие сверхсложные приложения.

В программе Basecamp, по сути, попытались обойтись без электронной почты. Мы преследовали благую цель – избавиться от отображения многочисленных диалоговых окон при выполнении простого действия. Мы изначально пытались создать как можно более простую программу – это была одна из наших главных целей. Если получится обойтись простым решением – это уже победа, так как можно написать более простой программный код. При разработке Basecamp я был единственным программистом, который создавал ее по десять часов в неделю. Поскольку у компании 37signals не было средств на финансирование данной разработки, она оплачивала мои услуги из доходов от ИТ?консалтинга. Таким образом, из?за отсутствия должного финансирования вместо четырех программистов, необходимых для создания программы, работал я один. В лучшем случае дизайнеры тратили на программу лишь третью часть своего времени. На самом деле потом мы осознали, что только благодаря этим препятствиям мы добились успеха при разработке Basecamp.

Все эти ограничения в действительности лишь помогли нам сфокусироваться на том, что мы хотели заложить в функциональные возможности программы. Это заставило нас принимать жесткие решения: пришлось обойтись минимальным объемом программного кода. Мы до сих пор получаем отзывы от клиентов: «Мне очень нравится эта программа, так как она невероятно проста в использовании. Она обладает именно теми возможностями, которые необходимы, и не перегружена ненужными опциями». У нас даже не было времени выяснить, сто?ит ли доработать еще ту или иную функцию программы.

Оказывается, создавая только абсолютно необходимые функции программы, вы реализуете лишь те возможности, которыми будете пользоваться. Именно поэтому мы не боялись конкуренции со стороны крупных компаний. Если бы корпорация Microsoft решила заняться разработкой программы Basecamp, они действовали бы следующим образом: собрали команду из двадцати человек и дали ей полгода на разработку проекта. Крупная компания может себе позволить вложить большое количество средств в реализацию программных проектов. Но в таком случае она никогда не создаст такую программу как Basecamp, поскольку не испытает тех ограничений, с которыми столкнулись мы. Программисту всегда интересно разрабатывать нужную или сложную программу.

Однако нам необязательно было быть великими программистами или дизайнерами, поскольку именно некоторые преграды вынудили нас разработать Basecamp. Если предоставить тем же людям (нам) достаточно денег и времени, мы сами не смогли бы создать нечто подобное Basecamp.

Ливингстон. Вы беспокоились о том, что могут появиться программы?конкуреты?

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

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

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

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

Ливингстон. Итак, вы разработали программу Basecamp без средств на ее продвижение на рынок. Что же случилось дальше?

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

Если же пользователь захочет применить Basecamp для осуществления следующего проекта, то ему потребуется выполнить обновление программы. Можно приобрести и специальную версию программы, предоставляющую возможность использовать Basecamp для реализации трех проектов, или выполнять обновление за девять долларов в месяц. Таким образом, мы предлагаем гибкие условия приобретения программы, благодаря чему можно либо использовать ее бесплатно, либо минимизировать расходы. Самая дорогая версия Basecamp стоит 99 долларов в месяц. Плата за использование взимается ежемесячно, что дает клиентам дополнительные преимущества. Пользователь регистрирует программу на два месяца. Те, кому программа не понравится, могут в любой момент отказаться от дальнейшего пользования. В этом и заключается наш самый сильный маркетинговый ход.

Блог «Signal vs. Noise» приобрел широкую популярность в сообществе веб?разработчиков. Поэтому первыми покупателями программы Basecamp стали такие же компании, как наша, – предоставляющие услуги веб?дизайна. С того момента, когда благодаря блогу веб?разрабочики получили возможность следить за деятельностью компании 37signals, мы стали действовать по?другому: вначале определяли количество заинтересованных пользователей, а затем подсчитывали возможный доход от продаж продукта. Мы рассказывали о программе Basecamp в нашем блоге еще до ее коммерческого выпуска. Пользователям предоставлялась возможность предварительного просмотра различных элементов программы, а в блоге новости о программе распространялись молниеносно. Таким образом, к моменту начала продаж копий Basecamp, у компании 37signals уже сформировался круг клиентов, которые с удовольствием покупали нашу программу.

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

Ливингстон. Возникали ли проблемы в работе вашей компании?

Хейнемейер Ханссон. Вообще?то мы сделали много ошибок. На месяц задержали выпуск программы Basecamp. Сначала мы думали, что плату за регистрацию будем взимать с пользователей за год. Стоимость разных версий составляла 99, 299 и 499 долларов в год. Мы создали целую систему оплаты, на разработку которой ушла уйма времени, но даже не смогли предположить, что банк не позволит нам реализовать такую систему оплаты за три дня до выпуска продукта. Банк не разрешил нам продавать услугу на год вперед. Ведь, если наша компания обанкротится, то банк окажется должен клиентам за срыв соглашения стоимостью в 500 долларов. Поскольку финансовые заведения не могут идти на подобный риск, сотрудничество банка с компанией 37signals оказалось кратковременным.

Таким образом, мы тщательно разработали систему ежегодной оплаты за использование Basecamp, но не смогли ее применить. Нам необходимо было придумать новую систему, и мы выбрали ежемесячную форму расчета. Впрочем, трудности пошли нам на пользу. Мы задержали выход Basecamp на месяц, после чего установили ежемесячную оплату за обновление продукта, но эта плата стала в два раза выше первоначальной. Например, версия, которую мы планировали продавать за 99 долларов в год, стала продаваться за 19 долларов в месяц, что соответствует 254 долларам в год. Однако даже повышение стоимости регистрации программы сыграло нам на руку, позволив сделать более выгодное предложение небольшим компаниям, поскольку они могли обойтись без покупки лицензии на целый год.

Одна из наших первоначальных технических ошибок заключалась в том, что мы задумывали программу Basecamp как инструмент для консалтинговых компаний, предоставляющих услуги по веб?дизайну. В лицензионном соглашении на использование программы было указано, что зарегистрированным продуктом может пользоваться лишь один пользователь. Лицензию на программу могла приобрести, к примеру, одна компания. Одна фирма – это один клиент. В нашей базе данных числился идентификатор клиента и идентификатор фирмы, которая приобрела лицензию. Мы не учли, что клиент может быть владельцем двух фирм. Если во второй фирме этого же клиента сотрудники хотели установить Basecamp, то у них ничего не получалось, поскольку программа не позволяла совершить установку. Данное предположение программы о единственном пользователе было заложено глубоко в программный код, поэтому нам пришлось потратить полтора года на то, чтобы исправить эту техническую недоработку.

Другая любопытная ошибка: мы не учли временные пояса Земли. В программе Basecamp было заложено предположение, что бо?льшая часть пользователей работает в зоне центрального поясного времени, хотя сам я находился в Копенгагене, где временная разница с Чикаго составляет семь часов. Таким образом, для пользователей из Австралии срок действия лицензии заканчивался почти на сутки раньше. На самом деле мы просто забыли о временных зонах, поскольку сами не ставили крайних сроков выполнения работ. Мы разработали план реализации определенных задач, но не подумали о том, будут они выполнены двумя часами раньше либо двумя часами позже назначенного срока. Безусловно, не каждая компания работает таким образом.

Эта ошибка не столь заметна, потому что в Basecamp практически отсутствует функция контроля времени. Реальное время отображалось лишь в комментариях к записям в блоге. В самих записях указывались только дата и крайний срок выполнения задания. Следовательно, эту ошибку не обнаруживали, пока не покидали пояс центрального времени. В Дании программа уведомит о наступлении крайнего срока выполнения задания только через семь часов после полуночи. Поэтому, для фирм, где контроль времени играет важную роль, такая неточность представлялась большой проблемой. Особенно серьезным недостатком невозможность настройки Basecamp на определенный временной пояс стала для пользователей Австралии. Они теряли половину рабочего дня. Нам пришлось заняться устранением этого недочета.

Ливингстон. Вы были единственным программистом?

Хейнемейер Ханссон. Я был единственным до февраля 2005 года, пока компания не взяла на работу второго специалиста. Целый год я был единственным программистом и системным администратором программы Basecamp.

Ливингстон. В дополнение ко всем своим обязанностям вы также начали работу над проектом платформы Rails, не так ли? Как вы все успевали?

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

Именно так я открыл для себя язык программирования Ruby. Весьма полезный опыт, благодаря которому я научился программировать более эффективно. В то время мне стало недостаточно возможностей языка программирования PHP. Я рассматривал Java и другие языки программирования и не нашел ничего, что позволило бы мне (единственному программисту) справиться со всем запланированным фронтом работ.

В результате я создал платформу Rails на основе языка программирования Ruby и написал программу Basecamp согласно изначальному проекту. Это произошло из?за того, что компания 37signals не хотела нанимать других программистов. Нам приходилось действовать в рамках жестких ограничений, поэтому мы создавали только необходимые инструменты. Поэтому и платформа Rails стала настолько популярной. Она была настроена на максимальное увеличение производительности в ограниченных условиях. Платформа Rails и программа Basecamp создавались одновременно. Даже не так: скорее, я создавал Basecamp и шаг за шагом, по ходу создания программы, придумывал элементы Rails.

Таким образом, я просто разработал необходимые для написания Basecamp программные элементы, а затем осознал, что их можно применить и для создания других программ и что можно просто сохранить тот или иной элемент и добавить его в набор инструментов платформы Rails. Со временем инструментарий Rails становился все более функциональным, и уже в процессе его использования стало понятно, что его в самом деле весьма удобно применять. Возможно, другим людям тоже пригодится этот инструментарий, чтобы при ограниченных ресурсах выполнять задачи, подобные тем, которые стояли перед коллективом компании 37signals, без установки лишнего программного обеспечения.

Оригинальная версия программы Basecamp содержала всего четыре тысячи строк программного кода, на самом деле не так уж и много. Знакомый программист, который сейчас участвует в дальнейшей разработке платформы Rails, сказал, что один лишь конфигурационный файл на языке XML содержит пять тысяч строк кода!

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

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

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

Ливингстон. Казалось ли вам иногда, что вы не справитесь со взятыми на себя обязательствами?

Хейнемейер Ханссон. Время от времени… но каждый раз, когда возникали такие мысли, мы рассматривали их как своего рода подсказки к выполнению работы. И начинали размышлять, как реализовать ту или иную функцию программы с меньшими затратами по разработке и написанию программного кода. Таким образом, у нас выработалась своего рода методика: желая создать что?либо новое, мы проводили мозговой штурм в поисках идеи, которая требовала бы наименьшего объема работы.

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

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

Ливингстон. То есть большинство ваших новых разработок появлялось в результате решения ваших собственных проблем, а не реакции на потребности клиентов?

Хейнемейер Ханссон. Во многом именно так. Конечно, хорошо, когда выпуск продукта вызван потребностями рынка – компания всегда должна держать руку на пульсе событий. Но мы не можем позволить покупателям руководить разработкой продукта. Необходимо создавать новые программы для более удобной работы пользователей, но сами пользователи не всегда понимают, что им нужно. То же самое касается и программистов. Если провести опрос и выяснить, какие функции им хотелось бы реализовать в рамках платформы, то на основе такого опроса никогда не создашь действительно полезный программный продукт. Скорее необходимо получить информацию из разных источников, определить свое ви?дение продукта и руководствоваться только им.

При разработке платформы необходимо не только учитывать реализуемые в ней функции, но и понимать, что она станет рыночным продуктом с сильной концепцией его продвижения. Не следует бояться потерять некоторых клиентов. Мы никогда не боимся сказать покупателю: «Возможно, Basecamp – не для вас. Если вам нужны дополнительные функции, поищите другую программу».

Ливингстон. Теперь, когда ваша компания стала известна широкой публике, часто ли к вам обращаются с предложениями о финансировании?

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

Мы четко определили, что не нуждаемся во внешнем финансировании и на самом деле даже не хотим увеличивать число разработчиков. Мы стараемся создавать наши продукты таким образом, чтобы, не прибегая к нашей помощи, их могли применять как отдельные пользователи, так и целые компании и не было бы между ними никаких различий. В нашем корпоративном блоге «Signal vs. Noise» мы стремимся донести следующую идею: начинающим компаниям необязательно нанимать массу сотрудников и привлекать внешний капитал для реализации маркетинговой концепции своего продукта. Если концепция стоит миллион долларов, необходимо попытаться пересмотреть эту идею таким образом, чтобы хватило и 100 тысяч для скорейшего вывода продукта на рынок. Следуя такой логике, нужно передвинуть срок воплощения идеи в жизнь до одного месяца, вместо того чтобы ждать, пока продукт пройдет годовой цикл разработки.

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

Ливингстон. Вам когда?либо предлагали достаточную сумму для реализации всех ваших проектов?

Хейнемейер Ханссон. Хочу сказать, что обычно мы не придаем деньгам большого значения, хотя и подчиняемся правилам того мира, в котором живем. У нас просто нет необходимости ускорять нашу работу. К тому же наша компания приносит достаточную прибыль. Если бы завтра кто?то пришел и предложил вложить в нашу компанию 100 млн долл., возможно – пусть это прозвучит глупо, – я бы ответил: «Нет, и больше не предлагайте!»

Ливингстон. Что вас больше всего приятно удивило?

Хейнемейер Ханссон. Откровенно говоря, я удивлен тем, что нам удалось остаться верными нашим собственным ценностям. С тех пор как мы выпустили программу Basecamp, к нашей команде присоединился лишь один человек, хотя спрос на продукцию взлетел до небес. Я действительно удивлен тем, что наша компания смогла вырасти и для этого не пришлось создавать массу бесполезного программного обеспечения. Этим 37signals по?прежнему разительно отличается от других компаний – производителей ПО.

Ливингстон. В чем заключается основная сложность взаимодействия с теми немногими членами команды компании 37signals, которые работают в разных точках мира?

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

Кроме того, мы общаемся лишь с помощью программ мгновенного обмена сообщениями – достаточно пассивный метод общения. Таким образом, вы никогда не прервете коллегу, до тех пор пока не потребуется сказать что?то важное. Беседуя с человеком лично, можно проговорить полчаса, а потом гадать, в чем же была суть разговора.