Отличная книга для инженеров по программному обеспечению начального уровня.
Так же книга помогает обобщить ранее полученные знания. Стать неким указателем, который говорит, что движение происходит в правильном направлении для разработчиков поопытней (или же необходимо скорректировать некоторые ориентиры).
Книга позиционирует себя как руководство для программирования «less wrong», т.е. «менее неверно», другими словами — программировать правильнее с точки зрения опытных программистов, до которых дотянулись авторы книги и их окружение. Я думаю, она выполняет эту цель.
Несмотря на то, что книга не новая, многие вещи и подходы в ней до сих пор актуальны, благодаря своей простоте/элегантности или же универсальности.
Примечательно, что примеры в книге рассматриваются на разных языках программирования. Указываются некоторые отличительные стороны и особенности этих языков (но без фанатизма и избытка деталей).
Давайте детальнее рассмотрим, чему учит книга и какие области разработки покрывает
- Книга на примерах показывает, что значит плохой программист (и от обратного, мы понимаем, что не нужно делать, чтобы быстрее становиться хорошим)
- Дает советы общего (около-программного) плана, которые помогут быть хорошим программистом
- Вводим в курс проблемы именования переменных, функций, классов и т.д. Не дает универсальных решений, подчеркивая, что в разных языках и фреймворках правила могут отличаться. Так же не стоит забывать, что нету каких то абсолютно общепринятых правил и, может так статься, что нужно следовать ранее установленным договоренностям
- Важность комментариев и документированности кода. Однако, важно не злоупотреблять комментированием и понимать, где они к месту, а где могут даже мешать пониманию кода
- Подходы к чтению кода и поиску информации
- Важный вопрос, который подымается в книге, и которым грешат разработчик постарше — это попытки оказать помощь в случае, если она (помощь) не требуется или нежелательна (непрошена второй стороной)
- Целый раздел посвящен работе над ошибками разнообразнейших типов, поиск багов, составление и проверка гипотез, анализ и отладка кода, потенциально слабые места программ, вопросы рефакторинга и тестирования программного обеспечения
- Материал из книги учит не изобретать велосипеды (почему она не попадалась мне в начале карьеры 🙂 ). Как искать эти «велосипеды» и применять в своих условиях
- Чуточку, пытается направить читателя в поиске первого или следующего языка программирования (а так же фреймворка, менеджера пакетов и тому подобное)
- Вводит в курс важной темы систем контроля версия и работы с ними
- Помогает не бояться командной строки
- Открывает завесу в понятиях объектно-ориентированного программирования (как преимущества так и недостатки, а так же — альтернативы)
- Освещаются вопросы хранения данных (начиная с текстовых форматов и заканчивая графовыми базами данных)
- Уделяется внимание важным вопросам безопасности информации
- В финале, рассматриваются не вошедшие, но немаловажные вопросы, с которыми рано или поздно сталкиваются все разработчики. И дает напутствие на дальнейшее развитие в сторону хороших программистов
В итоге получаем много полезной информации, не оторванной от жизни, собранной в одной книге.
Хотя, лично я, некоторые главы просто просматривал, не останавливаясь на деталях, так как дошел да этих истин самостоятельно. Но при этом получил удовлетворение, что все эти годы, двигался в правильном направлении.