2013-10-25
Свой путь в сфере IT я начал в 1989 г. В то время было достаточно просто выбрать направление для развития. Тогда выбор стоял между:
- сетевое администрирование
- управление базами данных
- разработка программного обеспечения
- управление проектами (включая тестирование и QA)
Я выбрал путь разработки ПО и долгое время было очень просто определиться с языком программирования. Я начал с Clipper (комплилятор на базе dBase), а затем перешёл в клиент-серверную разработку с помощью PowerBuilder, который и был моим основным инструментом почти пять лет.
Даже когда я занялся областью веб-разработки, инструменты и технологии по-прежнему было достаточно просто выбрать: наверное, потому что веб-сфера была достаточно юной, и в разработке страницы на серверной стороне не было никаких особенных сложностей. ColdFusion прослужил мне почти десять лет, а с 2008 г. я пользовался jQuery и JavaScript.
Как белка в колесе
Мне очень повезло с технологиями, которые мне удалось использовать несколько лет, но в последнее время я заметил поистине драматические изменения в сфере разработки. Рост и созревание этой сферы и привёл к стремительному появлению новых инструментов для управления комплексным процессом создания современных изощрённых вебсайтов и приложений. Это на самом деле прекрасно, ведь долгое время сфера веб-разработки напоминала дикие джунгли. Формализация шаблонов, процессов, практик — это очень положительные явления, которые обязательно приведут ко всё более стабильным системам.
Такой взлёт во многом обусловлен лёгкостью доступа к языкам и инструментам программирования, многие из которых предлагаются абсолютно бесплатно в опен-сорсе. Это позволило разработчикам переосмыслить способы создания своих проектов и построить новый мощный инструментарий.
Такая мощь и разнообразие могут стать палкой о двух концах для современного сообщества разработчиков. Многие чувствуют себя белкой в колесе, не имея возможности остановиться и подумать. Это состояние вечного студента, когда ты чувствуешь себя отсталым, не успевая следить за последними трендами развития сферы.
Эволюция процесса обучения
Мы постоянно слышим, что IT-сфера требует постоянного обучения, и это правда. Современные разработчики сейчас на пике успешности, поскольку мы работаем над вещами, значительно влияющими на огромное количество людей. Социум требует всё большего информационного потока через максимально простой пользовательский интерфейс. У нас — одна из самых сложных работ в мире, и это не преувеличение. Для нас постоянное обучение — это не вопрос выбора, это обязательное требование.
Если когда-то разработчик мог вполне спокойно обойтись знанием некого Х в течение периода времени Y, после которого нужно было повышать квалификацию, то теперь процесс повышения квалификации просто не прекращается.
Это не значит, что всем сейчас необходимо изучать каждую новую библиотеку. На самом деле, я думаю, что большинство инструментов и библиотек выпускаются только для того чтобы:
- осветить очень узкоспециализированную проблему;
- продублировать уже существующий инструмент и слегка его улучшить;
- потешить тщеславие разработчика в стиле «посмотрите-ка, что я сотворил».
Но есть определённый смысл в том, чтобы находиться в курсе всех вновь возникающих технологий. Хотя бы для поддержания разговора с коллегами (не только с теми, с кем вы непосредственно работаете, но и с теми, с кем общаетесь в соцсетях, блогах и форумах).
С возрастом (да-да, я уже старая калоша) становится всё меньше свободного времени, которое можешь уделить самообучению. К 45 годам я лично оброс уже таким количеством родственников, что мне приходится очень грамотно распределять время между обучением и семьёй. Наверное, я не один сталкиваюсь с такой проблемой. Я вспоминаю времена своего двадцатилетия, когда я писал статьи в тогда ещё бумажные журналы, и мои коллеги спрашивали меня: «Откуда у тебя столько времени на это?». Сейчас я оказался на стороне этих коллег и задаю тот же вопрос своим двадцатилетним друзьям.
У молодых людей гораздо больше мотивации и, соответственно, возможностей изучать самые последние новинки рынка, и это прекрасно.
По мере того, как ты взрослеешь, становится важным не только самореализовываться в профессиональном плане. Изучение новых технологий становится очень выборочным: ты садишься за изучение только тех из них, которые смогут помочь тебе достичь запланированных целей.
Как сделать выбор?
Стоит только мелком взглянуть на существующие технологии, и голова может закружиться: с чего начать, куда податься? Это происходит из-за природного разгорающегося любопытства:
- Ух ты, какая новая библиотечка для имитации веб-компонентов! (ми-ми-ми)
- Вау, выпущен новый крутой препроцессор! (ми-ми-ми)
- Ого, неужели это четвёртая SaaS для управления услугами бэкэнда в реальном времени! (ми-ми-ми)
Мы видим новую технологию, и убеждаем себя, что она решит для нас те проблемы, которых вообще ещё не существует или которые не касаются нас. Мы осваиваем технологии «на всякий случай». А не лучше ли сесть, немного подумать и решить, чего мы хотим достичь, и чего нам не хватает в текущем инструментарии?
К примеру, многие мои друзья изучили разработку под iOS только для того, чтобы понять: приложения под iOS они писать не собираются. Если есть время изучать технологию ради развлечения, —это пойдёт только на пользу, а вот если времени недостаточно, лучше его посвятить изучению действительно важных для себя вещей.
Например, вы — фронтенд разработчик, и планируете им оставаться ещё долго. Конечно, вам лучше заняться, скажем, AMD, ES6, Sass и Yeoman. Изучать в этом случае IPTables, ActiveRecord, WebView или Amazon EC2 совершенно бессмысленно при нехватке времени. Конечно, если вы умудритесь освоить и ту, и другую сторону, вы будете представлять ещё большую ценность в качестве специалиста.
Вместо того, чтобы взять полный комплект оборудования, можно собрать кастомный, не так ли? Определите основной акцент своей карьеры, выберите для себя ключевые технологии, и постарайтесь оставаться верным своей цели, фильтруйте по максимуму.
Ещё раз: я не отговариваю вас учиться как можно большему. Новые знания повредить не могут. Я сам, будучи фронтенд-разработчиком, начал изучать Ruby и Rails, потому что мне было интересно узнать и о серверной стороне вопроса.
Процесс изучения
Учиться можно по разному. Лично у меня лучше всего получается учиться с помощью:
- чтения технической литературы;
- выполнения упражнений с написанием образцов кода;
- опытного наставника, которому можно задавать вопросы.
Другие предпочитают учиться методом проб и ошибок, полностью самостоятельно. Какой бы путь ни выбрали лично вы, важнейшей частью обучения являются хорошие ресурсы.
Я в последнее время очень увлёкся онлайн-обучением. Обилие курсов позволяет выбирать подходящее время для занятий и темп обучения. Например, мне совершенно неудобны онлайн-занятия сразу после работы: процесс сразу воспринимается как продолжение рабочего, и мозг не успевает переключиться с одного вида деятельности на другой. Можно выбрать для себя курсы выходного дня или подобрать те, которые проводятся по утрам.
Выйти из западни
Нужно искать возможности вырваться из порочного круга бесконечного обучения и избежать выгорания. Абсолютно невозможно оставаться осведомлённым во всём, даже в своей узкой нише. В мире слишком много разработчиков, создающих крутые штуки, и слишком мало времени.
Перевод: Люся Ширшова. По материалам Tutsplus.com.