Предыстория

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

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

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

Однажды Лонг пришел ко мне. Он чувствовал, что такой подход «обучение плюс практика» был немного медленным и что большая нагрузка была сосредоточена на коллегах, ответственных за бизнес-анализ. Он спросил меня, возможно ли написать программу для реализации функции разделения требований. Моим истинным чувством в то время было: «Ты что, шутишь?» Однако из уважения к клиенту я должен был сказать, что это нереально. Независимо от того, как были описаны требования, программе было нереально понять смысл этих требований и то, как формализовать такие принципы, как независимость и оборотоспособность в INVEST.

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

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

  1. Эта идея непрактична или, по крайней мере, непрактична в ближайшие несколько десятилетий.
  2. «Разделение облака» — например, разделить несколько профессиональных бизнес-аналитиков в фоновом режиме, а затем создать внешний интерфейс для отображения результата — это блестящая идея 🙂
  3. Возможно, для ее решения можно использовать искусственный интеллект (глубокое обучение), но стоимость и осуществимость неизвестны.

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

Хотя я иногда вспоминал об этой шутке позже, большую часть времени это было поводом для смеха. До недавнего времени, когда я пробовал API OpenAI, я делился статьей в социальных сетях. И тут я увидел комментарий коллеги (старшего бакалавра). Этот же человек несколько лет назад прокомментировал твит, о котором я упоминал выше. И этот комментарий вызвал у меня странное требование Лонга: Можем ли мы использовать инструмент для автоматизации разделения запросов? Я решил спросить ChatGPT.

Появление ChatGPT

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

Автоматическое разделение требований

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

Я начал с относительно простого вопроса:

Знаете ли вы принципы INVEST при написании историй?

Он ответил через несколько секунд:

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

I — Независимость. Истории должны быть самодостаточными и самостоятельными. Чтобы их поняли, им не следует полагаться на другие истории.

N — возможен торг. Истории должны быть гибкими и открытыми для изменений. Писатели должны быть готовы внести коррективы в историю на основе отзывов или новых идей.

V — ценный: истории должны быть ценными для читателя. Они должны быть интересными, привлекательными и соответствовать интересам или потребностям читателя.

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

S — Маленький. Истории должны быть небольшими и управляемыми. Это облегчает их написание и облегчает понимание.

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

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

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

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

И ChatGPT ответил:

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

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

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

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

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

Первая попытка исправления

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

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

Он немедленно извинился и попытался дать мне что-то более осмысленное:

Вы правы, я прошу прощения за эту оплошность. Позвольте мне пересмотреть эти истории, чтобы убедиться, что они обеспечивают достаточную ценность для бизнеса и при этом соответствуют принципам INVEST:

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

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

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

Вторая попытка исправления

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

Я бы разделил так:

войдите с электронной почтой и паролем, счастливый путь

неверный адрес электронной почты или пароль, отображается сообщение об ошибке

войти с помощью других каналов, например, с помощью входа в Google

авторизоваться с помощью Фэйсбука …

И тут произошло нечто волшебное. Он понимает, что я пытаюсь сказать, и реструктурирует раскол во что-то, что в значительной степени соответствует INVEST.

Отличные предложения! Вот как требование реализации входа в веб-приложение можно разделить на более мелкие истории, используя ваш подход:

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

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

Как пользователь, я могу войти в систему с помощью Google, нажав кнопку «Войти с помощью Google» на странице входа.

Как пользователь, я могу войти в систему через Facebook, нажав кнопку «Войти через Facebook» на странице входа.

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

Давай попробуем что-нибудь новое

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

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

И что удивительно, ChatGPT понимает мои намерения и дает мне хорошее разделение:

Конечно! Вот как мы можем разделить требование реализации функции для погодного приложения, которое может получать информацию о погоде для городов, выбранных пользователем, на более мелкие, более управляемые истории, используя принцип INVEST:

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

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

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

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

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

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

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

Искусственный интеллект — хороший помощник.

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

Типичный пример — ведение блога. Например, я хочу написать блог, рассказывающий о процессе TDD (разработка через тестирование). Представляя преимущества практики TDD, я сразу могу вспомнить 4–5 пунктов. Тем не менее, формулировка может быть не идеальной, или из-за проклятия знаний я не смогу перечислить некоторые моменты, в которые я глубоко верю, но не могу вспомнить.

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

Я считаю, что это правильный способ использовать инструменты ИИ в качестве помощника, при этом полный контроль остается в руках пользователя-человека. Как говорится в недавней поговорке, «искусственный интеллект не заменит вас, но заменят те, кто использует искусственный интеллект».

Краткое содержание

Появление ChatGPT определенно прорывно, и многие позиции, даже отрасли, претерпят огромные изменения. Однако, как и многие другие новые инструменты, он несет в себе как проблемы, так и возможности.

Если вам нравится чтение, пожалуйста, Подпишитесь на мою рассылку. Я еженедельно делюсь методами Чистого Кода и Рефакторинга в блогах, книгах и видео.

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