Об этих проблемах рассказываем не мы, рассказывает опытный преподаватель онлайн-курсов и, конечно же, программист.
1. Мотивация — вами движет не то, что должно бы
Мотивация важна в любом процессе обучения и программирование не является исключением. Учиться программированию надо не для того, чтобы "получить профессию" или не потому, что это "круто и хорошо оплачивается". Учиться программированию надо для того, чтобы решить свои проблемы. Автоматизировать и улучшить жизнь. Написать программу, которая поможет другим.
Если вы выбрали программирование исключительно ради карьеры, в процессе обучения у вас не один и не два раза появится желание все бросить и уйти — в моменты, когда процесс станет действительно сложным. В такие моменты вы будете говорить себе, что программирование не для, что оно вам не нравится и что вы не были рождены, чтобы стать программистом.
Поэтому, приступая к учебе, вам необходимо сразу наметить себе настоящий проект или проблему, которую стоит решить. Не надо учиться "абстрактно".
2. Неопределенность — вы не знаете, с чего начать
Перед студентами вузов такая проблема стоит в меньшей степени, а вот перед теми, кто хочет научиться программировать на курсах или сам — в полный рост. С какого языка начать?
На самом деле эта проблема стоит перед теми, кто идет учиться, не зная — зачем ему это. Если у вас есть определенная идея или проблема, требующая решения, то язык под нее подбирается автоматически: Swift, если нужно iOS-приложение, Java — если Android, JavaScript — для веб-проекта. Последний сегодня используется очень широко и не только в интернете.
Если вы все еще не уверены, какой язык выбрать — спросите знакомого программиста. Опишите ему задачу, и он подскажет, в каком направлении смотреть. И помните, что большая часть полученных в процессе обучения знаний легко транслируется в другие языки программирования, ибо основа и принципы у них почти универсально одинаковые.
3. Неуверенность в себе — вы не можете применить теорию и вините себя
Начать учиться программировать легко — в интернете есть масса платных и бесплатных курсов. Начать изучать теорию тоже несложно, большинство людей постигает ее довольно легко. Проблемы начинаются с практикой, когда дело доходит до написания кода.
Это практически как с плаванием — теория очень проста, но для того, чтобы научиться плавать, надо плавать. И, разумеется, у вас получится не сразу (и плавать, и программировать). Вы наглотаетесь воды и, вероятно, в какой-то момент впадете в отчаяние. Не надо. Вот пять простых советов, как перейти от теории к практике:
- Начните настоящий и довольно сложный проект, который вас захватывает.
- Разделите его на маленькие задачи, действительно маленькие, каждая — не более 20 строк кода. Если вы не можете решить задачу, подумайте, как разбить ее на еще более маленькие части.
- Решайте по одной задаче в единицу времени, не пропускайте их. Если вас осенило, как можно решить следующую задачу — запишите мысль и отложите, сконцентрируйтесь на решении текущей проблемы.
- Убедитесь, что вы знакомы с теорией. Если запутались и чего-то не понимаете — спросите совета у друга, учителя или на StackOverflow.
- Наконец, вы решили задачу. Ура? Вы можете столкнуться со следующим врагом начинающего программиста.
4. Нетерпеливость — вы спешите и не думаете о последствиях
В лучшем случае при решении задачи все работает и тогда люди обычно переходят к следующей задаче. Если вы делаете так же, вы теряете возможность научиться чему-то новому.
Что надо делать? Задать себе следующие вопросы:
- Может ли так случиться, что мой код не сработает? Даже если он выглядит рабочим сейчас, может ли так получиться, что ряд обстоятельств приведут к его "отказу"?
- Достаточно ли чистый мой код? Могут ли его понять другие и изменить при необходимости? В будущем вы и сами, возможно, будете вынуждены к нему вернуться — сможете ли вы его понять через месяц? А через год?
- Мой способ решения проблемы — лучший? А, может быть, ее можно было решить по-другому? Стоит ли тратить время на такое решение?
- Как этот модуль взаимодействует с остальными? Может ли он на них негативно повлиять? Могут ли другие его легко использовать?
Однако, очень часто в процессе вы сталкиваетесь со следующим врагом:
5. Лень — вы не знаете решения проблемы и ищите "готовенькое"
Иногда, когда люди не знают, с чего начать, они пробуют что-то наудачу или, хуже, используют чужой код. Но это ничем вам не поможет — когда вы столкнетесь с такой же проблемой позже, вы по-прежнему не будете знать, как ее решить.
Если вы "застряли", надо понять — почему. Вот возможные причины:
- Вы не знаете теорию достаточно хорошо — синтаксис языка, как работает конкретная библиотека, API, метод или класс; как работают системы. В этом случае — изучайте теорию дальше.
- Задача слишком большая, ее надо разбить на более мелкие. Разбейте.
- Вы не понимаете, что задача значит — читали слишком быстро и поняли не до конца, или поняли не так. Перечитайте и подумайте еще.
6. Отвращение к "багам" — у вас все получается, но вы ненавидите искать ошибки
Это одна из самых распространенных проблем в программировании, с нею сталкиваются даже опытные программисты. Ибо очень распространенная причина того, что ваше решение проблемы не работает — наличие в нем "багов" или "глюков". Как решить эту проблему? Искать ошибки. И это очень важно, этому особо учат, про это пишут целые книги.
К сожалению, многие люди настолько ненавидят этот процесс, что бросают программирование целиком. Другие волнуются, что поиск ошибок занимает слишком много времени — но они не должны, так как это нормально, особенно для тех, кто учится и новичков в программировании.
В идеале вы должны научиться полюбить "дебаггинг". Ибо это возможность научиться чему-то и улучшить свои навыки программирования. Каждый раз, когда вы находите собственную ошибку, спрашивайте себя — почему я ее допустил и что надо сделать, чтобы этого не повторилось.
7. Заблуждение — вам помогли и вы решили, что вы все знаете
Большая часть людей не знает, как правильно получать помощь. В программировании мы часто обращаемся к вспомогательным материалам — книгам, курсам, менторам, сообществам программистов. И очень часто люди, получая такого рода помощь, не утруждают себя тем, чтобы понять — как оно на самом деле работает и как тот, кто эту помощь предложил, дошел до решения этой проблемы. Очень легко, потратив 10 часов на решение проблемы, "наконец-то найти" искомый код в интернете, использовать его и благополучно "выдохнуть".
Не надо так делать! Спросите себя: что вы делали неправильно, что у вас не получилось найти решение самому? Если вам помог конкретный человек — спросите у него, как он дошел до этого решения. Самая большая проблема Google и даже StackOverflow в том, что вы не можете спросить автора кода об этом — вы можете только предполагать и ваши предположения не всегда будут верны.
Сражайтесь со всеми врагами безжалостно
Эта статья — еще один кусочек теории. Она не поможет вам, если вы не начнете ее применять на практике, раз за разом, до тех пор, пока она не станет рутиной.
Программирование — это про формирование хороших привычек, которые позволят вам не застревать и двигаться вперед. И, кстати, ожидайте, что ваш первый код не будет работать.