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

Harvard CS50 - один из самых популярных курсов по информатике. Этому способствуют многие статьи и дорожные карты по программированию. В отличие от многих учебных лагерей или интерактивных курсов программирования, которые учат новичков нескольким приемам для одного языка программирования, CS50 фокусируется на концепциях.
Я начал этот курс трижды: сначала, когда я учился программированию, затем после того, как нашел свою первую работу как разработчик, и, наконец, когда у меня был 2,5 года профессионального опыта. Я собираюсь рассказать вам, как вы можете получить от этого прибыль в зависимости от ваших навыков и квалификации.

(Почти) Нет опыта программирования

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

Если вы решите выполнить задания курса, вам нужно будет использовать как минимум два языка программирования. С одной стороны, это открывает новые горизонты, и вы увидите, чем скомпилированные языки отличаются от интерпретируемых и реализуют одни и те же алгоритмы с использованием C и Python. С другой стороны, новый синтаксис и языковой подход к решению задач поначалу может быть трудным даже для профессионалов и крайне запутать новичка. Совет здесь - либо сконцентрируйтесь исключительно на лекциях и используйте другие ресурсы для практики, либо не торопитесь, посмотрите дополнительные учебные пособия, прочтите документацию и приготовьтесь потратить на курс более 12 недель. Оба варианта будут полезны. Помните, что не заставляйте себя, если вы чувствуете, что CS50 слишком сложен: вы всегда можете вернуться позже с более подробной информацией.

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

Небольшой опыт программирования

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

Курс представлен во многих социальных сетях. Группа в Facebook очень активна и очень дружелюбна. Вы можете быстро получить ответы на свои вопросы или помочь другим отладить их код. Обсуждаемые там темы не ограничиваются лекциями или заданиями CS50, люди также спрашивают, как выбрать компьютер для курса, как найти первую работу или какие интерактивные учебные пособия использовать для изучения SQL. Вы можете не боясь задавать вопросы и научиться формулировать их так, чтобы другие люди понимали вашу проблему.

Хорошие навыки программирования

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

CS50 можно использовать как пример и источник вдохновения. Вы можете проанализировать структуру курса и оценить, сколько материала можно оставить вне лекций для самостоятельного изучения. Вы можете выполнять задания, чтобы увидеть, как можно автоматизировать процесс отправки и каким образом тесты могут помочь исправить решение. Если вы не использовали C или Python, вы вспомните ощущение новичка, делающего первые шаги, и сделаете свое суждение о том, насколько сложными должны быть задачи. Я не говорю, что CS50 - лучший курс программирования, но у него огромное количество участников, и каждый год команда собирает отзывы, чтобы улучшить его, так что есть много вещей, которые нужно изучить и включить в свой стиль наставничества.