Перевод фрагмента статьи Александера Петкова, основателя сообщества помощи Junior-разработчикам. «Прототипы, объекты, алгоритмы… и все эти маленькие шажки между шагами, и вы понятия не имеете, как их реализовать… Брр, думай как программист». Почему многие разработчики сдаются, даже толком не начав - 1Начинающие разработчики часто чувствуют очень сильное давление во время своей первой работы. Поэтому если им дать несложное упражнение завершить фразу «Последний раз, когда я писал код...» Среди двух вариантов ответа:
  • Всё шло, как по маслу. Я уселся поудобнее, запустил свой редактор и нырнул в чудесный мир нолей и единиц. Три часа пролетели, как один миг!

  • Это было тааак скучно. Я еле заставил себя сесть и кодить. Постоянно всплывали ошибки, что-то шло не так. Да я до сих пор не со всем разобрался. Эти 30 минут показались мне тремя часами!
Они чаще всего выбирают второй. А всё потому, что в ситуацию, описанную во втором варианте, временами попадают все. Даже те, кто работает программистом 5, 8, 10 лет. Да и вообще, первый вариант звучит, как какая-то странная идиллическая сказка. Так вот, раз мы уже решили поговорить о пресыщении программированием, важно отметить, что такое происходит со всеми разработчиками, причём очень часто. И, разумеется, мы этого терпеть не можем.
Почему многие разработчики сдаются, даже толком не начав - 2
Попробуем копнуть глубже, чтобы разобраться, почему так происходит. На протяжении нескольких последних лет мне встречались множество начинающих разработчиков, которые:
  1. Недавно занялись программированием и чувствуют себя абсолютно потерянными.
  2. Застряли на вводном этапе и чувствуют дискомфорт каждый раз, когда приходится кодить самостоятельно, без какого-либо контроля со стороны.
  3. Были явно талантливы, но проваливали собеседования или вообще не получали приглашений на них.

Что же служит переломным моментом?

Мне пришлось потратить немало времени на изучение потребностей и программистов-новичков, поскольку это вкратце выражает суть моей деятельности. Чтобы лучше во всём разобраться, понадобилось поговорить с коллегами в своей компании, провести исследования групп в Facebook, форумов, Q&A-сайтов, изучить огромные потоки Reddit и даже опросить несколько небольших сообществ. И вот что удалось выяснить: «Я чувствовал, будто просто скопировал то, что было в видео, и всё»; «Я гуглил в поисках существующих примеров, которые уже были кем-то написаны. При этом чувствовал себя, как 3-летний ребёнок, решающий математическую головоломку. Это так раздражает»; «Я просто не способен думать, как программист»; А вот моё любимое: «Вот что я понял, обучаясь программированию: 99% времени ты чувствуешь себя абсолютно растерянным и неэффективным. Но как только вам удаётся заставить что-то работать, как надо — вот оно, это чувство — МАГИЯ свершилась!».
Почему многие разработчики сдаются, даже толком не начав - 3
Присмотревшись к этим цитатам, можно заметить кое-что важное: внутренняя борьба этих людей происходит не от того, что они бездействуют, или прилагают недостаточно усилий. И не потому, что у них плохая программа обучения, или им не хватает дисциплинированности. На деле им не хватает практического опыта. Казалось бы, преодолимая сложность. Тем не менее, многие из них были готовы сдаться и отказаться от программирования.

Два мифа о проблемах начинающих программистов

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

Миф #1. Надо любить программировать, если любви нет — это не ваше.

Как же часто я слышу нечто подобное от молодых разработчиков! И да, я категорически не согласен с этим утверждением. Чтобы стать разработчиком, вам совсем необязательно любить программировать. На самом деле, примерно 50% профессиональных разработчиков временами буквально ненавидят это дело. Я утверждаю это, исходя из личных наблюдений. Разумеется, это прекрасно, если проблему удаётся решить легко и просто, изящно, так сказать. Это замечательно, когда у вас отличный, чистый, оттестированный код, способный решать проблемы людей. Но увы, подобные достижения — это не то, что будет занимать 100% вашего времени… и близко не то. Будни программиста обычно не проходят в мыслях вроде: «Как же здорово мне удалось применить паттерн внедрения зависимостей, изящно расцепить классы, тем самым увеличить поддерживаемость своего кода. Вот это я молодец!»
Почему многие разработчики сдаются, даже толком не начав - 4
Увы, так происходит редко. Даже те, кто утверждают, что любят писать код, значительную часть времени проводят за скучной монотонной работой, которая далеко не всегда идёт гладко. В офисе программистов нецензурная брань звучит не реже, чем в автосервисе. Честное слово! Нет ничего зазорного в том, что иногда вы просто ненавидите программировать. Конечно, вопрос «Может это вообще не для меня?» очень часто возникает в голове начинающего программиста, когда тот чувствуете на себе давление, получает большие нагрузки и всё идёт совсем не так, как хотелось бы. Это нормально, поверьте. И, да, программирование для вас, не сомневайтесь. Если вы это читаете, значит вам небезразлично. А если вам небезразлично, то всё непременно получится.

Миф #2. Я столько всего не знаю, мне никогда это не выучить!

Это ещё одна распространённая мысль (возможно даже более популярная, чем первый миф). Многие жалуются на это. И я абсолютно чётко понимаю, что за этим стоит. Наше поле деятельности настолько широкое, что чем глубже ты вникаешь, тем отчётливее понимаешь, сколько всего ещё не знаешь. Я тоже чувствую себя плохо даже при мысли об этом. Это очень угнетает! Хорошие новости в том, что вам и не надо знать всё. Достаточно знать, как выяснить то, чего вы не знаете. На данный момент, убедитесь в том, что владеете основными принципами того, с чем вы работаете.
Почему многие разработчики сдаются, даже толком не начав - 5
Давайте рассмотрим такой пример. Если вы экспериментируете с CSS, должны понимать, что он предназначен для применения стилей к элементам HTML. Вы можете сделать кнопку, имеющую границы, цвет, тень или анимацию. Вы не можете сказать, что произойдёт, если нажать на кнопку (для этого вам нужен JavaScript). Поэтому, если нужно «оживить» картинку при нажатии кнопки:
  1. У вас должно быть изображение и элементы кнопки (HTML);
  2. Затем вы можете настроить анимацию для определённого класса (CSS);
  3. И можете добавить класс к изображению при нажатии кнопки (JavaScript).
Вы ведь читали это в инструкции однажды. Через неделю вам надо добавить тень к изображению при отправке формы. Вы уже знаете что искать. У вас есть общее представление о CSS,HTML, JavaScript, и понимание за какую часть в функциональности они отвечают. Всё, что остаётся — загуглить нужные слова. В данном случае, «css добавить тень» и «javascript добавить форму». Вот видите, что мы сделали? Так что не сдавайтесь слишком рано, и вырабатывайте правильные привычки для эффективной учёбы. Но о них поговорим уже в следующий раз.
Что ещё почитать:

Как понять, что я смогу?

Выбор языка программирования

Почему нужно учить именно Java?