Написал книгу по C#
6 лет назад у меня появилась мечта — написать книгу по языку программирования C#. Приключение затянулось на долгие годы и я наконец-то сдаю первый том. Здесь расскажу общий концепт, ключевые идеи и сложности с которыми столкнулся.
Как всё началось
В 2018-ом году я начал сбор денег на краудфандинге для написания своей книги по программированию на C#. Месяц я боролся как лев и мы собрали 85 000 рублей!
Радости моей не было предела.
Это было 6 лет назад, мне было 20 и я был молод и горяч и за пол года написал основную массу текста…, а потом наступил творческий кризис. За что мне очень стыдно.
Пару дней назад я собрался силами и дописал недостающие главы, привёл текст в порядок и собрал всё в единый документ и выложил бесплатно для всех.
Про краудфандинг
В те года это было модным и собрать деньги была возможность даже если у вас нет аудитории. Сейчас краудфандинг скорей мёртв чем жив.
Про что книга
Книга про программирования на C#… для новичков… построенная вокруг практики.
На самом деле это и был изначальный концепт, хотелось дать базу языка на примере практических задач при этом рассказав про паттерны и здоровое проектирование. Когда я начинал писать книгу у меня было всего 4 года коммерческого опыта, но хорошего с Code Review и толковыми наставниками. Но всё-таки книга не откровение для опытных.
Её задача дать крепкую базу для новичков. Не быть очередным справочником по синтаксису, а именно книгой которая больше про программирование чем про код.
Когда я проводил индивидуальные консультации с начинающими я обратил внимание что научить человека объявлять массивы и вызывать методы проще простого, сложней объяснить как это сплетать в большие программы и наработать навык этого.
Книга пытается провести человека через основы синтаксиса на примере решение большой задачи — написание вендингового автомата.
Начиная с объявление первой переменной мы плавно идём к техникам динамического программирования для решения сложных алгоритмических задач и подходя к этому мы будем иметь арсенал хорошего проектировщика чтобы инкапсулировать это чудовище и вывести красивые и непротиворечивые абстракции.
Абстракция
Основная идея книги в том, что код должен быть целостным, непротиворечивым и снижать сложность системы, а не наращивать. Идеи простые и крутятся в разных задач и примерах.
Очень много книги посвящено рефакторингу. Вначале я даю большой кусок кода с множеством запахов и постепенно мы его распутываем, избавляемся от дубляжа и делаем код проще и надёжней не теряя его функций.
Как по мне это самая база которая часто пропускается другими авторами.
Сложности
Изначально я писал книгу в Google Docs. Это оказалось не очень удобным и в дальнейшем я переехал на Wordpress. Да я просто развернул вордпресс и там писал книгу отдельными постами которые сгруппировал в иеерархию.
Из плюсов такого способа — это то, что можно подключить инструменты для контрибьюции, любой читатель может выделить блок текста и направить правку, что позволило исправить множество ошибок до выхода книги.
В дальнейшем я выдернул все посты обратно в Google Docs и подсветил код инструментов Code Block.
Книжный формат плохо подходит для листингов кода, точнее формат A5, не рекомендую его брать. Мне пришлось пронумеровать весь код и загрузить его на GitHub. В самой книге он не читаем к сожалению, что я хочу исправить в следующих изданиях где переверстаю страницы в широкий вид.
Итог
Опытом доволен, написание книги помогает структурировать и систематизировать свои знания. Приходится касаться того в чём ты слабо разбираешься и углублять свои знания. По некоторым главам мне приходилось перечитывать классические учебники чтобы правильно передать суть и детали.
Рекомендую попробовать каждому разработчику написать свой небольшой учебник страниц на 200 на какую-нибудь тему.
Свою книгу я в итоге собрал в PDF и бесплатно выложил у себя в телеграмме — посмотреть
После публикации мне написало несколько издательств, может даже удастся выпустить бумажную версию чтобы будет очень круто. :)