Самостоятельное программирование: с чего начать и советы по обучению

Почему Код?

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

По данным Бюро статистики труда, в последнее десятилетие профессии, связанные с компьютерами и ИТ, были единственным крупнейшим источником роста заработной платы и занятости. В этом десятилетии наблюдается сдвиг в сторону здравоохранения, но отрасли, связанные с компьютерами, по-прежнему остаются на вершине. Другой отчет Burning Glass, аналитической фирмы по рынку труда, показал, что в 2015 году было открыто 7 миллионов вакансий в профессиях, требующих навыков программирования, а количество вакансий в программировании в целом растет на 12% быстрее, чем в среднем по рынку. С ростом распространения компьютеров и технологий важность навыков программирования будет только расти.

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

Интересно? Давайте начнем!

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

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

# 1: знайте свою мотивацию

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

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

# 2: выбор правильного языка

Возможно, вы слышали, как люди говорят вам, насколько велик и мощный C ++ или почему C - ужасный язык. По правде говоря, не существует «лучшего» языка программирования.

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

В конце концов, языки программирования похожи на естественные языки: разные способы выразить одну и ту же идею (например, «Доброе утро!» и «Bonjour!»). Как только вы выучили одно, довольно легко освоить другой. Так что на самом деле не стоит слишком зацикливаться на этом. Просто начните с чего-нибудь (чего угодно), вместо того, чтобы часами выбирать «идеальный» вариант (которого не существует). Тем не менее, некоторые языки программирования более удобны для начинающих, чем другие. На мой взгляд, Python - хороший язык, который новички могут быстро освоить из-за его прямого и интуитивно понятного синтаксиса.

# 3: разделяй и властвуй

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

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

Делайте это медленно, по одному! Это может быть очень сложно, потому что заманчиво выучить много языков, поскольку все они так или иначе полезны. Вы сведете себя с ума, если попытаетесь это сделать. Вместо этого начните с того языка, который вам больше всего нужен в данный момент (опять же, выберите правильный язык), и начните с малого. Когда придет время, вы выучите нужный язык. И не волнуйтесь, другие языки останутся там после того, как вы выучите свой первый язык (на самом деле, если некоторые из них исчезнут, вы сэкономите много времени, не выучив их вообще).

Хороший способ добиться прогресса, не перегружая себя, - это иметь цель, над которой нужно работать. Ставьте перед собой небольшие цели и ставьте их в свое расписание. Когда это есть в вашем расписании, у вас больше шансов это сделать. Конечно, цель должна быть реалистичной: нельзя ожидать, что вы овладеете книгой по программированию объемом в несколько сотен страниц менее чем за неделю. Наконец, убедитесь, что вы полностью поняли одну концепцию, прежде чем переходить к следующей. На все нужно время. Не торопитесь!

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

4. Практика ведет к совершенству

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

В Интернете есть множество бесплатных материалов, которые вы можете изучить и попрактиковаться. Начать можно с решения задач на Hackerrank или Sphere Online Judge. Если вы чувствуете себя увереннее, вы можете решить более сложные задачи в Codeforces. Помимо решения проблем, эти сайты позволяют вам читать решения других людей. Я лично считаю, что чтение чужих кодов - один из лучших способов улучшить свою работу, потому что вы можете изучить и принять их стили и методы кода (что является кратким и эффективным).

Если вы хотите развиваться еще дальше и специализироваться, я предлагаю вам подумать о подписке на онлайн-курсы. Например, курс Udacity по компьютерным наукам 101 является бесплатным и увлекательно интерактивным, как и многие МООК, предлагаемые EdX и Coursera. Другие интерактивные веб-учебники также включают Codeschool, Codecademy и Treehouse, курсы которых либо бесплатны, либо относительно недороги.

Как и в любом процессе обучения, важна обратная связь. Проверка кода - по сути, редактирование - ваш друг, и очень важно найти сообщество, которое будет гостеприимно и готово помочь. В Интернете есть сайты вопросов и ответов, такие как Stack Overflow, который предоставляет виртуальные сообщества экспертов, готовых ответить на вопросы, от самых наивных до чрезвычайно сложных. Если вы находитесь в Кембридже, вы также можете приехать на одну из наших вечеринок HaC Nights, чтобы встретиться с другими любителями кода. Вы будете удивлены, как многому мы можем научиться друг у друга.

# 5: Сохраняйте мотивацию

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

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

Заключение

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

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

Удачного кодирования!

Особая благодарность Люсии Анджеле Бура и Патрику Феррису за редактирование этой статьи.