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