Как вы объясните «гибкой» команде, что им все еще нужно планировать программное обеспечение, которое они пишут?


50

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

В ходе этого процесса были сделаны «пики», но они никогда не были задокументированы, и не было создано ни одного архитектурного проекта (не было ФС, так что, черт возьми, если вы не знаете, что разрабатываете, как вы можете планировать или исследовать это? ?) - проект переходил от пары к паре, каждый из которых когда-либо фокусировался только на одной истории пользователя, и результат был неизбежен.

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

Итак, как вы, как разработчик, объясняете команде, что планирование работы не является «негибким», и как вы подходите к планированию гибкого процесса? (Я не говорю об IPM; я говорю о том, чтобы сесть с проблемой и сделать набросок сквозного проекта, который говорит, как проблема должна быть решена достаточно подробно, чтобы любой, кто работает над проблемой, знал, что архитектура и шаблоны, которые они должны использовать, и где новый код должен интегрироваться в существующий код)


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

1
+1 очень интересует, как люди решают эту проблему прагматично, что позволяет вам воспользоваться преимуществами, которые могут предложить как водопад, так и проворный. Кстати, Agile не означает «нет дизайна», но дизайн, как правило, становится первой жертвой в непрерывном цикле спринтов ...
Марьян Венема

5
Ну, в некоторой степени, у меня это было до шеи с "проворным". Кажется, что на каждом шагу agile мешает кому-либо написать приличную строку кода, и все начинается с гибкой предпосылки «мы не документируем», следствием которой является «мы не планируем». Я не хочу ненавидеть Agile, но, насколько я понимаю, если он поощряет людей не планировать свое программное обеспечение, то это в лучшем случае контрпродуктивно, а в худшем - опасно.

9
@ Marjan Venema - это моя забота. Я уверен, что agile никогда не означал «не проектировать», как «не преждевременно оптимизировать», не означал «не писать эффективный код». Но это, кажется, интерпретация массового рынка этого. Способ, которым agile подчеркивает коммуникацию, великолепен, и это действительно освежающее изменение, но мне кажется, что в гибком мире само программное обеспечение является скорее запоздалой мыслью.

9
Очевидно, что вы разочарованы плохим применением гибких принципов, но это похоже на пустую болтовню, замаскированную под вопрос. Для ясности: Agile предпочитает «реагировать на изменения, следуя плану», что означает, что «хотя в элементах справа есть ценность, мы ценим элементы слева больше». Конечно, можно слишком мало ценить следование плану , что, похоже, имеет место в данном случае.
Рейн Хенрикс

Ответы:


51

Я думаю (и, возможно, я здесь на пороге), что ВСЕ проекты должны иметь немного классического водопада: начальный этап анализа и спецификации важен. Вы должны знать, что вы делаете, и вы должны иметь это в письменной форме. Получить требования в письменной форме сложно и отнимает много времени, а легко сделать плохо. Вот почему многие пропускают это - любое оправдание подойдет: «О, мы делаем гибкие, поэтому нам не нужно этого делать». Когда-то, до гибкого подхода, было «о, я действительно умен и знаю, как решить эту проблему, поэтому нам не нужно этого делать». Слова немного изменились, но песня по сути та же самая.

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

Как только вы знаете, что вам нужно сделать - набросайте архитектуру. Это часть "получить правильную картину". Здесь нет волшебного решения, нет единственно правильного пути и методологии, которая поможет вам. Архитектуры являются СИНТЕЗОМ решения, и они происходят из частично вдохновленного гения и частично с трудом завоеванных знаний.

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

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

Если у вас есть ЧТО (это ваша спецификация) и КАК (это архитектура, которая является проектом высокого уровня), тогда у вас есть задачи. Обычно их много.

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

По пути будут найдены фальшивые следы, ошибки, проблемы со спецификацией и архитектурой. Это вызывает такие вещи, как: «Ну, тогда все эти планы были пустой тратой времени». Который тоже бык. Это просто означало, что у вас МЕНЬШЕ недоразумений, чтобы разобраться позже. Когда вы обнаружите проблемы с высокоуровневыми вещами ранних дней, FIX THEM.

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

Наконец - вы должны проверить. Вы можете использовать TDD или что-то еще, что вам нравится, но это не гарантирует, что в конце вы сделали то, что сказали, что сделаете. Это помогает, но это не гарантирует. Так что вам нужно сделать финальный тест. Вот почему такие вещи, как верификация и валидация, по-прежнему важны в большинстве подходов к управлению проектами - будь то разработка программного обеспечения или создание бульдозеров.

Резюме: Вам нужны все предварительные скучные вещи. Используйте такие вещи, как Agile, как средство доставки, но вы не можете исключить старомодное мышление, специфику и архитектурный дизайн.

[Неужели вы серьезно рассчитываете построить 25-этажное здание, разместив 1000 рабочих на месте и предложив им сформировать команды для выполнения нескольких работ? Без планов. Без структурных расчетов. Без дизайна или видения того, как должно выглядеть здание. И только зная, что это отель. Нет - не думаю.]


11
+1. +10 если бы мог. Если у вас нет четкого представления о том, что именно вы в конечном итоге создаете - что может быть получено только от некоторых предварительных проектных работ, даже если вы позже измените этот дизайн - тогда парадигма разработки, которой вы следуете, будет «бросить дерьмо у стены и посмотри, что торчит ".
Муравей

5
-1. Мне не нравятся подробные спецификации, потому что люди / клиенты все время меняют свое мнение, что делает бессмысленными спецификации и предварительные разработки, не говоря уже о расточительности. Поэтому вместо того, чтобы тратить время на «сбор требований» и тому подобное, вы должны как можно скорее создать работающее программное обеспечение, которое вы показываете своему клиенту, чтобы вы могли получить реальную обратную связь для следующего шага. Вместо того, чтобы делать догадки и предположения. Что касается «спецификаций - это средство общения»: я предпочитаю разговаривать со своими клиентами и работать итеративно, но, эй, каждый по-своему, я думаю.
Мартин Уикман

6
+1. +10, если бы я мог +1. Я полный отстой, потому что программное обеспечение для сборки похоже на построение аналогии со зданием, потому что оно просто есть. Да, программное обеспечение не является физическим, да, если все сделано правильно, оно может быть очень модульным и отделенным. Но сделать его очень модульным и отделенным очень сложно; это то, что требует времени и планирования. Я понял, что в разработке программного обеспечения всегда будет два лагеря: те, кто считает планирование пустой тратой времени, и те, кто этого не делает. И вы знаете, я также понял, что люди не меняют лагеря, ну, не совсем. Я работал в тщательно спланированной среде и ...

6
Я согласен с вами, но то, что вы описываете, действительно проворно. Agile говорит: «нет большого дизайна заранее», а не «нет дизайна». Это было сказано в ответ на огромные жесткие проекты мегапредпринимательских монстров. Не в качестве предлога, чтобы не проектировать и не найти хорошую архитектуру для своего кода. Смысл в том, чтобы не тратить недели или месяц на ВСЕ проектирование до того, как вы начнете кодировать, потому что ваш дизайн БУДЕТ неправильным, и чем дальше вы заметите и исправите его, тем лучше. Получайте быстрый отзыв, повторяйте, улучшайте и т. Д.
sara

5
Кай - я вижу, что Agile использовался как оправдание для того, чтобы не задавать спецификации, не планировать, а просто погружаться. И это просто неправильно.
quick_now

36

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

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

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

Многое из процесса водопада заменено коммуникацией и автоматическими тестами. Никто не говорит, что вы не можете написать документацию высокого уровня или дизайн! Вы можете и многие команды использовать, например, Wiki для этого.


7
+1 отличный ответ. История - это цель - это верхушка айсберга, место для будущего разговора, первый шаг в путешествии; это не все путешествие! Описания испытаний - это объединенные требования, варианты использования и критерии приемки. Дизайн не игнорируется, дизайн ограничен рамками сюжета и тестов, но делает столько дизайна, сколько вам нужно . Любой, кто пропускает дизайн и заявляет, что это ловкий способ, либо не понимает (иди снова читай книгу по XP), либо не хочет (ковбои кодируют да-хау!), Либо просто ленится . И даю Agile плохое имя.
Стивен А. Лоу

16

[наш продукт] был слишком медленным в использовании, глючил, становился лабиринтно сложным и абсолютно негибким.

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

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

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

Совет для профессионалов: используйте «Определение выполненного», чтобы обеспечить это. Убедитесь, что все согласны с этим, и поместите его на видное место для всех. Используйте его в качестве строгого привратника для решения, закончена ли история или нет. Можно даже добавить нефункциональные требования (например, производительность) в этот список.


1
«Они приняли свою свободу, но пренебрегли своими обязанностями», может быть, на гибкой стене должен быть плакат «Приняли ли вы свои обязанности вместе со своей свободой?»
Энди Дент

Отличный ответ, могу ли я добавить, что когда вы используете DoD в качестве контракта таким образом, он также становится центральным в ретроспективе? Как это DoD помогло или помешало нам повысить ценность для наших клиентов?
Грэм Ли

11

Да уж. Ваши товарищи по команде идиоты. Ваш проект отстой из-за Agile. Чувствовать себя лучше? Хорошо, давайте двигаться дальше. :П

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

Agile работает иногда. На этот раз это не сработало для вашей команды. Некоторые люди скажут, что это потому, что вы сделали Agile неправильно. В конце концов, Agile работает, поэтому, если бы вы все сделали правильно, это бы сработало, верно? Без разницы.

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

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

Говоря о навыках людей, вы не должны удивляться тому, что ваша команда не оценила, что вы заставляете их выглядеть плохо, выполняя всю свою работу и делая это лучше, чем они. Делая это «под радаром», вы, возможно, повредили некоторые отношения, которые вам теперь придется восстановить, чтобы стать эффективным членом команды.

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

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


9

Если вы хотите добавить содержательную цитату к своим обсуждениям, у Эйзенхауэра была хорошая идея:

«Планы - это ничто; планирование - это все».

http://www.brainyquote.com/quotes/quotes/d/dwightdei149111.html

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


9

+1 Это лучшее описание гибкого предприятия, которое я недавно читал.

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

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

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

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

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

Если вы полностью сгорели на Agile, есть много мест, где все еще используются другие методологии. Например, почти все, что связано с заявкой или контрактом.


1
Это на самом деле худшее определение гибкости, которое я читал. Разработчикам не нужно делать лишнюю и некредитованную работу. Также в свое время работают только идиоты. Время, потраченное на тестирование кода, - это хорошо вложенное время.
BЈовић

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

4

Я склонен использовать своего рода гибрид. Общий план - водопад, но в его исполнении есть ловкость.

Я предполагаю, что если ситуация так плоха, как вы говорите, ваша команда на самом деле не использует Agile, они просто ленивы или недисциплинированы. Agile - это не планирование, а гибкость и гибкость.


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

Существует огромная разница между заглавными буквами - «A» и «строчными» - «agile».
Ааронаут

Pssst ... не говорите гибким людям, что, так как почти все люди водопада делают это, потому что это работает. Они по-прежнему считают, что ВСЕ разработчики водопадов создают монолитные документы без написания кода до самого конца, и на каждом этапе все не так, потому что нет реализации.
Данк

4

У нас такие же проблемы с некоторыми сотрудниками.

По сути, «я не знаю, пока не напишу» - это любимое утверждение. Таким образом, мы пошли противоположным путем, мы работали с клиентом, чтобы определить результаты с точками подписи. Последним из них является «сейчас напишите код для выполнения X».

Если у нас есть «написать дизайн / тестирование / план и т. Д.» В том же результате, что и «сделать забавный и интересный код», то первая часть никогда не произойдет ...

НО, если я укажу «вы не получите забавного и интересного кода, пока не скажете, что собираетесь собирать, и клиент не подписал», тогда

  • во-первых, вы получаете ворчливое признание, и несколько слез, и я должен был сделать большую работу по заполнению заготовок и дополнительные усилия ...
  • затем вы получаете осознание, когда вы спрашиваете их «как прошел процесс», что лучше попробовать первую версию на бумаге
  • затем у вас есть тестовые примеры, которые могут увидеть разработчики, и вы можете точно указать на ожидание «что значит сделано».
  • тогда клиенты, подписывающиеся на разработку, имеют на 80% меньший процент отказов ...
  • Кроме того, вы наблюдаете за тем, как все разработчики берутся за проектную документацию и разговаривают друг с другом по проектам ... они действительно начинают это понимать.
  • Затем вы работаете над тем, как разбить план проекта на куски по размеру и сделать из него процесс.

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

В нашем случае «большой дизайн заранее» был разбит на 9 этапов (фактические производственные выпуски) со средним числом 5 подэтапов. Дизайнеры и разработчики идут в ногу друг с другом, дизайнеры опережают разработчиков на 1-3 подэтапа ... слишком далеко, и открытия в процессе разработки ломают слишком много дизайна, слишком близко и настраивают, чтобы дизайн стоил так много, как они были уже реализовано «в камне» в процессе разработки. Каждый подэтап стоит 2-4 спринта на одного разработчика.

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

Тестовая проблема именования

Тестирование имеет множество граней, формально существует около 7 категорий тестов, каждый из которых имеет подразделы ... один из этих более поздних - «написать автоматизированные модульные тесты».

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


3

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

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


Похоже, продвижение проекта было именно тем, что он сделал . «Проверка с командой» на самом деле не является решением, это просто способ отложить решение и распределить ответственность.
Ааронаут

Команда уже несет ответственность за результат. Им нужно, чтобы кто-то сказал: «Мы все испортили, как мы изменим нашу методологию?» Тогда они это исправят.
Дейв

2
У меня складывается впечатление, что это особенно команда должна для ее членов , чтобы узнать , как думать , для себя вместо того , чтобы слепо следовать процессу они не понимают. Разговор ничего не даст, если это уже эхо-камера.
Aaronaught

2

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

Т-карта

У каждой команды есть нить, каждый спринт - период. Все это связано вместе (вот где ваша команда, кажется, падает). Закрепите это где-нибудь, и получите магниты, чтобы представлять пары / подгруппы. Они могут даже «гоняться». Но все знают, где они и другие команды. Поставьте здесь зависимости, если они есть.

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


1

У вас две проблемы: недостаточно формы на требованиях и плохая архитектура.

Требования

Вам нужна как общая конечная цель, так и подробная дорожная карта того, как туда добраться.

В мире водопадов конечной целью является функциональная спецификация, а дорожной картой того, как туда добраться, является план проекта.

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

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

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

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

Архитектура

Одна из вещей, которую дает вам «вырезанный лист», заключается в том, что он устанавливает границы системы, которую вы разрабатываете. Это позволяет вам на раннем этапе принимать обоснованные решения об используемой архитектуре.

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


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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.