Пишем свою книгу

в 20:36, , рубрики: boost, c++, diy или сделай сам, книги, пишем сами, Программирование, с++11, электронные книги, метки: , , , ,

imageВ данной статье я поделюсь информацией о том, как написать свою IT-книгу. Расскажу о подводных камнях, взаимодействии с издательским агентством, налоговой и банками. Процесс может немного варьироваться от издательства (и страны), но основные моменты не должны меняться.

С чего все началось

Как-то вечером, обнаружил на почте у себя письмо, которое чудом не было отправлено в спам. В письме говорилось о том, что английское издательство заинтересовалось моей активностью в Open Source проекте и предлагает написать мне книгу (на английском). Недолго думая, я согласился.

Как выяснилось, издательства стараются печатать новые книги как можно чаще, есть даже целые отделы, занимающиеся обзвоном. Должность таких спамеров звучит достаточно громко, «Author Relationship Executive». Задача такого сотрудника — найти согласного на работу, рассказать ему об условиях и перенаправить в следующий отдел.

Далее с вами работают «Commissioning Editor». Уже с этим человеком и его подчиненными идет работа по заключению контракта и написанию книги.

Контракт

image
Любой российский контракт страшно подписывать: огромное количество мелких шрифтов и звездочек, если что — никто не виноват. Дополняется все это абсолютно невменяемым юридическим языком. К счастью, агентство оказалось английским, и контракт можно было перевести (со словариком) и понять что все хорошо: если издательству вдруг не нравилась моя работа, они выплачивали аванс и оставляли право на рукопись за мной. Я обещал, что буду хорошо работать и не затяну с отправкой глав.

Гонорар

В контракте было прописано, что я буду получать 16% от чистой прибыли с продажи каждой книги. Это значит, что издательство вычтет из стоимости книги цену расходных материалов, налоги (а за границей они зачастую огромны), затраты на рекламу и поддержание серверов. Далее от полученной суммы возьмет 16%, переправит банковским платежом в Россию… где я должен буду еще заплатить налоги.

Возмущаться я начал еще до того, как посмотрел размер налогов в России. «Commissioning Editor» ответила, чтобы я поспрашивал сколько платят другие издательства. Самое большое, что было найдено — 12% от чистой прибыли, что несколько меня успокоило.

Налоги в России

Налоговое законодательство полностью осознать не получилось. При каждом прочтении получались разные суммы налога (43%, 33%, 13%). Осложнилось все тем, что в 2013 году налоговое законодательство сильно поменялось. Теперь (вроде как) нужно платить 13%, при этом можно получить налоговый вычет в размере 20% от продаж книги в первый месяц (сам еще не проверял). Подробнее надо узнавать в налоговой при получении первого гонорара.

Банки

Иностранные банки не очень-то жалуют Российские. Перевод часто идет через 8+ банков, при этом теряется где-то посередине. Еще ни один платеж мне получить не удалось — банковские менеджеры разбираются в проблеме.

Начинаем работу

Издатели предлагают писать в формате книги рецептов («Cookbook»). Каждый рецепт состоит из следующих частей:
* описание проблемы («Introduction»)
* необходимые инструменты и знания для решения данной проблемы («Getting started»)
* решение проблемы («How to do it»)
* разъяснение решения проблемы («How it works»)
* дополнительная информация («There's more»)
* ссылки («See also»)

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

image

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

В моем случае это вылилось в следующее:
Части «Introduction», «Getting started», «How it works» в основном ориентированы на начинающих. В них описаны проблемы, над которыми новички могли и не задумываться, или не знают решения. Для профессионалов предназначены секции «There's more». В них описывалось то, что не покрывается официальной документацией: часто задаваемые вопросы в списках рассылки Boost, и как решения из Boost коррелируют с новыми стандартами C++ (C++11, C++1y/C++14).

Секцию «How to do it» я старался писать как можно проще, при этом не забывая указывать на применимые в данной ситуации решения из других рецептов книги. В «See also» попадали ссылки на другие главы книги, официальную документацию, черновики стандартов (для включения этого решения в следующий стандарт C++) и мнения известных людей по этому поводу.

Время для работы

Учтите, что написание книги занимает достаточно большое время. В среднем нужен темп в 2 страницы за день. У меня это выливалось в написание набросков по дороге на/с работы (полтора часа * 2) и приведение их в должный вид на выходных (минимум полтора дня, и забудьте про майские праздники).

Графика

Издательство берет на себя обязанности по рисованию диаграмм, картинок и блок схем. Вы — автор, поэтому необходимо просто предоставить наброски рисунков. Сразу отмечу, издательство в начале сработало плохо и мне пришлось насильно выбивать из них правильные рисунки. Смотрите «Выдвигаем требования/Качаем права».

Технические рецензенты

Помимо проверки правописания есть еще технические рецензенты («technical reviewer»). Эти люди удостоверяются, что вы написали все корректно с технической точки зрения. Мне приходили дельные замечания по поводу поддержки некоторых частей стандарта C++11 компилятором GCC и указания на куски кода, потенциально непонятные пользователю.

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

Правописание

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

Выдвигаем требования/Качаем права

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

К примеру, мне ну очень не понравились те картинки, которые прислали за три недели до отправки на печать. Их не раз переделывали — издательство не было заинтересовано в провале срока.

Маркетинг

Реклама книги сейчас в полном разгаре, издательство пишет о том, что появилась новая книга по С++ и Boost на всех подконтрольных ему ресурсах. Также есть ограниченная возможность получить бесплатные экземпляры. Для этого необходимо согласиться оставить отзыв о книге (а вы думали большинство рецензий оставляются по иной причине?).

Бесплатные главы

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

Список глав для открытого доступа

  • Chapter 11: Working with the System
    • Introduction
    • Listing files in a directory
    • Erasing and creating files and directories
    • Passing data quickly from one process to another
    • Syncing interprocess communications
    • Using pointers in shared memory
    • The fastest way to read files
    • Coroutines – saving the state and postponing the execution

  • Chapter 12: Scratching the Tip of the Iceberg
    • Introduction
    • Visualizing graphs
    • Using a true random number generator
    • Using portable math functions
    • Writing test cases
    • Combining multiple test cases in one test module
    • Manipulating images

В связи с этим опрос:

Автор: antoshkka

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js