Программист-фанатик — страница 34 из 35

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

Важно понимать, что подобные изменения не только возможны, но и необходимы. Как разработчик ты никогда не позволишь вовлечь себя в ненужный заказчику проект. Гибкие методики просто не дадут тебе этого сделать. О твоей карьере можно сказать то же самое. Ставь большие цели, но по пути постоянно вноси коррективы. Учись на собственном опыте и меняй цели при необходимости. В конечном счете нам всем нужен довольный заказчик (а в деле планирования карьеры ты сам являешься собственным заказчиком), а не выполнение требований.

Совет 52Лучше, чем вчера

Исправить ошибку легко (в общем случае). Что-то идет не так? Тебе об этом кто-то сообщил? Если ты можешь воспроизвести ошибку, то для исправления достаточно устранить вызывающие ее факторы и удостовериться, что проблем больше не возникнет. Если бы все трудности исчезали так просто!

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

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

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

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

Подобные демотиваторы лишают тебя воли к борьбе еще до ее начала.

С недавнего времени я вплотную занялся своей проблемой. Почти каждый день посещаю спортивный зал, стал следить за своим питанием, словом, делаю все, что только можно. Но даже при такой серьезной программе увидеть результаты достаточно сложно. Однажды вечером, когда меня опять захлестнуло ощущение отсутствия мотивации, мой друг Эрик Кастнер опубликовал в социальной сети Twitter следующее сообщение:

Помоги привести в форму мою $%!л.. спрашивай меня каждый день: «Сегодня было лучше, чем вчера?» (питание/упражнения) — сегодня: ДА!

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

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

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

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

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

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

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

Действуй!

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

Совет 53Стань независимым

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

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

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

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

У тебя есть набор навыков. Ты их отточил. Ты знаешь, сколько ты стоишь. Осталось пройти последний тест — стать независимым работником. В этом случае у тебя нет бюрократического аппарата, за которым можно спрятаться. Ты напрямую подконтролен людям, которые тебе платят. Представление о предоставляемой тобой услуге возникает по результатам твоей работы. Группы, с которой можно поделить ответственность, если что-то пойдет не так, уже нет. Есть только ты, твой опыт и твои навыки исполнителя.

Превращение во фрилансера заставляет учиться продавать себя, одновременно проверяя правильность выбранных тобой областей бизнеса и технологий. Став независимым, уже нельзя полагаться на то, что заказчики сами тебя найдут, как это происходит при работе в крупной компании. Заказчиков приходится искать самостоятельно. После чего их еще нужно убедить в том, что тебе имеет смысл платить.

Еще следует понять, сколько ты стоишь. Твоя работа стоит $50 в час? Или $250? Как ты собираешься оплачивать счета? Чем подтверждаются те деньги, которые тебе, с твоей точки зрения, должны платить? Ты на самом деле стоишь столько, сколько ты думаешь?

Любопытство — это сила

Майк Кларк, независимый консультант/программист


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

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

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

Как только я начинал чувствовать себя удобно, это было сигналом, что пришло время попробовать что-то новое. За много лет написания встроенных программ для аэрокосмической промышленности я полностью освоился (что для меня связано со скукой) с языками C и C++. Примерно в это время мое любопытство заставило меня обратить внимание на веб-программирование, так как оно радикальным образом отличалось от программирования встроенных систем. К сожалению, на рабочем месте у меня не было доступа в интернет (это был один из тех самых, сверхсекретных проектов), поэтому писать программы для Сети я учился вечерами и по выходным. В итоге эти дополнительные усилия дали мне возможность поработать над новым проектом, в котором требовался язык Java. Мне довелось написать множество сетевых Java-приложений для множества проектов… и работодателей. Интерес к веб-разработке послужил катализатором к разностороннему развитию моих способностей, что в конечном счете позволило хорошо продвинуться по карьерной лестнице.

По собственной прихоти я начал изучать Ruby on Rails. Ruby — это фантастический язык, заставивший меня по-другому взглянуть на программирование. Среда Rails аналогичным образом изменила мой взгляд на сетевые приложения. В те времена у меня не было заказчиков, готовых платить за программирование на языке Ruby или работу в среде Rails, но это не имело никакого значения. Мне было любопытно, я просто ничего не мог с собой поделать. Я стал меньше работать за деньги, тратя это время на освоение тонкостей Ruby и Rails. Тогда мне и в голову не приходило, что в начале 2005 года у меня появится возможность создать одно из первых коммерческих Rails-приложений, а Дэйв Томас пригласит меня помочь в написании книги по Rails. Мой интерес к пока новой технологии начал еще один успешный виток моей карьеры.

Мое любопытство направлено не только на технологии; аналогичный интерес у меня вызывают различные области бизнеса. Это привело сначала к самостоятельной работе независимого консультанта, затем к открытию образовательной компании (The Pragmatic Studio). Интерес к аспектам ведения малого бизнеса дал мне возможность приобрести множество новых навыков: продажа, маркетинг, поддержка пользователей и т. п. То, что я увидел картину в целом, помогло мне улучшить свои навыки программирования А что вызывает ваше любопытство? Попробуйте некоторое время заниматься тем, что вам интересно, и посмотрите, что получится. Вы можете удивиться, обнаружив, к чему все это приведет!


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

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

Радуйся жизни!