Найти тему
Сделай игру

Трудности обучения

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

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

Та самая книга, в которой точно все нужные знания
Та самая книга, в которой точно все нужные знания

Обучение - это постепенный, спиралевидный процесс: начинается с простого, добавляется немного практики, потом это разъясняется с точки зрения теории - и переход на новый виток, где повторяется содержание предыдущего уровня обучения и поверх него устанавливается следующий слой знаний, навыков и умений. Короче говоря, от простого к сложному, с периодическим повтором.

Но как же сложно найти книгу, в которой такой итеративный процесс был бы применён! Пока читаешь книги по языкам программирования (например, "JavaScript полное руководство" Дэвида Фленагана) - движешься от простого к сложному; от основополагающих конструкций к сложным.

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

Автор буквально вынуждает вчитываться в код (и не просто в какие-то 2-3 строчки, а листинги на несколько страниц), разбираться, что он изменил, как и почему.

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

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

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

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

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

Разумеется, книга - далеко не всегда учебник. Иногда это просто описание автором какого-то своего опыта в решении определённых задач; более того, далеко не всегда можно описать какой-то опыт без использования кода (или, хотя бы, простых зарисовок). Однако, я, всё же, надеюсь, что со временем будет появляться всё больше и больше хороших книг, а не "вот это всё".

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