Я работаю в компании, занимающейся разработкой программного обеспечения, где работа по разработке была передана нам. На берегу команда поддержки и поговорить напрямую с клиентами. Мы никогда не общаемся с клиентами напрямую, мы просто общаемся с людьми из береговой команды, которые общаются непосредственно с клиентами.
Когда появляются требования, береговая команда говорит с клиентами, составляет необходимые документы и сообщает нам. После изучения требований мы создаем проектную документацию (следуем традиционной модели водопада).
Но есть одна проблема во всем процессе: никто из оффшорной или береговой команды не понимает полностью функциональность приложения. Мы просто знаем, что это большое сложное веб-приложение для обработки сложных заказов, управления каталогами, управления кампаниями и других операций. Мы боремся с проектной документацией, так как требования не будут понятны. Затем он переходит к ряду вопросов / ответов между командой на берегу, командой на берегу и клиентами. Нам часто говорят, чтобы понять функциональность из кода. Но это обычно неосуществимо, поскольку база кода огромна и даже понимание простого пункта меню занимает дни, если не недели. Мы пытались убедить клиентов передать нам знанияо приложении, но безрезультатно. Наш менеджер часто говорит нам начать кодирование, даже если проектная документация не завершена или требования не ясны. Мы начнем с кодирования той части требований, которая кажется ясной, и подождем остальных.
Это обычно задерживает развертывание на месяц. В крайних случаях у нас будет очень мало ошибок при разработке и производстве, но клиенты скажут, что это не то, что они просили. Это привело бы к игре по обвинению и ряду запросов на изменения, и в итоге мы разработали бы что-то совсем другое.
Мой вопрос: как бы вы занялись разработкой, если не знаете полностью функциональность приложения?
ОБНОВИТЬ
Методология разработки - это не мой выбор, и я не лидер своей команды. Так все и началось. Я пытался рассказать людям о преимуществах гибкой, но безрезультатно. Кроме того, я не думаю, что у моей команды есть необходимое мышление для работы в гибкой среде.
Ответы:
Укороченная версия:
Зная, что делать, зная вашего клиента.
Представьте себе, что вы - компания, связанная с развитием недвижимости. Вы просите своего партнера построить большой комплекс. Партнер говорит, что, несмотря на все документы, которые вы ему дали, ему также нужно поговорить напрямую с людьми, которые купят квартиры в этом комплексе. Шутки в сторону?
Длинная версия:
Всегда приятно знать, как будет использоваться конкретное приложение, потому что это интересно изучать, но это не всегда возможно в больших проектах.
Некоторые домены слишком сложны. Если вы просто разработчик и работаете над несколькими приложениями из нескольких доменов, вы просто не всегда можете понять, что делает конечный пользователь , потому что для этого потребуется пять лет на изучение бухгалтерского учета, десять лет в медицинской школе, шесть лет в юридической школе и т. д.
С другой стороны, программный продукт, созданный без понимания конкретной области, будет в лучшем случае немного непригодным для использования .
Вот почему функциональные и нефункциональные требования должны быть написаны людьми, которые полностью понимают предметную область. Как правило, сбор требований включает в себя:
Технические специалисты (например, разработчики, которые скажут, что определенная функция невозможна, что эта другая может быть намного лучше, если сделать это таким образом, и эта будет стоить тысячи долларов, в то время как есть гораздо более дешевая альтернатива),
Люди, специализирующиеся на управлении проектами,
Люди, специализирующиеся в области клиента , которые имеют полное понимание этой области и точных потребностей клиента. Конечно, это может быть сам заказчик.
Одно функциональное и нефункциональное требование написано и достаточно точно, вам больше ничего не нужно, как человеку, чья работа заключается в том, чтобы перевести эти требования в код.
Что касается вашего конкретного случая, вы сами описываете причину проблемы:
Все проблемы связаны не с недостатком знаний о клиенте , а с низким качеством требований. В правильно управляемом проекте функциональные и нефункциональные требования должны быть совершенно ясными и однозначными. Если документ с требованиями не ясен или если он говорит вам, что «визуальный дизайн продукта должен быть привлекательным» или другие подобные глупости, это потому, что он был написан людьми, которые не знают, как его написать.
Зная это, вы должны действовать по-другому:
Если вы знаете, что команда, которая собирает требования, находится в отчаянном положении, и в вашей собственной команде есть квалифицированные люди для сбора требований, объясните ситуацию своему начальнику и скажите, что другую команду должен заменить кто-то компетентный , например, люди из вас.
В противном случае (т. Е. Если они не в отчаянии) попытайтесь определить их внутреннюю причину этих низких требований и убедить их в том, что правильное выполнение своей работы только снизит общую стоимость проекта . Хорошая идея - показать статистику о том, как плохо написанные требования повлияли на проект, увеличив стоимость (насколько?) И риск не быть готовым к срокам.
Возможно, документ с требованиями просто неполный. Я вижу это все время: неопытные менеджеры проектов просто убеждены, что одностраничного документа достаточно, и не понимают, почему они написали бы три-четыреста страниц вместо одной. Если дело обстоит так в вашей компании, покажите, что тратить больше времени на требования уменьшит затраты.
источник
Вы используете совершенно неправильную методологию разработки для проблем, с которыми вы сталкиваетесь.
Используя Waterfall, вы обязуетесь:
Подумайте об использовании, если это возможно, другого способа управления проектом. Agile Software Development имеет несколько функций, которые предназначены для решения проблем, с которыми вы сталкиваетесь.
Приличное сравнение « Водопад» против «Agile» было написано некоторое время назад, давайте возьмем из него пару цитат, которые высветят ваши проблемы:
Отсутствует знак:
Привязанный...
... и не может двигаться
Где ты сейчас, плохо; вы не выполняете требования заказчика, и, если вы виноваты в разработке программного обеспечения, производительность вылетит за пределы окна, недоверие возрастет, и ситуация может ухудшиться, а не улучшиться.
Отношения с клиентом имеют решающее значение ; здесь кажется, что вы не в состоянии эффективно собирать их проблемы и приспосабливаться к их изменяющимся требованиям так, как вы сейчас работаете; поэтому вам нужно искать способы изменить это.
источник
Это не так, как это работает. Одним из предметов моего текущего образования является анализ и отношения с клиентом. Акцент всегда был на четком определении проекта. Вообразите это:
Если вы не уверены, что сможете (частично) создать правильную основу для приложения, я бы просто сказал клиенту, что нет другого способа сделать это, кроме как с четко определенными целями и функциями. Потому что, если вы просто сделаете удар в том, что это может быть, вы рискуете бросить много денег и время на ветер.
источник
Вот некоторые вещи, которые помогут преодолеть проблемы:
источник