355 500 произведений, 25 200 авторов.

Электронная библиотека книг » Чед Фаулер » Программист-фанатик » Текст книги (страница 5)
Программист-фанатик
  • Текст добавлен: 6 октября 2016, 05:18

Текст книги "Программист-фанатик"


Автор книги: Чед Фаулер



сообщить о нарушении

Текущая страница: 5 (всего у книги 17 страниц) [доступный отрывок для чтения: 7 страниц]

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

Я не хвастаюсь, утверждая, что обладаю прирожденным даром игры на саксофоне. Но вам придется поверить мне на слово, что зачастую это только мешает. Работая полный рабочий день, я много играл. Порой у меня бывало по два, а то и по три концерта в день. Утро начиналось с джаза во время завтрака, затем я переходил к танцевальной музыке на свадьбе, и заканчивалось все ритм-энд-блюзом на вечеринке в ночном клубе. Благодаря своему прирожденному дару к игре на саксофоне, я смог учиться и совершенствоваться прямо на рабочем месте. Я очень хорошо чувствовал мелодию, мог выучить песню со слуха и имел склонность к импровизации.

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

Я не понимал, что потихоньку останавливаюсь в развитии. В юном возрасте я быстро рос, но чем больше становилось отыгранных ритм-н-блюзовых концертов, тем однообразнее я играл. Мои мелодии ночь за ночью звучали одинаково. Мои импровизированные соло были переделками сыгранного предыдущей ночью или даже ранее на этом же концерте. Сейчас я понимаю, что дело было не только во мне. Влияла общая ситуация на профессиональной сцене. Мы были нетребовательны к себе, а публика была нетребовательна к нам (ты когда-нибудь слышал, чтобы публика разразилась аплодисментами и ободрительными криками из-за того, что саксофонист держит ноту более тридцати секунд?).

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

Возможно, все дело в том, что я постарел. Или поумнел, хотя в этом я сомневаюсь. Но теперь я понял, насколько большое значение могут иметь даже небольшие инвестиции в себя. Вместо того чтобы взять инструменты и отправиться на очередной концерт, я (в обязательном порядке) играл сам для себя. Это позволило мне более целенаправленно подойти к инструментам. Я слушал музыку и составлял список приемов, которые неплохо было бы изучить. Скажем, я всегда хотел делать такие же штуки, которые показывал в своих соло на саксофоне Фил Вудс. Или узнать, каким образом Принс в конце песни «Let's Go Crazy» из альбома Purple Rain заставляет свою гитару так визжать.

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

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

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

В этой части книги мы рассмотрим стратегии инвестиций в карьеру. Мы поговорим о том, как выбрать навыки и технологии, в которые имеет смысл вкладываться, и какими способами мы можем вложиться в себя. Именно с этого момента начнется реальная работа.

Совет 11
Учимся ловить рыбу

Лао-цзы сказал: «Дай человеку рыбу, и он будет сыт целый день. Научи его ловить рыбу, и он будет сыт всю жизнь». При всей верности этой поговорки Лао-цзы не учел, что бывают люди, не желающие учиться ловить рыбу. Такой человек предпочтет на следующий день попросить еще одну рыбу. В процессе обучения задействованы как учитель, так и ученик. Но многие из нас зачастую не испытывают желания учиться.

Не жди, пока тебе расскажут. Спрашивай сам!

Что в индустрии ПО считать рыбой? Процесс работы с инструментом, некий аспект технологии или некую информацию из бизнес-отрасли, в которой ты работаешь. Умение проверить определенную часть системы управления исходным кодом, с которой работает твоя команда, или настроить сервер приложения. Многие из нас считают все эти мелочи само собой разумеющимися и считают, что с ними обязательно справится кто-то другой. В системе управления версиями разбирается парень, отвечающий за сборку проекта. Достаточно попросить его все настроить, когда возникнет такая необходимость. Группа, отвечающая за поддержку инфраструктуры, умеет настраивать брандмауэры между вами и заказчиками. Поэтому, если появится такая нужда, достаточно отправить им письмо по электронной почте, и они обо всем позаботятся.

Кто хочет зависеть от милостей другого человека? Или поставим вопрос более жестко: ты бы согласился нанять на работу человека, зависящего от целой группы специалистов? Лично я отвечаю на этот вопрос отрицательно. И предпочитаю сотрудников, способных к самостоятельным действиям.

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

Не менее важной является используемая тобой технологическая платформа. Например, ты можешь разрабатывать приложения с помощью J2EE. Тебе приходится создавать различные классы, интерфейсы и дескрипторы развертывания. Можешь ответить на вопрос: зачем? Знаешь, как применяются все эти вещи? Что происходит при запуске J2EE-контейнера? Даже если ты не являешься разработчиком сервера приложений, знание всех этих вещей позволит тебе писать надежный код для этой платформы и устранять неисправности, когда что-то идет не так.

Особенно располагают к лени различные модули, генерирующие за тебя код. Они весьма распространены среди Windows-разработчиков, так как Microsoft создала множество инструментов, предельно упрощающих решение многих задач. Оборотной стороной этого удобства стало появление множества разработчиков, не имеющих понятия о принципах работы своего кода. Происходящее внутри того или иного модуля остается для них мистической тайной. Не пойми меня неправильно – генерация кода может быть весьма полезной. Ведь именно она позволяет перевести высокоуровневый код C# в байтовый код, запускаемый в среде исполнения .NET. Не думаю, что тебе понравилось бы писать такой код вручную. Но применение высокоуровневых мастеров и модулей не способствует углублению твоих знаний. В итоге твои навыки ограничиваются умением работать с имеющимся инструментарием.

В бизнесе, с которым связана наша деятельность, также можно легко проглядеть рыбу. Например, сотрудник ипотечной компании может попросить специалиста рассчитать процентную ставку для всех необходимых при тестировании сценариев, а может рассчитать ее самостоятельно. Хотя взаимодействие с клиентом приветствуется, как и согласование с ним бизнес-требований (в противовес недопониманию и самостоятельным попыткам нарисовать полную картину), только представь, насколько быстрее ты смог бы двигаться вперед, разбираясь в специфике бизнеса, на который работаешь. Разумеется, весь деловой регламент ты вряд ли выучишь, да это и не нужно. Но ничто не мешает разобраться в основах. Вспоминая лучших программистов, с которыми мне довелось поработать за прошедшие годы, могу сказать, что многие из них разбирались в бизнесе лучше, чем некоторые из их заказчиков. Это улучшило результаты их труда. Не знакомый с особенностями конкретного бизнеса человек легко допускает глупые ошибки, которых легко можно было бы избежать, обладая базовыми представлениями о том, в какой сфере ты работаешь. Более того, такой человек выполняет свои обязанности медленнее (и в конечном счете стоит компании дороже), чем аналогичный разработчик, разбирающийся в бизнесе.

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

Действуй!

1. Как и почему? Прямо сейчас после прочтения данного раздела или в следующий раз на работе подумай о тех аспектах своей деятельности, которые ты не до конца понимаешь. Для погружения в непонятную сферу можно задать себе два крайне полезных вопроса: Как это работает? и Почему это происходит (или должно происходить)?

Возможно, ты даже не сможешь на них ответить, но сам факт постановки подобных вопросов приведет твой ум в новое состояние и поможет лучше осознать твое рабочее окружение. Как IIS-сервер передает запросы твоим ASPNET-страницам? Зачем генерировать все эти интерфейсы и дескрипторы развертывания для твоих EJB-приложений? В чем разница в работе компилятора при динамическом и статическом подключении? Почему для заказчиков из Монтаны сумма налога вычисляется по-другому?

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

2. Немного времени. Выбери в своем инструментарии важный, но игнорируемый инструмент и сосредоточься на нем. Это может быть твоя система управления версиями, библиотека, которой ты активно пользуешься, но не имеешь представления о том, как она устроена, или даже редактор, применяемый при написании кода.

Ежедневно выделяй немного времени, чтобы изучить очередной аспект выбранного инструмента, позволяющий повысить продуктивность твоей деятельности или лучше контролировать среду разработки. Например, ты можешь выбрать для изучения командную оболочку Bourne Again Shell операционной системы GNU. Когда в очередной раз твой ум начнет уходить в сторону от рабочих задач, вместо загрузки привычного новостного сайта поищи в интернете советы по bash. В течение минуты-другой ты обязательно найдешь новую для себя полезную информацию по работе с этой оболочкой. А узнав новый прием, начинай препарировать его с помощью вопросов как и почему.

Совет 12
Разберись, как работает бизнес

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

Однако всегда существует актуальный комплекс знаний, не относящийся ни к технике, ни к определенной отрасли – это основы финансирования бизнеса. В какой бы сфере ты ни работал, будь это производство, здравоохранение, некоммерческая деятельность или образовательное учреждение, эта сфера все равно относится к бизнесу. А бизнес сам по себе является областью, которую можно и нужно изучать.

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

Оглядываясь назад, я понимаю, как глубоко мы заблуждались. Мы работали для бизнеса, и наша деятельность должна была помогать зарабатывать или экономить деньги. При этом мы даже не представляли, что делает бизнес доходным. И даже хуже – это казалось нам не важным. Мы были программистами и системными администраторами. Мы считали, что наша работа связана исключительно с темами, которым мы себя посвятили. Но разве может творчески помогать процветанию бизнеса человек, не понимающий, как этот бизнес функционирует?

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

Ты не сможешь помогать бизнесу творчески, если не знаешь, как он устроен.

Но творчески приносить пользу можно, только имея представление о бизнесе, с которым связана твоя деятельность. В деловом мире то и дело звучат слова «чистая прибыль». Многие ли из нас действительно понимают, что такое чистая прибыль и от каких факторов она зависит? И, что более важно, многие ли из нас действительно понимают, какие их действия дают вклад в чистую прибыль? Является ли твое подразделение центром затрат или центром формирования прибыли (уменьшают или увеличивают твои действия чистую прибыль)?

Понимание финансовых стимулов (и языка) компании, в которой ты работаешь, даст тебе возможность действовать осмысленно, а не блуждать в темноте, принимая решения, кажущиеся интуитивно правильными.

Действуй!

1. Найди книгу по основам бизнеса и прочитай ее внимательно. Ищи среди книг для специалистов по управлению предприятиями. Могу порекомендовать тебе книгу Стивена Силбигера «MBA за 10 дней». Я считаю ее весьма полезной (и приятно лаконичной). Ее можно прочитать всего за десять дней, а это не очень большие затраты времени.

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

3. Попробуй повторить эти объяснения.

4. Разберись, почему чистая прибыль называется чистой.

Совет 13
Найди наставника

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

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

В профессиональной деятельности (особенно в сфере IT) просить чужой помощи не принято. Зачастую зависимость от другого человека считается признаком слабости. Мы боимся признать собственное несовершенство. Все пронизано духом конкуренции. Выживает сильный, и это закон. К сожалению, этот закон мешает развиться институту наставничества. Спроси я у группы джазовых музыкантов «Кто ваш наставник?», большинство из них ответит без проблем. А как будут реагировать на подобный вопрос программисты? Произвольно взятый программист из Соединенных Штатов, скорее всего, удивится: «Что?»

Так было не всегда. Западная история включает в себя развитую систему профессионального наставничества, уходящую корнями в Средневековье. Подход к профессиональному обучению был еще более сильным и формализованным, чем принятая в современном музыкальном сообществе система. Молодые люди начинали свою карьеру подмастерьями признанных мастеров. Работали за символическую плату и привилегию учиться у мастера. А тот, в свою очередь, был обязан обучить подмастерьев созданию вещей в собственной манере (и собственного качества).

В зависимости от другого человека нет ничего страшного. Главное – убедиться, что это правильный человек.

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

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

Устроившись специалистом по поддержке систем, я взял в оборот Кена – святого человека, который работал в нашем университете одним из сетевых администраторов. Он помог мне решить серьезную проблему с NetWare-сетью нашего кампуса, проблему, из-за которой студенты не могли пользоваться компьютерным классом, и после этого отделаться от меня ему было уже сложно (впрочем, он и не пытался). Когда я спросил у него, в каком направлении следует двигаться, чтобы стать более компетентным и независимым, он дал мне простой рецепт: разберись со службами каталогов, научись работать с их UNIX-вариантом и как следует изучи язык сценариев.

Он выбрал для меня три практических навыка из бесконечного числа доступных вариантов. Убежденный, что рецепт мне выписывает настоящий мастер своего дела, я принялся за учебу. Эти три навыка заложили фундамент моей профессиональной деятельности и остаются актуальными по сию пору. И дело не в том, что Кен дал мне единственно правильный ответ – подобных ответов просто не существует. Важно, что он сократил длинный список того, что я мог бы изучать, до краткого списка того, что я реально изучил.

Еще наставник служит доверенным лицом, которое наблюдает и оценивает принимаемые тобой решения и твои успехи. Если ты программист, покажи ему свой код и слушай советы. Собираясь сделать презентацию в офисе или на местной встрече пользователей, сначала покажи ее наставнику и учти его комментарии и замечания. Наставник – это лицо, которому ты доверяешь настолько, чтобы задать вопрос: «Что я как специалист должен в себе изменить?» Ведь ты знаешь, что услышишь от него не только критику, но и советы, помогающие стать лучше.

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

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

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

Действуй!

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

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

Расположи эти характеристики в порядке возрастания важности, чтобы на первом месте оказалось наименьшее важное, а на десятом – наиболее важное качество. Этот список достойных восхищения и важных атрибутов показывает направление, в котором нужно двигаться, чтобы стать похожим на выбранную ролевую модель. Но как понять, на чем следует сосредоточиться в первую очередь?

Добавь к списку еще один столбец и подумай, как выбранный тобой пример для подражания оценил бы тебя по десятибалльной шкале (10 – наивысшая оценка). Попытайся посмотреть на себя глазами другого человека.

Затем вычти свой рейтинг, указанный в последнем столбце, из уровня важности характеристики. Скажем, если свой рейтинг по самой важной характеристике ты оценил как 3, итоговый приоритет будет равен 7. Расположи пункты списка по убыванию итоговых приоритетов, и ты получишь перечень областей, в которых тебе требуется совершенствование.

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


    Ваша оценка произведения:

Популярные книги за неделю