
Чтобы изучить новую технологию достаточно месяца. На этом можно было бы закончить эту статью, толком не начав ее. Однако я продолжу и расскажу вам, как пришла к такому выводу, что можно сделать, чтобы ускорить процесс обучения, а также перечислю основные проблемы изучения новых технологий и, самое главное, способы их решения.
Для начала отмечу, что названный срок в месяц — это большое допущение и приблизительная оценка. Все зависит от вашего начального уровня и сложности той технологии, которой вы решили овладеть. Кому-то достаточно посмотреть исходники в библиотеке, а кому-то необходимо кропотливо разбираться во всех нюансах. И все равно я уверена, что много времени вам не потребуется.
Первое, что может радикально сократить траты времени на обучение — это вопрос «А нужно ли вообще изучать именно эту технологию?». Тут все относительно. Ведь можно писать на jQuery, и никто вам ничего не скажет. В конце концов, освоить абсолютно всё невозможно физически. И все же слишком часто отвечать «Нет» я бы не советовала. Этот вопрос мы должны задавать себе не для того, чтобы оправдать свою лень, а просто для более рационального распределения собственных ресурсов и выбора наиболее актуальных задач. Обучаться и таким образом повышать собственную конкурентоспособность просто необходимо. То, как быстро вы обучаетесь, показывает, как быстро вы сможете выйти на рынок и создать новый продукт, который сможет конкурировать с другими компаниями. Этот факт понятен интуитивно, но мы должны просто-таки вбить его в свои головы и двигаться вперед.
99 problems
Итак, будем считать, что мы уже мотивированы и горим желанием научиться чему-то новому. И тут начинаются проблемы… Первая и главная — это риски использования новой технологии. Эти риски делят между собой как разработчики, так и заказчики. Одна из причин понятна: технология может быть сырой, а еще она может не «выстрелить», и ее не будут поддерживать в будущем. И это еще не все. Для поддержки продукта на новой технологии в штате заказчика может просто не оказаться нужного специалиста. Или разработчик может уйти из компании и оставить свое творение без поддержки, так как кроме него больше никто не знает, как это делать. Хороший пример подобной проблемы — новый язык программирования Elm. Его мало кто знает и использует, поскольку он достаточно сырой.
Тем не менее, у проблемы риска есть решение. Просто перед началом изучения вам надо проанализировать ситуацию: посмотреть на востребованность технологии на рынке, а также узнать, кто является ее контрибьютером и каковы их планы по поддержке. Это несложный шаг, который избавит вас от необходимости хвататься за все подряд.
Еще одна проблема — совместимость. Некоторым продуктам необходимо использование новых технологий, но нельзя просто взять и перейти, например, на React. Ведь он требует еще и модульную сборку, вебпак и много всего прочего. Поэтому, если перед вами стоит подобная задача, самое время задуматься, стоит ли браться за то, что потребует так много сил на достижение совместимости. Решить эту дилемму просто — надо присмотреться к аналогам. Очень часто выпускаются новые однотипные технологии, некоторые из которых вполне могут оказаться совместимыми с тем, что вы уже используете. Если продолжить приведенный выше пример, возможно, вам нужен не React, а просто шаблонизатор.
Еще один часто встречающийся «подводный камень» — отсутствие необходимой сопроводительной информации. Книг по технологиям, которые вышли всего неделю назад, не бывает. Книги просто не печатаются так быстро. Даже электронные. Кроме того, часто нам не хватает русскоязычной литературы, а иногда документация либо плохо переведена, либо просто некачественна. С такой бедой, я уверена, сталкивались очень многие.
Решений тут может быть несколько. Первое — социальные сети. Мы все в них присутствуем, как и (сюрприз!) разработчики той технологии, которая так вам необходима. Свяжитесь с ними или найдите нужное сообщество и узнайте все, что требуется. Второй путь — блоги, в том числе и видео. Большинство разработчиков (опять сюрприз!) ведут их и выкладывают обзоры и советы по освоению своих творений. Третий совет — давайте обратную связь. Если вы нашли ошибку, напишите об этом. Если вам досталась некачественная документация — не молчите. И наоборот, если какой-то блог помог вам разобраться в проблеме, оставьте отзыв и похвалите автора. Ну и, наконец, есть абсолютное оружие — знание английского. Если вы освоите язык на достаточном уровне, чтобы понимать оригинальные тексты хотя бы со словарем, вы просто забудете про нехватку информации.
Финальная проблема, о которой пойдет речь — отсутствие опыта. К сожалению, никто не рождается, умея сразу все. А те, кто умеет, не часто обрывают вам телефон, чтобы поделиться информацией. Поэтому отсутствие опыта, а также видеокурсов и туториалов серьезно увеличивает срок разработки. Например, когда я работала в компании 2ГИС, был выпущен продукт под названием «Сквер». Это платформа для вопросов о городах, а при ее разработке была установлена очень высокая планка и применено много новых технологий, что, конечно же, отразилось на сроках. Так бывает всегда: делать что-то новое в первый раз всегда сложнее всего.
Решение, которое я предлагаю, называется Github Search. С помощью него вы можете быстро найти готовые примеры использования технологии, которая вас интересует, причем часто прямо от самих авторов. Еще один необходимый сервис — Stack Overflow. Там есть разработчики, которые всегда готовы ответить на ваши вопросы. А может быть, ваш вопрос уже кто-то задал, и вам нужно просто прочитать готовый ответ.
Еще один важный совет напоследок — не бойтесь покидать зону комфорта. Запишите видеоурок или выступите перед публикой на митапе, сделайте то, чего раньше не делали. Таким образом вы не только поделитесь своим опытом с другими, но и сами узнаете много нового. Почему это важно? Да потому, что это ваш личностный рост. Ходите на мероприятия, знакомьтесь и общайтесь с интересными вам людьми, рассказывайте о своих проектах — это даст вам такой фидбек, что вам захочется делать еще и еще.
Кстати, чтобы подтвердить верность собственных мыслей по всем вышеописанным поводам, я провела специальное исследование и опросила около 200 разработчиков, как только начинающих, так и уже работающих профессионалов. Вопрос был один для всех, и он вынесен в заголовок этой статьи. Результаты оказались следующими: больше полугода с новыми технологиями разбирались 9,7% опрошенных. Их противоположностей, которым хватило всего недели, оказалось 18,3%. 23,7% участников анкетирования потратили от одного до трех месяцев, но больше всего, 48,3% разработчиков, ответили, что на изучение новой технологии им необходим именно месяц или чуть меньше.

Шаги и среда
На базе этого исследования я подготовила тактику, которая поможет вам справляться с обучением быстрее. Она состоит из двух компонентов — это шаги и среда. Шагов всего три. Первый из них — «Пойми!». Поймите, что это за технология, как она преобразует данные, как именно она помогает добиться результата, каковы ее составные части и как они взаимодействуют между собой. Смотрите примеры на Github, читайте ReadMe и ищите тематические посты на Хабре. Ничего нового, но многие почему-то пропускают этот шаг и сразу бросаются в бой.
Второй шаг называется «Закрепи!». После того, как вы поняли, что это за технология и зачем она вам нужна, переходите к практике. Так вы быстрее обнаружите собственные пробелы в теории и ликвидируете их. Главное — будьте внимательны и не допускайте опечаток. Теорию же можно найти и на Stack Overflow, и на «Тостере», и в книгах издательств GitBook и O’Reilly. Смотрите уроки на Level up! или русскоязычном Loftblog, где я когда-то преподавала. В конце концов, просто найдите себе наставника. Это может быть ваш коллега, наставник на курсах, личный ментор или даже сосед по парте — кто угодно, кто опытнее вас.

После этого сделайте третий шаг — «Обсуди!». Офлайн или онлайн — неважно. Главное, чтобы вы получили шанс обменяться опытом.
К разделу среды я отнесла два фактора — это «Выживание» и «Время». «Выживание» отвечает за реальную необходимость изучения той или иной технологии. Наш очень ленив, он не желает трудиться ради цели, важность которой не доказана, и всегда будет подсовывать вам много таких наиважнейших дел, как позвонить бабушке, полить цветы, покормить кота. А вот если он будет точно знать, что без JS вы не выживете, не найдете работу и не прокормите семью, вот тогда вас самих удивит скорость обучения. В некоторых случаях
Со «Временем» все проще, но это кажущаяся простота. Мы думаем, что если будем тратить как можно больше времени на обучение, то быстрее получим результат. Вообще-то, все не так. Время должно быть организовано. Нельзя нарушать режим сна, питания, отдыха. Только так вы достигните максимальной продуктивности. Двух-четырех часов в будний день и в течение одного или двух выходных в неделю достаточно для обучения. Если вы не будете отдыхать, то перестанете получать удовольствие от процесса освоения новой технологии. Есть много тактик общения со временем. Моя любимая называется Pomodoro и она заключается в том, чтобы разбивать время на блоки по 30 минут. 25 из них надо тратить на дело, а 5 — на отдых.

Заключение
Если подвести некий итог, то он будет звучать так — все просто, нет такой технологии, которую вы не смогли бы освоить в разумных временных рамках. Не забывайте доказать себе критичность выживания при помощи объекта изучения и правильно организовывать свое время, а потом делайте необходимые три шага, и тогда все получится! Удачи!
Автор: Mail.Ru Group
