Как составить техзадание на программу (макрос)

Здравствуйте, уважаемые заказчики программ для Excel.

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

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

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

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

 

Вкратце, структура идеального техзадания выглядит так:

1) Предназначение программы - что она должна делать (1-2 предложения)

Например: Программа должна собирать данные из множества файлов Excel, расположенных в заданной папке, и формировать 2 отчёта: в форматах XLS и CSV

2) Исходные данные - примеры файлов, описание их особенностей

Например: Исходные данные - файлы Excel, расположенные в подпапках одной папки. Во вложении - архив folder.rar, содержащий примеры нескольких таких файлов, с сохранением структуры подпапок. Кроме того, нам понадобятся данные ещё из одного файла Excel - см. файл Реестр.xls во вложении. Файл Реестр состоит из нескольких листов (нам нужны будут данные только со второго листа), путь к файлу меняться не будет (в настройках программы надо иметь возможность выбирать путь к файлу РЕЕСТР, и папке с файлами XLS)
Количество файлов XLS - разное, примерно от 100 до 1500.

3) Что надо получить в результате - примеры файлов, краткое описание

Например: По нажатию одной кнопки, программа должна формировать 2 файла - см. примеры таких файлов во вложении (Результат.xls и data.csv)
Файлы должны сохраняться в той же папке, где и исходный файл Реестр.xls, имя создаваемого файла Excel должно содержать текущую дату (например, «12-10-2012 report.xls»)
Файл CSV должен быть в кодировке UTF-8 (для последующей загрузки на сайт)

4) Как всё должно работать (что откуда берется, куда подставляется, и т.д. и т.п.)

Например: при нажатии кнопки (кнопку можно расположить в файле Реестр.xls), макрос перебирает все файлы XLS в заданной папке, с первого листа каждого файла берет табличку (начиная со строки 5), и копирует данные в таблицу файла РЕЕСТР, вставляя новые данные ниже существующих. После этого строки с одинаковым артикулом (столбец 2) объединяются - при объединении строк суммируется количество (столбец 5).
Когда все данные собраны, копия листа 2 файла РЕЕСТР сохраняется в файл 12-10-2012 report.xls
Из файла 12-10-2012 report.xls создаётся файл CSV (c перестановкой столбцов, см. пример)

5) Информация по срокам, контактные данные

Например: Сроки не поджимают, на желательно сделать в течение 3-4 дней.
На все вопросы готов ответить по Скaйпу - мой ник: super_client, или через Viber / WhatsApp по номеру такому-то

Конечно, и по такому заданию мне наверняка придётся задать несколько уточняющих вопросов, - но, в целом, все понятно, что надо делать.

 

Более подробно о некоторых моментах:

Как лучше излагать задачу, чтобы она была мне понятна:

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

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

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

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

Если на выходе должен получаться файл CSV - так вы и прикрепляйте пример в CSV, а не в виде книги Excel (XLS, XLSX и т.д.)
Если надо загружать данные с сайта - обязательно укажите, с какого конкретно сайта, с каких страниц, какие именно данные с веб-страницы нужны.

Второе, что мне необходимо понять, - это какие исходные данные (файлы) меняются, а какие - остаются постоянными.

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

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

Третье - требуется разобраться, как из исходных данных получается результат

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

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

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

Что самое важное в оформлении заказа:

  1. прикрепить примеры файлов, на их примере показать, что надо сделать
  2. оставить контактную информацию (Скайп, номер сотового, номер Viber / WhatsApp)
  3. указать сумму, которую вы готовы заплатить, если программа будет полностью соответствовать вашим пожеланиям

 

Ещё несколько рекомендаций по оформлению заказа

 

PS: один из моих коллег очень удачно описал, что нужно для постановки задачи.

в постановке любой задачи должны быть понятны ответы на следующие вопросы: 1. Где находятся исходные данные, как организованы или как и в каком виде они поступают в систему 2. Что должно быть результатом работы системы (для чего все это делается, как должны выглядеть результаты) 3. Правила по которым исходные данные преобразуются в конечный результат (если в ходе обработки нужна доп. информация от оператора, должно быть понятно какие данные и каким способом должен внести оператор, если используются справочники то какие, где они есть и какова их роль в расчете) 4. Что служит толчком для запуска системы (нажата кнопка, изменились данные, открыт файл и пр.) когда есть ТОЧНЫЕ ответы по каждому из пунктов - только тогда можно что-то делать