В моей жизни было время, когда я регулярно добивался больших успехов в развитии своих навыков. Мне это удавалось, благодаря тому, что я изо всех сил пытался узнавать что-то новое и ни при каких обстоятельствах не позволял себе опускать руки. Было трудно не дать самому себе бросить все, но, к счастью, я столкнулся с некоторыми идеями, которые помогли мне преодолеть внутренние сомнения.
Когда сталкиваешься с трудностями при разработке программного обеспечения, очень легко почувствовать себя неудачником. Иногда я испытывал желание сдаться. В подобных ситуациях, я оправдывал себя, либо придумывал причины, согласно которым мне нужно было тратить время на то, в чем я лучше разбираюсь.
И я знаю, что я не одинок.
Например, на 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