Достигая тех высот
Joel on Software Джоэл о программном обеспечении | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Автор: Джоэл Сполски Переводчик: Егор Егоров Понедельник, 25 июля 2005 В марте 2000 года я запустил этот сайт, сделав : большинство людей ошибаются, полагая, что для создания успешной софтверной компании нужна уникальная идея. Есть популярное мнение. Мол, при создании софтверной компании ваша задача состоит в поиске клевой идеи, решающей нерешенную доселе проблему, затем в реализации этой идеи и срывании куша. Мы бы назвали это мифом-о-лучшей-мышеловке. Но на самом деле задачей софтверной компании должна быть конвертация капитала в работающие программы. На входе — деньги, на выходе — софт. Последние пять лет я проверяю эту теорию на практике. Формула компании, с Майклом Прайором (Michael Pryor) в сентябре 2000 года, состоит из четырех элементов:
Это довольно удобная формула. Особенно с учетом того, что нашей истинной целью создания Fog Creek было создание компании, в которой мы и сами хотели бы работать. Ныне я сделал заявление, что лучшие условия труда (или «создание такой софтверной компании, где программисты сами будут хотеть работать») приведут к прибыли так же естественно, как шоколад сводит челюсти, а . Сегодня я хочу обсудить только единственный вопрос. Если он поставлен неверно, то и вся моя теория распадается. Так вот, вопрос: имеет ли вообще смысл говорить о сотрудничестве с «лучшими программистами»? Неужели разница между программистами настолько велика, что это имеет значение, в наши-то дни?Для нас с вами ответ, может быть, и очевиден, однако множеству других людей это утверждение должно быть доказано. Несколько лет назад некая крупная компания рассматривала вопрос приобретения Fog Creek. Я знал, что этому не бывать: я слышал, как директор этой компании заявил, что он не вполне согласен с моей практикой найма самых лучших специалистов. Он привел мне библейскую метафору: мол, нужен лишь единственный Царь Давид, и вместе с ним армия солдат, минимально разумных лишь для того, чтобы точно выполнять его распоряжения.
И студенты так интенсивно спорили о том, сколько нужно всего сделать для реализации поставленных задач, что профессор стал просить студентов отсчитывать, сколько времени они потратили на каждую задачу. Он собирал эти показания в течение нескольких лет. Я потратил некоторое время и поигрался с этими данными. Это единственные известные мне статистические показания по работе множества студентов над одинаковыми заданиями, использующими одинаковые технологии и одно и то же время. Эти данные, к тому же, грамотно собраны. Первое, что я сделал с этими данными, — я высчитал среднее, минимальное и максимальное количество часов, затраченных на каждую из двенадцати задач. Вот результаты:
Так о чем это я. Вот результаты лучшей четверти студентов:
Невелика разница! Стандартное отклонение практически такое же для четверти лучших студентов. Более того, если вы внимательно посмотрите на эти данные, то станет ясно, что видимой зависимости между временем и оценкой нет. Вот типичный график одной из задач... Я выбрал задание COMPRESS01, реализацию алгоритма сжатия Зива-Лемпеля-Уелша, которое задали студентам в 2001 году. Выбрал его, потому что стандартное отклонение здесь очень близко к общему стандартному отклонению. Нечего здесь искать, в этом-то и вся суть. Качество работы и время, на нее затраченное, — эти параметры попросту не кореллируют. Я спросил об этом проф. Эйзенштата, и он обратил мое внимание еще на одну деталь. Поскольку работы следует сдавать до определенного времени (обычно это полночь), и штрафы за просроченную сдачу поистине драконовские, множество студентов сдаются до того, как заканчивают программу. Иными словами, максимальное время, затраченное на задачу, зафиксированное в этих данных, находится на этом уровне также и потому, что студентам просто недоставало времени на выполнение всей работы. Если бы у студентов было бесконечное время на разработку программ (что чуть больше походило бы на реальную жизнь), то тогда распределение было бы еще больше. Эти данные нельзя назвать строго научными. Наверняка здесь не все достоверно. Некоторые студенты могли завышать время в надежде заработать некоторую симпатию и получить более легкие задачи в следующий раз. (Удачи! Задания CS 323 не менялись с 1980-го года, когда я там учился.) Другие студенты могли занижать затраты, потому что они теряли ощущение времени. Тем не менее, я не считаю большим допущением поверить в то, что эти данные показывают пятикратную или десятикратную разницу в продуктивности разных программистов. Подождите, это еще не все! Если бы единственной разницей между программистами была продуктивность, вы могли бы прийти к выводу, что можно заменить одного действительно хорошего программиста пятью простыми. Очевидно, так не получается. А все потому, что гласит: «Подключение новых людей к запоздавшему проекту еще больше его задерживает». Единственный хороший программист, работающий над единственной задачей, не имеет накладных затрат на координацию действий или взаимодействие с коллегами. Пять программистов, работающих над той же задачей, должны согласовывать свои действия. Это занимает массу времени. Есть все-таки смысл держать команды, работающие над проектом, небольшими. На самом деле, . И еще! Истинная проблема работы посредственных программистов вместо парочки профессионалов в том, что сколько бы они ни работали над задачей, они никогда не создадут такого продукта, какой могут создать профессионалы. Пять Сальери не напишут «Реквием» Моцарта. Никак. Даже если они будут работать над ним сто лет. Пять Василиев Пупкиных, создателей всяческих несмешных мультяшных сериалов, в которых 20% шуток — про сисадминов, а остальные якобы смешны лишь за счет ужасного новорусского сленга... Так вот, пять Василиев Пупкиных могут потратить весь остаток своих жизней, но даже близко не создать что-то столь же хитовое, как Масяня. Команда разработчиков плеера Creative Zen может потратить годы, улучшая свое жалкое подобие iPod, и все же никогда не выпустить что-то столь прекрасное и элегантное, как Apple iPod. И они не сомкнут свои челюсти на рыночном пироге Apple по той лишь причине, что феерический дизайнерский талант у них в команде отсутствует. Просто нет его там, и все. Посредственность никогда не достигает тех высот, на которых спокойно парит профессионал. Количество оперных див, способных взять высокую ноту f6 в моцартовской «Королеве Ночи», так исчезающе мало... Но «Королеву Ночи» просто невозможно исполнить, не пропевая эту знаменитую f6. Разве софт — это рассказ о тех высотах? «Может, в чем-то и так, — скажете вы, — но я работаю над софтом учета товарных накладных в индустрии утилизации медицинских отходов». . Наша беседа — о софтверных компаниях, о коробочном продукте, о том случае, когда успех или провал бизнеса напрямую зависит от качества кода. Да и мы в последнее время видели массу великолепного софта, созданного действительно на тех высотах: софта, воплотить который посредственность просто не смогла бы. В 2003 году Nullsoft выпустили новую версию плеера Winamp, сопроводив выпуск вот такими комментариями на : Я о последнем... «Большинство функций таки работает!» — это забавно. И все счастливы, довольны плеером, используют его, говорят всем своим знакомым и друзьям. И они полагают, что Winamp — это хороший продукт, потому что они таки взяли и написали на своем сайте: «Большинство функций таки работает». Круто, да? Если бы вы подключили еще людей в команду разработчиков Windows Media Player, смогли бы они достичь тех высот? Никогда в жизни.. Потому что чем больше людей работает в команде, тем больше шансов, что в ней найдутся натуральные снобы, полагающие, что это непрофессионально и по-детски — писать в веб «Большинство функций таки работает». Не говоря уже об этом комментарии: «Winamp 3: Почти такое же новшество, как и Winamp 2!». Вот такие вещи и заставили нас влюбиться в Winamp. А с тех пор, как корпоративные слизняки из AOL Time Warner прибрали эту штуку к рукам, весь юмор с сайта исчез. Вы теперь просто-таки явно можете представить их себе, этих сальери, убийственно подавляющих малейшие признаки творческого подхода, который может отпугнуть какую-нибудь немолодую даму из Минессоты. Ценой уничтожения всего того, что заставило людей реально полюбить этот продукт. Или давайте взглянем на iPod. Вы не можете сменить батарею. Когда аккумулятор умирает — все очень грустно. Покупайте новый iPod. Ну, или Apple готова заменить вам аккумулятор, если вы отошлете ваш iPod обратно на завод, и стоит это $65.95. Вот так вот. Почему у вас нет возможности поменять аккумулятор? Мое предположение: дизайнеры Apple решили оставить нетронутой превосходно-гладкую поверхность своего прекрасного, сексуального плеера. Не портить ее одной из этих крышек для аккумулятора, которые можно увидеть на любой дешевой бытовой аппаратуре, с этими плохо прилегающими, цепляющимися за одежду и ломающимися крышечками для аккумуляторов. iPod — это самое цельное устройство из всех, когда-либо виденных мною. Плеер гладкий и нежный. Такой же, как гладкий речной камушек. Одна только крышка аккумулятора могла бы полностью уничтожить это ощущение. Apple приняла решение в пользу стиля. На самом деле iPod полон такими «стилевыми» решениями. И чувство стиля — это вовсе не то, чем обладают 100 программистов в Microsoft или 200 промышленных дизайнеров в ошибочно названной компании Creative (Сreative — творчество — прим. пер.) Потому что у них нет (Jonathan Ive), а Джонатан Айв на дороге не валяется. Простите, что я все не перестаю восхвалять iPod. А это прекрасное колесико управления с щелкающим звуком! Apple вложила дополнительные деньги, встроив динамик в сам iPod для того, чтобы этот клик исходил прямо из-под самого колесика управления. Они могли бы сэкономить много монеток, денег!.. если бы они воспроизводили звук щелчка только через наушники. Но колесико управления дает вам ощущение полного контроля над плеером. Люди счастливы, когда обладают властью. Счастливы. Тот факт, что колесико управления реагирует на ваши команды мгновенно, мягко, да еще и подтверждает команды акустически, — это кайф. А остальным 6,000 продающимся моделям посредственной портативной техники нужно так много времени, чтобы включиться. В течение минуты вам надо поглядывать на этот кусок мусора, только чтобы понять, готов он уже работать или нет... Так у кого власть? У вас? Вспомните, как давно у вас был мобильный телефон, который включался сразу после нажатия кнопки? Стиль. Счастье. Чувства. Это то, на чем создаются хиты в программном обеспечении, кино и бытовой электронике. И если вы этого не понимаете, вы можете успешно решать технологические задачи, но ваш продукт не станет хитом номер один. Таким хитом, который сделает всех сотрудников компании богатыми, так что вы все сможете водить стильные, счастливые, вкусные машины типа Ferrari Spider F-1 и при этом иметь еще достаточно денег, чтобы построить себе небольшое пристанище на клочке земли. Это не вопрос десятикратной разницы в продуктивности. Это о том, что «среднепродуктивный» разработчик никогда не взлетит на те высоты, на которых создается великолепный софт. К сожалению, это не касается некоробочной разработки ПО. Внутренний программный продукт редко бывает настолько важен, чтобы для его разработки имело бы смысл нанимать звезд. Никто не приглашает Аллу Борисовну петь на свадьбах. Вот почему программисту светит более успешная карьера в софтверной компании, а не в отделе информационных технологий банка. Рынок ПО сегодня представляет собой игру, в которой «победитель забирает все». Кроме Apple, никто не зарабатывает на MP3-плеерах. Никто не зарабатывает на электронных таблицах и текстовых процессорах, кроме Microsoft. Да, я знаю, что они предприняли определенные шаги, чтобы избавиться от конкурентов, но это ничего не меняет: рынок ПО — система, где победитель забирает все. Вы не можете себе позволить быть продуктом «номер два» или поставлять «достаточно хорошего уровня» программу. Программа должна быть заметно хороша, где «заметно» означает, что покупатели именно видят ее качество. Выхлоп, который вы получите с команды действительно — действительно — талантливых программистов, — это единственный шанс стать заметным. Вот и вся формула:
В английском оригинале статья называется | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Джоель Спольски - основатель , небольшой компании по разработке программного обеспечения, расположенной в Нью-Йорке. Окончил Йельский Университет, работал программистом и управляющим в Microsoft, Viacom и Juno. |
Всё содержимое Copyright ©1999-2005 by Joel Spolsky. All Rights Reserved.
| | |