Как отслеживать новейшие тенденции? Для этого существует литература, которую нужно читать в больших количествах, и Интернет, пользоваться которым нужно с умом. Выберите несколько надежных источников информации и обращайтесь к ним, как только вам потребуется что-то узнать [133]. А самое главное – путем плотного взаимодействия с начальником и подчиненными выработайте комплексную стратегическую программу, то есть руководство к действию в постоянно меняющемся мире, в котором мы, разработчики, все пребываем.

Экономические несчастья

   Слова «экономические» и «несчастья» часто употребляются вместе. Не так уж часто можно услышать об экономических радостях, так? Из последних событий в контексте экономических несчастий в памяти всплывают лопнувшие пузыри интернет-компаний. Как бы там ни было, риск – это неотъемлемый элемент будничной деятельности специалистов в области разработки программных средств, и учиться на неудачах мы должны не менее тщательно, чем мы учимся на успешных прецедентах. Крах интернет-компаний, конечно, можно свалить на инвестиционных банкиров, но, пожалуй, для нас как для профессиональных разработчиков такая позиция представляется не слишком продуктивной. Спору нет – жадность, алчность и все прочие присущие капитализму пороки сыграли в крушении этих компаний не последнюю роль. Тем не менее на первый план во время экономического несчастья выходят люди, такие как вы и я, которые теряют работу, испытывая попутно эмоциональные и интеллектуальные страдания. В этом разделе я постараюсь объяснить, какие конструктивные действия вы можете предпринять, чтобы предотвратить наступление кризиса.
   Пожалуй, самый важный урок, которому нас учат многочисленные кризисы, состоит в следующем: если компания перестает приносить доход, значит, вероятно, конец близок [134]. Таким образом, лучший способ предотвратить наступление кризиса в компании – это следить за издержками разработки и стремиться к рентабельности. Признаю: совет не слишком оригинален – это все равно что сказать: «Если хотите заработать на Уолл-стрит, покупайте задешево, а продавайте втридорога». Совет на самом деле правильный, но лишь при условии верно выбранного времени. Таким образом, очевидно, что во главе угла находится именно время.
   И вот это самое обстоятельство подводит меня к основной мысли в экономическом контексте. Если правильный выбор времени играет такую важную роль, значит, синхронизировать экономические часы вашей компании с реальной ситуацией можно лишь за счет последовательности. Что я имею в виду? Занимая лидирующую позицию в своей команде, вы должны придерживаться нижеследующих правил.
   • Вы – не только технарь, но и бизнесмен. О стоимости, таким образом, нужно думать не меньше, чем о коде.
   • Составьте представление о реальных затратах на содержание вашего отдела. Ежемесячно собирайте данные о стоимости технических средств, оборудования, услуг, инструментов и заработной плате персонала.
   • Сравнивайте окончательную фактическую стоимость проекта с предварительными расчетами. Оценивайте расхождения между сметой и расходами и на основе этого опыта учитесь подходить к составлению смет с более реалистических позиций. Не забывайте поговорку: «День профилактики стоит года лечения».
   • Держите зарплаты сотрудников под контролем. Платите им столько, сколько они заслуживают, сверяясь при этом с рыночной конъюнктурой [135].
   Увольняя сотрудника, позаботьтесь о его дальнейшем трудоустройстве – пишите рекомендательные письма [136]и звоните работодателям. Почувствовав, что скоро могут уволить вас самого, немедля приступайте к поиску нового места работы (если, конечно, это возможно) – не ждите, пока извещение об увольнении придет по факсу. Перейти с одной работы на другую значительно проще, чем выбраться наверх из армии безработных.

Одиночество руководителей

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

Уделяйте время исследовательской работе

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

Как превратить административные функции в инженерные

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

Стратегическое планирование как наука

   В предыдущей главе (см. главу 9) я рассказывал о том, как помочь начальству достичь успеха. Может статься, что вашей основной обязанностью окажется стратегическое планирование развития компании в техническом аспекте. Таким образом, вы должны уделить особое внимание совершенствованию навыков создания стратегических планов, в которых должны не просто прогнозироваться возможные векторы развития, а буквально строиться будущее. Это не так-то просто. Многие так называемые «белые книги» – программные документы корпораций – зачастую несут единственную функцию: развеять опасения о непродуманности будущего развития. Впрочем, думать о будущем и планировать его – это несколько разные вещи.
   Разрабатывая стратегию на будущее, необходимо изучать прошлое. Проанализируйте старые планы, подумайте, почему некоторые из них увенчались успехом, в то время как другие провалились. Таким образом, вам предстоит стать историком применявшихся в компании технологий и предсказателем тенденций на многие годы вперед. Говорят, «те, кто отказываются учить уроки истории, обречены на ее повторение», – быть может, это и банально, но смысл очевиден.
   Планы нужно строить исходя из зарекомендовавших себя моделей – обращать излишнее внимание на «мыльные пузыри» не стоит. Лишь при этом условии стратегическое планирование сможет претендовать на научное наполнение. Кто сказал, что стратегические документы не нужно подкреплять примерами кода? Жизнеспособность новых идей и методик в исследованиях надо наглядно иллюстрировать разделами, посвященными их практической проверке. Конечно, блок-схемы с прототипами архитектурных реализаций очень важны, но, подтвержденные примерами из «текущей деятельности», они приобретают еще больший вес.

Учитесь ценить человеческие отношения

   Не сомневаюсь в том, что значительную часть межличностных отношений вы оцениваете вполне адекватно. Но, черт побери, мы же технари, а значит, наша способность к контактам довольно ограничена. Если это не про вас, примите мои извинения. И все же – существует ли «предельная ценность» применительно к межличностным отношениям на работе? С «параноидальной» точки зрения, наверное, да. Впрочем, это совсем не та паранойя, к которой нужно стремиться [137]. Я совсем не имею в виду «слезливую плаксивость» – может статься, вы и в этом меня заподозрили. На самом деле речь о личностной ценности каждого конкретного сотрудника группы, на которого вы затрачиваете время и энергию, пытаясь стимулировать его рост как программиста и потенциального лидера. Жалко, что в Вооруженных силах нынче не в ходу лозунг «будь тем, кем ты способен быть», – ведь лидеры иногда ощущают себя сержантами, муштрующими своих солдат.
 
    Жалко, что в Вооруженных силах нынче не в ходу лозунг «будь тем, кем ты способен быть», – ведь лидеры иногда ощущают себя сержантами, муштрующими своих солдат.
 
   Никогда не забывайте о том, что настоящий лидер пытается подвигнуть своих подчиненных на максимально продуктивную деятельность. Чем больше вы в них вкладываете, тем лучше результат. Следовательно, все случаи формального и неформального общения с сотрудниками, по большому счету, воспринимаются как рабочие. Вы – начальник, и именно в этой роли вас видят и оценивают подчиненные. «Своим парнем», как когда-то в бытность программирования в команде, вам уже не быть. Таким образом, любые отношения с сотрудниками следует выстраивать с учетом вашего положения в компании.

Финал

   Глава эта, как известно, называется «Слова без песни». Вот и здорово, что заключительный ее раздел тематически совпадает с названием. Гоняя вас по темам самого разного содержания, я преследовал единственную цель – показать, что в процессе выпаса котов побеждать хаос можно по-разному. Итак, мы пришли к следующим умозаключениям.
   • В контексте распределенных рабочих групп усиливается значимость планирования и проверки проекта.
   • Для того чтобы управлять сотрудниками, относящимися к разным культурам, вы должны стать гражданином мира и подавить те национальные характеристики, которые могли бы стать препятствием к взаимопониманию и снизить мотивацию вашего многонационального персонала к успешному ведению деятельности.
   • Вам предстоит постоянно совершенствовать применяемые методологии разработки. Одним из необходимых условий успеха является стремление к гибкости всех процессов.
   • Технологические революции поддаются прогнозированию, а значит, к ним можно подготовиться. Стратегическое планирование на основе понимания предстоящих перемен – вот средство, позволяющее предотвратить излишнюю суету в случае их наступления.
   • Экономические кризисы случаются регулярно, и ничего с этим не поделаешь. Стремлением к прибыльности своей компании вы должны стараться свести к минимуму последствия неблагоприятной экономической ситуации. Для начала научитесь руководить отделом не только как технарь, но и как бизнесмен.
   • Лидерство иногда приводит к ощущению одиночества. Существуют, впрочем, средства, позволяющие безболезненно выйти из этого состояния. Откажитесь от самоизоляции. Культивируйте в себе активный творческий подход к исследовательской деятельности, администрированию, планированию и общению с людьми.
   Лидерство – это увлекательное приключение. Я уверен, возможностями для исследования и творчества наша индустрия изобилует. Мы, люди технической направленности, работая в ней, имеем все шансы расширить свой кругозор и стать пионерами кадрового и программного обеспечения. Итак, цените каждый миг рабочего дня и извлекайте из него пользу – как для себя, так и для подчиненных.

Послесловие
Снова в плавание…

   Так, ладно – пора вам закругляться и возвращаться к повседневным обязанностям. Послесловие, как видите, тоже метафорично – действительно, я хочу, чтобы вы трактовали свои поступки на руководящем посту как плавание корабля в неспокойном море. Морем считайте индустрию разработки программных продуктов в том виде, в котором она существует сейчас – полагаю, в XXI веке она покажет себя не менее динамичной, чем в веке XX. Чтобы без особых трудностей проплыть через это море, вам потребуются надежный руль для поддержания курса, большой и прочный парус, чтобы ловить ветер, и якорь для устойчивости. Надеюсь, моя книга поможет удержать вашу шлюпку на плаву.

Руль

   Кораблем управляют с помощью руля. Чем управляется ваша профессиональная деятельность? В идеале она должна основываться на двух важнейших императивах: «сконцентрируйся и лидируй!» По мере совершенствования лидерских качеств и преследуя цель производства отличных программных продуктов, не забывайте о том, что повышать концентрацию нужно постоянно. Ищите любую возможность попрактиковаться в деле лидерства – если не закрывать глаза на окружающий мир, такие случаи будут подворачиваться на каждом шагу. Все принципы и методики, рассмотренные на предшествующих страницах, направлены на достижение одной-единственной цели: помочь вам стать лидером и совершенствоваться в этом качестве. Чтобы выделить время на лидерскую деятельность, нужно предварительно достичь определенных высот на ниве руководства – таким образом, сконцентрировавшись на неотложных и наиболее значительных приоритетах, вы должны проявить себя хорошим организатором. Именно в этом заключается смысл «концентрации» – умение не отвлекаться на внешние раздражители помогает уделять максимум внимания решению самых важных задач.
   Сфера вашей деятельности весьма обширна – вам предстоит заниматься разными делами, причем некоторые из них очень интересны. Раздражители, помимо прочего, появляются из-за неверного выбора технологий для решения коммерческих задач. Вы должны научиться отметать не подходящие для достижения вашей компанией успеха решения (пусть даже они, по идее, очень хороши) в пользу действительно необходимых вариантов. Подобная систематизация достигается путем планирования и реализации плана. Устранению раздражителей помогает также правильная организация административной деятельности. Внешне прибранный рабочий стол свидетельствует о структурированности мысли, а беспорядок, напротив, выражает неопределенность по поводу приоритетов. Обратите внимание: я сказал «внешне». На самом деле, важнее всего ваше внутреннее отношение к рабочим вопросам.
   Вступив в бой с процессом разработки, вы будете вынуждены пересмотреть свою систему приоритетов. Стоят ли люди на первом плане в вашей иерархии ценностей? Они должны быть именно там – в конце концов, никто кроме людей не напишет для вас код. Чем внимательнее вы будете относиться к своим сотрудникам, тем больше вероятность, что они станут воспринимать ваши задачи как свои и делать все для их решения. Многие считают так: «я работаю на компанию такую-то». Этого мало – нужно, чтобы они говорили: «я работаю на ____ (впишите сюда ваше имя)». Преданными люди становятся не сразу – для того чтобы сформировать в них это качество, необходимо постоянно терпеливо принимать участие в их рабочей жизни.

Парус

   Ветер надувает паруса, заставляя корабль двигаться. Атмосфера в индустрии разработки программных средств отличается динамичностью, поэтому «ветров» в ней бушует предостаточно. Способность идти (в зависимости от ситуации) по ветру или против ветра есть необходимое условие продвижения в верном (в контексте целей вашей компании) направлении. От того, к какому «лагерю» вы принадлежали в бытность занятий программированием, ничего не зависит – имейте в виду, в последние десять лет бури дули часто и сильно.
   Если вы привыкли ориентироваться на продукцию Microsoft, значит, ветры больше всего дули с северо-запада. Направление ветров за последние несколько лет можно определить – все они явились результатом тщательного (и не очень) планирования. В чем, по-вашему, смысл Windows 98 Second Edition? А как насчет бесчисленных служебных пакетов для Visual Studio? Сможете ли вы навскидку припомнить все номера вышедших в свет версий ADO? Пробовали ли вы запускать утилиту от Microsoft, определяющую наиболее подходящую для конкретной машины версию ADO [138]? Не успели вы привыкнуть к Windows 2000, как на рынке появляется Windows ХР (более дорогая) – так ведь? Каждая последующая версия Visual Studio знаменует для программистов VB смещение парадигмы и обещает кардинальным образом изменить методы написания кода.
   Изменения не обошли стороной сообщества Java и С++, и, скорее всего, ими дело не ограничится. Компания Sun несколько лет держала название своего нового языка в секрете – собственно, оно шло вразрез с традицией именования языков. Первоначально язык предполагали назвать «Оак», но, как оказалось, это имя уже занято. Судя по всему, имя «Java» придумали с расчетом на то, чтобы «встряхнуть» быстро развивающийся рынок разработки интернет-проектов. И, действительно, все мы почувствовали встряску. Кроме того, есть пространство CORBA и СОМ. Или, возможно, CORBA и СОМ+? Или CORBA и SOAP? Кто знает – может, сформировавшуюся брешь закроет XML? Ну, в общем, вы меня поняли…
   В условиях постоянного ужесточения бизнес-требований и развития технологий изменения неминуемы. Пользователи едва успевают за этой динамикой, не говоря уже о программистах (ваших, моих, пашущих на Microsoft и проч.), которые часто повторяют собственные ошибки. Все эти условия благоприятствуют сильным ветрам.
   Для того чтобы устоять в бурю, нужно постоянно стремиться к созданию качественных программных продуктов и регулярно повышать планку этого самого «качества». Вам придется утрясать сроки с начальством, препираться со специалистами по анализу рынка насчет задач, на решение которых способен тот или иной продукт, как-то разбираться с недостатками сетевой инфраструктуры… Этот список можно продолжать бесконечно. Ничего удивительного в том, что продукты нашей деятельности зачастую несут оттенок незаконченности. Дело даже не во впечатлении – они действительно являются таковыми. Вероятно, лишь в идеальном мире можно было бы создать условия для производства абсолютно безошибочного продукта. Впрочем, на пути к идеалу мы движемся слишком медленно – непозволительно медленно. Сосредоточьтесь на качестве, и вы сможете завоевать уважение коллег и успех на рынке.
   Для того чтобы постоянно поднимать планку «качества», нужно быть увлеченным своей работой – только при этом условии, кстати говоря, ваши лидерские начинания имеют шанс на развитие. Именно увлеченность позволяет удерживаться на плаву в шторм. Увлеченность формируется за счет баланса рабочей деятельности, с одной стороны, и приятных для вас мелочей жизни, с другой. Невоздержанность в той или иной сфере жизни приводит к потере увлеченности, а следовательно, к усталости и краху. Старайтесь удержать увлеченность работой и любовь к жизни – превращайте все свои начинания в увлекательные приключения.
   Еще один момент касательно «баланса». В современных рабочих условиях баланс предстает в виде «смешения». Это утверждение особенно справедливо по отношению к удаленным сотрудникам – вне зависимости от того, работают они полный рабочий день или садятся за кодирование вечерами. При наличии карманных компьютеров, ноутбуков, постоянных интернет-соединений через виртуальные частные сети и прочих инструментов нашей деятельности появляется возможность не покидать рабочее место. «Балансирование» в таких условиях предполагает проведение 15 часов кряду в одном и том же месте – там, где можно заниматься и работой, и личными делами. Как организовать для себя отдых – необходимое условие «подзарядки» мозгов? Ничего определенного на этот счет я сказать не могу, но отдыхать необходимо – иначе вы рискуете потерять увлеченность и, в конечном итоге, «сгореть». Если топлива не осталось, зажечь огонь заново не так-то просто.

Якорь

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