Жизнь без технического задания

05.04.07

Бизнес-анализ - Работа с требованиями

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

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

Изменчивый мир

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

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

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

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

Экстремальное программирование

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

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

Итерации

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

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

Итак, если мы на каком-то этапе работы пошли по неверному пути, мы очень быстро это поймем - одна-две итерации, и ошибка будет исправлена.

Общение с заказчиком

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

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

Ежедневные релизы

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

Отсюда, кстати, известное выражение "вечная бета" - веб-сайт выкладывается "в бой", программа становится доступной пользователям как можно раньше. И далее проектная команда корректирует процесс разработки (вплоть до концепции самого проекта) "на лету", наблюдая за реакцией пользователей.

Творчество, а не копирование

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

  • Тестирование до начала разработки.
  • Парное программирование.
  • Постоянный рефакторинг.
  • Простота разработки.
  • Коллективное владение кодом.
  • Быстрый выпуск версий.
  • Постоянная интеграция.
  • Стандарты кодирования.

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

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

Постоянный рефакторинг заключается в регулярном пересмотре того, что уже написано, уже разработано. И в постоянном его улучшении.

Простота разработки - из двух вариантов выбирается более простой и быстро реализуемый.

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

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

Сотрудничество, а не конфликтование

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

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

Спиральная модель жизненного цикла разработки ПО

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

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

- Из журнала "Компьютерра"

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

Работа с требованиями Радио Аналитик Бесплатно (free)

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

11.11.2026    86    0    Radio_Analyst    0    

1

Работа с требованиями Аналитик Бесплатно (free)

Разбираем, почему управление требованиями остается одним из ключевых факторов успеха проекта, и как ошибки на этом этапе приводят к срывам сроков, перегрузке команды и «синдрому скользящей дорожки». Показываем, как превратить сбор требований в понятный процесс: вовлекать заинтересованные стороны, использовать активное слушание, визуализацию, прототипирование и микротребования. Объясняем, как расставлять приоритеты через MoSCoW и матрицу Эйзенхауэра, визуализировать задачи в Jira на Kanban-доске и сохранять фокус даже в условиях постоянных изменений. На практическом кейсе портала кандидата показываем, как системная работа с требованиями помогает довести проект до результата и получить продукт, который не просто используют, но и любят.

28.10.2026    246    0    user1916475    1    

1

Стандарты и документация Разработчик Бесплатно (free)

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

23.10.2026    361    0    jack_nsk    0    

1

Работа с требованиями Аналитик Бесплатно (free)

ИТ-ландшафт стремительно усложняется: растет число систем и потоков данных между ними, процессы выходят за рамки платформы 1С, а требования к надежности, доступности и безопасности становятся все выше. Поэтому современному аналитику уже недостаточно быть только «переводчиком требований бизнеса» – ему нужно проектировать взаимодействие систем, координировать работу нескольких ИТ-команд и учитывать нефункциональные требования еще до передачи задачи в разработку. Разбираем, почему концептуальный дизайн интеграции входит в зону ответственности аналитика, и какие знания платформы 1С, системного дизайна, баз данных и инженерных практик помогают сократить количество итераций и быстрее находить реализуемые решения. Объясняем, на какие характеристики архитектуры следует обращать особое внимание и как развивать техническую насмотренность, не пытаясь при этом стать экспертом во всех технологиях сразу.

02.10.2026    1351    0    romandredan    26    

10

Работа с требованиями Взгляд со стороны Заказчика Работа с заинтересованными сторонами Аналитик Руководитель проекта Бесплатно (free)

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

01.10.2026    446    0    YA_826532418    0    

5

Работа с требованиями Анализ потребностей и поиск решений Внедрение изменений Бесплатно (free)

Каждый архитектор и руководитель 1С-проектов рано или поздно сталкивается с выбором: продолжать латать старую систему или снести всё до основания и заложить правильный фундамент. Что делать, если появились "золотые гвозди"? Когда система на "пластырях" не работает.

28.09.2026    364    0    nik-boss    2    

1

Работа с требованиями Оценка проекта Аналитик Руководитель проекта Бесплатно (free)

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

25.09.2026    631    0    YA_826532418    6    

5

Стандарты и документация Разработчик Аналитик Россия Бесплатно (free)

Статья посвящена практическому опыту адаптации стандартов разработки фирмы «1С» для работы с ИИ-инструментами. Показано, почему обычного пересказа стандартов недостаточно для надёжной генерации и ревью кода: при сокращении теряются условия применения, исключения, обязательность требований и контекст. Авторы описывают переход к формализованным карточкам правил, содержащим источник, условия, исключения, способ проверки, тяжесть нарушения, возможности автоматического контроля и дату сверки со стандартом. Материал будет полезен руководителям проектов 1С, архитекторам и разработчикам, которые внедряют ИИ в разработку и контроль качества. На реальных тестах показано, как структурированное представление стандартов снижает число пропущенных дефектов, ложных замечаний и потенциально опасных исправлений.

25.09.2026    455    0    Rico17    3    

1
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. KosmoSTAR 03.02.10 18:33 Сейчас в теме
Я вот только не понял одного. С таким методом трудозатраты и время на проект или заказ увеличивается, значит должен быть увеличен и бюджет проекта. А заказчик чаще всего против его увеличения. Что делать в таком случаи???
2. tango 553 03.02.10 18:49 Сейчас в теме
угумс. все хорошо, прекрасная маркиза, а кто платить будет за новые рюшечки?
самое дерьмо - это когда рук.проекта со стороны исполнителя просто прогибается "чего изволите", даже если платят за время.
www - это, может, и не заметно, а вот в учетной системе рождает чудовищ
3. fastwriter 6 29.03.10 11:34 Сейчас в теме
Экстремальное программирование - совсем не панацея, и часто на 100% не применимо именно в реальной жизни.

Например, оно требует парной разработки. То есть: один программист кодирует, а второй сидит рядом с ним все это время, читает код и, когда не согласен - поправляет его. Люди, которые пробовали - говорят, что это себя оправдывает полностью, т.к. получается гораздо меньше ошибок и код более высокого качества. Но вот вопрос: какой франчайзи пойдет на подобное? И какой клиент согласится платить в 2 раза больше за почасовую работу программистов?

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

Ну и т.д. В гугле и другие недостатки можно найти.
4. kirmancino 27.11.13 19:58 Сейчас в теме
При создании АИС такая работа создает не хаос, а пробку.
Создавать подробнейшее ТЗ возможно и нет необходимости, но рабочее ТЗ обязательно должно быть, т.к. именно к нему аппелируют Заказчик, Аналитик, Разработчик. И именно в рабочем ТЗ описаны различные опции, свойства, параметры и то как они работают надо не в ежедневных бета-версиях выяснять, а описывать заранее, оставляя возможность для расширения возможностей системы.

У дизайнеров есть фраза "Какой бриф, такой и креатив". И у нас - похожая история.
Для отправки сообщения требуется регистрация/авторизация