Самые большие скачки в моем профессиональном развитии происходили, когда приходилось с трудом, упрямо, не сдаваясь разбираться в чем-то новом, — и это не всегда казалось мне чем-то хорошим. Но постепенно у меня сформировался подход, который помог преодолеть внутренние блоки.
Возможно, это поможет и вам.
Когда при разработке ПО сталкиваешься с трудностями, очень уж легко потерять веру в себя — иногда мне даже хочется бросить всё. Я заметил, что в подобных ситуациях мозг начинает выдумывать причины, почему лучше потратить время на что-то более знакомое, или жалуется, что задача мне не по зубам.
Знаю, у других это тоже бывает.
На Реддите люди рассказывают о похожих сложностях в учебе, и я не один раз слышал от других профессиональных разработчиков, что они сомневаются в собственной способности понимать сложные концепции, которые другим коллегам, как им кажется, «даются легко».
Очень важно проявлять упорство перед лицом таких трудностей — хотя это и непросто.
За прошедшие годы я научился нескольким ментальных «хитростям», которые помогали мне в сложные минуты, часы и дни.
Я расскажу о тех точках зрения, которые оказались особенно полезны.
Переведено в Alconost
1. Разработчик растет профессионально благодаря упорному труду и прилагаемым усилиям
Что главное в разработчике: талант или упорный труд?
Люди просто рождаются великими разработчиками — или им приходится прикладывать для этого усилия?
Мне кажется, что узнать правильный ответ на этот вопрос невозможно, поэтому я решил придерживаться мнения, что хорошими разработчиками становятся благодаря приложенным усилиям.
Такая точка зрения полезнее: она означает, что если что-то мне никак не дается — нужно хорошенько постараться, и я разберусь.
Кроме того, отсюда же следует, что моя работа не всегда будет легкой или радостной — придется и упорно потрудиться.
2. Пытаться сделать что-то впервые может быть сложно, и неразумно ожидать, что вы сразу станете в этом докой
Я как разработчик часто расстраиваюсь, когда сталкиваюсь с чем-то, чего не понимаю, но, как мне кажется, должен понимать.
Как-то мне пришлось работать в компании, которая использовала git, и все вокруг меня были специалистами в этой VCS. Было время, когда мне пришлось столкнуться с тем, что мои знания SQL оказались не так уж хороши.
И в каждом из этих случаев какая-то часть меня была уверена, что я должен хорошо разбираться в этих областях: в конце концов, я же ведущий разработчик широкого профиля с многолетним опытом!
Да, у меня был опыт, но это никак не отменяло того, что мне пришлось впервые подробные изучать эти технологии, и поначалу я был в них не очень хорош.
Иногда новое дается легко, иногда — нет. Я начал смотреть на это так: если я делаю что-то впервые, у меня не обязательно это должно получаться хорошо.
Получается как-то так…
«Я никогда раньше не программировал на Джаве — значит, я и не должен быть хорош в этом. Поэтому я и иду на эти курсы».
«Я никогда не использовал git-репозитории — я не обязан знать, как это делается. Поэтому я попрошу коллегу помочь».Так я смог обезоружить голос в моей голове, который твердит, что я не гожусь для своей работы, что у меня не получится. Конечно, у меня может не получиться, и естественно, что я пока что не очень хорош — но я и не должен что-то хорошо уметь сразу, поэтому я пробую и постепенно совершенствуюсь.
3. Работа с кодом не всегда должна быть приятной: даже если задача неинтересная, ее всё равно можно сделать
Иногда мне приходится работать над задачами, которые не приносят удовольствия.
Например, какой-то кусок кода обработки данных в моем Spark-кластере приводит к случайным сбоям узлов, или какая-то библиотека не хочет работать, что бы я ни пытался придумать.
Решение этих проблем не радует, и иногда я, честно говоря, с удовольствием занялся бы чем-нибудь другим — лишь бы не тратить время на попытки разобраться, что происходит.
Но я понимаю: программирование не всегда должно радовать — иногда приходится просто засучить рукава и взяться за неинтересную работу.
Когда такое случается, бывает трудно. Но постепенно я понял, что в этом есть и польза: самые сложные задачи заставляют совершенствоваться эффективнее всего.
4. Чем сложнее задача, тем большему вы научитесь, и неудача в таких случаях — это нормально
Оказывается, что по-настоящему учусь я тогда, когда упорно сражаюсь с задачей, которая кажется слишком сложной для меня.
И в моей жизни этому есть множество примеров.
Когда я впервые взял книгу по программированию, код давался мне тяжело — но я все-таки научился программировать.
Или, например, я как-то попытался взяться за разработку архитектуры крупных приложений. Я долго и напряженно бился над задачей, пока не узнал о структурных и конструктивных шаблонах — после чего нам пришлось выбросить месяцы работы над кодом, начать сначала и построить приложение с нуля за считанные недели — с помощью новых знаний.
Однажды мне пришлось взяться-таки за SQL серьезно и по-настоящему его изучить — после этого я смог работать с отделом анализа данных нашей компании.
Наконец, я взялся проектировать инфраструктуру обработки данных для нашей компании с использованием технологий веб-приложений. Я бился над этим, пока не изучил «озера данных», конвейеры ETL и распределенные вычислительные решения.
И этот список можно долго продолжать.
В каждом из этих случаев приятного было мало: там были и тупиковые решения, и бесполезный код, который пришлось выбросить, и множество безуспешных попыток что-то попробовать.
Но благодаря этим трудностям я приобрел новые навыки и стал лучше как разработчик — без всей этой боли и безысходности я бы так ничего и не узнал.
Поэтому сегодня я предпочитаю считать, что стресс, трудности и некоторая нервозность — это хороший признак: если мне сложно, значит, я учусь.
В итоге я научился спокойно принимать ситуации, в которых приходится понервничать: они, конечно, неприятные, но я думаю, оно того сто́ит.
Мозг — мощный инструмент
Мы можем выбирать точку зрения на ситуацию, и это помогает справляться со сложностями, которые неизбежно встречаются на пути разработчика, который хочет совершенствоваться профессионально.
Надеюсь, мои ментальные «хитрости» (или те, которые вы придумаете сами) помогут вам справиться с трудностями.
Будьте упрямы и не сдавайтесь.
Если вы чего-то не понимаете, продолжайте упорно трудиться и пытаться это понять: вы удивитесь, на что способны — только попробуйте.
О переводчике
Перевод статьи выполнен в Alconost.
Alconost занимается локализацией игр, приложений и сайтов на 70 языков. Переводчики-носители языка, лингвистическое тестирование, облачная платформа с API, непрерывная локализация, менеджеры проектов 24/7, любые форматы строковых ресурсов.
Мы также делаем рекламные и обучающие видеоролики — для сайтов, продающие, имиджевые, рекламные, обучающие, тизеры, эксплейнеры, трейлеры для Google Play и App Store.
Подробнее