Электронный администратор
   Итак, я поставил перед собой задачу создать программный продукт, с помощью которого мне было бы удобно справляться со своими организационными обязанностями. Он должен был стать чем-то средним между личным информационным секретарем и полноценной программой управления проектами; естественно, я также намеревался избавиться от излишнего усложнения и ограничений, присущих обоим названным типам программных продуктов. Работать над своим проектом мне пришлось по ночам, в нерабочее время и в гордом одиночестве. За первые полгода применения своего детища я скомпоновал более 200 исполняемых версий – все это время я обнаруживал очередные ошибки и подстраивал продукт под свои потребности. Несколько раз он очень помог мне справиться с административными задачами. По крайней мере, теперь, когда он у меня есть, я четко знаю, на сколько опаздываю, мне не приходится постоянно трястись от неопределенности и сознания груза несделанных дел. У меня хотя бы есть возможность измерить этот самый груз и распечатать соответствующий отчет – из него я узнаю, сколько ночей придется провести без сна, чтобы успеть все сделать к установленному сроку.
   У моего личного проекта было несколько очевидных преимуществ. Во-первых, мне не пришлось собирать коммерческие требования, поскольку сценарии вариантов действий проявлялись регулярно. Во-вторых, в роли пользователя выступал я сам, а значит, реализация потребностей пользователя ограничивалась конструированием подходящего мне интерфейса. Это ведь мечта программиста – писать программы для самого себя. На этапе бета-тестирования я также не встретил никаких особых проблем. Обнаруживая ошибки, я брал исходный код и исправлял их. Помимо прочего, при работе над этим проектом я не испытывал синдромов, часто встречающихся у нагруженных административными функциями программистов, у которых не находится достаточного времени для кодирования. Оторваться от клавиатуры ведь довольно трудно, не так ли?
   Итак, далее я познакомлю вас с собственноручно разработанным программным продуктом, который, по моему скромному мнению, помогает успешно организовать производственный процесс, направленный на достижение результата. Если этот продукт вам понравится (или вы осмелитесь адаптировать его к собственным потребностям), обратитесь к приложению А. В нем приводится более подробная информация, а также сведения о том, как получить исходный код.
Задача как объект – основной организующий принцип электронного администратора
   По большому счету, все задачи, которые решаются в ходе разработки программных продуктов и соответствующей административной деятельности, можно разделить на три типа.
    1. Проекты.Все задачи аккумулируются в рамках проекта – довольно удобной классификационной конструкции, связывающей те виды деятельности, которые направлены на производство качественного кода и зарабатывание денег для компании. Отдельные проекты, впрочем, не связаны с созданием продукта, предназначенного для продажи; однако если основным приоритетом для вас является успех компании на занятых ею рынках, вы, вероятно, согласитесь со мной в том, что любые продукты воплощаются в жизнь лишь благодаря способности группы разработчиков к созданию успешного программного обеспечения.
    2. Источники.В качестве источника – то есть субъекта, поставившего задачу, – в зависимости от ситуации может выступать человек (зачастую вы сами), процесс или комитет (члены которого обычно не в меру ворчливы). Классификация задач по источникам помогает следить за выполнением собственных обещаний – в особенности если вы имели неосторожность дать их своему начальнику.
    3. Назначенные задания.За распределение заданий между сотрудниками рабочей группы ответственны вы. О тех людях, с которыми вам приходится работать, я говорил на протяжении трех предшествующих глав. Теперь же мы обратимся к более приятной теме неодушевленных объектов. Обычно они молчат, хотя наличие на моем компьютере синтезатора речи лишает их этой замечательной особенности. Я немного отвлекся, хотя здесь тоже прослеживается важный принцип, касающийся перевода из рядов программистов в менеджеры. Мы лучше обращаемся с «вещами», чем с людьми.
   Ну ладно, хватит разглагольствовать! Лучше взгляните на рис. 4.1 – он представляет собой графическую иллюстрацию представленной выше концепции.
Рис. 4.1. Задание
   Как и обещано, на этой схеме изображены все три отношения между задачей, с одной стороны, и информационным потоком и процессом администрирования, с другой.
   За утверждением задачи – в том виде, в котором она представлена на нашей схеме – следует этап ее реализации в программном продукте. На рис. 4.2 в традициях классического двухзвенного [45]MDI-приложения с нагруженной клиентской частью (в эпоху веб-приложений [46]такая схема кажется очевидно устаревшей) изображен графический пользовательский интерфейс, реализующий представленный выше принцип.
Рис. 4.2. Реализация задачи
   Согласно моей задумке, в окне, показанном на рис. 4.2, должны умещаться все данные, с помощью которых можно идентифицировать задания и отследить их выполнение. Три основных отношения – источник, назначенные задания и проект – дополняются стандартными и вполне ожидаемыми параметрами: состоянием, сроками начала и завершения, а также приоритетом. Кроме того, в моей версии программы присутствует запись-ссылка на область действия [47]. В некоторых компаниях она может сослужить хорошую службу. Среди прочих нелишних характеристик стоит упомянуть возможность создания документа с данными по конкретной задаче и, естественно, возможность сохранения собранной информации в базе данных. Раздел Details я выполнил в виде форматируемого поля, в которое можно встраивать внешнюю графику, – как известно, один рисунок способен сообщить программисту больше, чем тысяча слов.
Отображение и систематизация заданий
   После того как сведения о задании зафиксированы, их, конечно, нужно отобразить – да так, чтобы из них можно было делать какие-то выводы. Как менеджер вы, естественно, вынуждены ежедневно составлять список заданий, требующих безотлагательного выполнения; кроме того, вы стремитесь к тому, чтобы каким-то образом отслеживать выполнение срочных заданий теми сотрудниками, которым вы их поручили.
   Решение, к которому я обратился, предполагает наличие дочернего MDI-интерфейса, способного собирать в одном месте всю информацию о критически важных заданиях на сегодняшний день. Повторюсь: для того чтобы обеспечить соответствие конструируемого программного продукта задачам, которые он должен решать, необходимо постоянно подгонять самого себя и отслеживать работу подчиненных. В противном случае вы рискуете не справиться со своими функциями. Вспомните меткий призыв из главы 2 относительно ожидания результатов без проведения проверок, который я позаимствовал у какого-то университетского профессора. Отталкиваясь от его смыслового наполнения, я сконструировал показанный на рис. 4.3 экран.
Рис. 4.3. Экран рабочего дня
   Среди прочих элементов экрана рабочего дня есть календарь. Он помогает мне вспомнить, какой сегодня день, что после долгих бессонных ночей, проведенных в праведном труде, бывает довольно сложно. Кроме того, есть на этом экране и область встреч, тесно связанная со схемой задания. Строго говоря, встреча – это тоже задание, предусматривающее очное или заочное общение с людьми. Поскольку моя система включена постоянно, с помощью таймера каждую полночь представление экрана рабочего дня в ней обновляется.
   В программе присутствует средство генерации отчетов о задачах и встречах руководителя, а также списках назначенных заданий. Их можно как распечатывать, так и экспортировать. Любой список заданий предусматривает возможность фильтрации по сроку завершения в виде функции текущей даты; переключатели позволяют оперативно устанавливать разные режимы: режим сегодняшних заданий и всех долгов с предыдущих дней, режим заданий до 5 дней, начиная от текущей даты, а также представление всех заданий. Каждую полночь таймер в этой форме переустанавливает заголовки фильтров, чтобы они все всегда соответствовали заданному диапазону в 5 дней от текущей даты. Для того чтобы ввести новое задание с помощью предварительно выделенного комбинированного окна Assigned, щелкните на кнопке Add Mng Task. Для назначения нового задания щелкните на кнопке Add Asg Task.
   В приложении А приводятся более детальные сведения об электронном администраторе (эта программа стала моим любимым проектом), а также о примененных в ходе его конструирования методиках и компонентах.

Как выработать собственные навыки администрирования

   Я уже перечислил несколько принципов организации информационного потока в пределах вашего рабочего стола. В то же время я не рекомендую слепо копировать мои методы. К ним стоит обращаться лишь в том случае, если они соответствуют конкретным организационным потребностям или имеют шанс стать хорошей отправной точкой для создания ваших собственных методик. Как сортировать бумаги по папкам, вы, вероятно, знаете, так что на этом я останавливаться не буду. Вполне возможно, что вы уже пользуетесь одним из многочисленных представленных на рынке продуктов управления проектами. Если он отвечает вашим потребностям – замечательно. С другой стороны, довольно часто недостаток гибкости применяемых инструментальных средств принуждает руководителей адаптироваться к процессам, которые не слишком согласуются с их повседневной деятельностью. По моим наблюдениям, гибкость инструментов, которые применяются для систематизации информации, вносит существенный вклад в достижение успеха. Очевидно, что возможность создания собственного программного продукта предоставляет вам максимальную гибкость по части решения организационных вопросов. Вашей задачей в этом контексте должна стать корректировка своей организационной деятельности, направленная на точное соответствие конкретным функциональным обязанностям. От этого во многом зависит способность достижения качественных результатов, причем со временем, по мере изменения условий, организационные методы нужно регулярно пересматривать.
   Не следует питать иллюзий – комплексный проект с многочисленными взаимозависимостями нельзя вести исключительно средствами простых программных продуктов вроде того, что я описал в предыдущем разделе. Решение о том, подходит ли тот или иной продукт для конкретного проекта, всецело зависит от вас. Более того, вы должны сами себя оценивать по части ведения всех организационных вопросов в своем отделе. Слово «администрирование» (administration) происходит от словосочетания «добавочное министерство» (added ministry); в некотором смысле, администрирование по отношению к основным задачам не является приоритетной областью вашей деятельности. Вопрос в том, сколько сил и энергии вы затрачиваете на улаживание организационных вопросов. Необходимо всегда иметь в виду, что в процесс вашей повседневной деятельности постоянно будут вмешиваться разного рода проблемы, которые придется решать дополнительно к выполнению ваших непосредственных функций. Повышая уровень своей личностной организации, вы фактически сокращаете сроки исполнения своих первоочередных заданий.
   «Непосредственные функции» – выражение весьма двусмысленное. Администрирование – это полноценная область деятельности, и заниматься ею необходимо. В то же время программисты-менеджеры воспринимают административные функции в штыки. Здесь можно провести параллель с кодированием и комментированием. Код без комментариев трудно читать. Аналогичным образом руководство без администрирования становится неорганизованным и даже (иногда) неверным по своей сути. В этой книге я исхожу из того, что вы обязаны вести сотрудников своего отдела к намеченным целям. При этом ключевую роль как в чисто внешнем, так и в фактическом аспекте лидерства играет эффективная и стройная система администрирования.
 
    Ключевую роль как в чисто внешнем, так и в фактическом аспекте лидерства играет эффективная и стройная система администрирования.
 
   Дирижер и оркестр – еще одна подходящая аналогия. Музыкальные произведения исполняются оркестрантами, однако не будь дирижера, любая симфония превратилась бы в какофонию. Если вам доводилось наблюдать за тем, как оркестранты перед выступлением настраивают свои инструменты, вы понимаете, что такое какофония. Администратор действительно имеет много общего с дирижером. Поэтому вы должны стремиться к тому, чтобы стать почтенным маэстро. Учтите также, что в своей деятельности дирижер исходит из отличительных особенностей оркестра, которым дирижирует. Если в вашем подчинении опытные и профессиональные сотрудники, административным вопросам не понадобится уделять много времени. Если же вам приходится руководить новичками, то вы вряд ли обойдетесь без формальной организационной структуры.

Как организовать контроль

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

Информационный поток

   Все мы живем в информационную эпоху, в которую для успешного производства программного обеспечения необходима способность концентрироваться на решении той или иной коммерческой задачи. Процесс этот предполагает анализ информационного потока, проходящего через компанию и относящегося к определенным коммерческим потребностям, и усвоение этой информации. Ответить на все вопросы сразу и самостоятельно никогда не удается – следовательно, отдельные проблемы приходится решать с помощью других людей. Иногда объем данных, с которыми мы регулярно сталкиваемся, буквально сводит с ума. Впрочем, не зря в предыдущих разделах я говорил об организации деталей проекта – эти действия способны не допустить ступор, наступающий при организационной перегрузке.
   Как получилось, что традиционные мифы и суеверия эволюционировали до состояния современной науки? Дело в том, что со временем к изучению природы во все большем объеме стали привлекаться научные методы. Поскольку природа в высшей степени информативна, первым этапом любого исследования является классификация. Отсюда проводим прямую параллель с организационными методиками. Вы имеете полное право не понимать какую-то часть тех данных, с которыми сталкиваетесь; однако если вы сумеете классифицировать их, разбить на отдельные тематические группы, считайте, что первый шаг по направлению к знаниям сделан.
   Объем воспринимаемой информации часто не поддается контролю, однако методы, применяемые для ее систематизации, вполне управляемы. Отчасти работа руководителя напоминает труд библиотекаря; хочу, впрочем, заметить, что применительно к хорошему руководителю эта аналогия носит исключительно позитивный характер. Зная, куда обратиться в поисках необходимой информации, вы получаете неоспоримое преимущество перед теми руководителями, которые подходят к своим обязанностям неорганизованно и потому не ориентируются в информационном пространстве.
   Столкнувшись с новым информационным блоком проекта, задайте себе несколько вопросов.
   • Как новые данные отражаются на области действия проекта, на проектном решении, на конечном сроке сдачи проекта?
   • Надежен ли источник информации; если нет, то можно ли его проигнорировать?
   • Следует ли реагировать на поступление информации незамедлительно или можно немного подождать?
   • Где и как сохранить информацию с тем, чтобы при необходимости к ней можно было бы оперативно обратиться?
   • Каков срок действия информации? Когда она становится неактуальной?
   • Как данная информация соотносится с тем, что уже известно о проекте?
   Эти и подобные вопросы направлены на систематизацию данных. Систематизируя данные, вы обретаете контроль над ними, и, соответственно, они теряют контроль над вами.

Назначение заданий

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

Архитектура

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

Рабочие часы

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