Книга: Джоэл и снова о программировании
Назад: Глава восемнадцатая. Почему форматы файлов Microsoft Office такие сложные (и как это обойти)
Дальше: Часть пятая. Советы программистам

Глава девятнадцатая. Где грязь, там и деньги

6 декабря 2007 года, четверг

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

Я работал в производственной зоне. На другом конце пекарни занимались упаковкой и транспортировкой. Там проклятием были крошки. Они забирались всюду. Те, кто там работал, возвращались домой с крошками в волосах. Каждую смену часа два уходило на то, чтобы очистить от крошек механизмы. В задних карманах они носили маленькие щетки. Не сомневаюсь, что крошки снились им по ночам.
Почти с любой работой, за которую вам платят, связана какая-нибудь неприятная деталь. Если это не тесто или крошки, то, возможно, вы работаете на бритвенной фабрике и приходите домой с мелкими порезами на руках. Или вы работаете в Vmware, и вас посещают ночные кошмары, связанные с эмуляцией дефектов в сложных видеокартах, необходимых для компьютерных игр. Или вы разрабатываете Windows, и ваши страхи связаны с тем, что из-за какой-нибудь мелкой модификации перестанут работать миллионы программ и аппаратных устройств. Такая уж поганая особенность у вашей работы.
У нас в компании такой противной проблемой является выполнение FogBugz на собственных серверах наших клиентов. Джейсон Фрид (Jason Fried) из 37signals сделал хороший вывод, почему это занятие малоприятно (www. 37signals.com/svn/posts/724-ask-37signals-installable-software): «Приходится сталкиваться с бесконечным разнообразием операционных сред, которое вне вашей власти. Когда возникает проблема, выяснить ее причину значительно труднее, если у вас нет доступа к ОС, или к каким-то посторонним программам, или к устройствам, мешающим установке, обновлению или обычной работе вашего программного продукта. Еще хуже положение при установке на удаленный сервер, когда приходится иметь дело с разными версиями Ruby, Rails, MYSQL и пр.». Джейсон заключает, что если бы они продавали инсталлируемые программы, то «определенно имели бы больше неприятностей». Да. Работа, которая доставляет вам неприятности, это то, что я имею в виду под «противными проблемами».
К несчастью, на рынке вам платят за решение противных, а не легких проблем. Как говорят йоркширские ребята, «где грязь, там и деньги».
Мы предлагаем оба вида FogBugz — с хостингом и инсталлируемый, и наши клиенты в четыре раза чаще выбирают установку на собственных сайтах. Инсталлируемая версия дает нам впятеро больший объем продаж. Она обходится нам дополнительно в одно-два жалования (стоимость технической поддержки). Кроме того, приходится использовать Wasabi 12, что имеет серьезные недостатки по сравнению с готовыми языками программирования, но это решение мы считаем наиболее экономичным и эффективным — с учетом наработанного кода — для поставки программного продукта, который можно инсталлировать в системах Windows, Linux и на Мак. С каким бы удовольствием я отказался от инсталлируемой версии FogBugz и делал все на наших серверах... У нас много стоек с прекрасными, хорошо администрируемыми серверами Dell с массой ресурсов, а техническая поддержка для версии с хостингом не стоит клиенту ничего. Насколько легче была бы наша жизнь! Но наши доходы настолько упали бы, что мы бы разорились.
Многие из нынешних симпатичных стартапов роднит между собой то, что у них есть простой маленький сайт, построенный на Ruby on Rails и Ajax, и им не нужно прилагать усилия для выхода на рынок, и они не решают никакие противные проблемы. Очень многие из этих компаний производят впечатление ненадежности и неуверенности, потому что в силу обстоятельств (вся компания — трое мальчишек и игуана) они пока не решили ни одной сложной задачи. А значит, они пока не решают и задачи, встающие перед другими. Люди платят за то, чтобы решали их проблемы.
Изготовить красиво выглядящее и простое в обращении приложение -тоже трудная задача, хотя здесь, как в балете: когда танцуют мастера, кажется, что им это дается без труда. Джейсон и 37signals вложили свои силы и сделали хороший проект, и теперь он приносит им деньги. Кажется, нет ничего проще, чем скопировать хороший проект, однако пример Microsoft, пытающейся скопировать iPod, демонстрирует обратное. Отличный проект — это решение противной проблемы, которое может обеспечить вам на редкость устойчивое конкурентное преимущество.
Вероятно, Джейсон правильно поступил, взявшись за противную проблему, для решения которой у него достаточно таланта (проектирование), потому что не похоже, чтобы для него это было сложно. Я программирую для Windows целую вечность, поэтому мне не кажется сложным написать с чистого листа на C++ программу установки FogBugz для Windows, решив при этом все эти противные проблемы с COM.
Единственный путь роста — для личности и для компании — это расширять границы того, что ты умеешь делать хорошо. В какой-то момент в 37signals могут прийти к выводу, что если нанять отдельного человека, который напишет скрипт для установки и станет осуществлять техническую поддержку инсталляций, то это хорошо окупится. Поэтому — если только это не вполне нормальное стремление сохранить небольшой размер компании — они смогут в конце концов преодолеть свое нежелание заниматься вещами, которые кажутся противными.
Может, это и не случится. Нет ничего дурного, чтобы ограничить свое дело только приятными вещами. Безусловно, этим и я иногда страдаю. Нет ничего дурного в том, чтобы определить для себя, что ты будешь решать только определенную группу задач в интересах небольшой избранной группы людей. Salesforce.com сумела достичь значительного роста, не выходя за рамки хостинга программного продукта. И есть множество маленьких и совершенно не стремящихся к росту программистских компаний, где уровень жизни сотрудников фантастически высок.
Но важно помнить, что как только вы решите еще одну противную проблему, ваш бизнес и рынок существенно вырастут. Хороший маркетинг, хороший проект, хорошая служба продаж, хорошее обслуживание и решение множества проблем, возникающих у ваших клиентов, — все это помогает одно другому. Сначала у вас появляется хороший проект, потом вы добавляете к нему несколько хороших функций и тем самым решаете проблемы своих клиентов, так что их число утраивается, а потом вкладываете некоторые усилия в маркетинг, и количество ваших клиентов снова утраивается, потому что гораздо больше людей узнает, что вы решаете их задачи, и тогда вы нанимаете людей для ведения торговли и еще раз утраиваете свою клиентскую базу, потому что теперь тем, кто знает о вашем решении, напоминают, чтобы они купили его, а затем вы добавляете функции, которые решают другие задачи для еще большего количества людей, и в конечном итоге у вас появляется возможность охватить своим программным продуктом столько людей, что можете считать, что вашими усилиями мир стал немного лучше.
P S. Я не утверждаю, что 37signals увеличила бы объем своих продаж в пять раз, выпустив инсталлируемую версию Basecamp. Прежде всего, одна из причин, по которым мы продаем намного больше инсталлируемых версий FogBugz, состоит в том, что, как оказалось, покупатели считают их более дешевыми. (На самом деле, в долгосрочном плане — не дешевле, потому что приходится платить за сервер и самому его администрировать, но у каждого свое мнение.) Кроме того, мы установили такую низкую плату за поддержку инсталлируемой версии только потому, что 80% наших покупателей устанавливают ее на Windows Server. Из-за большого сходства систем семейства Windows нам гораздо проще осуществлять поддержку наибольшего общего знаменателя. Основные расходы на техническую поддержку вызваны для нас разнообразием существующих платформ UNIX -рискну предположить, что 20% наших продаж, приходящихся на UNIX, обуславливают 80% случаев, требующих технической поддержки. Если для инсталлируемой версии Basecamp потребуется UNIX, то стоимость поддержки непропорционально возрастет по сравнению с гипотетической инсталлируемой версией для Windows. И еще одна причина, по которой наш опыт может быть неприменим к 37signals. Мы продаем инсталлируемую версию уже семь лет, а версию с нашим хостингом — лишь около шести месяцев. У нас большая база инсталляций FogBugz у клиентов, привыкших к тому, что программа работает на их собственных серверах. Если считать только новых покупателей FogBugz, то отношение инсталлируемых версий к версиям с хостингом снизится до 3 к 1.

 

***

12 Закрытый внутрифирменный язык Fog Creek Software, диалект Basic c замыканиями, лямбда-функциями и активными записями типа Rails; компилируется в VBScript, JavaScript, PHP4 или PHP5. — Прим, перев.

 

Назад: Глава восемнадцатая. Почему форматы файлов Microsoft Office такие сложные (и как это обойти)
Дальше: Часть пятая. Советы программистам