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