Я работаю в очень блестящей компании с истинным намерением делать XP. Коммуникация хороша, и руководство открыто для конструктивного обсуждения, но из-за нехватки времени некоторые вещи считаются слишком RUP для обсуждения.
На данный момент я немного обеспокоен объемом изменений, которые становятся необходимыми при реализации историй. Я считаю, что многие из этих открытий (которые, конечно, требуют времени и усилий) являются обязанностью авторов историй (клиентов, конечных пользователей и владельцев продуктов), а не разработчиков. Короче говоря, пользовательские истории слишком концептуальны и просто передают основное намерение, но не содержат достаточно деталей (особенно предварительные условия и постусловия, отношение к другим историям, зависимости и тому подобное). Разработчик, как ожидается, будет заполнять пробелы по своему усмотрению, поскольку разработчики XP одновременно являются дизайнерами и аналитиками. Проблема заключается в том, что многие из этих пробелов обнаруживаются после того, как некоторые неверные предположения нашли свое место во времени и коде оценки, поскольку появляются дополнительные сложности, чем первоначально предполагалось. Даже тогда, чтобы найти правильную вещь для заполнения, требуется время, которое - в различной степени - рассматривается как отклонение от первоначальных оценок.
Я ищу конструктивный способ донести эти последствия до руководства таким образом, чтобы я не выглядел как человек, который пытается излишне усложнять ситуацию. Я новичок, и пока я не завоевал большого доверия.
Ваши идеи приветствуются.
Тесно связан и как-то дает ответ: сколько подробностей о пользовательской истории может ожидать разработчик?
источник
Ответы:
Хитрость заключается не в том, чтобы избежать пробелов. Хитрость заключается в том, чтобы заполнить эти пробелы как можно раньше в процессе разработки.
Вы правы в том, что, если разработчики делают предположения, они неизменно будут ошибаться, и это потребует времени для дальнейшей разработки программного обеспечения. Но в равной степени, если ожидается, что деловые люди будут делать полный предварительный дизайн, когда они на самом деле не знают, чего хотят, то произойдет то же самое.
Большая часть работы разработчика состоит в том, чтобы выяснить, чего хочет клиент, когда он часто не знает об этом.
Сначала задайте вопросы. Если ответы, которые вы получаете, кажутся неудовлетворительными, создайте прототип. Покажите клиенту, что он просит, и пусть он скажет вам, что это не то, что он действительно хочет. Начните с бумажного прототипа, затем перейдите к основанному на HTML, без кода. Затем сделайте наименьшее количество разработки, которое вам нужно, чтобы создать практически работающий продукт, и покажите им это. Оставьте сложные биты как можно позже в процессе.
Это может показаться трудоемким само по себе, но, по сравнению с реконструкцией предположительно готового продукта, это не так.
Кроме того, делайте истории как можно меньше. То, что хочет бизнес, неизменно является эпическим, то, что можно разбить на множество результатов. Это лучше, потому что вы не разработали бы слишком много, когда они смотрят на кандидата на финальную версию и кричат: «О нет, это действительно не то, что мы искали».
источник
Это звучит не очень "XP" для меня.
Я ни в коем случае не эксперт по XP, но AFAIK идея XP заключается в том, чтобы постоянно адаптировать ваши спецификации и ваши оценки всякий раз, когда вы получаете обратную связь с процессом. И процесс «немного проанализировать - немного проектировать - немного кодировать - немного протестировать», а затем получить обратную связь от пользователя, чтобы как можно раньше исправить неправильные предположения. Вы также можете попытаться получить отзывы пользователей еще раньше , например после разработки некоторых частей вашего программного обеспечения (например, пользовательского интерфейса) на листе бумаги или доске и обсудить это с пользователем или клиентом . Я не думаю, что «способ XP» запрещает такой подход только из-за наличия » пользовательские истории ".
Вот хорошая статья о том, как получить обратную связь раньше, используя спецификации. Я думаю, что такое мышление не зависит от «методологии», и приведенные там аргументы помогут вам в дебатах с руководством.
источник
Подводя итог, вы находитесь в следующей ситуации:
Подумайте над пунктом 4: я считаю, что гибкие методы должны быть адаптированы к потребностям и культуре компании / команды (а не наоборот). Определите, где компания придерживается методологии XP и где она отклоняется. Это основа для конструктивного подхода к вашим проблемам.
Из-за 1 и 2 вы в настоящее время не можете поставить вопрос, разумно ли компания применяет XP. Начало обсуждения с руководством, скорее всего, представит вас как человека, который « усложняет ситуацию ». Однако вы можете начать обсуждать свои проблемы с коллегами-разработчиками. Может быть, вы найдете разработчиков, которые думают так же, как вы. Может быть, есть старший разработчик, который затем передаст ваши проблемы руководству. Но не ожидайте, что все изменится быстро, особенно в текущем проекте. Однако проект даст вам хорошую возможность собрать больше данных, что придаст больше конструктивного подхода.
Теперь к пункту 3: я думаю, что хорошие пользовательские истории написаны совместно клиентами / конечными пользователями / владельцами продуктов и разработчиками. Проявляйте инициативу: ищите возможность напрямую спрашивать авторов пользовательских историй. Если это невозможно, спросите какого-нибудь старшего разработчика или руководство, как обращаться с открытыми вопросами, на которые должны ответить авторы пользовательских историй. Может быть, вы можете хотя бы иметь некоторую письменную переписку. Поскольку вы должны заполнить пробелы по своему усмотрению, то ваш выбор должен состоять в активном привлечении клиентов / конечных пользователей / владельцев продукта.
В какой-то момент вы достаточно продумали и поняли, как ваша компания применяет XP (или гибкие практики в целом). Возможно, уже прошло какое-то время, и вы больше не воспринимаетесь как зеленый рог. Может быть, ваше активное участие с клиентом показало некоторые положительные эффекты. Может быть, следующий проект уже начинается. Возможно, у вас уже есть резервная копия от других девелоперов. Может быть, вы обнаружите, что это работает совсем не плохо. Дело в том, что тогда у вас будет достаточно идей, чтобы донести ваши проблемы до руководства, основываясь на реальном опыте и данных вашей компании.
источник
Честно говоря, пользовательские истории не должны иметь много деталей. «Я хочу, чтобы программное обеспечение делало X, чтобы удовлетворить потребности бизнеса Y» должно быть достаточно. В конце концов, вы не хотите, чтобы деловые люди диктовали, как это сделать - вы являетесь экспертом в области программного обеспечения и лучших практик в нем.
Тем не менее, разработчики также должны спросить : «Как вы ожидаете, что это будет работать?», «Что происходит, когда это взаимодействует с функцией Z?». Разработчики не предъявляют требований, они делают реализацию.
Это также звучит так, как будто между реализацией и оценкой существует слишком большой разрыв. Заинтересованные стороны должны смотреть на прототипы, наполовину готовый код каждые несколько дней. Это позволяет вам получить обратную связь, прежде чем углубляться в сорняки.
источник
Если вас просят оценить историю, которая кажется вам неполной, сообщите, что у вас есть вопросы по поводу истории и что вы не можете дать правильную оценку, прежде чем на эти вопросы будут даны ответы.
Затем задайте свои вопросы и убедитесь, что ответы станут частью истории.
Если вы вынуждены дать оценку, даже если на ваши вопросы (все) не дан ответ, вы можете либо отказаться от оценки, либо четко указать, что вы принимаете наихудшие возможные результаты для оставшихся пробелов в вашей оценке (что вероятно, сделает вашу оценку высоким выбросом).
источник
То, что вы делаете, не является гибким способом развития. Вместо этого вы работаете с низкими требованиями к качеству. Ложно, что гибкий способ разработки не заключается в определении требований.
Вместо этого им необходимо изначально указать как можно больше, а при необходимости изменить позже. Затем вы разбиваете свою работу на части и реализуете итерациями. После каждой итерации вы что-то закончите.
Разница в развитии водопада, в развитии водопада, все реализовано с начальными требованиями и изменено в конце.
источник
Похоже, разработчики полностью удалены от создания пользовательских историй. Вы ожидаете, что сможете прочитать их, как детальную спецификацию, и правильно построить ее с первого раза? Если бы вы могли это сделать, вам бы не понадобилась XP или любая другая гибкая методология.
Кто-то должен задавать вопросы, если история слишком расплывчата. Где проходит приемочное тестирование ?
Пользовательские истории предназначены для изменения. Вы должны иметь дело с этим.
источник
Хотя разработчик мог написать историю / подробные требования, я не видел многих, кто в этом хорош. мы умеем указывать на проблемы, предлагая лучшие потоки, но в качестве вклада в уже хорошо написанное дело.
Работали над новыми и существующими продуктами, и в обоих случаях были случаи, когда требовалось всего 5 строк, и мы должны были заполнить пробелы и сделать «понимание» или более сложный документ.
Проекты продвигались намного лучше, чем у нас был наш профессиональный специалист по обслуживанию, который помог с этим (или в одном случае вице-президент, который вмешался, поскольку больше никого не было доступно). В любом случае, это пустая трата времени на разработку (если обратная связь не возвращается и срок не изменился). поэтому мое предложение: попросите более подробную информацию, предоставьте больше, попросите обратную связь с ограничениями по времени на ваши предположения и документацию и заявите, что существует риск, что будут доработки и задержки, если вы не получите эту информацию к x дате.
источник
Независимо от методологии разработки, если то, что вы используете для определения требований, заставляет разработчика делать какие-то предположения, это должно быть отброшено назад в сторону бизнеса. У меня часто есть хорошее представление о том, какой ответ я бы предпочел, поэтому я отвечаю так:
XYZ неясен для меня. Это означает ABC? Или я что-то упустил? (Предположим, XYZ является требованием, предположим, что ABC - это предположение, которое я хотел бы сделать как разработчик)
Требуется гораздо меньше времени, чтобы разобраться, прежде чем делать плохие предположения, чем переделывать. Разработчики, которые догадываются о требованиях, не получая подтверждения, что их догадки верны, обычно являются плохими разработчиками, и они стоят своей компании больших денег. Если плохой менеджер не позволит вам дать ответный удар, объясните ему, насколько дороже с точки зрения времени и денег сделать это неправильно. Если он по-прежнему настаивает, то делайте то, что он говорит, и когда это не сработает UAT, в следующий раз, когда вы захотите отбросить что-то, напомните ему о том, как дорого это было, когда он вас не пустил. Если он все еще не слушает, найди лучшего босса.
Другая ценность отдачи назад состоит в том, что постепенно бизнес узнает, что вам нужно, и даст вам лучшие требования.
источник
Другими словами, вы должны задавать вопросы, пока не поймете специфику истории. Это делается при планировании итераций и действует как точка принятия решения: если вы не можете оценить ее, вы не сможете ее построить.
источник