войти зарегистрироваться

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

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

Суть её — переложение Концепции сайта, написанной специально для Заказчика, на тот язык, который более понятен программисту. Программист не будет внимательно читать объёмную Концепцию, ему надо потратить минимум времени на чтение, чтобы понять и реализовать свою задачу.

Я всегда отражаю в технической записке для программиста следующие моменты:
  1. Структура сайта. Только названия разделов и подразделов, чтобы программист мог создать структуру страниц и папок в системе управления контентом.
  2. Описание функциональных модулей. Я делаю его в виде таблицы, в которой первый столбик — это номер и название раздела структуры сайта, второй столбик — описание того, что будет находиться в этом разделе. Эта таблица помогает программисту понять, насколько сложный функционал предполагается на сайте и определиться с порядком его реализации.
    Например. Модуль «АЗС». Данный модуль имеет несколько полей:
    • Номер АЗС — текстовое поле
    • Адрес — текстовое поле
    • Телефон — текстовое поле
    • Фотография — выбрать файл
    • Виды топлива: 80, 92, 65, Дт, euroДТ — можно указать несколько
    • Услуги: Фасованные масла, Продукты, Запчасти, Туалет, Компрессор, Кофейный аппарат, Автомойка — можно указать несколько
    • Пластиковые карты: тут идёт список принимаемых пластиковых карт — можно указать несколько
  3. Содержание главной страницы. Программист должен знать, что ему следует вывести на главной странице.
    Например. Краткая информация о компании (плюс ссылка на страницу «О компании»), новостная лента (две последние новости, плюс ссылка «Все новости», ведущая на архив новостей), список основных разделов каталога (в виде иконки и названия раздела) и т.д.
  4. Список требуемых «ушек» («ушки» — графические ссылки, ведущие на наиболее важные страницы сайта). Программист создаст специальный модуль, который позволит выводить «ушки» на нужных страницах.
    Например. «Задай вопрос» (ведёт на страницу с формой онлайн-консультации), «Наши клиенты» (ведёт на страницу с интерактивной картой России), «Спецпредложение» (ведёт на страницу с описанием активного в данный момент спецпредложения или акции).
  5. Список счётчиков, обязательных для установки. Нужно так же прописать информацию, которая потребуется в процессе регистрации счётчиков — название проекта, описание, логин и пароль.
  6. Дальше идёт список сложных моментов, которые программист может не увидеть сразу. Чтобы не увеличивать сроки разработки тем, что программист будет переделывать уже разработанное, лучше сразу отдельно прописать все важные моменты.
    Например. На странице «Контакты» при клике на схему проезда открывается отдельное окошко, в котором вместе со схемой проезда выводится адрес офиса и контактные телефоны, а также есть кнопка «Распечатать».
©nbry.ru

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

Upd Мне, по-прежнему, интересно ваше мнение, но прежде чем писать комментарий, прочтите, пожалуйста, следующее:

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

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

Upd 2 Между прочим, помимо вот таких вот небольших технических записок для корпоративных сайтов, я писала и полноценные ТЗ для информационных порталов на 60 страниц текста. Так что данная статья написана под один конкретный случай (см. первый upd). Имейте это в виду.

комментарии (116)

  • раскрыть комментарий
  • выше — пример плохого задания для программиста ;)

    в техническом задании для программиста должно быть написано:

    Например. Модуль «АЗС». Данный модуль имеет несколько полей:

    Номер АЗС — текстовое поле, обязательное/необязательное, максимальная длина значения поля, должна быть проверка на числа, ну и т.д.
    • Про необязательные поля я бы конечно написала, если бы они в этом примере были ;) В данном случае все поля обязательные.

      Насчёт максимальной длины значения поля и проверки числа — а вы верите, что менеджеры проектов разбираются в таких тонкостях программирования? Менеджер проекта разбирается в этом, только если он сам в прошлом программист. В случае же с корпоративным сайтом менеджеру проекта совсем не обязательно иметь опыт программирования.
      • все вышеперечисленное мной не имеет никакого отношения к программированию. это типа common sense.

        • да? тогда мне надо будет изучить эти моменты подробнее…
      • Менеджер проекта просто обязан предоставить максимум инфы. Представьте такую ситуацию (исходя из вышеперечисленного). Программист сделал как сам понял (поля не обязательны и т.д.):
        Вы — А почему поле необязательно?
        Прог. — Так написано не было!
        Вы — Это само собой разумеется… А почему в телефоне можно буквы вводить?
        Прог. — Не было сказано не слова про проверки.
        Вы — А разве не понятно, что в телефоне только одни цифры?

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

        Как Вы думаете, кто виноват в обеих ситуациях? Прогер виноват только в том, что он ВЗЯЛ это «ТЗ»!
        • >Как Вы думаете, кто виноват в обеих ситуациях?
          Виноват всегда менеджер и не только в перечисленных ситуациях.

          Что касается того, что в «телефоне можно буквы вводить». Продумывать такие моменты надо по умолчанию, не важно сколько проект стоит. Но продумывать их должен программист. Если не продумал, то должен поправить после замечания менеджера.
          • У программиста может не хватить знаний, опыта, чутья, или его там еще, чтобы догадаться, каким образом обработывать и проверять введенные данные.
            К слову о том же поле для телефонного номера, в разных странах формат ввода номера разный, и даже у нас, легко могут ввести что-то вроде:
            +7 (495) 123–4567, доп. 1137

            Так что требования к ТЗ, детально, лучше заранее уточнять с заказчиком, а если заказчик не может сформулировать требования, то помочь ему с возможными вариантами, чтобы выбрать оптимальный.
          • Программист НЕ ДОЛЖЕН продумывать такие моменты. Сохранение той или иной информации с помощью форм на сайте это ТРЕБОВАНИЕ заказчика. У этой информации должны быть описанные и согласованные форамты. Программист должен продумывать максимально эффективно решить задачу, а задачу ставит тот кто программистом управляет. Не перекладывайте на программистов, то что сами должны делать.
    • насчёт длины поля вы это помоему загнули.
      Мне кажется программист всё таки человек а не парсер ТЗ, так что сам собразить сможет.
  • Не точное ТЗ. Это в общем. При таком ТЗ будет допущено много ошибок и всё равно нужно будет дорабатывать.
    1. Модуль АЗС
    а) теде текстовые поля должны иметь ограничение по кол-ву вводимых символов
    б) защита ввода дурацких знаков, если это телефон то нельзя вписать буквы
    в) выбор «Виды топлива» лагочками или мульти-списком (select)?
    Что на главной странице:
    надо приложить макет дизайна.

    про «ушки» интересно ))) но ладно.

    Список счётчиков? зачем?
    а) google analytic не хватит?
    б) пусть сайт дольше грузиться и у нас много халявной площади

    Весьма не больное ТЗ.
    • Ну вообще, программистам, с которыми я работала всегда такого ТЗ хватало. Конечно, есть ещё личное общение, ряд вопросов решается на словах. Сразу всего не предусмотришь, особенно когда проектов одновременно идёт очень много.

      Что касается ошибок и доработок, они, конечно, есть, но их становится гораааздо меньше, когда появляется такой документ.
      • В этом ТЗ много мест для вольного трактования, программисту придется додумывать задание за вас, и вы получите не совсем то, что хотелось.
        • Я использую такие ТЗ в течение двух лет, за это время не было случаев, когда программист сделал не то, что я описывала в ТЗ.
          • Если на сайте есть только странички, редактируемые через админку, то да. Или вы очень долго работаете с программистом, что понимаете друг-друга с полуслова. А вот гостевую книгу или каталог товаров одной строчкой не опишешь.
            У меня были сутуации, когда из-за слишком упрощенного ТЗ результат расходился с желанием заказчика.
            • Я же не пишу о том, что каталог товаров надо описывать одной строчкой. Я же наоборот пишу о том, что надо описывать каждый модуль как можно тщательнее.
          • Вам тупо везло. Скажу как программист работавший с разными менеджерами и разными ТЗ. Такое ТЗ как вы описали — типично. И лучше чем среднее по отрасли. Но, до уровня нормальной тех. документации оно не дотягивает порядочно.

            Простите, если у вас уже готова CMS то какие конкретно действия будет выполнять программист? Этого из ТЗ не видно. Тут может быть как натяжка верстки на систему так и доработка модулей. Или сама верстка(в маленьких конторах я работал тоже, да %) ).
            В общем.

            Из ТЗ должно быть видно что нужно сделать программисту. По каждому пункту действий должны иметься дополнительная информация. Как то:

            Натяжка верстки на систему — макет дизайна, структура разделов, источники контента, функционал каждого раздела(в минимальном виде хотя бы).
            Доработка модулей — полное описание функционала модулей(Это вообще очень широкий пункт который отправляет вас к общему ТЗ на software продукт. Там все сложнее).

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

              >структура разделов
              пункт номер 1

              >источники контента
              работа не программиста, а человека, который забивает контент

              >функционал каждого раздела
              >полное описание функционала модулей
              пункт номер 2
              и не «в минимальном виде хотя бы», а самым подробным образом
              • Первое. Программист не занимается созданием структуры и настройкой cms. ) Этим должен заниматься контент-редактор. Тут у меня вопрос… У вас CMS — своя?

                Второе. По поводу функциональных модулей либо вы в исходном топике написали бред либо сами не совсем понимаете разницу между тем как модуль должен выглядеть и тем как он должен себя вести. Буквально… Не описание формы АЗС. А описание того как будут обрабатываться данные этой формы. С какими имеющимися модулями взаимодействовать например. Вы хоть раз реализовывали например в системе работу с базой 1С или с баллинговыми системами(хотя бы 5-ю)?
                • >По поводу функциональных модулей либо вы в исходном топике написали бред либо сами не совсем понимаете разницу между тем как модуль должен выглядеть и тем как он должен себя вести.

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

                  Вы понимаете под функциональным модулем что-то другое?

                  >Вы хоть раз реализовывали например в системе работу с базой 1С или с биллинговыми системами(хотя бы 5-ю)?

                  С 1С так и не удалось поработать, биллинговые системы были. Но в случае проекта с биллинговыми системами, писалось полноценное техническое задание на 60 страниц.
                  • Я программист. И под функциональным модулем я понимаю систему, имеющую входные параметры, внутреннюю логику, и форматированный выход. Проблема в том что в вашем документе описаны исключительно выходные параметры. И по большому счету это не должно касаться программиста(исключительно с точки зрения обработки формата, безопасности, и валидации). Другой разговор если вы разрабатываете сайты построенные исключительно на имеющемся в CMS функционале. А тут мы и переходим ко второму вопросу.

                    То что вы понимаете что для проекта с нетривиальным функционалом требуется полноценное ТЗ — замечательно. Это указывает нам что вы хороший менеджер.

                    Но… Вы знаете мне кажется что этот ваш топик встречен так критично посколько большинство программистов имеют опыт в том что 99 процентов проектов имеют нетривиальный функционал. И даже больше. Тривиальный функционал должен реализовывать контент менеджер а не программист. К несчастью со стороны менеджеров слишком часто возникают ошибки, вида выдачи такой отписки в случае проекта в котором нестандартного функционала полно, или же выдача тривальных задач по набивке контента и настройке CMS программисту. ) Мне лично показалось что вы не очень понимаете для чего надо использовать программистов.

                    Поясню.
                    Такое ТЗ — хорошее. Но выдаваться оно должно не программисту. А контент менеджеру. Но программисты в фирме в наличии явно… И они нужны. Соответсвенно два вывода, либо вы выдаете такое ТЗ им в случае не стандартных проектов что ошибка, либо они занимаются не своим делом. что тоже кстати ошибка(Хотя и очень понятная… %) ).
                    • На моём опыте, контент-менеджер — это человек, который забивает на сайт контент, он не сможет разобраться с тем, как правильно настроить cms, он умеет работать только с визуальным редактором и типографом.

                      А программист — тот кто умеет настраивать cms плюс, если надо, он её по ходу несколько дорабатывает. Насколько он её сможет доработать уже зависит от опыта программиста. Но это в любом случае программист, не верстальщик и не контент-менеджер.

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

                      В случае нестандартных проектов ТЗ естественно будет другим.
                      • Что у вас за CMS такая, которую должны программисты настраивать? Установить, настроить так чтобы она сама по себе функционировала — да. Но какие модули где выводить — должен быть четкий, простой дружелюбный функционал, специально для контент-менеджеров. Задача программиста — сделать продукт под ключ, а не менять код каждый раз, когда требуется на главной выводить не две новости, а три. Такая настройка просто должна быть предусмотрена в административной панели.
                      • А на моем опыте общения с менеджерами — такой подход как у вас стандартен. И нее верен. =) Программист пишет код. И реализует задачи. Проще говоря в описанном мною выше модуле реализует функционал. Контент менеджер должен уметь настроить структуру сайта, должен уметь забить туда контент, должен уметь даже настроить шаблоны отображения… Это все в случае нормальной полностью настраиваемой cms. А дальше как я и писал два варианта. Либо нетривиальный для этой cms функционал(на память… ну например — серьезное ограничение по функциональности для определенной группы пользователей. Хотя это тоже в рамках хорошей cms настраиваемо.). Программист дорабатывает функционал. И для доработки и внедрения фич ваше ТЗ описанное выше не подходит. Я об этом и пишу… Что либо вы не понимаете функциональных обязанностей программиста либо делаете исключительно тривиальные проекты и ваш программист выполняет по факту работу контент менеджера(во что я как и писал выше — не верю. Нетривиальщина присутствует в любом проекте).

                        И на тему сайтов региональных компания и прочих корпоративных порталов… Я такие делал. Реализовывать их на «внутренней cms» — мучение. Особенно когда менеджер не понимает что не малая часть функционала — дорабатывается программистом. Именно функционала. А хороших абстрактных и полностью кустомизируемых «внутренних cms» я не видел. И вряд ли увижу потому что это слишком серьезная инвестиция для «студии средней руки».

                        Я не скажу что в каждом проекте присутствует сложный функционал… Но скажем так. До 40 тыр(по питерским ценам прошлого года) — реализуемо в рамках имеющегося(я внутреннюю cms тогда писал сам.), от 40 до 80 — стопроцентно присутсвуе сложностей которые придется дописывать. Тут ваше ТЗ не подойдет. От 80 — эффективнее покупать коммерческую CMS. Вопрос с какой категорие вы работаете в первую очередь. В каждой из них есть «корпоративные сайты».
    • a), б) — об этом должен позаботиться сам программист
      в) — программист или дизайнер интерфейсов

      • Не согласен.

        a) и б) следует полностью описать формат данных ( ОБЬЯЗАТЕЛЬНО согласовать этот формат с заказчиком), которые будут вводится, он не должен догадыватся, а особенно если имеются ввиду специфические для заказчика данные.
        в) это должен решит дизайнер (или если имеется проектировщик интерфейсов), а программист должен знать точно, каким способом этот функционал реализовывать.
  • в виду того, что как правило программинг начинается еще тогда, когда дизайна и приблизительно не видать (из которого можно ЧТО-ТО подчерпнуть что и как должно быть), то как по мне, что чем более подробно опишешь что должно быть реализовано — тем лучше, тем быстрее программист сориентируется что нужно сделать и меньше будет задавать уточняющих вопросов (аля, а нужно чтоб 1 файл загружался или к АЗС можно прикрепить несколько картинок)…

    Следует понимать, то что не описано — будет сделано на усмотрение программиста и на доделывание потом нужно будет потратить опять время. :)
    • Конечно можно начинать программирование ещё до создания дизайна, но я обычно работаю так, что этап дизайна идёт перед этапом программирования и программист приступает к своей работе только после того, как подписаны все документы по этапу создания дизайна. Т.е. когда он приступает, перед ним лежат все утверждённые макеты и данная техническая записка.

      Описывать стараюсь настолько подробно, насколько могу увидеть проект до его полной реализации.
  • Данный пример ТЗ подходит если только для простых сайтов, которые не отличаются особо сложной структурой и замыслом :)
    • Да, я как раз и написала в самом начале поста, что рассматриваю разработку корпоративного сайта, а не сложного проекта
      • Ну корпоративные сайты, имхо, разные бывают. Просто я Вас не немного не понял :)
        • Хотел сказать «немного не понял»)
  • Имхо, программист в любом случае должен ознакомиться с полной версией технического заданием. Еще лучше, если он (или его непосредственный руководитель — менеджер проекта) принимает непосредственное участие в разработке этого технического задания.
    • >> Программист не будет внимательно читать объёмную Концепцию, ему надо потратить минимум времени на чтение, чтобы понять и реализовать свою задачу.

      речь идёт, вероятно, о хоумпейджах, когда время на прочтение ТЗ одного порядка со временем реализации оного.
      • Не совсем о хоумпейджах, но написание и чтение ТЗ в данном случае действительно близко ко времени реализации. Поэтому для обычных корпоративных сайтов я полноценное ТЗ не пишу вообще.
        • Тогда «обычный корпоративный сайт» лучше назвать просто «визиткой» :)
          • Если там есть каталог продукции, то это уже не визитка.
      • Речь идет о корпоративном сайте, функционал которого реализован на 80% с помощью стандартных модулей CMS (с незначительной их коррекцией), для остального разрабатываются новые модули. В общем, разработка ведется не с нуля.
  • для этого есть software requirements specification — и не надо никаких записок :)
    правила постоения знает гугль
    • Спасибо, посмотрю подробнее, что это за штука.
      • созданию srs надо учится — это очень и очень обьемный документ из модели CMM5 — в нем прописываются мельчайшие подробности того что нужно сделать, как оно должно работать, требования к безопастности, требования к производительности и тд…

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

          PS. Лично я всегда пишу спецификацию, пусть и в сокращенном виде… пусть на 3 страницы, но обязательно.

          PPS. Это позволяет сократить время на доведение системы до кондиции, а не вылавливать пожелания заказчика, ведущие к пересмотру архитектуры, уже когда система почти сделана.
          • Модели бывают разные, товарищ просто указал куда нужно стремиться. Проблема не в том что части SRS обычно опускаются, проблема в том какие. Из знакомых мне менеджеров «студий средней руки» от силы процентов 10 помнит о том что в ТЗ нужно описывать вопросы безопасности и для корпоративных сайтов тоже. А иногда(зависит от того какой клиент и зачем студии заказ) и для промо сайтов и даже для визиток.
    • Ну в ряде случаев и простейший Vision с пояснениями может быть полезен, хотя, по сути, это уже и есть упрощенный SRS.
  • Это задание для кодера.
    Программист должен уметь решать задачи а не отрабатывать ТЗ.
    • На самом деле перед тем как писать концепцию сайта и ТЗ, есть ещё один этап — совместное обсуждение проекта, в котором участвуют и программисты. Именно они предлагают варианты решения поставленных задач. Я же, как менеджер проекта, потом описываю в концепции и ТЗ тот вариант, на котором мы остановились.

      Так что в технической записке просто инструкция по реализации проекта. Но это совсем не значит, что программист, который по ней работает, не умеет решать задачи.
    • Когда фирма маленькая, а вообще, лучше когда задачи решает руководитель, а исполняет программист.
  • Техническое задание для программиста — четкое описание функциональности продукта.
    Обычно техническое задание подготавливается менеджером проекта. Если оно неполное — разработчик вправе додумать «от себя» недостающие фрагменты.
    Таким образом, чем полнее предоставленное ТЗ — тем четче будет соответствовать реализация требованию менеджера (и, в итоге, клиента). Ваше ТЗ нечеткое.

    Тут хочется вспомнить забавную картинку: ekimoff.ru/download/job/1.jpg
    • Чем конкретно оно нечёткое? Я как раз в данном документе только этим и занимаюсь, что описываю функциональность продукта. И ничего сверх этого. У меня получается документ, в котором есть информация по каждому модулю сайта, по каждой странице, по каждой онлайн-форме.
  • «небольшая техничесКая записка»
  • говнозаписка это, а не ТЗ для программиста
    Нормальное ТЗ на простейший сайт фирмы содержит десятки страниц со схемами, таблицами, диаграммами переходов, требованием к клиентской части, тебованиями к серверной части, список необходимого ПО и много чего еще.

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

    • А зачем на сайт, в котором есть только новостная лента, фотогалерея и каталог из 15 позиций, писать десятки страниц со схемами, таблицами и диаграммами?
      • затем, что там есть «новостная лента, фотогалерея и каталог» — это раз, и всем этим надо управлять — это два
        • Новостная лента, фотогалерея и каталог — это стандартные модули. Программистам, с которыми я работаю, для их реализации не нужны десятки исписанных страниц.
          • «Стандартные» — для кого?
            Если для ваших программистов, значит они уже где-то описаны. Что может быть проще вставить готовое описание в документ? Программист, который работал с данным модулем, пропустит этот раздел при чтении, но зато документ будет полным, что поможет, например, если в будущем возникнет необходимость в поддержке сайта, особенно другим программистом, не знающим про «стандартные» модули.
        • фандорин?
  • программист должен в зубах держать Техническую Документацию изначально, потом уже ТЗ
    • Ага должен, в этом я согласен, но вот у нас практика совершенно другая, ТЗ нет вообще, хоть проект масштаба описаного здесь, хоть огромный. Максимум есть список того что должно быть, типа:
      — регистрация клиентов и работодателей
      — поиск вакансий и желающих найти работу
      — …

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

    ТЗ для программиста должно досконально описывать весь процесс взаимодействия пользователей сайта с самим сайтом.
    • У меня есть пункт №2, в котором самым подробным образом описываются функциональные модули сайта. Программист не сможет реализовать их «отсебятиной».

      Процесс взаимодействия пользователей сайта с самим сайтом также описывается в этом пункте.

      Вот «грубый« пример. Страница «Онлайн-консультация». Онлайн-форма, поля такие-то. При клике на кнопку«Отправить» пользователь получает сообщение об успешной отправке сообщения. Сообщение отправляется на email сотрудника компании, ответственного за выбранный вид услуг.
      • В этом задании отсутствует навигатор. Только навигацию по страницам можно реализовать бесчетным количеством способов, причем для определенных случаев нужно выбрать определенный способ. Не описан способ получение сообщения — он может быть модальным (во всплывающем окне), а может быть не модальным. Какой способ выберет программист при таком ТЗ? Конечно же самым плохим — модальным, так как он реализуется всего одним вызовом функции. И так везде — будет выбрал самый легкий способ реализации, а не тот, что необходим посетителям сайта.
        • Навигатор — это про мой пример или про техническую записку в целом? Если в целом — то пункт 1, это как раз и есть навигатор по сайту. Реализовать его можно одним единственным способом — тем, который описан.

          Насчёт модального и не модального способа сообщения. Если бы я описывала реальную задачу, а не просто грубый пример, и видела, что есть какой-то определённый требующийся в данном случае способ реализации, то я бы именно её и описала. Если что-то не описано, значит подразумевается стандартный для команды, с которой я работаю, вариант реализации.
          • В принципе можно в задании все конечно не описывать, но в этом случае необходим авторский надзор аналогичным тому, что архитекторы делают на стройке — регулярно смотреть что получается и исправлять косяки. Но это в том случае когда исправить косяк дешевле нежели сразу все спроектировать. И есть высокий риск, что косяк вылезет на этапе эксплуатации. Дело в том, что в цепочке проектирование-разработка-эксплуатация цена изменения на каждом этапе на порядок дороже, чем не последующем.
            • Алексей, я думаю, мы просто говорим о проектах разной сложности. Вы всё говорите правильно, но для сложных веб-проектов, а не для простых корпоративных сайтов, о которых пишу я.
      • Еще раз хочу повторить — лучшим заданием для программиста (а также для дизайнера, контент-менеджера) является полное описание пользовательского интерфейса сайта. Только в этом случае программисту ничего не остается, как аккуратно реализовать решения принятые с учетом всех заинтересованных сторон.
  • в техзадании для ПРОГРАММИСТА должна быть описана бизнес-логика сайта.

    а) кто пользуется сайтом (целевая аудитория по ролям: админ, менеджер, редактор, авторы новостей, зарегистрированный пользователь, анонимный пользователь)

    б) с какой целью им пользуются (посетитель — читает и генерирует рекламные показы, зарегистрированный вдобавок ставит оценки материалам и пишет комментарии, админ — создаёт разделы/страницы, рулит правами пользователей, менеджер — рулит рекламой, редактор — правит новости и решает, что выдавать «в эфир», авторы новостей — создают контент)

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

    г) подробное описание системных алгоритмов:
    — алгоритм набора кармы пользователями
    — алгоритм вывода постов на главную
    — оформление заказа в магазине
    — геотаргеттинг рекламных показов
    — и т.п.

    д) наверняка что-то забыл — потом дополню :)

    имея исчерпывающую информацию по этим пунктам хороший программист вам создаст такую систему, которой будет абсолютно всё равно:
    — какие в ней разделы/подразделы
    — что находится на главной
    — какая страница вообще главная
    — сколько ушек нарисует дизайнер
    — сколько счётчиков поставит менеджер
    — а также то, что на странице «Контакты» при клике на схему проезда открывается отдельное окошко, в котором вместе со схемой проезда выводится адрес офиса и контактные телефоны, а также есть кнопка «Распечатать»
    • Пункты а и б — описаны в концепции сайта, доступ к которой есть у всех членов команды, в том числе и у программиста.

      Пункты в и г — не нужны при разработке КОРПОРАТИВНОГО сайта. Какая может быть карма, комменты, анонимы, вывод постов на главную на КОРПОРАТИВНОМ сайте.

      Мне не нужна «система, которой абсолютно всё равно», у меня уже есть выбранная и отработанная система управления контентом. Теперь мне на этой cms надо просто разработать корпоративный сайт.
      • на корпоративном сайте нет предметной области и бизнес-процессов? не смешите. зато там есть ушки, да.

        по последнему предложению — увы, ваш сотрудник, которому это тз предназначается, может только тешить себя тем, что в вашей компании он называется программистом, на самом деле он или сборщик модулей в системе (на странице контактов вставь форму отправки сообщения) или же просто — контент-менеджер (создай разделы, залинкуй «ушки»)
        • >на корпоративном сайте нет предметной области и бизнес-процессов? не смешите. зато там есть ушки, да

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

          Насчёт терминов — может быть. Я называю человека, который реализует задуманный функционал сайта, программистом. Почему-то привыкла так. Возможно, тут больше подойдёт другой термин.
          • в концепции сайта надо писать концепцию: миссию сайта, его позиционирование на рынке, инновации, которые он несёт, и аудиторию, в которую метит, и т.п. (это, безусловно, важный документ для программиста и я очень рад, что у программиста есть к нему доступ)

            не стоит там описывать, что адрес электронной почты должен проверяться валидатором, а фотографии в галерею может добавлять только админ.
            • Вы под «предметной областью и бизнес-процессами» это имели в виду?
  • счётчики кстати особоважная часть. Бесспорно.
    • Счётчики — это по опыту. Если не говоришь, что счётчик должен стоять, его никто не ставит. Потом когда клиент через некоторое время спрашивает про посещаемость его сайта, то приходится что-то объяснять. А так поставили счётчики и проблемы не возникает.

      Я понимаю, что cms могла бы сама выдавать статистику посещения, но там, где работала я, она этого не умела. Поэтому был принято решение ставить сторонние счётчики.
  • Как тут все жёстко разошлись-то, прямо страшно читать некоторые описания ТЗ для программиста. Мне кажется, что многие слишком максималистки подошли к вопросу :)

    А в быту часто есть CMS-ка, фичи которой уже давно вылизаны в той или иной степени и в таком случае просто нет смысла заново формулировать то, что формулировалось в ТЗ на CMS.

    В итоге имеет смысл только diff-ы описывать, т.е. то, что явно отличается от имеющихся модулей. Тогда получится как раз примерно то, о чём написала Наталья. В её примере — как раз то самое:

    1) структура сайта
    Да, в чистой установке CMS обычно не бывает огромной структуры, так, пара страниц и админка

    2) описание нестандартных модулей
    Точно, модуль списка АЗС в стандартной поставке CMS редко встретишь. Чем детальнее, тем лучше — тут не поспоришь. Отсебятина в любом случае будет самой халявной в реализации, если лень, а иногда наоборот, мега-навёрнутой, если есть время и жутко прёт :)

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

    4) Про «ушки» — ну, тут вряд ли нужен спец.модуль, но зависит от CMS

    5) Счётчики.
    Хм, тут менеджер мог бы и сам зарегаться и дать просто уже HTML-портянку для вставки в шаблоны, а не заставлять программера регаться везде :)

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

    Короче говоря, в целом, ИМХО вполне себе бодрое рабочее ТЗ для небольшого сайта, движок для которого не нужно делать с нуля по километровым ТЗ :)
    • Уф, а то я уже так устала отбиваться ;)
      • Вы просто изначально нечётко сформулировали задачу. Специфика Вашей работы далеко неочевидна для тех, кто не работал над проектами, время работы над которыми сравнимо со временем прочтения двух страниц печатного текста :) Если бы Вы сразу написали, что задача программиста ограничивается натягиванием дизайна на CMS и её небольшой настройке, и отбиваться бы Вам не пришлось.
        • Мне казалось, под фразой «если рассматривать разработку корпоративного сайта» всем всё должно понятно…
        • Да, и ещё: очень сильно сбивает с толку термин «корпоративный сайт». Я понимаю, что в ушах клиентов эти слова звучат прекрасной музыкой, но для здешней аудитории это слишком широкий термин.
          • Корпоративный сайт — это представительство компании в Интернет. Что под этим терминам можно понимать ещё?
            • сайт, принадлежащий юридическому лицу. любой.

              как вы с лёгкостью вложили в это понятие «сайт, на котором есть только новостная лента, фотогалерея и каталог из 15 позиций» — непонятно.

              зы — microsoft.com — это корпоративный сайт?
              • >сайт, принадлежащий юридическому лицу. любой.
                это ваше определение корпоративного сайта?
                • не только моё. все сайты, зарегистрированные на юридические лица, являются корпоративными.
                  • А что поисковые системы, каталоги, социальные сети зарегистрированы не на юридические лица?
                    • Разумеется, на юридический.
                      «Корпоративный» — это юридический термин.
                      Google.com — это корпоративный сайт компании Google Inc. Когда кому-то не нравится выдача на сайте google.com, в суд подают на компанию Google, а не на Сергея Брина лично. Потому что google.com — корпоративный сайт, а не личная страничка Сергея.

                      То, что это ещё и поисковик никак не отменяет тот факт, что он корпоративный.
                      И то, что вы в статье назвали рекламные сайты (сайты-буклеты) корпоративными, никак не отменяет тот факт, что множество корпоративных сайтов содержит в себе гораздо больше типов сайтов, чем «простое представительство компании в сети».
                    • Более точным определением будет «сайт компании, решающий задачи этой кампании, не являющийся отдельным видом бизнеса».
                      У компании, в которой работает моя подруга, на корпоративном сайте некоторое количество нетривиальных внутренних сервисов. Другой пример — интерактивные рекламные кампании на корпоративном сайте. Для всего этого CMS уже мало.
        • Этим не должен заниматься программист. Елки палки, либо учите лексику либо не издевайтесь над людьми. Я верстальщицу в студии в которой работал научил выполнять такие задачи за неделю. На готовой мною написанной CMS. После этого она стала программистом?
          • Ну, автор топика предпочитает таких зверушек называть «программистами» :)
            • О чем я с ней и спорил в нескольких тредах… Но автор предпочла забить на дискусссию на хабре, а пост в ее блоге открыто говорит о том что она так ничего и не поняла =( По моему люди начинают воспринимать хабр как место где водятся исключительно тролли… И информацию отсюда не пытаться получить.
  • НЛО прилетело и опубликовало эту надпись здесь.
  • Какой ужас… А где описание интерфейса? Где описание логики обработки данных? Где границы для разработчика? Где хоть что-нибудь, что позволяет не додумывать ваш текст?

    У вас не получилось не ТЗ, а концепция, которая служит только обоснованием на постановку задачи для проектирования сервиса. Да и та — совсем без информации.

    С таким описанием программист реализует всю свою сексуальное фантазию и будет прав, потому что выгонять нужно таких писателей. Почитайте Дениса Бескова-Доронина, например.
    • Ужас, это когда статью читают невнимательно, а потом говорят «ужас».

      >А где описание интерфейса? Где описание логики обработки данных? Где границы для разработчика?
      Зачем это при разработке корпоративного сайта на готовой cms?
      • Затем, что программист сделает так ему хочется и как ему проще. Кроме того, даже очень хорошая корпоративная cms не обладает телепатическими способностями и не может знать потребностей клиента и его ЦА.

        Как по такому ТЗ можно оценить стоимость разработки? Сколько программист будет колупаться? Три часа или 20? Или корпоративному клиенту на корпоративной cms это тоже не важно?
        • По такому ТЗ очень легко оценить стоимость разработки. Потому что программист видит весь объём работы. Он видит, что ему надо настроить такой, такой и такой модули cms, а вот тут готового модуля нет, его надо делать самому или дорабатывать существующий.
          • Отлично, а теперь как ему оценить временные затраты на разработку нового модуля по такому ТЗ? У вас даже самые простейшие вещи не прописаны. Я бы изменил заголовок заметки на «концепция, как ТЗ на разработку».

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

              >Сказали, что наказали бы вас за такое неуважение к их труду.
              А вот программисты, с которыми работаю я, всегда довольны тем, что имеют всю исчерпывающую информацию по проекту. Меня больше интересует их мнение.
              • > Затраты на разработку нового модуля, как раз только и можно рассчитать, как после
                > такого ТЗ. Потому что, если модуль новый, я подробно опишу, что он должен делать и из
                > чего состоять.

                В том-то и дело, что у вас только перечень объектов указан и больше ничего. Остальное, видимо, должно придти свыше. Подумайте сами, где у вас обработка ошибок? Где пояснение, куда складываются данные? Как модуль должен себя вести после заполнения данных? Какие элементы управления модулем должны быть? Откуда извлекаются, например, «услуги»? Это справочник или фиксированный набор? Вопросов очень много… Если их все не описать, то мы рискуем деньгами компании и клиента.

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

                > А вот программисты, с которыми работаю я, всегда довольны тем, что имеют всю
                > исчерпывающую информацию по проекту. Меня больше интересует их мнение.
                На безрыбье и рак рыба. Стремитесь к лучшему и не довольствуйтесь имеющимся.
                • Я не претендую на рассказ о Настоящем Техническом Задании, я так и написала, что это даже больше «техническая записка для программиста».

                  >На безрыбье и рак рыба.
                  Вы не общались с этими людьми и не видели их работы, так что не надо никого оскорблять.

                  >В том-то и дело, что у вас только перечень объектов указан и больше ничего.
                  У меня не перечень объектов, у меня тщательное описание каждого функционального модуля сайта. Вы не вникли в суть того, о чём я писала.
                  • Записка, значит записка. А тогда какой смысл в ней? Хорошие ТЗ пишутся так, что из них довольно быстро можно получить информацию, без долгого вчитывания.

                    > так что не надо никого оскорблять.
                    Я не оскорблял никого, извиняюсь, если создалось такое впечатление.

                    > У меня не перечень объектов, у меня тщательное описание каждого
                    > функционального модуля сайта.
                    В записке, ТЗ или в концепции? Впрочем, ладно. Работайте как удобно вам и вашим рискам =)
                    • >В записке, ТЗ или в концепции?
                      В приведённой в статье технической записке, пункт номер 2.

                      У меня, благодаря моему личному принципу работы, риски сведены к минимуму.
                      • Это до того момента, пока ваша организация и клиент не подпишутся под данным документом.
                        • Клиенты подписываются не под этим документом, а под договором. Представленный выше документ — это рабочая техническая записка, которую видят только менеджер проекта и программист.
                          • То есть вы по факту не утверждаете документацию по проекту?
                            • Если в договоре прописано написание ТЗ, то оно будет являться его приложением и, соответственно, будет подписано.

                              Данная техническая записка не упоминается в договоре.
                              • То есть раз вы тут описали именно эту Записку чаще всего у вас она используется как основная часть документации по проекту? Если нет то почему вы описали именно ее? Если да, то это не правильно. В свое время я работал в совсем маленькой студии, состоящей из гендира, исполнительного, артдира-дизайнера и двух программистов. ТЗ там было больше5 чем договора раза в три. Всегда. Даже когда в договоре не была прописана статья на написание техн. документации. И эта студия имела проекты большие чем например те над которыми я работал потом в составе более крупного коллектива… =)
                      • > В приведённой в статье технической записке, пункт номер 2.
                        Это перечень, а не описание. Вы перечисляете то, что там должно быть, а не то, как оно должно работать. Или где-то существует действительно подробное описание, которое вы здесь не указываете? Тогда какой смысл в статье, если самое интересное вынесено за ее пределы?

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

                        Кроме того, у вас так и написано «список». Как на основе списка можно разрабатывать модуль ротации этих ушек? Нет ни данных, ни форматов передачи данных, ни алгоритма подстановки «ушек» с зависимостями.
  • Концепция, суть, функциональные модули :-)
  • эх, мне бы хоть такое ТЗ получать почаще, а то ведь получишь листочек с картинками от руки и пару фраз о том, что должно быть и вперед… а потом бесконечные исправления и доработки… неужели только я понимаю, что так долго нельзя работать
    рад за вас люди, что у вас все лучше!
  • всё упирается в масштабность пректа, от которой и пляшут. есть одно единое тз, которое разветвляется на дизайнерскую (визуальную) часть и программную. дальше уже идут уточнения и нюансы. вышеописанные решение автора заметки отражает неполное тз, лишь маленькую часть даже в преведённом примере. буквально на всё надо деталировка: динамика, статика, количество полей, сортирока, актуарность (актуальность) для перелистывания, фиксированные размеры, ...., etc. вот тогда это будет похоже на тз для программиста. в реале такое встречается крайне редко. поэтому в договоре (заказчик-исполнитель) пишут поэтамное создание продукта. оговариваются встречи (вербально), количество встреч, темы,… пора уже определиться, что нет на всех единой схемы. у каждого свой индивидуальный подход, так как нет программеров, которые одинаково мыслят. допускаю общие схемы работы, но не более.
  • НЛО прилетело и опубликовало эту надпись здесь.
  • в качестве написания ТЗ, я бы рекомендовал использовать www.axure.com/ — информативно, понятно всей команде, задействованной в проекте и можно показать заказчику что получиться в итоге.
  • Прочитал все комменты, но почему-то так и не нашел ссылки, на идеальное (глазами менеджера и/или программиста) ТЗ…

    По теме и по личному опыту полностью поддерживаю Наталию. Менеджер не должен разбераться во всех технологических тонкостях! На то он и менеджер, чтобы донести весь замысел, как до Клиента (в первую очередь), так и до Разработчиков, все отследить, проконтролировать, «присутствуя» на всех этапах разработки (и к слову дизайна, что тоже очень немаловажно). Лично я, в последнее время, использую axure rp pro, для проектирования интерфейсов и внтури прототипа устанавливаю основные связи между объектами. Мне так проще, и клиенту можно прототип показать и донести, как тут не раз повторялось, «бизнес-логику». Потом разработчикам тот же прототип, в купе с дизайном + пояснения по дополнительному функционалу и пожелания.
    • Я глазами программиста ссылкой высше указал на axure.
      Полностью с Вами согласен, это более удобно чем текстовое ТЗ с блоками.

      притом, спроектированный в axure прототип вполне пригоден для ТЗ, а для «тонких» моментов можно использовать комментарии.
  • Как мне видится, основная беда в том, что каждый программист хочет видеть какое-то «своё» ТЗ. Т.е. у каждого свои критерии того, как оно должно быть написано. Если под каждого подстраиваться — то это будет нерациональная трата времени, а следовательно — денег компании. И тут часто в комментах проскальзывало, что типа не написано, куда должна складываться информация после отправленной формы — в базу или в текстовый файл, например. ИМХО, в данном случае, если программер работает с какой-то конкретной CMS, то он обязан знать, куда это складывается. Если же он не привязан к какой-либо системе, то он обязан оценить, куда лучше это складывать. Как правильно кто-то заметил, программист должен думать, а не парсить ТЗ.
    • Это прекрасно. Думать это великолепно. Одна проблема. Программисты уходят и приходят. А допустим схема связанных таблиц для реализации каталога(один модуль всего то) магазина грампластинок и аудиозаписей будет каких размеров как вам кажется? И что будет с эффективностью работы следующего программиста если это нигде не будет описано кроме головы первого программиста? =) А… То есть документировать тоже должен программист. Верно? Получается что программист должен
      1. Работать с контентом. Как с отображением так и с настройками CMS.
      2. Реализовывать новый функционал.
      3. Документировать. И что сложнее создавать структуру документации.

      А теперь подумайте правильно ли это?
  • Как мне кажется — главное, то что ТЗ это документ.
    Очень часто крайним(виноватым) в срыве или провале проекта является менеджер, потому что именно он организовывает работу по всем направлением проекта:
    — отношения с заказчиком;
    — работа с программистами;
    — тестирование;
    — организация внедрения;
    и еще куча мелких деталей…

    Так вот ТЗ — документ, который (а особенно, если он подписан заказчиком) очень поможет менеджеру закончить проект, поскольку по сути является той точкой, до которой разработка ведется, т.е. является
    пределом для всяких хотелок заказчика и есть тем за что можно спросить программиста…

    И, как мне кажется, при составлении договора такой пункт как ТЗ, должен быть обьязательным.
  • Девушка… У меня есть идея. Вы тут часто ссылались на пункт 2 вашей записки и о том что в ней будет расписан функционал. До вас пытались донести мысль что ничего кроме развернутого страниц на цать пункта 2 программисту и не нужно. Напишет топик о том как вы расписываете пункт 2. Я думаю сообщество примет его с огромным удовольствием.
Только авторизованные пользователи могут оставлять комментарии. Авторизуйтесь, пожалуйста.