Кристаллизация знаний. Как читать и не превратиться в коллекционера информации.

Автор раздела: Ivan Zakrevsky

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

Кто работал с TDD, тот знаком с методом проектирования ПО путем обобщения в результате триангуляции. Если кто не знаком, то обязательно почитайте "Test-Driven Development By Example" by Kent Beck - это на вес золота.

📝 "Here is another general pattern of refactoring: take code that works in one instance and generalize it to work in many by replacing constants with variables. Here the constant was hardwired code, not a data value, but the principle is the same. TDD makes this work well by giving you running concrete examples from which to generalize, instead of having to generalize purely with reasoning."

—"Test-Driven Development By Example" by Kent Beck

Именно процесс триангуляции и обобщения происходит в моей памяти под воздействием новых точек зрения, которые дает литература. Таким образом, чем больше литературы я освоил, тем с более узким подмножеством вариантов я остался. Как говорил Robert C. Martin, архитектура - это наука о том, как не надо делать.

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

Чем меньшим количеством вариантов я обладаю, тем легче мне ориентироваться среди них. Именно эта легкость и создает у стороннего наблюдателя ошибочную иллюзию изобилия информации.

Самое главное - это выявлять и понимать причинно-следственные связи, тогда не нужно запоминать все разнообразие возможных вариантов. Наглядный пример хорошо демонстрируется в этой статье Kent Beck о поисках границ микросервисов:

— "Monolith -> Services: Theory & Practice" by Kent Beck

📝 "Если лечиться по справочнику, то рискуешь умереть от опечатки."

—Марк Твен

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

По этому поводу мне нравится позиция Никлаус Вирт:

📝 "Богатство функциональных возможностей во многих современных языках - это действительно проблема сама по себе, а не решение других проблем. Избыток возможностей - это еще одно следствие веры многих программистов в то, что ценность языка пропорциональна количеству этих возможностей (как я это называю- это вера в "колокольчики и свистки"). Однако, мы знаем, что будет лучше, если каждое базисное понятие представляется единственной, специально для этого предназначенной конструкцией. Это не только сокращает усилия по изучению языка, но и сокращает размер его описания, что, в свою очередь, помогает избежать несогласованности и неправильного понимания. Поддержание языка максимально простым и регулярным всегда было приоритетом в моей работе: описание Pascal занимало около 50 страниц, Modula - около 40, а Oberon - и вовсе 16. И я рассматриваю эту тенденцию как прогрессивную. Истинная ценность языков программирования зависит от качества и практичности их абстракций. Пример - абстракция, называемая "число" или абстракция "логическая величина", замещающая конкретную строку битов.

Ценность такого рода абстракции основывается на ее целостности. В случае чисел должны быть применяемы только арифметические операции, независимо от того факта, что логические операции, в принципе, также могут быть применимы к битовым строкам, представляющим числа."

—"О культуре разработки ПО" / Никлаус Вирт

P.S.: Бесподобная книга о том, как читать и не превратиться в коллекционера информации - "Как читать книги" / Поварнин С.И. Читается за один вечер. Книга номер один.