Чед Фаулер. «Программист-фанатик»

22 октября 2015 г.

Фаулер Ч. Программист-фанатик. — СПб.: Питер, 2016. — 208 с.

«Программист-фанатик» — легкое программистское чтиво, поглощенное на одном дыхании за двое суток в поезде. Название, конечно, немного дурацкое (в оригинале — «Passionate Programmer»), но внутри не все так плохо.

Книга. Чед Фаулер. Программист-фанатик

Мотивационная литература часто пишется «сапожниками без сапог», но здесь не тот случай. Чед Фаулер — солидный бородатый рубист, на данный момент возглавляющий отдел разработки в берлинской компании 6Wunderkinder (ее продуктом Wunderlist я сам на данный момент пользуюсь). Есть в его биографии и такой пикантный пункт, как руководство оффшорным центром разработки в Индии. Рассматриваемая книга, как видно уже из названия, вдохновлена классическим трудом Ханта и Томаса «Программист-прагматик». Однако есть серьезные отличия. В сочинении Фаулера отсутствуют какие-либо практические моменты, относящиеся непосредственно к кодингу. На двухстах страницах, в 53 главах-советах, автор рассказывает «за жизнь»: как сделать карьеру, заработать миллионы денег, стать гуру 80 левела и не жалеть в старости о безвозвратно потерянных годах говнокодинга. Каких-то откровений свыше в книге нет и автор рассказывает вроде бы очевидные вещи, но такая краткая систематизация околопрограммистского опыта может здорово подбодрить пригорюнившего разработчика.

Вот некоторые из идей, которые Фаулер пытается донести до читателя.

  • Карьера отдельно взятого программиста — это продукт, в который нужно инвестировать и который нужно продвигать.
  • Выбирать нужно ту область, которая приносит удовольствие. Без энтузиазма мы обречены быть посредственными работниками.
  • Не нужно слушать родителей. Они стараются максимально перестраховаться и дают панические советы, приводящие к пожизненной ссылке в офис, а не к настоящей свободе. Нужно уметь идти на взвешенный риск.
  • Изучение какой-нибудь популярной, повсеместно востребованной технологии — безопасный вариант, но потенциально невыгодный. При этом ставка на умирающую технологию может оказаться не менее прибыльной, чем на только что появившуюся.
  • Пытаться конкурировать на рынке, предлагая свою работу подешевле — плохая стратегия. Лучше прилагать усилия в той области, на которую спрос невысок.
  • Нужно быть не просто кодером, а изучать сферу бизнеса, к которой относится разрабатываемый проект (например, отельный бизнес, если мы для него пишем приложение). Это позволит вносить по-настоящему творческий вклад в проект и стать незаменимым работником.
  • Универсалы ценятся выше, чем обычные кодеры, зацикленные на одной области деятельности. Но при этом нужно глубоко разбираться хотя бы в одной из областей, а навыки должны быть связаны логически. Никому не нужен системный администратор, умеющий верстать, но специалист по PHP, знающий толк в React.js, может сильно пригодиться.
  • Кроме основной работы, нужно иметь проекты «для души», позволяющие упражняться на пределе своих способностей.
  • Нужно активно изучать методики разработки и принимать участие в организации рабочего процесса. Специалисты с такими навыками ценятся намного выше, чем обычные кодеры-исполнители.
  • Разбиение процесса разработки на маленькие ежедневные цели поможет сконцентрироваться и избежать прокрастинации.
  • Работа со сложной системой с кучей ошибок лишает мотивации. Но небольшие ежедневные улучшения рано или поздно положат конец чудовищному нагромождению кода, а вносить изменения будет все проще и проще. Главное — получать удовлетворение от того, что сегодня код стал чуточку лучше, чем вчера.
  • Вопреки предрассудкам, поддержка старого громоздкого кода может приносить больше удовольствия, чем написание проекта с нуля. От новых проектов ожидают большего, спрашивают строже и сильно контролируют процесс разработки, в то время как улучшение существующего кода происходит в более спокойной и творческой обстановке. Поскольку разработка, как правило, никогда не заканчивается, лучше сконцентрироваться не на конечном результате, а на качестве процесса.
  • В моменты паники и всепоглощающего напряжения нужно вспомнить компьютерных дилетантов среди своих родственников, которые психуют у монитора, и представить, как в данный момент выглядим мы сами со стороны более опытных специалистов.
  • Нужно таким образом подбирать себе круги общения, чтоб быть в них худшим. Это может вызвать чувство неловкости, но позволит быстро прогрессировать. Также полезно привязаться к более опытному работнику, который стал бы негласным наставником, и самому наставлять тех, кто менее опытен. Такие отношения не только позволяют расти, но также формируют мощную профессиональную сеть и надежно уберегают от сокращения.
  • Постоянно говорить «да» — вредная привычка. Говоря «да», чтобы не разочаровать начальника или заказчика, мы попросту врем и подводим людей. В непростых ситуациях лучше говорить «я не знаю» или «это сложно, но я попробую».
  • Каждый руководитель хочет, чтобы его подчиненные могли работать независимо от постоянных указок сверху и ощущали вовлеченность в процесс. Еженедельный лаконичный отчет о проделанной работе, даже непрошенный — мечта каждого начальника.
  • Программист-одиночка, сидящий в темном подвале и набирающий код при свете монитора — позавчерашний день. Несмотря на склонность кодеров к замкнутости и отшельничеству, нужно предпочитать электронной переписке личные встречи и телефонные разговоры. Это не только улучшает взаимопонимание, но и делает нас неотъемлемой частью коллектива.
  • Нужно почаще делать вклад в оупенсорсные проекты, публиковать свой код и ковыряться в чужом, выступать на конференциях, вести профессиональный блог, писать на Хабр и т. д. В своем блоге не обязательно изобретать велосипеды, достаточно начать с отзывов о других работах. Такая деятельность имеет больший вес, чем просто перечень предыдущих мест работы, поскольку формирует не только репутацию, но и профессиональные социальные связи.
  • Нужно следить за упоминанием своего имени в поисковой выдаче и стараться, чтоб на первых страницах была та информация, которая нам выгодна.
  • Быть программистом круто.

Несмотря на то, что книга адресована разработчикам ПО, наверняка эти принципы в какой-то степени применимы и к другим профессиям. Даже если «Программист-фанатик» и не войдет в золотой фонд айтишной литературы, но небольшая мотивационная встряска с переосмыслением накопленного опыта точно никому не помешает.