Все программирование, которое должен знать Project Manager
Рассказываем, кто такие project-менеджеры и должны ли они уметь программировать и читать код.
922 открытий6К показов

В IT появилось настолько много профессий с иностранными названиями, что иногда непонятно, что они вообще делают. Кажется, что project manager — просто тот, кто громче всех кричит «где мой релиз» и «за два дня успеете?». Но это далеко не так.
Разбираемся, какие основные задачи закрывает проджект и нужно ли ему знать программирование и уметь кодить. В этом нам поможет Артем Харченков — автор Telegram-канала «IT Инсайты», где он делится мыслями об IT и тимлидстве. Артем руководит командой 40+ человек более 4 лет, управляет департаментами разработки, тестирования, аналитики и DevOps, является спикером TeamLead Conf и участником подкастов и ведущим вебинаров. Был инженером внедрения и Java-программистом.

Артем Харченков
автор tg-канала «IT Инстайты», руководитель команды 40+ человек, управляющий департаментами разработки, тестирования, аналитики и DevOps
Какие главные задачи у PM в айти
Менеджер проекта (или Project Manager, PM) — это функциональный руководитель команды, которая работает над определенным проектом. PM отвечает за то, кто и что в команде делает, чтобы достичь поставленных целей.
Основная задача менеджера проектов в IT — контролировать, чтобы вверенный ему проект был выполнен в срок, с должным качеством и утверждённым составом работ.
Часто говорят, что эти три параметра образуют «железный проектный треугольник», то есть изменение одного из параметров невозможно без изменения двух других.
До работы над проектом обычно составляется план-график, и PM следит за тем, чтобы команда ему следовала. Мотивация команды и поддержание командного духа — также одни из базовых функций PM. Важно понимать, что хороший PM должен не только адекватно оценивать ситуацию на проекте и задавать направление, но и уметь принимать меры, если что-то идёт не так.
Нужно ли в принципе проджекту учить программирование или он его должен знать изначально
Если говорить о проектах разработки ПО, то для того, чтобы стать в них хорошим PM, очень полезно иметь опыт работы в одной из ролей проектной команды. Так как программисты — основная движущая сила проекта, опыт работы в этой роли даёт преимущество в понимании процессов разработки. Это помогает общаться с ними «на одном языке».
Однако я знаю хороших PM, которые выросли из тестировщиков или аналитиков. Одно можно сказать точно: чтобы хорошо руководить командой, следует понимать, по каким правилам она работает, а для этого нужно побывать в ней «изнутри».
Если вы стали PM без технического бэкграунда, будет крайне полезно изучить, какую работу делает каждая из командных ролей, и начать лучше, конечно, с роли разработчика. Без понимания выполняемых членами команды функций PM не сможет принимать адекватные решения и расставлять приоритеты.
Какие базовые штуки из программирования нужно знать PM-у, чтобы не теряться в разговорах с кодерами
Начинать стоит не с изучения самого языка программирования, а с общих определений и с понимания того, какой из инструментов зачем используется. Например, чтобы на встрече программистов обсуждение для проджекта не превращалось в «белый шум» нужно знать, что такое, например, «релиз», «деплой», «ветка в гите», «рефакторинг», «кубер» и так далее. Не обязательно самому практиковаться в технологиях, но требуется понимать, для чего они используются. Именно понимание того, какую задачу какой инструмент решает, наиболее важно для PM’а, а вот умение писать код или отличать абстрактный класс от интерфейса не пригодится практически никогда.
При правильном распределении обязанностей на проекте PM’у вообще не требуется читать код: ни настоящий, ни псевдо. Его задача — организация процесса, а не техническая реализация.
Как знание кода помогает адекватно оценивать дедлайны
Если PM имеет опыт работы программистом, он понимает, какие задачи в разработке являются сложными, а какие — простыми. Это даёт преимущества в прогнозировании сроков: он может самостоятельно примерно оценить время на реализацию функции или, если оценка другого программиста ему кажется завышенной, уточнить причины расхождения в прогнозах. В таких обсуждениях часто удаётся найти оптимальное решение: выбрать более простой способ реализации, который сократит сроки, но при этом покроет основные потребности заказчика.
При этом анализ узких мест в коде — не задача PM’а, для этого на проекте обычно есть архитектор, техлид или старший разработчик. Однако PM должен учитывать известные технические риски при планировании, чтобы избежать срыва сроков.
Про технические штуки: что нужно и не нужно знать
Стоит ли вникать в Git
Git — важный инструмент для командной работы программистов, он уже стал стандартом в современных проектах. Как и в других технических инструментах, PM не обязан знать команды push, fetch или merge и уметь ими пользоваться, но должен иметь общее понимание базовых вещей (например, «ветка», «репозиторий», «merge request», «commit»). Без этих знаний PM не сможет эффективно управлять процессом доставки функций и выпуска релизов, выявлять их узкие места и принимать взвешенные решения по устранению проблем.
Нужно ли знать, чем монолит отличается от микросервисов
Понимание этой разницы — сейчас базовое требование в IT. Я рекомендую изучить плюсы и минусы обоих подходов к построению систем. Хорошо, что современные ИИ-помощники позволяют разобраться в этом за пару часов: они опишут всё подробно «на пальцах» и с примерами.
Должен ли PM знать подходы к разработке, например, CI/CD или TDD
PM должен понимать смысл этих аббревиатур, цели их применения командой и пользу, которую они приносят.
Как понимание тестов (типа юнит-тестов) спасает при проверке качества
Написание тестов — важный этап разработки, который помогает убедиться, что команда в процессе разработки случайно не сломала то, что работало раньше. Многие недооценивают этот этап и ради ускорения работы сокращают время на тесты или вовсе от них отказываются. В краткосрочной перспективе это даёт быстрые результаты, но в долгосрочной — приводит к дополнительным затратам времени на поиск и исправление внезапных ошибок, усложняя поддержку и развитие продукта.
Базы данных — это важно для PM-ов или только для разработчиков
Важность понимания принципов работы баз данных для PM зависит от предметной области проекта. Например, при разработке стандартной CRM-системы база данных — лишь один из модулей продукта. В этом случае PM должен понимать только то, что это за база, какие данные в ней хранятся и обрабатываются.
Если же проект связан с созданием ПО для работы с базами данных (например, клиента для БД или системы оптимизации SQL-запросов), потребуется гораздо более глубокое знание их принципов работы.
Веб, мобилки, данные — отличается ли набор знаний для PM-а в этих стеках
В общем случае — нет. Различия между этими типами проектов в основном технические, но во всех случаях над достижением цели работает команда с распределёнными ролями. Навыки PM в первую очередь — это способность её мотивировать, выделять приоритеты, проводить эффективные встречи и обеспечивать выполнение задач в срок. Технические инструменты PM (например, таск-трекеры, диаграммы Ганта или покер-планирование) могут различаться, но они не связаны напрямую с инструментами разработки, аналитики или тестирования.
Конечно, одинаковых проектов не бывает: каждый имеет технические и организационные особенности. Однако в любом из них ключевая цель — выполнить определённый объём работ в срок с должным качеством. Именно умение достигатьдост этой цели — главный критерий успешности PM.
922 открытий6К показов