[Перевод] Опускаются руки и хочется бросить задачу? Так выглядит эффективное обучение разработчика

uri1lva_6huixxivvvtrqnyn3t4.jpeg

Самые большие скачки в моем профессиональном развитии происходили, когда приходилось с трудом, упрямо, не сдаваясь разбираться в чем-то новом, — и это не всегда казалось мне чем-то хорошим. Но постепенно у меня сформировался подход, который помог преодолеть внутренние блоки.

Возможно, это поможет и вам.

Когда при разработке ПО сталкиваешься с трудностями, очень уж легко потерять веру в себя — иногда мне даже хочется бросить всё. Я заметил, что в подобных ситуациях мозг начинает выдумывать причины, почему лучше потратить время на что-то более знакомое, или жалуется, что задача мне не по зубам.

Знаю, у других это тоже бывает.

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

Очень важно проявлять упорство перед лицом таких трудностей — хотя это и непросто.

За прошедшие годы я научился нескольким ментальных «хитростям», которые помогали мне в сложные минуты, часы и дни.

Я расскажу о тех точках зрения, которые оказались особенно полезны.

Переведено в Alconost

1. Разработчик растет профессионально благодаря упорному труду и прилагаемым усилиям


Что главное в разработчике: талант или упорный труд?

Люди просто рождаются великими разработчиками — или им приходится прикладывать для этого усилия?

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

Такая точка зрения полезнее: она означает, что если что-то мне никак не дается — нужно хорошенько постараться, и я разберусь.

Кроме того, отсюда же следует, что моя работа не всегда будет легкой или радостной — придется и упорно потрудиться.

81ac04432c6dfd538a62b193a216c1fe.png

2. Пытаться сделать что-то впервые может быть сложно, и неразумно ожидать, что вы сразу станете в этом докой


Я как разработчик часто расстраиваюсь, когда сталкиваюсь с чем-то, чего не понимаю, но, как мне кажется, должен понимать.

Как-то мне пришлось работать в компании, которая использовала git, и все вокруг меня были специалистами в этой VCS. Было время, когда мне пришлось столкнуться с тем, что мои знания SQL оказались не так уж хороши.

И в каждом из этих случаев какая-то часть меня была уверена, что я должен хорошо разбираться в этих областях: в конце концов, я же ведущий разработчик широкого профиля с многолетним опытом!

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

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

Получается как-то так…

«Я никогда раньше не программировал на Джаве — значит, я и не должен быть хорош в этом. Поэтому я и иду на эти курсы».

«Я никогда не использовал git-репозитории — я не обязан знать, как это делается. Поэтому я попрошу коллегу помочь».

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

3. Работа с кодом не всегда должна быть приятной: даже если задача неинтересная, ее всё равно можно сделать


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

Например, какой-то кусок кода обработки данных в моем Spark-кластере приводит к случайным сбоям узлов, или какая-то библиотека не хочет работать, что бы я ни пытался придумать.

Решение этих проблем не радует, и иногда я, честно говоря, с удовольствием занялся бы чем-нибудь другим — лишь бы не тратить время на попытки разобраться, что происходит.

Но я понимаю: программирование не всегда должно радовать — иногда приходится просто засучить рукава и взяться за неинтересную работу.

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

4. Чем сложнее задача, тем большему вы научитесь, и неудача в таких случаях — это нормально


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

И в моей жизни этому есть множество примеров.

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

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

Однажды мне пришлось взяться-таки за SQL серьезно и по-настоящему его изучить — после этого я смог работать с отделом анализа данных нашей компании.

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

И этот список можно долго продолжать.

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

Но благодаря этим трудностям я приобрел новые навыки и стал лучше как разработчик — без всей этой боли и безысходности я бы так ничего и не узнал.

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

В итоге я научился спокойно принимать ситуации, в которых приходится понервничать: они, конечно, неприятные, но я думаю, оно того сто́ит.

Мозг — мощный инструмент


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

Надеюсь, мои ментальные «хитрости» (или те, которые вы придумаете сами) помогут вам справиться с трудностями.

Будьте упрямы и не сдавайтесь.

Если вы чего-то не понимаете, продолжайте упорно трудиться и пытаться это понять: вы удивитесь, на что способны — только попробуйте.

О переводчике

Перевод статьи выполнен в Alconost.

Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.

Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.

Подробнее

© Habrahabr.ru