Закрыли сегодня первый этап крупного проекта (начался в ноябре). Многому научился за это время — и в организационном плане, и в плане разработки.
Во-первых, пересмотрел свои взгляды на оценку сроков разработки. В первую очередь это касается тестирования — не недооценивайте сроки, отводимые на тестирование! Еще в Древней Руси знали толк в тестировании, все знают про 7 раз отмерь и один раз отрежь. В общем, многие наступают на эти грабли, только пока сам не наступишь, всерьез не воспринимаешь.
Также, как правило, неправильные сроки формируются из-за нечеткого или искаженного представления об архитектуре, дизайне, интерфейсе или других тонкостях, которые в дальнейшем могут сильно изменить плановые сроки. А искаженное представление возникает по причине недостаточного взаимодействия заказчика и разработчика на начальном этапе формирования базового документа — основы для дальнейшей разработки.
Поэтому важно на первых порах максимально детализировать требования к создаваемой системе, дабы потом не возникало диалогов: «Я заказывал вам соковыжималку, а вы мне миксер сделали, а вообще я хочу теперь блендер со встроенным радио».
Во-вторых, понял, что перед началом проекта обязательно нужно проводить подготовительные работы:
- Настроенные и готовые к работе средства коллективной разработки: система версионного контроля (svn, cvs, git, на любителя), багтрекер и средства планирования/обсуждения в отдельных или одном лице.
- Документация и материалы. Сюда входят ТЗ, описаниях архитектуры, интерфейса, дизайн, а также согласованные командой документы по организации кода, комментариев, базы данных и т.п.
Хаос в этих моментах приведет к хаосу во всем проекте (не путать с Доктором Хаусом ;).
В-третьих, что для ведущего разработчика, что для менеджера проекта важно уметь искать компромиссы и альтернативные решения, но при этом в определенные моменты поступательно, аргументированно доводить и отстаивать свою позицию по тому или иному вопросу.
P.S. Да, и если вам предлагают поучаствовать в проекте по разработке мессенджера за 2 месяца командой из 2-х человек, я настоятельно вам не рекомендую соглашаться.