Learning

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


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

И я знаю, что я не одинок.

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

Хоть это и нелегко, особенно, когда ты сталкиваешься с той или иной проблемой, однако упорство  —  очень ценный навык.

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

1. Человек становится профессионалом, благодаря своей тяжелой работе и усилиям.

Что делает из человека великого разработчика: талант или тяжелая работа?

Как вы думаете? Некоторые люди просто рождаются великими разработчиками или они ими становятся, благодаря усилиям?

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

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

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

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

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

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

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

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

Суть этой точки зрения выглядит примерно так:

“Я никогда раньше не программировал на Java — я не должен быть хорош в этом. Вот почему я хожу на эти занятия.”

“Я никогда прежде не заливал код в Git-репозиторий — я не должен знать, как это сделать. Вот почему я обращаюсь к коллеге за помощью”

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

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

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

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

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

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

4. Больше всего вы узнаете, когда сталкиваетесь с самыми трудными проблемами —  и неудача в такие моменты нормальна.

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

Могу привести десятки примеров.

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

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

Было время когда я, наконец, серьезно взялся за работу и выучил SQL. После этого я смог начать работать с data science командой в нашей компании.

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

Этот список можно продолжать и дальше, но на этом мы остановимся.

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

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

И…

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

Ум — мощный инструмент

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

Я надеюсь эти ментальные стратегии помогут вам преодолеть внутренние сомнения.

Просто не сдавайтесь и продолжайте в том же духе.

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

Перевод статьи Walt Schlender: Why you learn the most when you feel like you’re struggling as a developer