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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Подробнее


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

OWASP Proactive Controls: cписок обязательных требований для разработчиков ПО

Данная статья содержит список техник по обеспечению безопасности, обязательных для реализации при разработке каждого нового проекта.Недостаточно защищенное ПО подрывает безопасность объектов критической инфраструктуры, относящихся, например, к здравоохранению, обороне, энергетике или финансам. Предлагаем вашему вниманию Top 10 Proactive Controls for Software ...

— А вы там в нефтехимии бензин делаете, да?

Привет, Хабр! Понятно, по пути будем упрощать, чтобы не превращать рассказ в занудную лекцию с перечислением всей таблицы Менделеева (кстати, 2019 год – официально год периодического закона, в честь 150-летия его открытия). Продолжая серию наших публикаций, мы решили, что для ...