Повествование — это безумный зуд, который мы все хотим почесать — если вспомнить последнюю речь, песню или стендап-выступление, которое действительно захватило ваше внимание, то, скорее всего, оно рассказывало историю. Это очень человеческое стремление мы стараемся удовлетворить в нашей команде евангелистов разработчиков здесь, в Twilio. Но, я первый признаюсь, построить повествование из кода — чертовски сложно.
Как разработчик, я хочу, чтобы презентации, которые я посещаю, были наполнены практической пользой и техническими деталями. Если вы рассказываете историю, построенную вокруг технических концепций, повествование не может быть орнаментальным или притянутым за уши. Красивые слова или сказочные примеры использования не впечатлят хакеров — ценность их времени слишком велика, чтобы тратить ее на посторонние метафоры.
Кроме того, продукты Twilio представляют собой сложную задачу для создания историй. Общая тема обеспечения связи объединяет их все, но связать Twilio Voice, SMS и Client в связную историю, которая захватит внимание занятого кодера, — это проблема, решение которой далеко не очевидно. Звонок на ваш телефон, отправка текстового сообщения и разговор в браузере — это очень разные человеческие переживания, которые существуют в основном изолированно. Можете ли вы сразу придумать один непрерывный, убедительный сценарий, который объединил бы все три?
Наконец, сам акт рассказывания истории с помощью кода невероятно сложен. Техническая аудитория — к моей вечной благодарности — очень разборчива. Какой-то шутник в красной куртке не может просто взять и наскоро написать класс для мамочки и аргумент для папочки, создавая вместе маленький объект-ребенка, и ожидать уважения разработчика. Код, написанный в этой истории, должен быть нетривиальным и поучительным, делать то, чего разработчик не сможет просто быстро найти в документации, и — прежде всего — *работать*.
Учтите все три эти проблемы, и рассказ историй через программирование покажется довольно сложным.
В общих чертах, история — это связное повествование с началом, серединой и концом. Хотя это и очень базово, такая структура быстро облегчает поиск решения. Для технической презентации началом может быть постановка проблемы — описание какой-то задачи, которая найдет отклик у аудитории. Серединой может быть написание нескольких простых решений для отдельных частей проблемы. Наконец, удовлетворительным завершением может быть объединение этого кода в работающее программное обеспечение.
Такая структура делает повествование связным, но если оставить все на уровне предыдущего абзаца, это будет серьезная скукота — наша история должна быть интересной! Независимо от того, сколько lolcats я вставлю в презентацию, никто не уйдет довольным, если мое начало, середина и конец будут скучными.
Используя описанную нами выше структуру повествования, все зависит от постановки проблемы. Если постановка проблемы захватит внимание аудитории, то и решение, скорее всего, его поддержит. Но что является проблемой, которая, вероятно, найдет отклик у широкой технической аудитории и может быть решена с помощью телефонов, браузеров и SMS?
По моему опыту, постановки проблем, которые захватывают мое внимание, — это те, в которых абсурдно сочетаются высокотехнологичные решения с совершенно несвязанными задачами. Пивные холодильники на реактивной тяге, автоматические сегментаторы грейпфрутов из Lego, пушки для пинг-понга на Arduino — мне все это нравится. Охват такого дерзкого хакерского духа в нашей постановке проблемы, несомненно, будет убедительным.
Что, если бы мы использовали *облако*, чтобы петь *караоке*?
Создание караоке-машины в облаке — это запоминающаяся тема, идеально подходящая для нашей структуры повествования, поскольку у нас есть четыре разные части для создания: микрофон, звуковая система, музыка и текст. Кроме того, они удобно совпадают со строительными блоками, из которых мы пытаемся создать историю — Twilio Voice, SMS и Client. Теперь нам просто нужно написать немного Python, который сделает это.
Для микрофона мы можем использовать телефон в кармане смелого члена аудитории, быстро написав TwiML Voice-приложение, которое поместит этого члена аудитории в конференцию.
Для звуковой системы мы можем использовать динамики моего презентационного ноутбука, позвонив в ту же конференцию с помощью Twilio Client и браузера.
Музыку мы можем доставить в конференцию, написав запрос к REST API, чтобы позвонить на тот же номер, что и у члена аудитории, и выполнить команду.
Наконец, текст песни мы можем отправлять построчно через SMS на телефон певца из текстового файла.
Объединив все это с несколькими плохими шутками, мы внезапно начнем создавать качественную историю, которую сможем рассказать. Мы не только используем все три строительных блока, с которых хотели начать, но и полностью их задействуем, демонстрируя входящие и исходящие функции Twilio. С приведенными выше фрагментами кода у нас есть прочная середина нашей истории, которая ведет к полной караоке-машине — подходящему завершению для нашего повествования, управляемого кодом.
Теперь осталось только рассказать эту историю. Вот попытка такого выступления, которое я недавно дал на Philly Emerging Tech.
ETE 2012 – Rob Spectre – How to Build a Cloud-Powered Karaoke Machine from Chariot Solutions on Vimeo.
Код для презентации размещен на GitHub, как и слайды из колоды.
Сторителлинг — это решающий навык для всех публичных выступающих — мы, занимающиеся своим ремеслом в сфере технологий, не должны считать себя исключенными. Сильное повествование трудно игнорировать, и независимо от того, представляете ли вы слайды, тезисы или строки кода, любая презентация выиграет от наличия такого повествования.
Точно так же, как и эта статья в блоге, если вы построите свою презентацию с сильным началом, серединой и концом, убедительной темой и заставите их работать вместе, вы захватите внимание аудитории и — надеемся — их сердца и умы тоже.