Советы для разработчиков-джуниоров от программиста с 11-летним стажем

0
1105
views

Перевод статьи «Lessons for beginners and junior developers after 11 years of coding».

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

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

Не все туториалы одинаково полезны

Представьте, что вы — лабораторная крыска.

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

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

Когда я начинал учиться, я пытался продраться сквозь книгу Head First Java. Но, убив многие часы на эти попытки, так и не продвинулся вперед. А ведь в сети все наперебой утверждали, что это самая лучшая книга по программированию всех времен и народов. В то же время уроки на YouTube-канале TheNewBoston отлично мне подошли, хотя сейчас их не рекомендуют.

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

Два года спустя я начал изучать алгоритмы, и ВСЕ руководства, которые я читал, были для меня китайской грамотой, пока я не посмотрел видео, где эта тема объяснялась в форме венгерских народных танцев. (Видео действительно очень занятные. Канал AlgoRythmics, — ред. Techrocks).

И вот тогда в голове что-то щелкнуло.

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

Если вы не отработаете навыки в конкретном проекте, в вашей долговременной памяти ничего не сохранится

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

Я не могу сосчитать, сколько раз я брался за курсы типа «Введение в Python» на Udacity, Coursera и пр., и все равно все забывал.

Это бесит.

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

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

Приведу конкретный пример. В Python при помощи len(myList) можно получить длину списка. Вы изучаете это, проходя вводный курс по Python на Udacity.

Возвращаясь к этой теме месяц спустя, вы уже не помните, было это len, length( ) или myList.size( ).

Но если вы будете использовать этот метод в проекте, результат будет другим. Например, вы работаете над 2-месячным Django-приложением для начинающих программистов, где многократно приходится подсчитывать число пользователей, количество выполненных упражнений, число чатов и т. п. Представьте, что вы все это делаете по всему проекту в течение двух месяцев. Вам будет сложно забыть, что делает len( ).

Это тривиальный пример, но думаю, идею вы уловили.

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

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

Не боритесь со страхом

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

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

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

Порой страх проходит по мере накопления опыта.

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

Это нормально.

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

Это и есть жизнь.

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

Постоянство важнее, чем интенсивность

Постоянство это ключ к успеху.

Когда вы начинаете учиться, вы устанавливаете новые нейронные связи в мозге, облегчающие извлечение информации. Согласно исследованиям, эти связи сохраняют свою силу благодаря частоте использования, а не интенсивности.

Это означает, что 30 минут в день 5 раз в неделю лучше, чем 2,5 часа раз в неделю. Время одно, а эффект разный.

В общем, работать нужно не только усердно, но и мудро.

То, что кажется талантом, часто бывает незаметной практикой

Любой прогресс легко объяснить талантом.

Когда я начал учиться программированию (это был С++), мои одноклассники не могли поверить, что я никогда прежде не писал код. Они думали, что я очень талантлив.

А я просто проводил за компьютером по пять часов после уроков. Я набирал cout << “this is my first program”, видел, что программа не запускается, находил причину — пропущенную точку с запятой, переделывал, отмечал, что предложение распечаталось не на той строке, потому что я не добавил endl. Всего этого мои одноклассники не видели.

Эта осознанная практика способствовала развитию моего «таланта».

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

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

Врожденный талант встречается крайне редко.

Большинство становятся настолько хорошими специалистами, насколько усердно они практиковались. Занимался студент или нет, видно сразу же, как только он садится за клавиатуру.

На своем пути вы повстречаете хамов

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

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

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

В работаете на Windows? Значит, обязательно встретите фанатов Linux, которые посчитают вас посредственностью.

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

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

Если вы пришли из другой сферы (в частности, не получили STEM-образования), вы встретите людей, которые мгновенно станут сторонниками чистоты рядов программистского сообщества.

— Нам тут не нужны гуманитарии!

Они есть в сети. На работе. Порой, к сожалению, даже в вашей семье.

И вопрос не в том, встретите ли вы таких людей, вопрос в том, когда это произойдет.

Учитесь просто проходить мимо них.

Постепенно ситуация улучшается, но людей еще воспитывать и воспитывать.

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

А когда достигнете вершины, следите за своим поведением, не станьте таким хамом сами.

Достигайте мастерства в чем-то одном

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

Вы изучаете React в течение недели. Затем JavaScript — две недели. И три недели Laravel.

Прекратите.

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

Выберите что-то одно. Задержитесь на изучении этой темы на несколько месяцев (в идеале — на 6-12), прежде чем переходить к новой.

Это полезно по двум причинам:

  • Вы погрузитесь в изучение этой темы достаточно глубоко и достигнете критической массы знаний, которая подтолкнет вас к мастерству.
  • Хорошо изучив одну технологию, вы сможете перенести часть знаний на другую. Изучите Flask, и вы сможете легко овладеть Django. Изучите React поглубже, и вы сможете за несколько дней оценить плюсы и минусы Laravel.

Это не значит, что непременно нужно 6 месяцев изучать один HTML или учить CSS целый год. Имеется в виду, что не нужно смешивать изучение Django с Express, React, геймдевом и iOS.

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

Разработка ПО — постоянно развивающаяся сфера

Она потрясающая.

Она раздражающая.

Она пугающая.

Но если бы мне снова нужно было бы выбирать, я бы все равно выбрал именно ее.

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

Please enter your comment!
Please enter your name here