6 лет назад у меня появилась мечта - написать книгу по языку программирования C#. Приключение затянулось на долгие годы и я наконец-то сдаю первый том. Здесь расскажу общий концепт, ключевые идеи и сложности с которыми столкнулся.
Как всё началось
В 2018-ом году я начал сбор денег на краудфандинге для написания своей книги по программированию на C#. Месяц я боролся как лев и мы собрали 85 000 рублей!
Радости моей не было предела.
Это было 6 лет назад, мне было 20 и я был молод и горяч и за пол года написал основную массу текста... а потом наступил творческий кризис. За что мне очень стыдно.
Пару дней назад я собрался силами и дописал недостающие главы, привёл текст в порядок и собрал всё в единый документ и выложил бесплатно для всех.
Про краудфандинг
В те года это было модным и собрать деньги была возможность даже если у вас нет аудитории. Сейчас краудфандинг скорей мёртв чем жив.
Про что книга
Книга про программирования на C#... для новичков... построенная вокруг практики.
На самом деле это и был изначальный концепт, хотелось дать базу языка на примере практических задач при этом рассказав про паттерны и здоровое проектирование. Когда я начинал писать книгу у меня было всего 4 года коммерческого опыта но хорошего с Code Review и толковыми наставниками. Но всё-таки книга не откровение для опытных.
Её задача дать крепкую базу для новичков. Не быть очередным справочником по синтаксису а именно книгой которая больше про программирование чем про код.
Когда я проводил индивидуальные консультации с начинающими я обратил внимание что научить человека объявлять массивы и вызывать методы проще простого, сложней объяснить как это сплетать в большие программы и наработать навык этого.
Книга пытается провести человека через основы синтаксиса на примере решение большой задачи - написание вендингового автомата.
Начиная с объявление первой переменной мы плавно идём к техникам динамического программирования для решения сложных алгоритмических задач и подходя к этому мы будем иметь арсенал хорошего проектировщика чтобы инкапсулировать это чудовище и вывести красивые и непротиворечивые абстракции.
Абстракция
Основная идея книги в том, что код должен быть целостным, непротиворечивым и снижать сложность системы а не наращивать. Идеи простые и крутятся в разных задач и примерах.
Очень много книги посвящено рефакторингу. Вначале я даю большой кусок кода с множеством запахов и постепенно мы его распутываем, избавляемся от дубляжа и делаем код проще и надёжней не теряя его функций.
Как по мне это самая база которая часто пропускается другими авторами.
Сложности
Изначально я писал книгу в Google Docs. Это оказалось не очень удобным и в дальнейшем я переехал на Wordpress. Да я просто развернул вордпресс и там писал книгу отдельными постами которые сгруппировал в иеерархию.
Из плюсов такого способа - это то, что можно подключить инструменты для контрибьюции, любой читатель может выделить блок текста и направить правку, что позволило исправить множество ошибок до выхода книги.
В дальнейшем я выдернул все посты обратно в Google Docs и подсветил код инструментов Code Block.
Книжный формат плохо подходит для листингов кода, точнее формат A5, не рекомендую его брать. Мне пришлось пронумеровать весь код и загрузить его на GitHub. В самой книге он не читаем к сожалению, что я хочу исправить в следующих изданиях где переверстаю страницы в широкий вид.
Итог
Опытом доволен, написание книги помогает структурировать и систематизировать свои знания. Приходится касаться того в чём ты слабо разбираешься и углублять свои знания. По некоторым главам мне приходилось перечитывать классические учебники чтобы правильно передать суть и детали.
Рекомендую попробовать каждому разработчику написать свой небольшой учебник страниц на 200 на какую-нибудь тему.
Свою книгу я в итоге собрал в PDF и бесплатно выложил у себя в телеграмме - посмотреть
После публикации мне написало несколько издательств, может даже удастся выпустить бумажную версию, что будет очень круто. :)
Комментарии (21)
Lainhard
13.05.2024 13:58+33Это конечно не связано с книгой, возможно она даже неплоха. Но не могу относиться к автору данного поста не через призму того, что этот человек - один из виновников того, что мобильный геймдев в ж**е (хоть его вина - лишь капля в море, и скорее следствие)
Просто посмотрите какие "игры" делает студия, созданная автором поста.
https://youtube.com/shorts/iMe2_5Zxyx0
Все, готов принимать удар в карму.F1stoki
13.05.2024 13:58Только неформалов в студию берёт, и перед этим показывает кучу ютуб шортсов, чтоб конкретно так деграднули)))
NikolayTheSquid
13.05.2024 13:58+15Бабки собрал и шесть лет ноль выхлопа. Вот из-за таких как ты краудфандинг и умирает.
Danismind
13.05.2024 13:58Добрый день, а о какой версии языка идет речь и какой net core вы используете для примеров Вашей книги?
OldNileCrocodile
13.05.2024 13:58Автор не привязывается строго к технологии. Он лишь объясняет базовый синтаксис и общие концепции на языке C#. Более подробную инфу по конкретной net core Вы найдете на метаните, хотя и там мало.
https://metanit.com/sharp/
Если нужно потыкататься в конкретный метод, то идëм читать ms документацию, например
здесь описан String.Concat
https://learn.microsoft.com/ru-ru/dotnet/api/system.string.concat?view=net-8.0
Ещë есть ряд видеоуроков по WPF от Павела Шмачилина.
https://m.youtube.com/channel/UCsFuzbQ5KW_1f45unlvRQ1g
Его github, куда он выкладывает код с уроками.
https://github.com/Infarh
Danismind
13.05.2024 13:58Тогда эта книга бесполезна: во-первых с каждой новой версией языка появляется больше синтаксического сахара который очень любят.
А во-вторых если не привязываться к технологии то лучше написать выжимку из страуба , объяснить объяснить основы ооп и закончить и # не трогать.
OldNileCrocodile
13.05.2024 13:58Автор (Сакутин) имеет канал в ютубе, но ни одного крутого приëма из этой книжки Вы не найдëте, хотя автор в своих роликах иногда их показывает, но не так уж и много.
Увы.
Что насчëт Павла Шмачилина, то он опирается и на dotnet core. Можете посмотреть.
kozlov_de
13.05.2024 13:58"Однородность
Когда мы работаем на одном уровне абстракции, нам
не следует опускаться с него слишком низко или
подниматься слишком высоко. Когда мы говорим об
иерархической системе, на одном уровне иерархии
должны быть однородные сущности, и они не должны
работать со слишком низким уровнем или слишком
высоким."
Идея заинтересовала. И код.
С одной стороны тут от single responsibility (особенно если смотреть на примеры кода дальше по тексту с генерацией HTML)
С другой стороны от проектирования сверху вниз, MVP и этого вашего термина "Устойчивые промежуточные формы"Помогает эффективно распределить ментальную нагрузку как при кодировании так и при чтении кода, так как мы остаемся на одном уровне абстракции одного и того же процесса в рамках одной области ответственности.
Кажется, равномерный "спуск вниз по степени абстракции" помогает обеспечить low couple, high cohesion и в итоге помогает бороться с взрывным ростом сложности.
Соответственно, пункт "Спуск на один шаг" как реализация этого принципа хорошо расписан.
Завтра напишу более предметно, если интересно
MANAB
13.05.2024 13:58+6Такой молодой и такой опытный уже. Наверное поэтому я так бешусь с этого автора.
functyon
13.05.2024 13:58+2надеюсь, в книге описан ведь тот обширный жизненный опыт и длинный путь, который привел к написанию оной. видели мы вас.
agray
13.05.2024 13:58+6А зачем лицо на обложку? Без этого не купят?
OldNileCrocodile
13.05.2024 13:58+1Неформал. Надо было поставить какое-нибудь животное. Ту же мартышку, например, из группы Gorrillaz.
vasionok
13.05.2024 13:58А издатели нормально относятся к тому, что книга уже бесплатно доступна в пдф?
Stol-Stul
Если каждый разработчик напишет по книге, то кто их будет читать?
romaan27 Автор
Пишите для себя
GospodinKolhoznik
ChatGPT прочтет. Ему как раз обучаться на чем то надо будет. Все существующие книги и stack overflow он уже прочёл. И ему как нельзя кстати новая обучающая выборка пригодится.
OldNileCrocodile
Судя по терминам, ChatGPT уже перевëл термины в книжке (с английского).