Почему вы больше всего узнаете, когда встречаете препятствия в своей работе?

0
1172
views

Перевод статьи Уолта Шлендера «Why you learn the most when you feel like you’re struggling as a developer».

Когда вам трудно, вы учитесь

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

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

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

Я видел обсуждения на Reddit, где люди рассказывают о проблемах в учебе. Мне часто доводилось общаться с профессиональными инженерами, сомневающимися в своих способностях понять сложные идеи, которые их коллеги ловят на лету (так им кажется).

И хотя это не просто, но способность выстоять перед лицом подобных проблем очень ценная.

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

1. Человек развивается как разработчик, когда тяжело работает и прикладывает усилия

Что делает разработчика хорошим? Талант или тяжелая работа? Кто-то просто рождается отличным разработчиком или все-таки всем приходится прилагать усилия?

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

Такая точка зрения более полезна. Она предполагает, что если я очень сильно хочу что-нибудь изучить, я смогу это сделать, если буду упорно трудиться.

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

Требуется тяжелый труд

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

Будучи программистом, я часто переживаю, когда сталкиваюсь с чем-то, чего не понимаю. Мне кажется, что я должен это понимать.

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

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

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

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

Что-то вроде:

«Я никогда не писал код на Java – нечего и рассчитывать, что сразу получится. Именно поэтому я записался на эти курсы».

«Я никогда раньше не коммитил код в git-репозиторий, так откуда же мне знать, как это делается? Именно поэтому я прошу коллег о помощи».

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

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

Порой в разработке встречаются задачи, которые меня не увлекают.

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

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

Но дело в том, что я знаю: программирование не всегда является увлекательным занятием. Порой надо просто закатать рукава и «сделать дело».

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

Самые сложные проблемы полезнее всего

4. Встречаясь с самыми сложными проблемами, вы эффективнее всего учитесь. При этом поражение в подобных случаях тоже нормально.

Пытаясь сделать что-то, слишком тяжелое для меня, я чувствую, что на самом деле учусь.

Перед глазами встают десятки примеров.

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

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

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

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

Список можно продолжать.

В каждом из этих случаев были свои болезненные моменты. Я выбрасывал огромное количество кода. Я испытывал разные вещи и переживал множество провалов.

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

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

Разум это мощный инструмент

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

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



ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here