Обложка книги

Программирование без дураков

Катрин Пассиг, Йоханнес Яндер, 2017, издательство «Питер», ISBN 978-5-496-02023-7

Эта книга — большое руководство по всему, что поможет вам стать хорошим программистом. Джуниоры из неё узнают о разных концепциях, правилах и инструментах, мидлы освежат память и, скорее всего, тоже обнаружат ранее неизвестные им вещи.

Книга разбита на четыре части.

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

Вторая часть посвящена искусству написания и чтения кода, а также работе в команде. Авторы объясняют:

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

В третьей части рассматривается вопрос поиска ошибок и их предупреждения. Рассматриваются:

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

Четвёртая часть посвящена инструментам и концепциям программирования. В ней рассказывают:

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

Также в конце четвёртой части есть обзор никак не связанных, но полезных концепций вроде типизации, исключений, транзакций, ID/GUID/UUID, stateful/stateless и многого другого. А в заключение даётся ответ на то, кто же такой хороший программист, и какие ещё книги почитать, чтобы им стать.