Написал|

О прикладной редактуре, смысле и красоте

Вавилонская формула

Как я убеждал читателя выдуманным графиком. История сразу про всё: внутреннюю рассылку Девхаба, Хабр, древний Вавилон и математику. В конце — выводы. Ведь из каждой истории можно сделать вывод.

Ситуация

В 2018 Хабр Карьера анонсировала сервис публичных оценок компаний. Сотрудники анонимно оценивают работодателя по 12 критериям, пользователи портала видят усреднённые оценки, а руководство получает обратную связь.

Как только сервис запустили, мы попросили команду поучаствовать и получили 12 отзывов — сходила примерно треть. Этого было мало для выводов, поэтому мы решили позвать всех ещё раз.

Я написал в рассылке призыв, но тексту явно не хватало картинки с пользой большего количества голосов. Нужно было показать мысль:

Больше отзывов → яснее картина происходящего → точнее курс.

Гифки и мемы не годились, хотелось чего-то шуточного, но с понятным посылом. Поэтому я решил нарисовать график роста ясности и отметить на нём текущее положение дел:

12 отзывов проясняют ситуацию только на четверть

Замысел

График задумывался как пародия на популярные бизнес-метрики. Реальной зависимости он не показывал, а просто притягивал внимание и развлекал. Расчёт был запомниться абсурдностью: некая ясность в диапазоне от 0 до 1 и очевидно ускоряющийся её рост с каждым новым голосом. Читатель посмеётся, а позже возможно вспомнит синюю полоску и невольно подумает про отзывы.

Удивлять чем-то неожиданным и запоминающееся — старый рекламный трюк. Например, ВВС США завлекают женщин на контрактную службу детёнышем транспортника C-17:

Большие стёкла кабины, короткие крылья и фюзеляж рефлекторно вызывают умиление

Реализация

Для правдоподобия и солидности я решил строить график функцией. Требовалось что-то гладкое и S-образное. Первые несколько отзывов должны были давать быстрый рост ясности. Затем рост замедлялся, а после половины голосов вновь разгонялся.

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

Натягиваем сову на глобус: Σ — ясность, N — общее количество участников, x — количество полученных оценок

Графику требовалась формула, а формуле — история, которая бы объясняла её абсурдность. Я почитал Википедию, написал фрагмент вымышленной книги «Знаменитые математические формулы» и оформил её как халтурный рип из электронной библиотеки.

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

Результат и выводы

В начале выпуска я разместил призыв с графиком. Под графиком — пояснение со сноской, а по сноске в конце выпуска дал пояснение со ссылкой на файл статьи.

В 2018 Хабр Карьера ещё была Моим Кругом

И ничего не вышло. График повеселил технарей, но никто не обратил внимание на сноску, не увидел ссылку внизу и не открыл файл со статьёй. К сожалению, я почему-то постеснялся поставить ссылку прямо под график и шутка не сработала. Но мы всё равно собрали достаточно отзывов.

Выводы из этой истории:

  • Программисты и математики понимают шутки
  • Не закапывайте то, что другие должны найти
  • Сноски читают только редакторы, юристы и авторы этих сносок
  • Не бойтесь заморачиваться, если прёт. Будет что рассказать в блоге

Приходите обсуждать ко мне Вконтакт.

Как вас подведут картинки из гугл-доков

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

UPD. В письма тоже не вставляйте.

Для начала три истории из моей практики.

Как бывает: в компании всё пишут в гугл-доках. Маркетолог готовит статью с фотографиями, публикует её в корпоративном блоге, через полгода увольняется, а ещё через год кто-то заходит в статью и видит битые ссылки. Фотки приходится искать в архиве, заново обрабатывать и заливать.

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

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

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

Гугл-док это веб-страница, которая хранит текст с оформлением и адреса картинок. Файлы картинок хранятся где-то в недрах Гугла и напрямую недоступны: их нельзя скопировать и вставить, как в Ворде.

При копировании гугл-док отдаёт в буфер обмена html-код с текстом и адресами картинок. Сами картинки в новое место не копируются, а остаются в хранилище Гугла. Визуальный редактор Мейлчимпа или блога распознаёт разметку и отображает картинки, словно они перенеслись вместе с текстом. Кажется, что всё в порядке.

Результат вставки в Мейлчимп, блог на Ghost и самописный скрипт для чистки гугл-доков. В коде выделен адрес картинки, ведущий куда-то в Гугл

Картинки остаются на месте только пока документ жив. Но если автор удалит документ за ненадобностью, его отключат от корпоративного домена Гугл Сьют или дата-центр Гугла заденет хвостом комета, документ исчезнет, а вместе с ним и картинки. Восстановить их будет невозможно.

При отключении пользователя Гугл Сьют адреса его документов протухают, даже если админ назначит документам нового владельца.

Чтобы картинки не зависели от гугл-дока, вставляйте их отдельно. Если визуальный редактор блога или базы знаний не умеет загружать и вставлять картинки при перетаскивании, придётся заливать их в облачное хранилище или публичную папку на сервере и вставлять по URL. Это хлопотно, но зато вы ничего не потеряете.

Сохраняйте исходники картинок. Давайте файлам осмысленные имена и подписывайте картинки в документе, чтобы не путаться на вёрстке.

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

Изображение и его полный адрес на сервере

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

Соблюдайте эти простые советы, и ваш редактор не будет вопить, из-за того, что в иллюстрированной инструкции трёхлетней давности вдруг пропали скриншоты.

Комментарии в ВК

Хтонического ворона в начале статьи нарисовала Ulv Vind. Его зовут Эдгар.

Что общего у веб-сервиса и звездолёта

Шутка про IT и глупые клише в современной фантастике. Кратко:

Сценаристы хотят сделать дешево и зрелищно, а получается похоже на фронтенд с открытыми библиотеками.

Кинофантастика последних лет стала точнее описывать тенденции технического прогресса. Теперь в космических кораблях будущего все глобальные проблемы решаются на высоком системном уровне: переключениями светящихся проводов, спортивным хаком ядра ОС и прочими впрысками макгаффина в консоль реактора.

Энсин Тилли спасает Дискавери

Энсин Тилли спасает Дискавери с закрытыми глазами

Глупостей хватает в любой космоопере, приведу три примера на мотив свежего Стартрека.

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

— Я знаю, что делать! Переключим дефрижератор на амрижератор по обводному контуру и инвертируем тахионную центрифугу!

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

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

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

Бип и Буп нашли задачу по силам

Бип и Буп нашли задачу по силам

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

К сожалению, пока в такое будущее довольно легко поверить. Современные программы становятся примитивнее по функциям, но сложнее и запутаннее внутри, стремясь занять всё доступные ресурсы и сетевой трафик. Сайты страдают ожирением от скриптов и подгружаемых модулей, Фотошоп задыхается от собственного веса, а многие мобильные приложения просто не работают без сети. Нет ничего цельного, всё собрано второпях из плохо подогнанных кусков и скачивается откуда-то из Малайзии. Дальше появится 6G и искусственный интеллект, который сам начнёт кодить, и мир утонет в сложных зависимостях или типа того.

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

Живите долго и процветайте!

Живите долго и процветайте!

К чему приводят ошибки валидации

У меня есть суперспособность — попадать в системные дыры и ломать процессы. Я могу заблудиться в аэропорту, переночевать в уже сданном номере, на мне ломается электронная очередь, глючат паркоматы и скрипты в сервисных центрах.

Расскажу одну такую историю, а в конце поделюсь выводами.

Я купил в московском магазине железяку с доставкой до двери компанией СДЭК. Железяка быстро доехала, но вручить посылку у транспортной компании просто так не получилось: Плутон стал ретроградным и я вновь попал в какой-то каскадный баг.

Мне написал менеджер магазина: посылка уже в городе, но в СДЭК не могут со мной связаться. В пропущенных было пусто, поэтому я решил проверить реквизиты в накладной СДЭК и в договоре с магазином.

Номер телефона был указан верно — форма отслеживания посылки его принимала, — но в адресе из номера дома исчезла дробь. Поменять адрес доставки на сайте СДЭК не получилось: форма отказалась принимать адрес с дробью, выдав неустранимую ошибку с расплывчатой формулировкой. «Корпус» и «корп.» вместо дроби тоже не помогли. В итоге форма всё же отправила данные, но изменились только валидные: дата и время доставки.

Связаться непосредственно со СДЭК не вышло. На горячей линии никто не отвечал, виджет онлайн-звонка два раза подряд выдал маркетинговой чепухи, сослался на занятость операторов и закрылся. Форма заказа обратного звонка попросила обязательные имя, телефон, город, тему запроса и номер договора. Затем она сломалась и перестала показывать города после буквы «б». Я выбрал Абакан, но мне всё равно никто не перезвонил. Не особо надеясь на ответ, я написал СДЭК в ВК-сообщество.

Скрин от 11 мая. Если не актуально, можно и не читать

Решил действовать через магазин. Менеджер оперативно связался со СДЭК, но выяснил только, что курьер приезжал, не дозвонился и доставку перенесли на завтра. Адрес в СДЭК не исправили, сказав, что курьер всё уточнит перед поездкой. Но ему никто ничего не сказал, поэтому сначала курьер попробовал сдать посылку по неверному адресу.

Транспортные компании требуют предъявлять паспорт, но курьеры часто отдают посылки без проверки документов. Это логично: какая разница, кто заберёт груз, если адрес правильный. Теоретически, на первом адресе без дроби могли оказаться ушлые шутники и мне пришлось бы нудно бодаться вначале со СДЭК, а потом и с магазином.

Выводы

Как избежать каскадной жести.

  1. Типовые сообщения для ошибок — зло. Хорошо подсказывать пользователю, что он делает не так. Например, в каком формате следует вводить адрес, если некому научить форму парсить эти данные самостоятельно.
  2. Если отваливается справочник городов, нужно давать пользователю указывать город произвольно. Выпадающий список должен показывать, что он сломан, данные не загружены и следует попробовать позже.
  3. На выходные и праздники стоит менять скрипт автоответчика, чтобы пользователь не ждал ответа. Робот не должен просто обрывать звонок, если операторы долго не отвечают, а подсказывать альтернативные способы связи.
  4. Чтобы сервис работал, компании нужно сервисное мышление, а не сервисные ценности.
  5. Клиентским сервисам лучше совсем не принимать сообщения через ВКонтакт, чем отвечать через трое суток.
  6. Формальная вежливость лучшее, чем безразличие. Хорошо доводить любой диалог до логического конца, это оставляет положительное впечатление.

Upd. Комменты закрыты из-за спама, приходите в ВК-пост.

Ошибки и задачи с известным решением

Ошибаться неприятно. Провалил собеседование, заблудился в аэропорту, выскочили красные буквы в программе — чувствуешь стыд и досаду. Кажется, что всё можно было сделать правильно, если быть чуть лучше.

Одна из возможных причин такой реакции — убеждение в том, что у каждой задачи есть правильное решение и любой ошибки можно избежать.

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

Учебные и игровые задачи предусматривают решение.

Более того, подразумевается, что учебные и игровые задачи рассчитаны на некий усреднённый уровень интеллекта. Отсюда негативные оценки при неудаче: ошибся → дурак.

Задачи реального мира устроены иначе. Их никто не составляет с учётом наших способностей, а конечный результат мы формулируем сами. Но наше мышление субъективно и стереотипно, а знания ограниченны. Мы видим только свои действия и не осознаём бесчисленного количества других факторов, влияющих на результат.

Реальные задачи могут вообще не иметь решений по независящим от нас причинам.

Вас могут не взять на работу просто потому, что вакансию уже закрыли, а собеседование не успели отменить. В Токио нельзя приехать на поезде из Москвы. В машине может что-то сломаться от износа, даже если вы регулярно ездили в сервис.

Результат не совпадает с ожидаемым не только потому, что вы плохо подготовились. Возможно, вы решаете не ту задачу не тем методом, вам не хватает знаний, они неверны или обстоятельства успели измениться. Такие ошибки никак вас не характеризуют, это просто обратная связь.

В реальном мире ошибки неизбежны, а полный контроль недостижим.

Раз исключить ошибки не выйдет, стоит изменить к ним отношение. Чтобы не чувствовать каждый раз досаду и стыд, нужно отказаться от попыток всё контролировать и действовать гибко:

  1. Стараться находить ошибки вовремя
  2. Оперативно исправлять, что получится
  3. Научиться оценивать последствия
  4. Разбирать причины и степень своего влияния на ситуацию
  5. Исключать повторение уже известных

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

upd. Я устал чистить комменты от спама, поэтому они закрыты. Приходите в комментарии под ВК-постом :)

Вредные советы начинающим фантастам

Фантастика — жанр мечтателей и романтиков. Мы любим фантастику за смелый полёт мысли, отказ от скучных условностей и яркие образы. В фантастике сила воображения побеждает ограничения реальности.

Картинка Ulv Vind

Главная задача фантаста — увлечь читателя и освободить его воображение через переживание необычайного. Чтобы добиться этого эффекта, автору не обязательно обладать парадоксальным мышлением и невероятно богатой фантазией. Достаточно следовать трём простым советам:

  1. Вводите новые сущности и понятия
  2. Постоянно увеличивайте масштаб происходящего
  3. Будьте непредсказуемы

Далее мы разберём каждый совет подробнее, а потом посмотрим, как они работают в комплексе на примере нарочито упоротой истории.

Советы будут про научную фантастику, но сработают и для любой другой.

Вводите новые сущности и понятия

Фантастическое произведение немыслимо без необычайного. Чтобы насытить мир произведения яркими деталями и погрузить читателя в историю, регулярно упоминайте предметы, явления и технологии, не существующие в реальном мире.

Объяснять логику и принцип действия фантастических штук не обязательно. Главное — подобрать хорошее название, которое подтолкнёт воображение читателя в нужную сторону.

Первый способ. Возьмите любое привычное слово и напишите его с заглавной. У вас сразу появится понятие с таинственным значением, к которому читатель невольно подберёт ассоциации:

Комната, Яйцо, Дверь, Дрель, Колодец

Второй способ. Подберите звучное сочетание научного термина и интуитивно понятного существительного:

Квантовый маятник, Темпоральный колодец, Квазарный дворец, Тахионный двигатель, Плазмоидный контейнер, Лазерный поглотитель, Корпускулярный карман, Солярная гвардия

Слова можно слеплять, менять местами и ролями:

Тета-счёт, Фотонопланер, Квазиклон, Контейнерная плазма, Хроно-конвейер, Ноль-гравитон, Багровый планетоид

Хорошо работают приставки гига, мега, мета, гипер, транс. Но злоупотреблять ими не стоит. Если переборщить, повествование уйдёт в откровенный абсурд и читатель перестанет вам верить.

Ваше мегапреосвященство! Гигалёт метагвардии вышел из гиперпространства сразу за танс-туманностью, они готовят мегабластерные био-торпеды!

Следите за тем, чтобы мозгу было за что зацепиться. Если создавать понятия только из научных слов, получается абстрактный шум и воображение не подключается:

Амбидекстральный трансфокатор, гигерциальный плазмотрон, сингулярный бифуркатор

Увеличивайте масштаб

Чтобы история развивалась, на каждом сюжетном повороте сталкивайте героев со всё более масштабными проблемами, врагами и событиями. Так вам не придётся продумывать комплексную связь событий и их следствий, динамику создаст постоянно растущая грандиозность происходящего.

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

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

Герой побеждает лень и встаёт с дивана → спорит с робо-вахтёром → ругается с начальником → убегает от психо-байкеров → знакомится с тайным обществом → получает задание от галактической корпорации → попадает в плен к межгалактическим пиратам и побеждает их главаря → находит Золотое Сердце и с его помощью сжигает Звёздного Пожирателя → в его останках находит Бур Судьбы и пробивает пространство и время, останавливая великого Мегабога Тьмы от разрушения Вселенной в очередном цикле Предначертанности.

Будьте непредсказуемы, нарушайте правила

Вымышленному миру нужны правила, чтобы происходящее было непротиворечивым и читатель охотнее за ним следил. Опираясь на понимание правил, читатель прогнозирует развитие сюжета и получает удовольствие от подтверждения догадок.

Если правил в повествовании нет, история превращается в кашу и читателю становится скучно. Если правила слишком строгие, история развивается предсказуемо и читатель опять скучает.

Чтобы читателю было интересно, вводите правила и нарушайте их в критических точках сюжета, подтверждая догадки и удивляя поворотами:

Гипердвигатель не может совершать каскад прыжков — не хватает мощности. Но если подключить метакристалл по обводным контурам, энергии хватит с лихвой даже на путешествие во времени.

Психопроекция не может двигать предметы, но при сильных эмоциях фантом становится осязаем.

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

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

Комплексный пример

Дик Янгус — простой телеклерк нижних уровней колодезного мегамуравейника. Однажды он встречает в голобаре загадочную аристократку с Верхних уровней. Она целует его и молча уходит, а по пути домой Дика ловят клоны-наёмники и требуют отдать им Ключ. На наёмников нападают полицейские дроиды-свежеватели, посланные самим королём муравейника Ультралом. Дику удаётся бежать, он попадает на нижние подуровни к банде ксено-мутантов.

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

На связь с Диком выходит таинственная аристократка, которая объясняет, что он — тайный клоно-сын самого Планетарного Владыки, которого сделало тайное общество, чтобы посадить на трон марионетку. Но сопротивление похитило и спрятало клона, узнав, что Владыка — носитель редкого инфо-гена. Именно по этой причине в теле Дика прижился наномеханический ключ к древним артефактам, который она передала ему вместе с поцелуем. Теперь политика отошла на второй план. Дик должен открыть Скрытое Хранилище и спасти планету. Если этого не сделать, вспышка некроэнергии пробудит Жнеца — чудовищную некромашину из Антивселенной, что замаскирована голограммой под одну из Бледных лун.

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

Дик открывает Хранилище и сливается с Квантомозгом — разумной машиной Древних, которая является планетой-инкубатором инфо-генов. Дик запечатывает города-колодцы и спасает миллиарды, но поверхность становится смертельно ядовитой на тысячи лет. Это оказывается частью плана Владыки, который всё это время поклонялся Жнецу. Массовые бунты и вопль Владыки разбудил его, и теперь людям некуда бежать от телепортирующихся из Жнеца кибер-локустов. Их жизненную энергию поглотит некропризма, которая откроет портал в Антивселенную.

Жнеца защищает пустотное Ноль-поле, не пропускающее ни один вид энергии. Дик использует новоприобретённые силы и через одного из кибер-локустов проникает в квазисознание Жнеца. С помощью техно-медитации Дик побеждает его тета-проекции и видит сто миллионов спящих Жнецов, раскиданных по всей галактике. Там же он находит координаты темпоральной складки, в которой спрятан Квазарный дворец Пустотного короля — богосущества, создавшего Жнецов. Но Король оказывается всего лишь рабом Абсолютного Ужаса — посланника Тьмы из Антивселенной.

Конец первой части.

Я бы написал и вторую, но, похоже, цикл Предначертанности — мой предел, а повторяться несолидно. Буду рад предложениям в комментариях :3

UPD. Возможно, концовка показалась вам чересчур упоротой, но это вы не пробовали читать цикл Фреда Саберхагена «Берсеркер» про разумные машины-убийцы из глубокого космоса :3

Отбрасывать здравый смысл и не скатываться в убогий абсурд — редкий талант. Получается у Алехандро Ходоровски и авторов манги Гуррен-Лаганн.

Рассказ о ласке-авиаторе

Написал короткий рассказ для художницы Ulv vind. Она участвует в марафоне Inktober — каждый октябрь рисует по картинке в день, а я помогаю придумывать подписи в меру сил и фантазии.

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

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

Мы работаем параллельно, обмениваясь идеями и набросками. На рассказ у меня есть примерно три часа, но ключевые идеи нужны побыстрее, чтобы согласовать критичные детали на этапе карандашных эскизов. Когда Ulv возьмется за тушь, будет поздно.

Черновой скетч. Очки сварщика обрезают боковое зрение и пилоты ими не пользуются

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

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

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

Герой. Ласка — маленькое хищное животное из семейства куньих. Это смелый и агрессивный зверек, который не боится человека и крупных хищных птиц. Ласка противоречива: истребляет мышей и домашнюю птицу, вредит лошадям и приносит удачу в дом.

Из-за разбойничьего характера ласки часто становятся злодеями в кино и литературе, но в фольклоре и приметах их роль больше положительна. В ингушской мифологии нахожу трикстера Боткий Ширтку — ласку, которая живёт сама по себе и покровительствует людям, даже когда они ей вредят. Там же — легенду, как ласку проглотил коршун, но она прогрызла его грудь и погибла, упав с высоты.

В результате имеем: ловкое и бесстрашное животное, которое плохо приручается, живёт само по себе, разбойничает, попутно истребляя грызунов, за что его почитают.

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

Образ немецкого аса прочно вошел в культурный код. Можно сказать, что Рихтгофен — имя нарицательное

Первая мировая война — последняя война рыцарей на закате эпохи чести и доблести. Противника ещё можно разглядеть в лицо, но новые виды оружия требуют новых способов ведения войны. Многое приходится придумывать на ходу, экспериментировать и рисковать. Это время первооткрывателей — авантюристов, изобретателей и смельчаков.

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

Про Барона и молодость авиации можно говорить долго, подведём итог:

Наш авиатор будет аристократом, легендарным героем и гениальным летчиком-истребителем.

В честь немецкого аса ласка получает имя Манфред и фамилию Вайзель, от английского weasel в звучании на немецкий манер. Герой готов.

Скетч с уточнением деталей. Очки уже правильные, от шелкового шарфа решаем отказаться: у ласки есть мех, шею натереть сложно. А чтобы не затирать шерсть, хватит платка

Сюжет — череда событий, которые раскрывают замысел рассказа и образ героя. Для формирования этих событий нужен конфликт — внешние или внутренние противоречия. Герой преодолевает трудности, показывает себя и мир вокруг, через что раскрывает заложенный автором смысл.

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

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

Я люблю, когда герой сам создаёт причины своих невзгод. Поэтому меняю несправедливость на идеализм героя. Убеждения толкают его на конфликт с могущественными силами, отчего он наживает врагов. Но в то же время герой проявляет исключительные качества, за что его уважают.

Образ борьбы ласки с коршуном наводит на мысль о бое с превосходящим противником. Будет глупо, если он победит в одиночку, но его поступок вполне может создать переломный момент. Мысль о подвиге меня вдохновляет и я перехожу к обстановке и деталям.

Чистовой скетч. Ласка оказывается в салуне. Решаем повесить на стену авиационный винт, надеть перчатку на левую лапу и добавить старую царапину на подбородок

Мир нашего ласки-авиатора — умеренный дизельпанк с антропоморфными животными, в котором процветает воздухоплавание. Винтомоторная авиация сформировалась, но ещё молода. Чтобы подчеркнуть важность воздушного транспорта, значительную часть континента будут покрывать полупустыни и степи. Фронтир уже завоёван, но толком не обжит. Всё это, плюс образ набегов на курятники, толкает к решению сделать ласку воздушным пиратом.

Пират-джентльмен романтичен по определению, воздушный пират на биплане — романтичен запредельно.

Герою нужны враги. Ласки охотятся на мышей, но плохо справляются с серыми крысами. Значит, родине героя угрожают крысиные полчища: серые шинели, стальные машины, дисциплина и имперский дух.

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

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

Тут меня накрывает волной, детали со щелчком встают на место, образуют связи и следствия, история обрастает плотью. Остаётся несколько раз вычитать, отполировать и чуть сократить. Ulv присылает готовую картинку и получается вот что:

Повесть о Небесном Охотнике

Да что вы знаете о Небесном Охотнике, ползуны! Думаете, он просто везучий пират? Как бы не так. Манфред фон Вайзель был истинным аристократом, гениальным авиатором и отчаянным авантюристом. Земные обычаи меня не касаются, говаривал он, а в небе прав тот, кто выше летает.

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

Но как бы высоко ни летал Манфред, он никогда не забывал о Родине. Когда началась война с Крысарской Империей, думаете, он отсиделся в горах? О, нет! Он в тот же день отправился на фронт. Успеете повесить, бросил он трибуналу, сперва перебьём всех серомордых. Три года он гонял крысюков от Восточного разлома до Великого предела. Даже асы Стальной Стаи уважали Манфреда! В сражении над Ивовым полем он бился против пятерых, ему пробило ноги и лёгкое, мотор загорелся… и что тогда сделал Манфред? Пролетел сквозь цеппелин Великая Крысария! Потеряв флагман, крысарцы отступили, а через два месяца и война кончилась.

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

Оригинальный пост в ВК

Благодарности

Людмиле Сарычевой — за доступные объяснения принципов драматургии.

Ильдару “Lt. Ivi” Валишину — за книги Артура Переса Реверте и историю о пионерах авиации.

Художнице Ulv Vind — за вдохновение, мотивацию и исходники.

Данису Мулюкову — за идею джазовой песенки в кабаре:

Манфред, Манфред, был пиратом Манфред.
Манфред, Манфред, высоко летал!

Шаблон инвойса в гугл-таблицах

Переделал шаблон инвойса в гугл-таблицах. У меня периодически бывают такие небольшие задачи, часа на полтора, когда надо что-нибудь без фанатизма причесать средствами встроенных редакторов. Такие задачи интересны ограничениями и очевидным результатом: было неряшливо, стало красиво :3

Задача: улучшить стандартный шаблон от внешней бухгалтерии. Документ сделать так же в гугл-таблицах, русский текст оставить для контролирующих органов, упор сделать на английский — инвойс предназначается для иностранных заказчиков.

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

Исходный шаблон на печати и в сетке:

Основная проблема: не понятно куда смотреть, структура документа сразу не считывается, некрасиво дублируются номер и суммы, а под таблицей торчит избыточная и громоздкая строка с итогами. Всё это выглядит безлико, сложно и скучно. Особенно таблица с банковскими реквизитами.

Для начала подберём шрифт, продумаем набор колонок и добавим логотип.

По брендбуку самый близкий шрифт — Verdana. Он есть у всех, у него красивый рисунок и нормальная кириллица. В оригинале был Arial 8pt, Verdana сделаем 9pt, чтоб было крупнее и легче читалось.

Для красоты и порядка шаблону нужно подобие модульной сетки. Оставим по краям пустые строки и столбцы для полей, накидаем таблицу с перечнем и добавим столбцов в середине для выравнивания. Объединять ячейки проще, чем вставлять новые, поэтому пусть будут лишние.

Объединяем ячейки в левом углу и вставляем логотип в режиме заполнения. Изображение автоматически займёт всё доступное пространство и нам не придётся маяться с его размерами при изменении ширины столбцов или строк.

Чтобы сделать акцент на латинице, выделим её жирным начертанием, как в оригинале. Английские и русские надписи в одной строке разделим слешем, а в столбик напишем без слеша. Сэкономим пространство, повысим удобство чтения и подчеркнём иерархию.

Банковские реквизиты перенесём вниз, предполагая, что они потребуются читателю после ознакомления с составом услуг и суммой. Валюту добавим в сразу ячейки через формат чисел, а дисклеймер поставим на плашку с серым фоном. Так мы объединим два абзаца в самостоятельный блок и отделим банковские реквизиты от итогов таблицы.

Оценить результат на экране сложно, поэтому периодически распечатываем получившееся и сравниваем:

Оригинал и промежуточные варианты. Сложная строка итогов всё ещё на месте

Побеждает вариант в одну колонку без подчёркиваний и заливок редактируемых ячеек.

Совет. Чтобы не окрашивать сетку в белый цвет, отключите её отображение в диалоге настройки печати. Снимите галочку в пункте Форматирование → Показать линии сетки и перейдите на следующий экран. Документ запомнит настройки.

Результат и оригинал:

Остаётся проблема с датой документа. Если указывать дату в американском формате месяц-день-год, до 13 числа возможна путаница. Например, 5.10.2019 и 10-5-2019. Чтобы не путать, даты можно писать через слеш в американском и международном английском форматах:

10-5-2019 / 5-10-2019.

Не так элегантно, но логика сохраняется.

Как преодолеть писательский ступор

У меня часто бывает, что нужно что-то написать, а слова не идут. Вроде задача простая, о чем сказать примерно понятно, сырьё собрано, а текст не пишется. Такое состояние называется писательским ступором.

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

Причины ступора

Чтобы преодолевать ступор системно, разберемся в том, что его вызывает и как он развивается. По моим наблюдениям, ступор возникает, когда я:

  • устал;
  • раздражен;
  • страдаю перфекционизмом;
  • не до конца понимаю, что хочу сказать.

Усталость. С усталостью всё понятно: много работал, не выспался, что-то отвлекает и истощается ресурс внимания.

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

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

Иногда я по полчаса сижу над кривой фразой, которую и оставить нельзя, и переписать не получается. Можно, конечно, уговорить себя оставить так и потом доделать. Но мысль о неудачной фразе будет зудеть и отвлекать от остального. Если фраза — дрянь, то и весь текст тоже, силы расходуются впустую. Гнев → вина → стресс → прокрастинация → горячие коубы.

Нехватка понимания — самая коварная причина, её бывает тяжело отрефлексировать. Общее правило такое: если вы не знаете с чего начать или не можете дописать начатое, скорее всего, вы не до конца поняли, что именно хотите сообщить, или у вас не хватает информации.

Обычно в таких случаях я прокрастинирую или бесцельно смотрю на текст, пытаясь найти в нём проблему. Но часто проблема не в тексте, а в том, чего в тексте нет.

Мне очень нравится эта мысль, поэтому ещё раз, в афористичном ключе:

Часто проблема не в тексте, а в том, чего в нём нет

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

Методы борьбы со ступором

Устали — отдохните. Можно отвлечься, поесть кураги, сходить в парк или поспать. Если полноценно отдыхать некогда, поможет 20 минут сна или частые перерывы без переключения на другие задачи.

Управляйте эмоциями мягко. Работать через силу в раздраженном состоянии тяжело. Раздраженность похожа на приступ перфекционизма, но в её источнике простые эмоции, которые можно отрефлексировать. Помогает дисциплина и мотивация. Хорошо начать с чего-то простого, разбить крупную задачу на мелкие, переключить внимание с общего на частное или наоборот. Главное — не воевать с эмоциями, а мягко вернуть внимание к работе.

Как-то у меня не получались посты в соцсети. Задача казалась глупой, а усилия напрасными. Чтобы переключить внимание, я решил продумать типовую структуру поста. Потом собрал сырой материал, написал пробный пост, переписал его три раза, вошел в поток и дописал остальные.

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

Если философия не помогает, используйте уловки. Разбивайте задачи, меняйте инструмент и обстановку, переключайте внимание с частного на общее. Не старайтесь идти по формальному плану, начните с самого простого. Например, в письме про повышение тарифов так и напишите: «Никодим, у нас повышаются тарифы. Commerce, bitch!» Позже вернётесь и перепишите, если маркетологи не пропустят.

Работайте со смыслом. Складно составить слова может и нейронка на открытых библиотеках. Когда мы пишем, мы создаём порядок из хаоса: собираем и систематизируем знания, расставляем акценты, подбираем примеры. Чтобы написать, нужно понять материал и задачу.

Когда не хватает понимания, работают два приёма.

Разберитесь в сути. Сформулируйте мысль тезисно, выпишите основные моменты в столбик, напишите своими словами. Так вы выявите пробелы в знаниях и у вас на месте пустоты появится черновик, который можно расширить, переписать и реструктурировать.

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

Изучите всё и отвлекитесь. Пробегитесь по черновикам, если они есть, и идите в парк, поспите, займитесь чем-то другим. Мозг продолжит работать над задачей в фоновом режиме.

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

Выводы

  1. Писательский ступор возникает из-за усталости, негативных эмоций, перфекционизма и нехватки понимания.
  2. Все эти причины, как правило, вызывают прокрастинацию, но ею не исчерпываются. Учитесь слушать себя и находить корень проблемы.
  3. Просто отмахнуться от перфекционизма не получится. Если вам кажется, что вы написали плохо — вам не кажется. Скорее всего, вы устали или исчерпали текущие возможности. Перепишите, смиритесь или запланируйте вторую редакцию.
  4. Погружайтесь в материал и задачу, пока не достигнете полной ясности. Составьте план и распишите тезисы. Если это не поможет, переключитесь на задачу попроще.

Форма обратной связи

Написал призыв к действию для формы обратной связи Девхаба и решил призывом не ограничиваться, а сочинить весь диалог пользователя с feedback-формой мечты. Расскажу, как бы она могла себя вести и что уметь, а потом попробую объяснить, почему такую сложно сделать.

Начнём с философии. Обратная связь — один из шагов знакомства пользователя с компанией. Сначала он узнаёт о компании в социальных сетях или находит в поиске, смотрит сайт, а потом нажимает кнопку обратной связи. Выскакивает окошко с формой и начинается диалог.

Выбор способа общения с пользователем зависит от задач сайта. Для срочных и быстрых вопросов пользователю удобнее заказать звонок или открыть чат с оператором, но нужно, чтобы кто-то дежурил на линии. Форма обратной связи работает как почта, просто с ней удобнее: не нужно копировать адрес, открывать почтовый сервис и нажимать лишние кнопки.

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

Взаимодействие с формой состоит из четырёх этапов:

  1. Пользователь замечает кнопку обратной связи и решает посмотреть, что там.
  2. Страница проматывается на форму или открывается модальное окошко. Пользователь читает-заполняет или уходит с формы и дальше ничего не происходит.
  3. Форма отправляет сообщение.
  4. Пользователь читает подтверждение об отправке, диалог завершается.

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

Я предпочитаю формы в модальных окнах: они понятно переключают внимание, не мешают на страницах не про продажу, их проще закрывать щелчком за пределами окна. Поэтому дальше я пишу про формы в модальных окнах.

Элементы формы

  1. Модальное окошко с подложкой, которая затеняет страницу. Если форма большая, её можно разворачивать на весь экран с анимацией. Окошко должно влезать в экран и блокировать прокрутку страницы, чтобы после закрытия формы пользователь оказался там же, где начал диалог.
  2. Заголовок, чтобы было понятно, чего форма хочет от пользователя.
  3. Призыв к действию, объясняющий что и зачем писать, какая от этого будет польза, кто ответит и когда.
  4. Поля ввода, которых должно быть как можно меньше. Согласно модным представлениям о психической энергии, мозг охотнее выделит энергию на простое действие с понятным смыслом.
  5. Кнопка «Отправить». Неактивна, пока обязательные поля пусты.
  6. Подтверждение об отправке. Если отправка занимает полсекунды, показываем спиннер, чтобы пользователь не подумал, что всё сломалось.
  7. Крестик, закрывающий форму. Кнопка «Закрыть» не нужна, форма закрывается по крестику или клику за пределами окошка.
  8. Предупреждение со ссылкой на политику конфиденциальности. Если юрист разрешит, её можно её убрать в подвал.

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

В идеале кнопка обратной связи живёт в навигационном меню, которое сжимается или прячется при прокрутке.

Надпись на кнопке, заголовок и призыв зависят от наших ожиданий и целей. Если мы делаем сайты и предлагаем заполнить бриф, пишем на кнопке «Заполнить бриф» или «Оставить заявку». Если занимаемся разработкой и ищем проект — «Предложить проект».

Бывают случаи сложнее. Например, мы — технологический партнёр для стартапов, продаём рабочие часы специалистов, делаем всё сами или собираем инхаус-команды, консультируем, проводим бизнес-анализ. Что-то одно не напишешь, вся надежда, что пользователь заинтересуется и решит посмотреть. Вот тут-то мы ему и расскажем самое важное.

Кнопка про всё сразу на странице вымышленной компании

Вот как вся эта красота может выглядеть у компании с широким профилем:

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

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

Телефон и почта — традиционные каналы связи в деловой среде, но если целевая аудитория предпочитает мессенджеры, уместнее спрашивать логин в Телеграме/Скайпе или аккаунт ВК/ФБ.

Обязательные поля. Пока пользователь не указал почту или телефон, кнопка «Отправить» неактивна. Другие поля для первого контакта не особо важны: имя и вопрос можно узнать в разговоре. Заставляя пользователя заполнять на себя досье, мы решаем не его задачу, а свою. Не надо так.

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

Чтобы пользователь заполнил побольше, мотивируем его разумными объяснениями: укажите почту, чтобы не диктовать её по буквам, мы вышлем вам презентацию.

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

Для начала можно научить форму определять день недели и выводить корректную подпись под полем телефона:

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

Телефонный номер приводим к нужному формату после ввода, чтобы не сбивать пользователя и не мешать вставлять номер автоподстановкой или по Ctrl + V.

Поле сообщения меняет размер, чтобы пользователь видел весь текст без прокрутки. Если форма не помещается в один экран, она вытягивается целиком, без полос прокрутки внутри модального окна. Так удобнее скроллить и понятно, что внизу ещё что-то есть.

Если страница короче получившегося окна, можно скролить само окно относительно неподвижной страницы.

Ничего не мешает изложить дело обстоятельно

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

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

Фрагмент формы с недопустимым файлом

После отправки показываем подтверждение и кнопку с утвердительной формулировкой, которая закрывает окно. Я за то, чтобы подтверждение появлялось в том же модальном окне. Размер окна можно плавно менять, но окно должно оставаться тем же, чтобы не сбивать с толку.

Форма может понимать, что именно пользователь сообщил, и показывать соответствующее подтверждение. Указал почту — когда напишем, для телефона — когда ждать звонка. А если указал всё и приложил файлы, расскажем, что будет дальше.

Мы позвоним вам на этой неделе до 17:00 по Москве.

Мы позвоним вам в понедельник с 10:00 по Москве.

Мы изучим материалы и напишем вам в начале следующей недели.

А теперь немного прагматичного реализма.

Почему такую форму сложно сделать. Причины две: конечность ресурсов и ограничения движков и виджетов.

Форму нужно спроектировать, нарисовать, согласовать, сверстать, написать логику и отладить. Задач набирается на десятки часов, а экономический эффект не так уж и очевиден, чтобы срывать разработчиков с коммерческих задач. Если форма обратной связи не ваш основной инструмент продаж, вкладываться в неё стоит по остаточному принципу. Хватит и того, что форма опрятна, понятна и не требует заполнять всех полей.

Если вы не разработчик, вы упираетесь в ограничения готовых решений. Движки и Редимэг не поддерживают нестандартного поведения окон, а переписывать логику формы в движке — занятие дорогое, долгое и сомнительное.

Разработчикам остаётся отдавать допил формы в качестве испытательного задания, а остальным — ждать виджета или плагина. Но если ваша форма активно продаёт, то делать её, конечно же, стоит на все деньги.

Обращайтесь к нам ;3

2019   UX
Ctrl + ↓ Ранее
UX