Как начинающий программист, вы часто можете слышать, как весело кодировать от своих сверстников. Когда я разговариваю со старшими разработчиками, они делятся многими причинами, по которым им так нравится то, что они делают — область постоянно бросает вам вызов, это очень стимулирует, и острые ощущения от создания новых вещей с нуля и просмотра вашего кода трудно сравнить с чем-либо еще.
То, как опытные программисты относятся к кодированию, можно обобщить этой цитатой из Линуса Торвальдса:
“Большинство хороших программистов занимаются программированием не потому, что они ожидают, что им заплатят или они получат лесть от публики, а потому, что программировать весело”.
Программирование было не только забавой и играми для меня (и многих других)
Вдохновленный бесчисленными постами r/coding и статьями Freecodecamp о разработчиках, которые создают веб-сайты после нескольких месяцев обучения, я не мог дождаться, когда наконец начну учиться.
Однако, когда я на самом деле попал на курсы и книги по Java, я внезапно понял, что столкнулся с проблемой, о которой программисты не так много говорят — стресс. Много, много стресса.
Некоторое время назад я видел этот пост на r/learnprogramming , который, на мой взгляд, подводит итог тому, как прекрасно чувствуют себя начинающие программисты:
“Итак, я приближаюсь к концу семестра в аспирантуре по программному обеспечению, и какого черта! программирование – это серьезно сложно.
Например, я занимаюсь математикой, физикой и китайским языком, а изучение java-это серьезная борьба.
В данный момент я действительно ошеломлен этим, как будто читаю главу 2, и я просто не понимаю, и в книге говорится о том, что все должны просто автоматически предполагать. Так много модных словечек. они просто говорят тебе то и это, и я все время спрашиваю себя, почему, но ответа нет.
Неужели я единственный в этой ситуации?”
Прежде чем я занялся кодированием, я был удивлен. Может ли программирование действительно чувствовать себя более ошеломляющим, чем изучение сложного иностранного языка?
Всего через несколько месяцев после того, как я стал начинающим студентом Java, я полностью понял чувства разочарованных студентов. Жонглирование дневной работой, общественной жизнью и уроками программирования было для меня слишком. Я чувствовал, что сгораю — а ведь я только начал.
Программирование тревоги-это проблема, слишком большая, чтобы ее игнорировать
Я не хотел бросать Java — поэтому, когда я почувствовал, что начинаю ненавидеть кривую обучения, мне пришлось искать способы справиться с беспокойством по поводу программирования. Сейчас, 4-5 месяцев спустя, я все еще не полностью расслаблен при программировании, однако уровень стресса стал управляемым, и обучение стало неотъемлемой частью моей рутины.
Ради других студентов Java, которые тоже борются с интеграцией программирования в вашу повседневную жизнь и чувствуют себя подавленными большим объемом новых концепций, я решил поделиться несколькими советами, которые помогли мне справиться с беспокойством по поводу программирования.
Совет № 1. Придерживайтесь немногих ресурсов (выбирайте хорошие)
Первое, что помогло мне забыть о той колее стресса, к которой я неуклонно шел, – это понимание того, что нет такой вещи, как “изучение” программирования. Я начал изучать программирование как большой перфекционист — вместо того, чтобы остановиться на самом простом способе решения проблемы, я хотел найти лучший (и часто довольно сложный).
Короче говоря, я был потерян, прежде чем понял это.
Решение: Первое, что я бы посоветовал начинающим разработчикам, – это не тратить слишком много времени на одновременное прохождение нескольких курсов, книг, учебных пособий. Хотя такой тщательный подход может дать вам глубокое понимание концепций, в конце дня вы почувствуете, что никуда не денетесь.
Чтобы оставаться сосредоточенным на совершенствовании и постоянно прогрессировать, мне нужно было выжимать ресурсы, которые я регулярно использую. Прямо сейчас мой список учебных материалов выглядит следующим образом:
- Курсы: Курс Java Code Gym
- Каналы Youtube: Дерек Банас
- Текстовые учебные пособия: Документация Oracle
Наличие такого определенного списка ресурсов помогает мне избежать хаоса при обучении и получить ощущение ощутимого прогресса после каждой учебной сессии.
Совет № 2. Делайте перерывы
В начале своего путешествия по программированию я был верным последователем принципа “Практика делает лучше”. Я поставил перед собой цель кодировать как можно больше — до и после работы, в пробке, во время вечеринки, которая мне не понравилась.
После нескольких месяцев обучения я стал точным представителем этого мема:
Решение: Когда я был близок к выгоранию, я понял, что больше не могу позволить программированию высасывать радость и энергию из моей жизни. Хотя поначалу я действительно чувствовал себя виноватым — я начал делать столь необходимые перерывы в учебе.
Если вы думаете: “Я и так медленный программист, как я могу стать лучше, если не буду практиковаться”, взгляните на некоторые причины, по которым 15-минутный перерыв действительно может сделать вас лучшим программистом:
- Согласно статистике, люди не могут полностью сосредоточиться на сложных задачах более 50 минут. После часа напряженной работы нам нужен 15-минутный перерыв, чтобы восстановить концентрацию.
- Ради наших глаз офтальмологи рекомендуют делать 2-минутный перерыв на экране после 20 минут интенсивной работы (а кодирование-это очень напряженная деятельность, даже если вы используете большой монитор).
- Истощение на рабочем месте приводит к неловким ошибкам и может занять месяцы работы (не говоря уже о вашем собеседовании).
Если вы не знаете, чем заняться, когда у вас перерыв в кодировании, вот несколько идей, которые работают для меня:
- Сделайте быструю тренировку — было доказано, что она стимулирует когнитивные функции.
- Примите душ — это поможет вам освежить как тело, так и разум.
- Отправляйтесь на утреннюю прогулку, когда вокруг никого нет (ради социального дистанцирования).
- Играть на инструменте — я обнаружил, что обучение музыке и программированию требует схожих навыков, поэтому глушение гитары на самом деле является тренировочным лагерем для вашего мозга.
Совет № 3. Программирование-это средство, а не цель
Когда накапливаются ошибки в кодировании, и вы не можете понять, что не так, или когда вы не можете освоить многопоточность, я неизбежно спрашиваю себя: для чего я это делаю? В начале моего пути у меня не было четкой причины, почему я выбрал Java или программирование в первую очередь.
Мне потребовалось некоторое время, чтобы определить “почему” для моего пути развития — вот что я придумал.
- Прибыльный рынок труда . Будучи студентом-программистом, я недавно подружился с выпускником-физиком, которому было трудно найти работу, связанную с его специальностью. Как разработчик, он отправил всего 20 резюме и до сих пор продолжает получать электронные письма от рекрутеров. Он был чрезвычайно рад обнаружить, что благодаря кодированию он больше никогда не будет в трудном положении.
- Широкий спектр ролей, на которые я могу претендовать . Проведя некоторые исследования, я обнаружил, что изучение Java может дать мне место в разработке бэкенда, мобильном программировании, даже в разработке больших данных или встроенных устройств. Наличие доступа к стольким различным задачам поможет мне предотвратить выгорание и оставаться в сложной ситуации даже после более чем 10 лет работы в этой области.
- Много удаленных возможностей . Когда я слишком устаю от Java, мысль о том, что знание того, как программировать, позволяет мне не проводить ни одного дня в офисе, действительно поддерживает мой дух. Если для вас важна гибкость на рабочем месте, напомните себе о широком спектре удаленных возможностей, которые разработчики должны поддерживать на протяжении всего процесса обучения.
Еще один совет, который я бы дал начинающим разработчикам, – присоединиться к как можно большему числу профессиональных сообществ. Обмен опытом и получение поддержки от ваших сверстников-это мощный способ не сбиться с пути обучения.
Вот группы и темы форума, за которыми я слежу:
- r/java
- r/AskComputerScience
- r/обучение программированию
- r/cscareerquestions
- r/cs образование
- r/dataisbeautiful
- r/логика
Слабина
- Европейский Dev Explorer (отлично подходит для программистов из ЕС)
- Код Новичка
- Косая ракета
- Разработчики хэштегов
Совет № 4. Не ожидайте, что сразу же нажмете на Java
В начале моего путешествия по разработке Java я верил, что как только я начну заниматься программированием, это будет любовь с первого взгляда. Я подумал: “Мне следует остерегаться слишком много практиковаться”.
Однако позже наступали дни, когда я вообще не хотел программировать. Я все еще мог неохотно читать книгу по кодированию или смотреть вдохновляющее видео, но я ненавидел практиковаться.
Затем я понял, что кодирование похоже на игру на музыкальном инструменте или занятия спортом. В то время как для некоторых аспекты техники приходят в мгновение ока, и через несколько лет они готовы играть профессионально или бегать полные марафоны, другим нужны годы, чтобы достичь той же точки.
Другими словами, когда мы начинаем изучать язык программирования, мы часто ожидаем, что станем вундеркиндами, которые просто получат его. Однако, по статистике, только 1 из 5-10 миллионов учащихся является вундеркиндом , и только 10% могут быть классифицированы как одаренные . Так что, нравится нам это или нет, мы, скорее всего, окажемся на средней стороне спектра.
Как средний программист может стать лучше?
Нет другого ответа, кроме как через дисциплину и последовательную практику . В какой-то момент я понял, что если не отточу свое мастерство, то в конечном итоге потеряю прогресс, который у меня уже есть.
Таким образом, даже в те дни, когда я плохо справляюсь с Java, я посвящаю 3-4 часа изучению. Я делаю это не потому, что убежден, что учеба каждый день делает меня лучше.
Я просто знаю, что отсутствие практики определенно сделает меня худшим программистом.
Совет № 5. Создайте план обучения на основе крайних сроков
Когда я разговариваю с Java-программистами на Reddit или StackOverflow, они часто указывают, что кривая обучения не имеет конца.
Вот почему так трудно провести грань между учеником и младшим, затем младшим и средним и, наконец, определить кого-то как старшего разработчика.
Чтобы убедиться, что я не застрял в менталитете студента, мне нужно было добавить некоторое внешнее давление к моей кривой обучения. Вот почему я решил выяснить, сколько времени требуется для изучения Java, и создать пошаговый план обучения, который позволит мне достичь оценки.
Сколько времени требуется для изучения Java?
В зависимости от того, являетесь ли вы занятым, средним или преданным учеником, график будет отличаться для вас. Согласно статистике , это оценки для изучения Java:
- Быстро обучающиеся — 16 месяцев.
- Обычные студенты — 26 месяцев.
- Занятые студенты — 39 месяцев.
Поскольку у меня есть работа на полный рабочий день, я решил классифицировать себя как занятого студента Java и построил план обучения Java, который охватывал три года. Я помещаю основные аргументы Java и крайние сроки рядом с каждым из них в электронной таблице.
Я отметил статус завершения рядом с каждой концепцией, чтобы отслеживать прогресс в обучении. Это было чрезвычайно полезно для меня, поскольку помогло определить границы моего пути обучения.
В конце концов, количество вещей, которые нужно изучить в Java, может быть бесконечным, но количество строк в электронной таблице-нет. Через два с половиной года я завершу свой учебный план — это будет моим ключом к переходу от менталитета ученика к менталитету младшего разработчика.
Вывод
Я разочарован тем, что мало кто упоминал и публично делился своим тревожным опытом. Это болезненно распространено среди разработчиков — вот почему я настоятельно рекомендую сообществу программистов рассказать об этом.
Что касается способов борьбы с тревожностью кодирования, большинство советов, которыми я поделился выше, сводятся к тому, чтобы успокоить себя. Вооружившись нужными ресурсами, готовыми сделать перерывы и посвятить себя языку, вы будете намного спокойнее и увереннее, когда дело дойдет до кодирования.
Изучение Java может показаться темным туннелем, но при достаточной решимости и дисциплине мы обязательно дойдем до конца.
Впервые опубликовано на LevelUp Disconnected .