Шрифт:
• «Я сделаю в программе комментарии, чтобы следующий человек, работающий над ней, понял, что к чему». Эта ложь вызвана добрыми намерениями. Программист действительно намеревается дополнить программу комментариями, но, когда срок сдачи продукта приближается, его приоритеты резко меняются. И тогда он ставит перед руководством вопрос: «Вы хотите, чтобы я занялся комментированием программы или же скорейшим завершением работы на ней?» Угадайте, каким бывает ответ? К счастью, отсутствие комментариев обычно не имеет никакого значения, потому что программа написана настолько ужасно, что в течение года ее приходится переписывать с нуля.
• «Наша архитектура может масштабироваться». Эта ложь нравится мне больше всех остальных. Обычно эту фразу говорит тот, кто никогда не занимался вопросами производства продукта, после того как создает прототип в Visual Basic. В более пространной версии эта ложь звучит следующим образом: «Наша архитектура более масштабируема, чем архитектура Google. Их система позволяет одновременно обрабатывать 25 миллионов поисковых запросов. Мы же легко можем обрабатывать миллиард». К счастью, в большинстве случаев принятие продукта происходит медленнее, чем в самых «консервативных» прогнозах CEO, поэтому проблема масштабируемости никогда не проявляется в полном объеме.
• «Программа соответствует всем стандартам отрасли». Это почти правда, которая требует небольшого уточнения: «Программа соответствует всем стандартам отрасли, с которыми я согласен». Программист принимает личное решение игнорировать стандарты, которые ему не нравятся, например стандарты, навязываемые Microsoft. С его точки зрения, это не столь важно: ведь потребители никогда об этом не узнают.
• «У нас есть эффективная система отчетов о багах». Чаще всего эта ложь строится на уверенности в том, что система почти не имеет багов и поэтому их база будет довольно незначительной по размерам. Однако практика показывает, что если количество задокументированных багов не превышает 1000, то компания просто не умеет их отслеживать.
• «Мы можем сделать все то же самое быстрее, дешевле и лучше, если возьмем на работу команду офшорных программистов из Индии». Эту ложь редко можно услышать из уст рядовых программистов – куда чаще ее произносят главные инженеры. Почему-то многие уверены, что каждый программист в Индии профессионален, быстро работает и стоит копейки, а каждый программист в США некомпетентен, медленно работает и много просит. На самом деле это совсем не так.
• «Бета-тестеры обожают этот продукт». За 25 лет работы в мире технологий я ни разу не слышал, чтобы бета-тестерам не понравился продукт. Для этого могут быть три причины: во-первых, многие из них настолько горды, получая программу раньше даты официального выпуска, что просто не хотят говорить о ней ничего плохого. Во-вторых, большинство бета-тестеров не пользуются программой достаточно активно. В-третьих, большинство бета-тестеров не хотят выглядеть слишком жестокими и критиковать новый продукт компании. В их глазах это так же неприемлемо, как сказать другому человеку, что его ребенок – урод.
• «В этот раз мы сделали все правильно». Самое пугающее в этой фразе то, что произносящий ее действительно в это верит. Причем раз за разом. Проблема, однако, заключается в том, что «в этот раз» возникает снова и снова. Я искренне люблю разработчиков и верю, что в конце концов они сделают все правильно. Стоит, правда отметить, что в конце концов мы все умрем.
• «Эта программа написана ужасно. Проще написать ее заново, чем выявить все ошибки». Каждый программист говорит это о любой программе, написанной кем-то другим. Кто-то обязательно скажет это и о переписанной заново версии программы.
• «Я люблю поразмыслить об архитектуре, но при этом умею писать программы». Это означает, что программист не умеет писать программы. И, скорее всего, он не способен создать и хорошую архитектуру.
• «Это работает на моем компьютере». При этом не исключено, что этот «мой компьютер» – единственный, на котором программа может работать.
• «Я могу перестать создавать программы и вместо этого заняться управлением бизнесом». Это можно считать отличной эпитафией для каждого технаря, занявшегося предпринимательством. Подобные слова означают, что он (или она) не может ни бросить программирование, ни управлять бизнесом.
• «Даже моя мама может переключаться из одного экрана в другой». Разумеется, особенно если ваша мама имеет научную степень в области компьютерных наук.
Мне нравится, как лгут разработчики, по трем причинам. Прежде всего это показывает, что они действительно, а не только в анекдотах не знают, как работает компания. Кроме того, они искренне верят в собственную ложь. Чего нельзя сказать о предпринимателях, венчурных инвесторах и юристах. Третье, их ложь свидетельствует не о нечестности, а скорее об определенной незрелости, что со временем может пройти. Если вы разработчик, то теперь знаете, как именно лжете, даже не осознавая этого. А если вы по другую сторону баррикад, то теперь знаете, когда именно разработчики вам лгут.
Глава 30. Как надрать задницу Кремниевой долине
Они завидуют моему положению, так пусть завидуют и моим талантам, честности и методам, благодаря которым я добился своего.
Саллюстий, римский политикИ норвежские фьорды, и пески Израиля, и льды Альберты, и волны Гонолулу – многие регионы мира завидуют тому, что удалось Кремниевой долине. Для всего мира Долина – это место, где люди строят инновационные компании, зарабатывающие миллиарды долларов доходов (и платящие огромные налоги), организуют тысячи рабочих мест и при этом не загрязняют окружающую среду (по крайней мере по сравнению с традиционным промышленным производством).