1. Утверждение коммерческих требований.
   2. Создание проектного решения, допускающего успешную реализацию в продукте всех требований.
   3. Макетирование проектного решения с целью выявления его недостатков и последующей корректировки проектного решения или требований.
   4. Планирование проекта с учетом сроков разработки и тестирования.
   Разработанный план позволяет с определенной уверенностью говорить о временных рамках выпуска; исключительно на их основе можно давать какие-либо обещания представителям отдела продаж. Естественно, как и во всех проектах, временные рамки выпуска должны быть обусловлены успешным бета-тестированием.
   Как известно, мир, в котором мы живем, несовершенен; иначе вряд ли было бы столько разговоров о программистах, у которых под столами спальные мешки. У вас, таким образом, есть единственный выход – научиться выживать в реальных условиях [93]. При чем тут честность, спросите вы? При том, что вы должны осознавать нереалистичность поставленных перед вами задач в свете реальных условий, примеры которых перечислены ниже:
   • несмотря на то что коммерческие требования сформулированы еще не полностью, в погоне за соблюдением неизвестно кем установленной даты выпуска вы вынуждены приступать к проектированию немедленно;
   • из-за неразберихи с требованиями вам приходится постоянно корректировать проектное решение;
   • у вас не остается времени на макетирование, или, что еще хуже, недоработанный макет превращается в код;
   • единственный план, которым вы располагаете, заключается в том, чтобы, отталкиваясь от установленной специалистами по продажам даты выпуска, пытаться получить представление о реальных сроках разработки.
   В любом случае вопреки объективной реальности вы должны всеми силами стремиться к тому, чтобы закончить работу в срок. Юность нашей индустрии и давление рыночных факторов заставляет нас совершать героические поступки. Таким образом, честностью я называю способность признаться самому себе в трудности задачи, но все-таки попытаться ее решить. Вы со мной согласны? Если согласны, присылайте резюме на мой адрес – такие, как вы, мне необходимы.
   Еще пара слов насчет геройства [94]. В начале карьеры идея стать героем воодушевляет, однако реализуют ее немногие. На самом деле стремиться нужно к балансу между ожиданиями и реальными действиями, исходя при этом из соображений честности. Иначе говоря, если вы пару раз сорвете сроки, никто не удивится. Это исправимые вещи. Значительно труднее справиться с привычкой давать невыполнимые обещания. Если вы уж обещаете что-то, не забывайте в полной мере доносить до сведения начальства все те факторы, которые могут воспрепятствовать реализации плана. Любые обязательства должны быть подтверждены в проекте с некоторой долей уверенности, которая варьируется в зависимости от ситуации. Восстановить репутацию значительно сложнее, чем исправить ошибки в выпущенном продукте.
 
    На самом деле стремиться нужно к балансу между ожиданиями и реальными действиями, исходя при этом из соображений честности. Восстановить репутацию значительно сложнее, чем исправить ошибки в выпущенном продукте.
 
   Обратной стороной геройства является фатализм. Фаталист – это человек, который неудачно пытался стать героем, а потом в ситуации, которую он создал сам, начинал винить судьбу. Если вам приходится иметь дело с нереальным проектом, необходимо отдавать себе отчет в том, что фактически вы и ваша команда попадаете в условия, приближенные к боевым. Регулярная работа по ночам изматывает разработчиков, в результате страдает код. Не стоит вводить в проект новых программистов – если это случится на поздней стадии разработки, вы рискуете в очередной раз подтвердить закон Брукса [95]. Именно по этой причине на начальных этапах планирования проекта так важна честность (если, конечно, у вас есть план).
   Честность зависит от тщеславия и чувства собственного достоинства. Я уже в том возрасте, когда каждое утро для удовлетворения тщеславия мне нужны лак для волос, зеркало и время. Признаться, я лысею, и это – горькая правда. Я могу пытаться это скрывать, но ведь все равно окружающие узнают! [96]Аналогичным образом лучше высказать голую правду о сроках, чем сочинять сказки.

Как помочь начальнице удачно спланировать процесс

   Начальница знает, что и когда нужно делать; вы специализируетесь на том, как этого достичь. Так… кажется, я выразился не слишком ясно. Попробуем еще раз. Как правило, планирование в масштабах предприятия проводится начальством; вы же призваны заменить общие наметки детальным планом. Час от часу не легче, так? То-то же. Планирование подчиняется формуле: два шага вперед, один шаг назад. Процесс этот напоминает рекурсивную процедуру: нужно постоянно «копать» стратегический план, наполняя его деталями, которые, кстати, вам же и предстоит реализовывать. В этом отношении вы можете оказать начальнице ценную услугу – высказать свое экспертное мнение по поводу ее глобальных задумок. В планировании кропотливая работа оттесняет вдохновенные прозрения.
   В некоторых компаниях отдел разработки рассматривается как производственный цех, который, принимая на входе спецификации, в конечном счете выпускает готовый продукт. Будь это правдой, я, наверное, предпочел бы сменить профессию и из наемного рабочего превратиться во владельца такой фабрики. Во многих консалтинговых компаниях на полном серьезе рассуждают о «фабриках программных продуктов». Большинство таких компаний базируются за океаном, а выводы свои строят исходя из высокой стоимости и низкой окупаемости инвестиций – действительно, многие отделы разработки программного обеспечения в американских компаниях демонстрируют такую динамику. В двух книгах Эдварда Иордона (Edward Yourdon) – «Decline & Fall of the American Programmer» (Yourdon Press, 1993) и «Rise & Resurrection of the American Programmer» (Yourdon Press, 1996) – раскрываются причины, по которым в кругах разработчиков программного обеспечения планирование зачастую проводится недостаточно тщательно или вообще игнорируется. Возможно, связано это с тем, что мы упорствуем в восприятии программирования как одного из видов искусства [97]. Если бы мы подготавливали запуск ракеты на Луну, уверяю вас – обойтись без планирования было бы невозможно.
   Кстати, скажу несколько слов об американской космонавтике. Как могло произойти, что в 1960-е годы, когда существующие программные средства уступали уровню типичного современного карманного компьютера, нам удалось высадить человека на Луну? Секрет в том, что причастные к этому проекту специалисты, исходя из имеющихся инструментальных средств, планировали свою деятельность с расчетом на успешный финал. В своих мемуарах, рассказывая о Центре управления полетами, Джин Кранц [98](Gene Kranz) раскрывает принципы, которые, по его мнению, определили заметные успехи подведомственной ему структуры.
    • Дисциплина.Способность лидировать, с одной стороны, и идти в заданном направлении, с другой. Понимание того, что для решения задачи необходимо, прежде всего, совладать с собой.
    • Компетентность.Космические проекты не терпят небрежности и безразличия – требуется полная готовность к выполнению задания и тотальная устремленность на успех.
    • Уверенность.Вера в себя и окружающих; сознание необходимости задушить страх и неуверенность.
    • Ответственность.Понимание того, что поставленную задачу нельзя никому передоверить; есть всего две альтернативы: либо сделать то, что требуется, либо потерпеть фиаско.
    • Упорство.Нацеленность на преодоление возможных трудностей; последовательность в достижении цели, даже если для этого необходимо пройти по сложному пути.
    • Командные усилия.Уважение к способностям друг друга и их разумная эксплуатация; ощущение работы над общей целью и коллективной ответственности за результат.
   Далее Кранц утверждает, что «лучше попробовать и потерпеть неудачу, чем приложить недостаточно усилий». Придерживаясь этих принципов, он разрабатывал прекрасные планы – иногда слишком поспешно, но тем не менее ему это удавалось. Он не мог действовать без планирования – в конце концов, на него ложилась ответственность за человеческие жизни. Программные продукты, конечно, никого не убивают, но неудачный результат разработки способен сломать вашу карьеру вместе с карьерой начальницы [99].
   Применимы ли принципы Кранца в нашей области? Думаю, вполне, и мне к ним даже нечего добавить. Это четкие, справедливые принципы, которые неплохо бы записать на бумажке, приклеив ее к монитору. Как я уже неоднократно говорил, совершенствование лидерских качеств повышает шансы на достижение успеха, а в части планирования без лидерства не обойтись. Не стоит сваливать эти обязанности на начальницу – не забывайте, что помимо вашего отдела ей, скорее всего, подчинены несколько других. Представьте себя локомотивом коммерческих достижений компании. Если следовать этой аналогии, получается, что вам, с одной стороны, требуются топливо и грамотная эксплуатация, с другой – кто-то должен жать на газ. Может быть, вы – свеча зажигания? Насколько резво вы искрите? Хватает ли вашей увлеченности, чтобы зажечь искру энтузиазма среди подчиненных?

Знайте свой потолок

   Вероятно, в планировании ваша начальница достигла больших успехов, чем вы. В конце концов, почему она оказалась в своей должности? Скорее всего потому, что за ней закрепилась репутация человека, который сочетает в себе навыки планирования и исполнения. Кроме того, вполне возможно, что и во всем остальном она более квалифицирована. В то же время одного она не может знать лучше, чем вы, – вашей верхней планки. Если вы следите за моей мыслью с самого начала книги (надеюсь, что это так), вспомните: в главе 2 мы говорили о том, как преодолевать собственные слабости.
   Рассмотрим аналогию из одной программы.
   Обычно мы считаем, что в области технологии, инженерии, науки, программирования – да чего бы то ни было! – достигли неплохих успехов. Люди с таким самомнением зачастую ставят перед собой сложные задачи, испытывая тем самым свой интеллектуальный уровень. Я давно играю в шахматы – мне это нравится, хотя свои успехи я оцениваю сдержанно. Мои программные шахматы позволяют устанавливать уровень квалификации противника, роль которого, естественно, исполняет компьютер, – с тем, чтобы любой игрок мог играть в свое удовольствие. Таким образом, если «человеческий» игрок хочет выиграть, он должен заменить максимальный уровень квалификации более низким. Обращаясь к терминологии этой игры [100], назову восемь уровней квалификации:
   1. Новичок.
   2. Начинающий.
   3. Простой.
   4. Упрощенный.
   5. Средний.
   6. Сложный.
   7. Специалист.
   8. Чемпион.
   Вашу квалификацию по части выполнения рабочих функций, очевидно, тоже можно оценить в границах этого спектра. Квалификация начальницы, скорее всего, выше. Одновременно на рынке идет борьба за звание чемпиона. При общении с начальством вы не должны заблуждаться относительно уровня собственных знаний. Начальница выше оценит честное «не знаю», чем убедительное, на первый взгляд, мнение, которое высказывается по незнанию проблемы.
 
    При общении с начальством вы не должны заблуждаться относительно уровня собственных знаний. Начальница выше оценит честное «не знаю», чем убедительное, на первый взгляд, мнение, которое высказывается по незнанию проблемы.
 
   Раз уж я упомянул шахматы, обратимся к стратегическому и тактическому мышлению – очередным ориентирам, помогающим оценивать квалификацию. В шахматах необходимы навыки стратегического планирования; тактики, как правило, в них не выигрывают – за исключением, конечно, ситуаций, когда оба игрока торопятся закончить игру. В отношениях с начальницей всегда имейте в виду эти два способа решения задач: стратегию и тактику. Скорее всего, в стратегическом отношении она вас превосходит. Если это не так, постарайтесь ей помочь; если же я прав, учитесь! Вероятно, она сможет лучше решать свои задачи, если сконцентрируется на стратегии, а решение тактических вопросов поручит вам. Ваше сотрудничество выгодно обеим сторонам.

Как ожидать неожиданность

   Полагаю, ваше положение в компании таково, что стратегические решения принимаются кем-то сверху, а вам остается лишь проводить их в жизнь. В такой ситуации трудно удержаться от ощущения бессилия. И действительно, кому понравится, когда начальство ставит перед фактом очередных решений, которые невозможно было предугадать? По выражению изобретателя современных вакцин Луи Пастер (Louis Pasteur), «шанс приходит только к тем, кто к нему готов». Напишите эти слова на руке или приклейте бумажку с ними на монитор. Наша динамичная индустрия регулярно подбрасывает своим деятелям разного рода сюрпризы. Точно так же любит поступать наше начальство – имейте это в виду и готовьтесь.
   Как «подготовиться» к непредсказуемому? Хороший вопрос, на который нет очевидного ответа. С одной стороны, вы должны постоянно пополнять свои знания о технологических возможностях с учетом имеющихся и обещающих вскоре появиться инструментальных средств. Для этого нужно держать в голове технологические новинки в самых разных областях. Эрудитами нам в сегодняшних условиях стать нереально, однако если много читать, разумно пользоваться Интернетом и обращать внимание на конъюнктуру рынка, справиться с поставленной задачей можно. Выделяйте время на ознакомление с информацией, которая может потребоваться в будущем. Не увлекайтесь технологическими игрушками; наблюдайте за новейшими течениями, которым следуют наиболее прогрессивные компании, – если уж ваша организация не относится к их числу, это минимум того, что вы можете сделать. Обязательно следите за последними бета-версиями широко применяемых в вашей рабочей деятельности инструментальных средств. В идеале, если ваша компания сможет нанять специалиста по исследованию рынка (а возможно, даже создать соответствующий отдел), ваши шансы на адекватную подготовку к будущим изменениям серьезно повысятся. Не стесняйтесь обращаться к помощи начальницы – скорее всего, она готова к изменениям лучше, чем вы. (В разделе «Контролируйте свои слабости» главы 2, в частности, говорится о чтении профессиональной литературы.)

Как преодолеть безынициативность компании

   Более чем уверен, что ваша должность относится к среднему звену руководства, а ваша начальница, соответственно, находится в иерархической системе чуть выше. И знаете что? У вас есть преимущество, о котором вы, возможно, даже не подозреваете: вы более восприимчивы к тенденциям в мире разработки программных продуктов за пределами конкретного предприятия. Благодаря своему высокому посту ваша начальница, скорее всего, хуже ориентируется в этих вопросах. Такая ситуация, к сожалению, складывается во многих компаниях, и справиться с ней зачастую нет никакой возможности. Происходит она от чрезмерного внимания, которое менеджеры высшего звена уделяют существующей иерархии. Они тратят массу усилий, чтобы контролировать деятельность нижестоящих сотрудников, упуская при этом ситуацию в индустрии в целом.
   Посмотрим, что думает о том, как работают представители менеджмента среднего звена, Энди Гроув:
   «Старшие менеджеры стали таковыми за счет своих профессиональных достижений. Со временем такие люди осознают свои достоинства и, исходя из этого, берут на себя лидерские функции. Таким образом, нет ничего удивительного в том, что и на руководящих постах они продолжают эксплуатировать стратегические и тактические приемы, наработанные в течение карьеры, – в особенности в "чемпионский сезон"» [101].
   Гроув называет такое состояние «инерцией успеха»; оно представляет серьезную опасность. Вы, кстати, тоже не застрахованы от этой болезни, так что вещи, которые я рассказываю о вашей начальнице, можете экстраполировать на себя.

Следите за тенденциями в отрасли

   Регулярно оценивайте состояние дел вашей компании в контексте рыночной конкуренции. Замечайте действия конкурентов и сравнивайте их с позицией собственной компании. Возможно, ваша начальница настолько погружена в свою текущую деятельность, что даже не допускает мысли о возможности ухудшения положения на рынке. В комплекс обязанностей технического лидера входит, в частности, отслеживание новейших тенденций в индустрии и анализ их влияния на процесс разработки. Если начальница довольна положением дел, это совершенно не значит, что вы должны с ней соглашаться. Если вы видите, что какой-то аспект деятельности компании можно улучшить, подумайте, как это сделать, и донесите ваши соображения до начальства. Для обоснования своих взглядов можете привести ряд примеров из опыта изучения новых методик разработки и анализа вероятности грядущих революций.
   Помимо прочего, необходимо следить за признаками пренебрежения со стороны начальства проблемами, с которыми вы сталкиваетесь, – это особенно важно, если компания находится в стадии кризиса. Кризис приходит в высокотехнологичные компании в том случае, если они сначала отказываются повиноваться веяниям времени, а затем внезапно сталкиваются с необходимостью всеобщей модернизации. Выйти из кризиса компания, конечно, должна достойно – это важно и для нее, и для вас. Вы находитесь в уникальном положении – более адекватно воспринимая изменения окружающего мира, вы можете раскрыть глаза начальнице на то, чего она, ослепленная своими былыми успехами, не видит. Естественно, доносить свое мнение нужно осторожно и вежливо, но в то же время уверенно. Вы стоите чуть ли не ближе всех к линии фронта; вовремя сообщать другим представителям компании о допущенных ошибках необходимо – ведь от этого зависят и ваши дальнейшие успехи.
 
    Вы стоите чуть ли не ближе всех к линии фронта; вовремя сообщать другим представителям компании о допущенных ошибках необходимо – ведь от этого зависят и ваши дальнейшие успехи.
 

Экспериментируйте с новыми методами и приемами

   Технический лидер должен апробировать новые методы реализации коммерческих задач. Цель такого рода действий – не в том, чтобы выбрать из нескольких альтернатив. Главное – найти способ снизить издержки разработки и/или повысить ценность предлагаемых компанией продуктов и услуг. Иногда начальство ставит перед нами задачу, детали которой еще только предстоит утрясти. Чувствуете, что инерция берет верх? Попробуйте что-нибудь новое – просто чтобы встряхнуться. Не забывая об осторожности, все же проявляйте лидерские качества: если вы понимаете, что та или иная новация способна улучшить результаты, смело обращайтесь к ней.
   Возможно, вашему начальству интересен только конечный результат. Вам, очевидно, тоже, но ведь им проблема не ограничивается! Если за счет внедрения новых методов или инструментов можно сократить срок разработки на 10 %, а издержки – на 20 %, значит, имеет смысл пойти на риск. Если попытка окажется удачной, не забудьте объяснить начальнице, каким образом вы добились успеха. Она оценит старания, ваш статус в ее глазах повысится, и последствия могут быть самыми что ни на есть радужными – как для компании в целом, так и для вас в частности. Это лучший способ стать героем – значительно лучше тех, о которых я говорил ранее.

Учитесь чувствовать время

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

Не забывайте, что интересы клиента на первом месте

   Есть и другой вид инерции, который в технологичных компаниях происходит от чрезмерного внимания к методам реализации в ущерб результату. В конце концов, вы призваны создавать продукты и услуги, которые удовлетворяют потребностям клиентов. Посмотрим, что думает по поводу поддержки клиентов один из лидеров нашей индустрии.
   «Лучшая поддержка клиентов – это отсутствие поддержки клиентов. Да-да, все правильно, потребности в хорошей поддержке клиентов просто не должно возникать. Цель должна быть такой: шаг за шагом совершенствовать продукты и услуги, чтобы клиент без посторонней помощи легко мог их использовать и в них разобраться. Ориентированные на клиента фирмы, если они хотят добиться успеха, должны реализовывать такие технологии, которые позволяют глубже понять потребности клиентов. В результате такой практики компания получает возможность выпускать продукты и услуги, действительно необходимые клиентам. Сообщаю всем зацикленным на окупаемости инвестиций: начальные капиталовложения в поддержку клиентов позволяют впоследствии существенно снизить издержки на поддержку продуктов (чему способствуют сбор и анализ информации о клиентах)» [102].
   Если упустить из виду признаки технологической инерции, вы рискуете нарваться на ситуацию, когда из-за пренебрежения к потребностям пользователей после выхода на рынок последнего «чудесного» продукта на корпоративную службу поддержки клиентов обрушится шквал звонков. Чрезмерное увлечение инструментарием чревато потерей внимания к конечным пользователям. Современные технологии крайне сложны, но в то же время они призваны избавить пользователей от лицезрения деталей реализации.
   В период планирования следующего продукта попросите начальницу предоставить вам более свободный доступ к маркетинговым данным. Если она отнесется к вашему предложению легкомысленно, обратите ее внимание на необходимость анализа рыночной конъюнктуры – в конце концов, именно для этого существуют отделы продаж. Я уже говорил о том, что сроки сдачи продуктов нередко обусловливаются маркетинговыми соображениями – но, с другой стороны, этот фактор носит прогрессивный характер. Анализ рыночной ситуации существенно расширяет охват аудитории, на который в качестве коммерческого решения может претендовать тот или иной продукт (или услуга). Прошлогодние соображения по поводу требований рынка бесполезны. Сведения о потребностях, которые пользователи испытывают сегодня и будут испытывать завтра, должны быть такими же свежими, как и технологии, позволяющие их реализовать.

Резюме

   Итак, я упомянул о некоторых областях взаимоотношений с начальством, на которые вам надлежит обратить особое внимание. Основная ваша цель, по-моему, должна состоять в том, чтобы наладить с боссом конструктивное взаимодействие, от которого выиграют обе стороны. Ниже я привожу краткий перечень наиболее важных моментов этой стороны вашей деятельности.
   • Войдите в положение начальницы – она в своей работе подвергается серьезному давлению. Первой реакцией на ее замечания должно быть согласие, однако если у вас есть разумные и обоснованные предложения, выскажите их.
   • Честность в суждениях в любом случае предпочтительнее нереалистичных обещаний – пусть даже она иногда приводит к не слишком приятным последствиям.
   • Помогайте начальнице в вопросах планирования. Настаивайте на необходимости разработки реалистичных планов и прилагайте максимум усилий к их реализации.
   • Если вам нечего противопоставить замечаниям начальницы, признайте поражение. Не стоит вешать ей лапшу на уши в попытках замаскировать собственные огрехи.
   • Будьте готовы к непредвиденным изменениям – чем лучше вы будете осведомлены, тем проще будет с ними столкнуться. Иногда неожиданные решения исходят от начальства, в иных случаях – обусловливаются внешними факторами. Тщательная подготовка есть залог ваших успехов [103].
   • Следите за признаками инерции в самом себе и в начальнице. Если она отрицает очевидную потребность в изменениях, старайтесь спасти положение, пока не поздно.
   Чтобы окончательно закрыть тему взаимоотношений с начальницей, скажу еще одну вещь. Обращайтесь с ней так, как хотели бы, чтобы обращались с вами. Это золотое правило, которое, хоть и ассоциируется с воскресной школой, работает во всех сферах человеческой деятельности.

Конец уже близко

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