12

Ответ atlantidu в «Про норму работы для инженера»2

Поделюсь немного опытом планирования разработки для проектов. Сам работаю программистом уже более 10 лет.


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

Целью начального этапа является выяснение конкретных требований от заказчика. Требования эти могут меняться в процессе их обсуждения.


Результатом этого этапа становится какое то подобие дизайн документа, в котором описаны:

1. Проблема\задача, которую заказчик хочет решить

2. Решение этой задачи и пояснения, почему это решение заказчику подходит

3. Решение, разбитое на этапы. Каждый этап имеет свое описание, назначение, ответствнного и срок выполнения


При этом все должны понимать, что эти сроки только приблизительные. Точность сроков зависит от опыта ПМа и ведущего программиста.


После этого начинается детальная работа с требованиями и архитектурой, результатом чего является более детальные описания того, что нужно сделать и как. По сути ТЗ.


Имея ТЗ уже делается более тщательное планирование. Выбираются ключвые задачи для построения минимального продукта (MVP). По сути, тут уже, имея задачи и оценив эти задачи с командой, можно идти к закачику и озвучивать что либо, но только по MVP.

Я уже как то пытался этот процесс описать тут https://ru.stackoverflow.com/a/1137835/179763 и тут https://ru.stackoverflow.com/a/1012399/179763 - с точки зрения программиста.


Исходя из того, что выше сказано, ПМ по сути просто не имеет возможности выбирать самостоятельно какие части приложения будут выполнены, а какие нет. Это явно должно быть обговорено с заказчиком и ведущим программистом и зафиксировано в документах.

ПМ, по сути, отвечает за организацию такого процесса. Ведущий программист отвечает за техническую часть. Сроки обсуждаются, но у ведущего последнее слово. Если, к примеру, ведущий не согласен со сроками, он это должен явно озвучить ПМу и зафиксировать в документах.


Если ПМ вдуг по своему наитию идет к заказчику и о чем то договаривается, что не было обсуждено с командой или не было зафиксировано в документах - это уже вопросы к ПМу.

Задавать вопросы начальству не только можно, это обязательно надо делать. Если программситу что то не понятно или он с чем то не согласен, он дожен это явно высказать. Если программист не понимает задачу или не понимает зачем такая задача поставлена - он не должен даже начинать рабоать над задачей.


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


В таком случае, если к вам вдруг приходит Начальник и спрашивает о сроках, то

1. Если вы ПМ, то у вас есть документ со сроками

2. Если вы ведущий, то шлете начальника а ПМу


Если в сроки вы не укладываетесь, то это должно означать, что

1. Вы не успеваете сделать MVP, а MVP - это малая часть проекта, то есть о проблемах со сроками вы узнаете как можно раньше. Это не катастрофа, вы можете обсудить это с ПМом и пересмотреть сроки и пойти с этим к заказчику.

2. Если сроки затягиваются уже после MVP - это не страшно, основной функционал уже все равно готов, вы можете с ПМом и заказчиком обсудить и либо сдвинуть сроки, либо уменьшить количество запланированного функционала.


Весь смысл этого - это fail fast подход, вы должны узнать о проблеме, если она имеется, как можно скорее и принять меры.

Если после такой работы заказчиком, документами, описаниями и прочим у вас возникает какая то катастрофа, требующая внимания начальника - у вас вероятно проблемы с процессом. Если к вам на каждой работе подходят начальники с одими и теми же претензиями, попробуйте найти проблему в себе.

Лига программистов

2K постов11.8K подписчиков

Правила сообщества

- Будьте взаимовежливы, аргументируйте критику

- Приветствуются любые посты по тематике программирования

- Если ваш пост содержит ссылки на внешние ресурсы - он должен быть самодостаточным. Вариации на тему "далее читайте в моей телеге" будут удаляться из сообщества

1
Автор поста оценил этот комментарий

Вот у меня тоже вопрос возник к автору. А пони, пони в вашей утопии бегают, а единороги есть? :)

раскрыть ветку (1)
3
Автор поста оценил этот комментарий

Если честно, я не понял сути вашего вопроса и какого вы ожидаете ответа. Весь текст выше построен на основе моего реального опыта работы. Хотите - верьте, не хотите - не верьте.

показать ответы
1
Автор поста оценил этот комментарий

Я ни в коей мере не сомневаюсь в том,  что это из опыта. Просто эффект некой экстраполяции присутствует. Я не сомневаюсь, что описанное вами правильно, но это далеко не всегда так работает. Если весь ваш опыт был связан только с этой модус вивенди, искренне завидую. Мне приходилось, увы, наблюдать прод не просто выходящий на костылях, а выезжающий на инвалидной коляске. Так что про "поней" это от зависти, не обижайтесь :)

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

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

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

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

То есть моя писанина может и не в каждом проекте встречается, но если вы будете стремиться к чему то подобному, вы можете улучшать процессы даже в самых стремных костыльных проектах, делая эти проекты лучше или хотя бы более предсказуемыми.

Автор поста оценил этот комментарий

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

Так шта все все эти управленческие технологии оптимизации и автоматизации из жизни эльфов-айтишников к реальному сектору мало применимы, что показывает опыт даже такого гиганта как Амазон. Обстановка  на предприятии, объекте, а также у подрядчиков и заказчиков может меняться ежечасно, при этом инженер зачастую должен участвовать в нескольких "проектах" одновременно, условия задач не стандартны и динамично меняются в процессе решения, помогает только опыт и здравый смысл, а не следование неким разработанным алгоритмам.

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

У программиста как раз реальный опыт производства ПО, со своими проблемами интеграции с поставщиками информации, железом для запуска ПО, местным отделом качества и начальством.

Я сам какое то время работал в Управлении по Совершенствованию Производственной Деятельности (УСПД) Челябинского Трубопрокатного завода. Совсем не айтишная была работа. Как ни странно, мы там внедряли Кайдзен - это то, откуда у Agile, Scrum, Kanban ноги растут. То есть, есть некоторые общие вещи между процессом на "реальном" производстве и производством ПО.

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

все эти управленческие технологии оптимизации и автоматизации из жизни эльфов-айтишников к реальному сектору мало применимы, что показывает опыт даже такого гиганта как Амазон

Такой гигант как Амазон является одним из локомотивов IT индустрии, его набор принципов (https://www.amazon.jobs/en/principles) распространяется на всех работников, от работника склада до больших начальников. Один из принципов Amazon - Have Backbone; Disagree and Commit - как раз и описан мной в моем посте.

0
Автор поста оценил этот комментарий

Что такое ПМ?

раскрыть ветку (1)
2
Автор поста оценил этот комментарий

Сорри, что не указал сразу. ПМ - это менеджер проекта.

показать ответы
0
Автор поста оценил этот комментарий

А как Вы сокращаете продукт менеджера?

раскрыть ветку (1)
0
Автор поста оценил этот комментарий

Нечасто приходилось сокращать продукт менеджера, на русском языке даже не припомню чтобы вообще когда то сокращал. В проектах эту роль иногда могут выполнять бизнес аналитики. Но вообще это от компании зависит. Из того, что могу вспомнить, сокращения на английском - BA - бизнес аналитик, PM - менеджер проекта, SDM - менеджер проекта уровня разработки (один на каманду), TPM - менеджер проекта уровня команд (несколько команд под одним менеджером), Project TPM - мереджер на уровне большого проекта (например, когда проект вовлекает оч много команд и людей), PM-T - Менеджер продукта уровня команд (обычно один менеджер на несколько команд). Но это все, конечно, не жесткие правила, тут уже как повелось в компании называть должности.

показать ответы