Эссе о разработке игр, мышлении и книгах

Что почитать, чтобы лучше кодить?

Экспресс пост в ответ на вопрос.

Кратко: чтобы лучше кодить, надо больше кодить :-) и вдумчиво читать код.

Если чуть подробнее, то вопрос сложный и что-то посоветовать из чтения мне сложно:

  • Я уже давно не читал книг для начинающих. Те, что вспомню, могут быть устаревшими лет как 10.
  • У меня другой бэкграунд, о котором сейчас расскажу.

Я больше писал, чем читал :-D В итоге, когда я начал читать шаблоны проектирования, я подумал: «и что тут такого, я уже с этим сталкивался», когда листал совершенный код, я подумал аналогично. То есть моя практика обгоняла теорию.

Из книг я читал то, что советовали преподаватели в универе, благо было кому советовать, и то, что считал интересным. Страуструпа, например, 2 раза прочитал.

Поэтому я бы предложил читать:

  • Родную документацию по своим основным инструментам: языку, библиотекам. Их разработчики обычно стараются указывать лучшие практики.
  • Книги по мета штукам: как устроена ОС, как работают компиляторы, историю развития языков программирования, etc. Тут всё зависит от личных предпочтений, а материалы обычно общеизвестны. Например, для плюсистов я бы порекомендовал «Дизайн и эволюцию C++».
  • Заметки на технических ресурсах а-ля Хабр, нужно тренироваться выхватывать из них интересные идеи.

С книгами по мета штукам фишка в том, что приёмы «чистой работы» довольно абстрактны, они одинаковы и при написании кода функции и при проектированиии операционной системы. Книги про написание функций мало кто пишет — это не пафосно. Зато книг про разработку ОС или компилятора навалом. Тем более, в исторической перспективе читатель может самостоятельно посмотреть на успешность проекта и сравнить написанное в книге с реальным положением дел. Я так историю и учу.

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

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

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

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