четверг, 26 апреля 2012 г.

Будь лучше!


Не так давно я прочитал книгу Чада Фаулера The Passionate Programmer. Creating a Remarkable Career in Software Development. Как следует из самого названия книги, она рассчитана на айтишную аудиторию и призвана дать ценные советы и установки, как сделать успешную карьеру в IT. Сегодня я хочу поделится своими впечатлениями о прочитанной книге,  а также ответить на вопрос стоит ли тратить на нее свое драгоценное время и чем она может быть полезна для своих читателей.
Начну с автора. Чад начинал свою карьеру совсем не в IT. А в музыке. В прошлом он был профессиональным саксофонистом и даже не думал, что впоследствии он станет квалифицированным Ruby-программистом, автором множества книг и профессиональным  IT-консультантом. Он вращался в музыкальной среде, участвовал в выступлениях с различными музыкантами. Серьезно интересовался музыкой и тем что ее окружает. Но судьба распорядилась так, что впоследствии Чад решил связать свою жизнь с IT. Огромное влияние на его амбиции и возможно на его выбор между музыкой и IT оказало посещение семинаров посвященному языку Ruby, на который он попал отчасти случайно.
Позже, когда он уже был молодым программистом ему довелось полтора года поработать в Индии и быть синхронизирующим звеном между офшорной местной командой программистов с главным оффисом в США.
Все это, и музыкальное прошлое и индийский этап в его карьере, оставило неизгладимый отпечаток на мировоззрении автора, и, возможно, поэтому, книгу читать интересно и познавательно.
Итак, книга в первую очередь о том, что нужно делать для того что бы чего-то добиться в своей жизни и не быть «тем парнем в белой серой рубашке», не быть посредственностью.
Чад разделил книгу на пять частей, в каждой из которых сгруппированы ценные рецепты и советы по улучшению себя как специалиста.
Итак.

Часть первая. Выбери свой рынок.

Рынок IT, как и любой другой подвержен перманентным изменениям. Появляются новые языки и технологии, меняются направления и тренды в разработке программного обеспечения. Для того что бы в один прекрасный день не остаться у разбитого корыта со знаниями никому не нужного языка или технологии, нужно постоянно отслеживать последние тенденции и быть в курсе всех событий. И быть готовым к тому, что прочитанная вчера книга, завтра окажется абсолютно бесполезной. Поэтому как следствие нужно постоянно заниматься самообразованием, исследовать, изучать, интересоваться.
Тормозом в своем развитии Чад называет ситуацию, когда и вы сами и все остальные, кто вас окружает, считают вас экспертом. Раз вы и так самый лучший, то следовательно, нету никакой мотивации становится еще лучше. Поэтому, Чад призывает находить такое окружение, в котором вы были бы самым худшим. В такой ситуации вам ничего не останется другого как делать все возможное что бы стать лучше. Развиваться и совершенствоваться.
Чад призывает не избегать сложностей, если они возникают и не слушать того, что говорят родители. Потому что, все советы родителей – априори советы с минимальным риском, а для того что бы достичь чего то серьезного всегда приходится чем то рисковать. Это закон. 

Часть вторая. Инвестируй в собственный продукт.

В данной части речь идет не совсем о том, что бы создать свою программу и инвестировать в нее. Продукт, о котором идет речь, это вы сами. Инвестируйте в себя. Чад описывает несколько способов как этим заниматься наиболее эффективно.
Для того что бы быть отличным программистом, в совершенстве знать языки программирования недостаточно. Необходимо до мельчайших подробностей разобраться в бизнес-правилах и бизнес-логике проектов, над которыми мы работаем. Только таким образом можно свести к минимуму количество всевозможных ошибок, оптимизировать программную модель и сделать код гибким и эффективным.
Для того, что бы что-то изучить, прочитать книгу недостаточно. Нужно постоянно практиковаться. Для этих целей можно создать свой небольшой проект или присоединится к опен-сорс проекту. Работая над этими проектами мы однозначно становимся более квалифицированными, потому что изучаем новые технологии и используем новые инструменты.
Еще один моментом, который Чад отметил отдельно это вопрос “учительства”.  В музыке у каждого музыканта есть «учитель» - более опытный опытный музыкант, который знает то, чего нельзя прочитать в книжках, что приходит только с многолетним опытом. Общаться с таким профи, учится у него всему тому, что он знает,  молодым музыкантам крайне полезно, и очень часто именно такой способ получения знаний является наиболее эффективным. Этот сценарий Чад переносит и на программистов -  общение с более матерыми программистами всегда идет только на пользу, поэтому не стоит пренебрегать этим моментом.
Полезна также и обратное взаимодействие – тот кто учит, в процессе обучения также чему то обучается. Поэтому Чад предлагает: найдите учителя, учитесь у него все тому, что он знает, и обучайте всему тому что знаете менее опытных программистов. 

Часть третья. Действуй!

Если вы не будете делать свою работу, вы ничего не достигнете. Если вы будет парить где-то в облаках, думая о том, каким вы будете хорошим специалистом когда получите повышение – вы никогда его не получите, потому что оно не дается авансом, и для того что бы действительно его получить нужно в первую очередь хорошо потрудится. Для того что бы преуспеть, нужно всегда планировать что вы хотите сделать, собственно делать это, и после смотреть и анализировать результаты своего труда – что получилось, а что нет. Тщательно разобрать вопросы: почему не все получилось, что было задумано, какие причины этих неудач. Что можно исправить.
Вот основные постулаты данной части. Здесь Чад делится мнением о том, как нужно строить свою работу, как достигать хороших результатов и завершать все свои дела в срок. Затрагивает такие вопросы, как например как получать удовольствие от рутинной работы, такой, как написание юнит-тестов или работа в команде по сопровождению готового продукта. Почему не стоит работать сверхурочно, и достаточно ли восьми часов для того что бы сделать все что запланировано. Стоит ли всегда соглашаться со своим начальством и чем все это может закончится. 

Часть четвертая. Рекламируй специалиста в себе.

Основная проблема программистов – это их некоторая замкнутость. По долгу службы программисту в течении рабочего дня приходится молча сидеть  за компьютером, и решать существующие задачи. Взаимодействие с коллегами часто, сводится лишь к проведению пятиминутных митингов, где тим-лидами ставятся задачи и переписке по емейлу, например для уточнения некоторых деталей реализации поставленной задачи. Все это не способствует развитию коммуникативных способностей. А когда человек не может понятно выразить свои мысли в процессе разговора – это проблема. Большая проблема!  Из-за это такие программисты часто ассоциируются у окружения, в том числе и у некоторого руководства как толпа молчаливых и глупых огров, которые сидят за компьютерами и «чего-то там печатают».
Чад призывает развивать коммуникативные навыки. Причем развивать по всем фронтам. Начиная от более интенсивного вербального общения со своими коллегами и руководством в течение трудового дня, и заканчивая ведением собственного блога, активным участием в онлайн-конференциях, участием в опен-сорс проектах и еще много чего. Главное – не сидеть молча и не думать, что никто не может оценить вашу квалификацию и вас как специалиста в полной мере. Нужно действовать, нужно говорить и быть услышанным, «кричать» на весь свет, заявляя о себе. 

Часть пятая. Ставь цели и добивайся их.

В последней части Чад дает рекомендации, как не только оставаться на плаву и быть востребованным специалистом, но и находить в себе силы постоянно открывать перед собой новые границы и добиваться новых вершин. Что бы быть лучше, хотя бы чем остальные, нужно всегда изучать передовые технологии и стараться их использовать где это возможно. Нужно ставить на первое место сам процесс работы, а не ее результат. Как показывает практика, это, как ни странно, весьма положительно действует в первую очередь как раз-таки на результат. Что бы стать на путь постоянного совершенствования нужно взять себе за правило жить по-принципу «Лучше чем вчера» и каждый день пытаться сделать больше, лучше, и эффективнее, чем днем ранее.
И наконец, нужно становиться независимым. Работа в офисе, обладает одним очень серьезным недостатком – снимает ответственность за многие вещи. Работая независимым специалистом, вы сами решаете все вопросы, возникающие в процессе выполнения проекта. А это очень сильно дисциплинирует и делает вас еще лучше.

Книга оставила самые приятные впечатления. Она позволяет посмотреть на работу программиста под несколько другим углом, отличным от привычного и это безусловно заставляет становиться лучше, как того и велит автор книги, программист-саксофонист Чад Фаулер.