Ваши технические навыки устарели. Что дальше?

0
804
views

Перевод статьи «Your technical skills are obsolete: now what?».

Что делать, если ваши технические навыки устарели

Однажды вы приходите на работу и обнаруживаете, что ваши технические навыки устарели:

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

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

Что делать? Как со всем этим разобраться и спасти свою карьеру?

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

Тогда ваши цели следующие:

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

В этой статье я объясню, как все это провернуть. Для этого мы рассмотрим,

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

Почему вы используете старые технологии

Зачем использовать технологии, которые устарели

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

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

Приведу два примера из реальной жизни.

  • Проект с открытым исходным кодом Twisted зародился в 2000 году. В нем использовалась система контроля версий CVS. В том же году вышла новая, лучшая СКВ – Subversion, и вскоре все новые проекты open source использовали ее по умолчанию. В конечном итоге Twisted тоже перешел на Subversion. А затем появился Git, и когда стало понятно, что он побеждает, Twisted переключился на Git. В обоих случаях Twisted пришлось заплатить на модернизацию своей существующей инфраструктуры отставанием от новых проектов, которые могли сразу начать использовать более качественные СКВ.
  • Крупная компания, основанная в 1997 году, построила первую версию своего программного обеспечения на Perl. В то время Perl был очень популярным языком программирования. В последующие 20 лет Perl утратил свои позиции. Стало сложнее нанимать людей со знанием этого языка, на нем стали создавать гораздо меньше сторонних библиотек. Таким образом компания оказалась в сложном положении: она вынуждена использовать массивное рабочее приложение, написанное на непопулярном языке, но перевести его на другой язык слишком дорого.

Переход на новую технологию

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

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

Помогайте вашему проекту, обновляя свои навыки

Обновление технологий и навыков

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

Что конкретно нужно сделать:

  1. Определить, какие технологии устарели или проблемны в использовании.
  2. Подыскать потенциальную замену.
  3. Убедить своего менеджера, что данная проблема заслуживает дополнительных вложений. Ваша цель – выторговать себе время на создание экспериментального проекта, на котором вы сможете изучить эту полезную новую технологию.

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

Давайте рассмотрим каждый из этих шагов.

1. Находим устаревшие и проблемные технологии

Проблемные технологии

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

Обратите внимание на следующие вещи:

  • Рейтинги популярности технологий. Поищите в Google «популярность $ВАША_ТЕХНОЛОГИЯ». Можно также заглянуть в Google Trends.
  • Повторяющиеся действия, когда вам часто приходится выполнять вручную одни и те же операции.
  • Проблемы, возникающие при найме людей со знанием устаревших технологий.
  • Сломанные системы, о которых все знают: они все время «падают» или портят данные.

2. Ищем замену

Поиск замены

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

Вам нужно:

  1. Определить ключевые слова, описывающие эту технологию. Сделать это можно, почитав документацию по уже известному вам решению, поговорив с коллегой, обладающим более широкими техническими познаниями, или просто перебирая разные варианты в поисковике.
  2. Найдя ключевые слова, можно начинать искать решения. В документации инструментов зачастую можно найти больше ключевых слов, а благодаря им можно расширить свой поиск. Также в документациях часто упоминаются названия конкурентов.
  3. Альтернативные варианты можно найти через поисковик, введя что-то вроде «$НЕКАЯ_ТЕХНОЛОГИЯ альтернативы» или посмотрев варианты автодополнения поиска, введя «$НЕКАЯ_ТЕХНОЛОГИЯ или».
  4. Найдя некоторое количество вариантов, определите, какой (или какие) из них наиболее предпочтителен. Критерии могут быть разными, например, сложность этой технологии, то, как давно она на рынке, риски (она развивается в рамках стартапа?), функционал, популярность и т. д.

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

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

3. Как убедить менеджера

Как убедить менеджера

На этом этапе вы:

  1. определили проблемную зону,
  2. определили одну или даже три технологии, способные решить эту проблему.

Дальше вам нужно убедить менеджера, что на изучение этой новой технологии стоит выделить ресурсы. В частности, вам нужно:

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

Ваша речь при этом может быть такой:

Демонстрация проблемы: «Ты же знаешь о наших проблемах с Foobar? Мы постоянно тратим время на переделывание форматирования вместо того чтобы работать над функционалом».

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

Доказательства в пользу решения: «Например, библиотека Format.js. У нее огромная база пользователей и, судя по документации, ею очень просто пользоваться. И обрати внимание на этот пример: это именно то, на что у нас уходит столько времени, потому что мы делаем это вручную!»

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

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

Если же менеджер не согласится, тоже не все потеряно. Вы уже узнали, какие современные технологии вам доступны, так что можно выкраивать по чуть-чуть свободного времени на работе, чтобы познакомиться с ними поглубже. А на вашем следующем собеседовании у вас уже будет представление, какие знания технологий нужно освежить и какие технологии стоит упомянуть в разговоре. «Форматирование? О, мы использовали Foobar, что довольно плохо, потому что X, Y и Z. Но я изучил этот вопрос и нашел Format.js, и он оказался намного лучше, потому что A, B и C. Так что в будущем я бы использовал именно эту библиотеку».

Будьте не просто человеком, решающим задачи

Как не допустить, чтобы навыки устарели

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

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

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

Поэтому вам нужно быть не просто человеком, способным решить проблему: вам нужно уметь самостоятельно находить эти проблемы.

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

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here