Разработка ПО как важнейшее из искусств (сразу после кино)

    Во многих источниках упоминается, что программирование — это творчество. Другие же сравнивают его со строительством. А третьи с выращиванием сада. Но в общем сходятся во мнении, что это больше похоже на искусство. А как известно, важнейшим из искусств для нас является — кино.
    Задумывались ли вы о том, насколько похожи процессы искусства кино и искусства разработки ПО (раз уж мы относим себя к творческим людям)? В обоих этих случаях результатом является произведение искусства… либо гадость, которой конечный потребитель останется не удовлетворен. Для еще большего понимания сравнения сделаем несколько шагов от фильма до приложения.
    Первый шаг. Ближайший родственник фильма — мультфильм, анимация. Но по большому счету, большинство современных фильмов являются по своей сути мультфильмами.
    Следующий шаг. Мультфильмы (особенно современные) безумно похожи на видео-игры. Им недостает интерактивности от поведения зрителя. В свою очередь, современные игры лишь чуть-чуть уступают качеству картинки мультфильмам и даже фильмам.
    И вот мы уже в разработке игр, от которых рукой подать до производства прикладных программных систем. Цели разные, а вот процесс и подход к разработке одинаков.
    Предлагаю взглянуть на процесс разработки ПО, через призму кинопроизводства. Быть может кто-то просто потешит себя сравнением и этой аллегорией, а кто-то начнет больше понимать и ценить свою роль в этом процессе.
    (Скажу сразу — не снимал и не снимался в кино, но участвовал и участвую в разработке. Это фантазия — не судите строго.)
    Итак, с чего начинается кино?… со зрителя.

    Зритель


    Ну тут всё просто: зритель — это пользователь. Есть разные контингенты пользователей и разные потребности. Кто-то хочет играть, кто-то хочет рисовать, кто-то — работать.

    Кинотеатр


    Это место, где пользователь использует продукт. В нашем случае — это компьютер или другое устройство, где установлено приложение. Чем новее оборудование — тем лучше и удобнее будет пользователю.
    И чем больше экран, тем пользователю приятнее!

    Прокатчик


    Это тот, кто доводит продукт до пользователя. В нашем случае — это может быть интегратор или продавец. Его задача — распространить как можно больше копий продукта и довести его до пользователя. Чем он расторопнее, тем эффективнее.
    Тут еще можно вписать внедренца, если продукт предназначался для единственного заказчика.

    Издатель


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

    Продюсер


    Это организатор всего процесса, от постановки идеи до доведения пользователю. Обычно, это менеджер проекта. Он представляет именно компанию разработчика, а не заказчика, так как заказчик получает продукт, а «продюсер» — деньги.
    Менеджер проекта представляет заказчика в команде разработки и представляет разработчика при общении с заказчиком. Именно «продюсер» договорился с «издателем» о создании «фильма».

    Источник сценария


    Это источник идей для сценария (книги, комиксы, сказки). В разработке — это технические требования предъявляемые заказчиком или идеи, предложенные продюсером.

    Сценарий


    Это документ, на основании которого будет происходить всё остальное действие. Это техническое задание — важный этап взаимодействия «издателя» и «продюсера». Тех задание строится на основании требований. Его готовят очень основательно, чтобы учесть все особенности, в том числе архитектурные. В «сценарий» включается перечень основных «героев», их поведение и взаимодействие. Желательно, чтобы «сценарий» не изменялся значительно в ходе работы над «фильмом», но никто от этого не застрахован.

    Главные герои


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

    Режиссер


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

    Оператор


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

    Подготовка к съемкам


    Вот тут в кинопроизводстве происходит многое: детализация сценария, разбиение на эпизоды, сцены и раскадровка, разработка и шитье костюмов, построение декораций, поиск мест съемок, создание оборудования и технологий, пробные съемки и др. То есть всё то, после которого начинается непосредственное: «Камера! Мотор!»
    По-нашему это звучит так — предпроектное исследование и создание макета системы. Один из самых важных этапов.
    «Режиссер» получает сценарий и/или готовит его сам. Затем детализирует его до «режиссерского сценария», детально прорабатывает каждое требование.
    Конечно он работает не один. У него есть куча «помощников режиссера».
    Ведущие аналитики должны изучить предметную область («историческую эпоху»), перерыть архивы и пересмотреть кучу предыдущих проектов. Всё это должно анализироваться и на выходе иметь детальное описание того как выглядит и действует «герой», а также описание всех обстоятельств в которые он попадает. В результате формируются «Эпизоды».
    Совместно с «помощниками» и «операторами» «режиссер» разбивает «эпизоды» на «сцены», где действие расписывается еще детальнее.
    В это же время, исследуются технические возможности программных платформ и выбирается наиболее подходящая (или пишется своя). Закладывается архитектура системы и интерфейсы взаимодействия компонентов. Важно, чтобы архитектура и платформа не менялась на протяжении всех последующих «съемок».
    Придумываются «спецэффекты» (технические фишки), отличающие продукт от других, представленных на рынке (надо же чем-то выделяться).
    Тут же рисуется общий дизайн и стиль интерфейса пользователя.
    Формируется макет системы, который согласовывается с заказчиком и/или менеджером проекта.

    Эпизоды, Сцены, Раскадровка


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

    Актеры, массовка, тех.персонал


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

    Съемки


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

    Монтаж, редакция, пост-продакшн


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

    Озвучка


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

    Продвижение


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

    Продолжение


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

    Итого


    Для итогового представления расскажу как «снимают кино» в нашей компании.

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

    Вот так. Удачи вам в кинопроизводстве!
    БАРС Груп
    Создаем технологии. Меняем жизнь.

    Комментарии 10

      +1
      Кэмерон, Спилберг, а кто третий?
        –1
        Питер Джексон
          0
          Джексон толстый и волосатый, а этот худой и лысый :-)
            0
            Ну не скажи, не скажи. На открытии съемок Хоббита был не так уж и полон, скорее даже худ :)
            0
            Я извиняюсь, но очень раздражают подобные ответы.
            если не знаешь или не уверен точно — не отвечай.

            Вот анекдот по ситуации

            — Василий Иваныч: Петька, приборы?
            — Петька: двести
            — Василий Иваныч: Что двести?
            — Петька: А что приборы?
            0
            а нет, это некий Джеффри Катценберг, глава DreamWorks Animation
              +1
              Кэмерон выделился, такое чувство что пришёл со своей камерой, а остальные на фоне бутафорных:)
              0
              Интересное сравнение привычного и серого (разработкой и внутренних процессов продвижения) с загадочным и таинственным (съемкой и раскруткой кино). Хотя для кого что загадочнее.
                +2
                Ну я курил и то и это, и скажу вам что да, параллели есть, но лишь отчасти.
                Мало внимания уделено работе сценариста, в кино это такой специальный человек который пишет ТЗ.
                По которому уже режиссёр (системный архитектор) снимает кино, зона ответственности режиссёра что бы из отдельных отснятых кусочков в итоге можно было сложить фильм.
                Он ставит задачи оператору постановщику, художникм постановщикам, актёрам.
                Но ИМХО оперпост это своего рода тимлид, у которого есть целая стая световиков и художников постановщиков, он с их помощью делает картинку, которая нужна режиссёру для монтажа.

                Вообще съёмочный процесс у киношников, подразумевает тотальное разделение труда. Например, оператор постановщик до камеры не дотрагивается руками, камеру водит специальный чувак камермен, фокус переводит фокуспуллер, а оснастку камеры устанавливает целая стая техников, и даже тележку с камерой, толкает жутко специальный чувак — дольщик! (А вот вы попробуйте так же плавно телегу какать, ага… )

                Это я к чему, Кино — территория профессионалов. Здесь дизайнеры не учат программистов кодить :-)
                  0
                  Такое разделение труда сложилось в профессиональном кино. И, наверняка, мало кому интересны работы операторов-любителей или экспериментальное кино кучки единомышленников полу-режиссеров, полу-ператоров, полу-актеров.

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

                  P.S. Говорят при съемке порнофильмов тоже режиссеры и сценаристы нужны

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

              Самое читаемое