Прошедшая вчера встреча IT Talk натолкнула меня на интересные воспоминания. Я вспомнил предисловие к роману Джека Лондона "Сердца трёх". А точнее, заметил, что Лондон описывает в нем не только свою работу, но и современные реалии IT.
Предисловие к предисловию. Обычно процесс разработки состоит в преобразовании начальной идеи в кейсы-требования, которые потом преобразуются в код. Т.о., есть два вида работ - написание кейсов и написание кода. В последнее время существует множество мнений на тему, нужно ли написание кейсов:
- кейсы писать не надо. Нужно, чтобы кодописатели хорошо представляли идею, тогда они сразу преобразуют ее в код
- кейсы писать надо, они играют основную роль и для тестирования и для разработки
- надо писать множество детальных кейсов, отдельно для тестирования, отдельно для разработки
- кейсы писать нужно для коммуникации с заказчиком
- и т.д., и т.п.
- Technical writers
- QA, им потом это тестировать
- Бизнес аналитик, так как его прямая обязанность - разбираться в начальной идее
- Разработчики, так как они могут представить программный продукт
- Отдельный случай - когда в команде нет особого разделения на роли и идеей проникнут каждый - тогда кейсы могут писать все.
..Разделение труда - прежде всего. И вот, связавшись с могущественными газетными объединениями или с отдельными лицами, как это имело место в данном случае, - я имею в виду "Сердца трех", - они заказывают высококвалифицированным сценаристам (даже ради спасения собственной жизни не сумевшим бы написать роман) сценарий, который романисты (даже ради спасения собственной жизни не сумевшие бы написать сценарий) превращают затем в роман...Комментарий 1. Встречаются люди, которые могут писать только сценарии или только романы. Не нужно заставлять их выполнять оба вида работ.
...Итак, мы работали параллельно, каждый над своим куском. Когда я писал какую-то главу, я, естественно, не мог принимать в расчет того, что происходит в следующей или через двенадцать глав, так как я этого не знал. Не знал этого и м-р Годдард. Отсюда неизбежные последствия: нельзя сказать, чтобы повествование в "Сердцах трех" отличалось особой последовательностью, хотя, оно, безусловно, не лишено логики...Комментарий 2. И сценарист и романист работают в условиях, когда неизвестно, что будет дальше. Это нормально.
...Представьте себе мое изумление, когда я, будучи на Гавайях, вдруг получаю от м-ра Годдарда по почте из Нью-Йорка сценарий четырнадцатогоэпизода (я же в то время только еще трудился над литературной обработкой десятого эпизода) и вижу, что мой герой женат совсем не на той женщине! И в нашем распоряжении всего только один эпизод, когда можно избавиться от нее и связать моего героя узами законного брака с единственной женщиной, на которой он может и должен жениться. Как это сделано - прошу посмотреть в последней главе или пятнадцатом эпизоде. Можете не сомневаться, что м-р Годдард надоумил меня, как это сделать.Комментарий 3. Сценарий обычно опережает роман по количеству эпизодов. Задача сценариста - стараться не допускать того, чтобы новые эпизоды влияли на старые.
Комментарий 4. К сценарию нужно относится со всей серьезностью. Если вдруг нужно что-то добавить в сценарий - нужно пытаться сделать это с минимальными изменениями в уже написанном, тогда роман тоже нужно будет минимально переписывать. Т.е., написание кейсов очень сходно с написанием кода. Вместо привычного "unit тесты -> код -> рефакторинг" при написании сценария нужно придерживаться сходного "проверка требования на удовлетворение какой-то части идеи -> написание требования -> рефакторинг"
...Дело в том, что м-р Годдард - мастер по части развития действия и гений по части быстроты. Развитие действия нимало не волнует его. "Изобразить", - спокойно указывает он в авторской ремарке киноактеру. Очевидно,актер "изображает", ибо м-р Годдард тут же начинает нагромождать однодействие на другое. "Изобразить горе!" - приказывает он, или "печаль",или "гнев", или "искреннее сочувствие", или "желание убить", или "стремление покончить жизнь самоубийством". Вот и все. Так и должно быть - иначе, когда же он завершил бы работу и написал свои тысячу триста сцен?Комментарий 5. Сценарист не должен вдаваться в подробности. "Изображать" умеет романист, не надо отбирать у него хлеб.
Но можете себе представить, каково пришлось мне, несчастному, который не мог ограничиться волшебным словом "изобразить", а должен был описать - и притом весьма подробно - все те настроения и положения, которые одним росчерком пера наметил м-р Годдард! Черт побери! Диккенсу не казалось чрезмерным излишеством потратить тысячу слов на описание и возможно более тонкую обрисовку горестных переживаний того или иного из своих героев. А вот м-р Годдард говорит: "Изобразить", - и рабы киноаппарата делают все, что нужно...
Если в основе этой авантюры, именуемой "Сердца трех", лежит сотрудничество, я восхищен идеей сотрудничества. Но только - увы! - боюсь, что такого коллегу, как м-р Годдард, можно встретить не чаще, чем одного на миллион. Мы ни разу не перебросились даже словом, у нас не было ни одного спора, ни единой дискуссии. Но в таком случае я, должно быть, и сам - не коллега, а мечта! Разве я не позволил ему - без единого намека на жалобу или возражение - "изображать" все, что ему заблагорассудится, на протяжении 15 эпизодов сценария, 1300 сцен и 31000 футов пленки, а затем 111000 слов, составивших роман? И все-таки теперь, когда я кончил сей труд, я очень был бы рад, если бы не начинал его, - по одной простой причине: мне хотелось бы самому прочесть книгу и посмотреть, как она читается. А меня это очень интересует. Очень.Комментарий 6. Сотрудничество подразумевает под собой профессионализм обеих сторон. Все вышеприведенные комментарии не рассматривают случаи, когда какая-то из сторон - непрофессиональна. Как по мне, глупо пытаться собрать хор из не имеющих слуха людей.
Комментарий 7. Сценарист и романист должны быть удовлетворены результатом. Именно не работой, а результатом.
Вывод. Нужно разделять написание кейсов и код. Не нужно относится к кейсам, как к какому-нибудь окончательному продукту - они могут меняться и являются всего лишь средством на пути к достижению цели. При этом написание кейсов - не менее важная задача, чем написание кода. Эта задача должна рассматриваться со всей серьезностью, но не нужно слишком детализировать. Ну, и более общий вывод - написание кейса и написание кода нужно не само по себе, а для достижения целей проекта.