[Отзыв] Форд Н. Продуктивный программист

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

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

Глава 1. Введение: советую всегда хотя бы наискосок просматривать введение, там бывает много интересного, а может вы просто не станете читать книгу после прочтения вступительного слова :)

Часть I. Механика: вся она о способах повышения собственной эффективности в работе(очень много пролистал).

  • Глава 2. Ускорение: научитесь уже пользоваться командной строкой, да это геморрой на начальном этапе, это противно и непривычно, но надо себя сломать! Пользуйтесь горячими клавишами везде, и по максимуму автоматизируйте свои действия. Очень понравилась фраза: «это „потом“ никогда не наступит».
  • Глава 3. Сосредоточение: избитый рассказ про отвлекающие факторы. Про тихий час в компании уже читал, все правильно, но сделать очень сложно. Нудноватая глава, много прочитал вскользь.
  • Глава 4. Автоматизация: интересная глава в плане подхода к автоматизации и собственно самих примеров. До некоторых вещей я наверное не дошел бы. На начальном этапе сложно себя заставить сесть и автоматизировать то, что ты делаешь постоянно руками и достаточно быстро, но хороша фраза: «однообразный ручной труд отупляет». Мы все-таки программисты, а не асфальтоукладчики.
  • Глава 5. Приведение к каноническому виду: извечная проблема, как развернуть одинаковое окружение для всех разработчиков, как воспроизвести ошибку и т. д.. Резюме: постом ранее писал о том, как разворачивал рабочее окружение на чистой машине, и упоминал Vagrant. Ну и про CI не забывайте.

После 4ой главы пересел на vim :D

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

  • Глава 6. Проектирование, управляемое тестами: TDD и т. д., про тесты мне больше понравилось у Роберта Мартина.
  • Глава 7. Статический анализ: Сказ про разнообразные автоматизированные системы поиска ошибок, узких мест и помощи в рефакторинге кода. Для общего развития было интересно почитать и пройтись вскользь по ресурсам из ссылок. Порадовали 2 правки на 145ой станице от научного редактора, в которых он говорит, что автор ошибся. Сразу вспомнил одного своего преподавателя из университета, который всегда говорил, что истинные математики ничего не принимают на веру. Все мы люди и все ошибаются.
  • Глава 8. О добрых гражданах: Глава обо всем и ни о чем. Про статические методы и нарушение инкапсуляции, про непродуманные классы и про ужас отсутствия знания о своем состоянии(применительно к объекту).
  • Глава 9. Принципе YAGNI: «You Aint' Gonna Need It». Про вред больших перегруженных функционалом каркасов. Что приятно, так это упоминания RoR с хорошим оттенком. Автор говорит, что в нем мало лишнего, потому что создан на основе работающего кода.
  • Глава 10. Античные философы: интересная глава для тех, кто не слышал про бритву Оккамы, закон Диметры и т. д.. Можно просмотреть, чтобы освежить в памяти что же такое 80-10-10 и с кем надо разговаривать.
  • Глава 11. О непогрешимости авторитетов: А вот эта глава мне понравилась, во-первых вспомнил про сказ о разъяренных обезьянах(ледяная вода, стремянка и бананы). Цепные интерфейсы очень красиво выглядят и радуют своей декларативностью. Основная мысль — всегда задавайтесь вопросом почему, зачем и как вы используете те или иные подходы, и откуда они вообще взялись.
  • Глава 12. Метапрограммирование: Это очень классный подход, возможен только в динамических языках программирования. К сожалению, на данный момент я еще не прочувствовал его до конца. Только приоткрыл завесу тайны для себя.
  • Глава 13. Паттерн «составной метод» и принцип SLAP: Это, наверное, самая интересная глава во всей книге(по крайней мере для меня). Круто следить за ходом мысли автора во время рефакторинга кода, как он внедряет шаблоны и разбивает на маленькие составные части громоздкие методы. Советую.
  • Глава 14. Многоязычное программирование: самый фееричный момент в главе, это перевод «синтаксического сахара» как «синтаксическая глазурь»... Понравилась самая идея про многоязычность, а также узнал для себя новое, что на функциональном языке проще писать многопоточные приложения нежели на императивном. Интересный прогноз на будущее от автора, посмотрим через пару лет окажется ли его вариант близким к истине. Мы все будем программировать конфигурацию, а не низкоуровневые вещи.
  • Глава 15. Ищите идеальные инструменты: сборник рецептов по инструментарию и чуть чуть по подходу, можно просто пролистать.
  • Глава 16. Заключение: приглашение к продолжению разговора: все понятно из названия главы.

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