Выбрать главу

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

Даже при тщательном планировании времени вы не сможете обеспечить себе по нескольку дней подряд для работы над кодом. Можно только надеяться, что ко времени вступления на должность технического руководителя вы смогли научиться разбивать работу на отдельные части, поэтому вам не нужно в течение многих дней непрерывно концентрироваться на технических задачах. С другой стороны, вы должны понимать, что для команды как раз важно уметь сосредоточиваться на разработке программного продукта в течение продолжительного времени, потому ей необходимо многие дни фокусировать внимание на работе с кодом. Часть ваших обязанностей как руководителя состоит в том, чтобы обеспечить понимание заинтересованными сторонами (руководитель вашей организации и менеджер продукта) фокуса внимания команды и строить совещания так, чтобы они не мешали инженерам-программистам.

Основные моменты позиции технического руководителя группы

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

Главные функции технического руководителя

Основный приоритет технического руководителя — выработать широкий взгляд на выполняемую работу, чтобы обеспечить продвижение проекта. Как перейти от организации и планирования написания кода к организации и руководству всем проектом?

Архитектор системы и бизнес-аналитик

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

Планировщик проекта

Планировщик должен уметь делить проект на приблизительно равные промежуточные части. Исполняя эту роль, вы должны учиться находить эффективные пути разбивки, чтобы команда работала быстро. Часть задачи — организовать параллельное движение частей работы в максимальном объеме и максимально продуктивно. Это сложно, потому что вы, скорее всего, привыкли думать только о своей работе, а не о работе группы. Ключ — найти пункт приложения всего согласованного в теории. Например, если речь идет о внешнем интерфейсе, использующем простой формат обмена данными JSON на базе API (интерфейса прикладного программирования), то не обязательно ждать, пока набор процедур API будет полностью закончен, чтобы начать разработку внешнего интерфейса. Вместо этого согласуйте использование формата JSON и начинайте писать код в этом формате при помощи Mock-объектов (фиктивных функций). Если вы удачливы, то наверняка видели это раньше, так что вам просто надо копировать предыдущие образцы. На этой стадии вам следует привлечь опытных экспертов к консультированию членов вашей группы и самому поговорить со специалистами, разбирающимися в соответствующих проблемах и способными сообщить вам необходимые детали. Также в этой части процесса нужно осуществить расстановку приоритетов. Что в программе действительно важно, а что факультативно? Как работать над важными элементами с самого начала проекта?