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

16.07.2021

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

Урок 1. Введение
Хороший мотивирующий ролик, короткий и наглядный. Чёрт возьми, мне захотелось действительно научиться программированию! Но моя задача другая: не выучить конкретные языки, а разобраться в «механике» и терминологии.

Урок 2. Логика и алгоритмы
На самом деле, мы все немного программисты. Мы живём и действуем по алгоритмам, которые мы или сами себе составили или получили от других людей. Только настолько к этому привыкли, что не замечаем отдельных команд, а воспринимаем всё, как единый поток действий.
В этом ролике предельно доходчиво рассказана, а главное - показана вся суть программирования. Дано фундаментальное понятие алгоритма, их виды, и показано, как устроен каждый вид алгоритма. А ещё для меня открытием стало то, что программист - профессия креативная! Да, несмотря на логическую основу действий. Здесь и полная свобода в коде, и правило DRY (Don’t repeat yourself, «Не повторяйся!»), и баланс между минимализмом решений и простотой улучшений… Не ожидал. Задумался.
ДЗ можно посмотреть в комментариях по ссылке:
Обсуждение приветствуется.

Урок 3. Типы данных и их виды
Три основных типа данных: числовые, строковые и булевые, теперь стали понятны. Николай Чернобаев, автор курса, не просто рассказал о типах данных, но и показал, и дал «поиграть»: вывести в консоль, перевести из одного типа в другой. Сделал все преобразования следом за ним, и у меня - получилось. А ещё немного заглянули в следующую тему: «Переменные». Это нужно, чтобы понять про сильную и слабую, динамическую и статическую типизацию. Вам уже интересно? Смотрите видео!

Урок 5. Функции
Здесь главное о функциях, их объявлении и вызове, об аргументах функции. Пересказывать не буду, лучше посмотрите ролик.
Отличная аналогия: программа - это как исполнить песню, а функция - одно из действий в этой песне, например, «играть на барабане». Один взмах дирижёрской палочки, и функция «играть на барабане» вызвана. После того как партия барабана закончена, действие переходит к другим инструментам…
Понять, что такое «возврат значения функции» и что именно делает команда return, было сложнее. Чтобы разобраться, реализовал одну и ту же задачу в двух видах, с возвратом значения и без: Да, и списался в Телеграм с наставником курса по разработке Сашей Несвитом, он объяснил буквально за две минуты, что к чему.

Урок 6. Арифметические и логические операции
Вот здесь было действительно просто, всё как в пятом классе. Позволил себе поразвлекаться и собрал логическое сравнение, проверяющее, можно девушке замуж или нет? А какое сравнение соберёте в этом уроке Вы?

Урок 7. Условия в программировании.
В условиях логика и правила просты: если.. то делаем это, или если.., то делаем другое. Вот, в принципе, и всё. Сложнее было отследить синтаксис: поставил лишнюю точку с запятой после фигурной скобки - и привет, код не работает. Меня предупреждали, что программисты - очень внимательные люди, теперь понял, почему. Примеры предельно понятные, никаких сложностей в освоении этого урока.

Урок 8. Циклы в программировании
Циклы - это интересно: инициализировать счётчик, проверить условие, прописать тело, обновить счётчик, повторить… Как попросишь, так и отсчитает. Разобрали 5 вариантов условных циклов, особенно понравился элегантный пример на суммирование элементов массива буквально в 4 строки. В качестве ДЗ сделал простейший цикл на перемножение двух переменных .

Урок 9. Инструменты программиста
В этом уроке рассмотрены в сравнении два важных инструмента разработчика: редактор кода (на примере Sublime Text 3) и интегрированная среда разработки (IDE, на примере PHPStorm). Обозначены ключевые возможности, главный функционал, показано, как работать. Я знаком с инструментами разработки, в основном применительно к HTML: в качестве редактора кода активно пользовал Notepad++, своеобразным аналогом IDE можно считать Adobe Dreamviewver, так что различия понятны. А для задачек на других языках, думаю, подберу что-то из бесплатных IDE (Google намекает на NetBeans) или всё-таки подружусь с Sublime Text 3. А какие инструменты используете Вы?

Урок 10. Первая программа: калькулятор на JavaScript
Автор курса, Николай Чернобаев, на моих изумлённых глазах меньше чем за 1.5 часа написал онлайн-калькулятор, причём с графическим отображением и подсказками. Естественно, здесь было использовано многое из предыдущих уроков, что-то было рассказано с нуля. Очень интересно, что показано не только само написание кода, но и вся разработка как проект, начиная с задумки и планирования на бумаге.

Урок 11. События
Дополнение к программе онлайн-калькулятора, созданного в предыдущем уроке. Когда в программе что-то происходит, например, какое-то действие пользователя, программа реагирует заранее определённым образом. В биологии есть стимул и реакция, в программировании есть событие и его обработчик. Вот так для меня будет понятнее.

Урок 12. Ошибки программирования
Пока я выполнял примеры и ДЗ к этому курсу, успел и сделать, и «отловить», пожалуй все типы ошибок: и синтаксические, и логические, и ошибки выполнения. Искать ошибки интересно, хотя после..дцатой итерации запуска-поиска начинает неслабо потряхивать. Ну ничего, тренировать внимательность никому не вредно.

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

1. Самостоятельно

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

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

Платформа с бесплатными курсами по веб-разработке freeCodeCamp

Запомните, что у вас ничего не получится без практики. Учитесь по проектно-ориентированным курсам и пытайтесь сами писать разобранные в них программы и сайты. Ищите лекции на YouTube с разбором проектов, которые вы бы хотели разрабатывать. Сначала копируйте работу других людей и анализируйте её. Затем пробуйте отходить от оригинала, экспериментируйте, изменяйте отдельные элементы, пока не сможете создавать что-то уникальное.

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

Обязательно поставьте перед собой цель создать свой проект и постоянно работайте над ним.

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

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


Сервис вопросов и ответов на технологические темы «Тостер»

Оттачивать навыки удобно на специальных площадках, где можно посоревноваться с другими программистами, решая с помощью кода различные практические задачи. В числе таких сервисов - Codewars , TopCoder и HackerRank .

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

2. С помощью ментора

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

Узнайте, есть ли среди ваших знакомых разработчики. Возможно, кто-нибудь из них захочет вам помогать. Если таких людей вы не знаете, можете поискать их в сообществах программистов. К примеру, на том же «Тостере». Только услуги менторства стоят недёшево, а за просто так тратить много времени на незнакомых людей никто не желает.

3. У преподавателей «живых» курсов

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

Популярные русскоязычные онлайн-площадки, которые занимаются системной подготовкой программистов: «Нетология », GeekBrains и Loftschool .

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

4. В университете

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

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

Как выбрать направление и язык

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

  1. Веб-разработка . Популярные языки: JavaScript, PHP, Python, Ruby.
  2. Мобильная разработка . Популярные языки: Java, Swift.
  3. Разработка игр и программ для настольных компьютеров . Популярные языки: C++, C#, C.
  4. Big Data, машинное обучение . Популярные языки: Python, R, Scala.

На что обратить внимание при выборе

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


График востребованности языков на международном рынке труда / research.hackerrank.com

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

Если не можете определиться

Если вы в замешательстве, присмотритесь к JavaScript - языку, на котором написан почти весь веб. Многие организации и программисты советуют новичкам выбирать именно этот язык в качестве первого.

Например, основатель образовательного ресурса freeCodeCamp Квинси Ларсон JavaScript всем начинающим. Ларсон приводит очень простые аргументы:

  1. JavaScript относительно легко освоить. А чтобы написать что-то и запустить на этом языке, достаточно иметь редактор кода и браузер.
  2. JavaScript - самый востребованный язык на международном рынке труда и у него большие перспективы. В экосистему JavaScript инвестируют крупные компании вроде Google, Microsoft и Facebook.
  3. У JavaScript очень широкая сфера применения: от сайтов и браузерных игр до мобильных приложений.

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

Что ещё должен знать программист: математика и английский?

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

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

Как получить первый опыт и первую работу

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

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

  1. Выполните несколько заказов на . Это могут быть «Фрилансим » или Upwork . Предлагайте свои услуги бесплатно, тогда к вам придут первые заказчики.
  2. Найдите единомышленников и создайте с ними общий проект. Люди объединяются для таких целей почти на каждой образовательной площадке, где есть курсы по программированию.
  3. Выберите курсы, организатор которых помогает с трудоустройством. Например, в GeekBrains после обучения открывается доступ к стажировкам от разных компаний, в том числе - оплачиваемым. GeekUniversity и «ШАГ» гарантируют трудоустройство своим выпускникам.

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

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

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

Что нужно знать «чайнику»

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

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

Многие начинающие обучение считают написание кода чуть ли не самой романтической профессией. Особенно увеличилось количество желающих познать программирование после просмотра фильма «Матрица ». Именно главный герой этой картины Нео подтолкнул многих к становлению на путь постижения программных наук:

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

После развала СССР все отечественные ВУЗы долгое время даже и не пытались перекроить свою систему обучения под потребности современного рынка. Не являлись исключением из этого правила и технические ВУЗы.

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

В странах бывшего СССР основным языком программирования, преподаваемым в технических ВУЗах, был Бейсик.

Ситуация кардинально не изменилась и через 10 лет. Лишь некоторые учебные заведения, учуяв веяния нового времени, в начале двухтысячных года начали перекраивать свое обучение под мировые стандарты. И только с этого момента программирование стало восприниматься как отдельная профессия и специализация обучения:

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

А это в профессии программиста является наиболее важным аспектом. Поэтому большинство из сегодняшних гуру российской IT-индустрии начинали свое обучение программированию с нуля самостоятельно.

В некоторой мере такая тенденция сохраняется и по сей день. Хотя в наше время количество профессионалов, занимающихся преподаванием, заметно возросло.

С какого языка начать изучать программирование

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

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

Чаще всего выбор падает на язык программирования C (си) . Именно с него большинство новичков во всем мире начинают свое обучение. На основе C было создана основная часть программных языков, и во многом они наследуют его структуру и синтаксис.

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


Рассмотрим особенности этого языка, делающего его оптимальным для изучения:

  • Простая для понимания основа – часть встроенных возможностей языка для простоты вынесена в отдельно подключаемые библиотеки. К таким элементам относится большая часть математических функций и методов для работы с файловой системой;
  • Оптимально подогнанная система типов – благодаря простому набору типов данных и строгой типизации уменьшается риск допущения ошибок в процессе написания программного кода;
  • Направленность C на процедурный тип программирования, при котором соблюдается четкая иерархия всех элементов кода;
  • Доступ к памяти машины с помощью указателей;
  • Минимальное количество поддерживаемых ключевых слов;
  • Поддержка области действия имен;
  • Поддержка пользовательских типов данных (объединения и структуры ).

Проще говоря, C – это то, с чего следует начинать новичку перед тем, как научиться программированию на других языках.

Программы (компиляторы) для программирования

Для обучения программированию недостаточно одного лишь желания и наличия компьютера с выходом в интернет. Для написания программ на C вам потребуется специализированное программное обеспечение – компилятор.

Компилятор – специальная программа, переводящая программный код в форму, понятную для компьютера.

Вот несколько специализированных компиляторов с поддержкой языка C:

  • Microsoft Visual Studio – профессиональный инструмент, поддерживающий множество языков, в том числе и несколько серверных. Подойдет для новичков, если брать его «на вырост»:
  • Borland C++ — бесплатный компилятор, идеально подходящий для начинающего обучение. В отличие от предыдущего инструмента, отличается ясным и понятным интерфейсом. Поэтому его освоение не вызовет особых трудностей даже при самостоятельном освоении азов программирования:
  • Code::Blocks – бесплатная среда разработки, поддерживающая написание кода на нескольких языках. Средний по сложности освоения вариант:

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

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

Захар День

куратор профиля «Дизайн и программирование»
Школы дизайна НИУ Высшей школы экономики

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

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

Что касается бытового уровня, то в повседневной работе иногда нужно вытащить какую-нибудь картинку или обойти криво написанный код, который не даёт вам на сайте что-то сделать. История из жизни. Мы периодически заказываем еду домой на сайте одной сети ресторанов. После логина через Facebook поле для ввода телефона на сайте заблокировано, а без телефона нельзя заказать еду. Достаточно удалить в коде сайта слово disabled, чтобы не остаться голодным.

В веб-разработке порог входа значительно ниже, чем в мобильной. Чтобы разрабатывать под браузер, необходимо изучить язык гипертекстовой разметки HTML, каскадные таблицы стилей CSS и единственный язык программирования под браузер - JavaScript (не путать с Java).

Последние несколько лет активно развивается JavaScript. С его помощью можно писать практически под всё, а если под что-то нельзя, то в ближайшем будущем, скорее всего, будет можно. В любом случае без JavaScript ничего дельного в браузере сделать нельзя, потому что это единственный язык программирования, который понимает браузер. Но в данный момент в экосистеме JavaScript всё весьма непросто для новичков, к тому же сам язык не очень выразительный. Зато очень развита и удобна для начинающего разработчика экосистема языка Ruby, хоть он постепенно и теряет свою популярность. Более того, важен не только язык, а фреймворк (большой инструмент, состоящий из обширного количества библиотек) на этом языке - Ruby on Rails. С его помощью можно за пару часов сделать многопользовательский веб-сервис. Это моя личная рекомендация для старта.

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

Стоит уделять время изучению документации. У каждого языка, библиотеки и инструмента есть техническая документация, а иногда и спецификация. Зачастую - ещё и сообщество вокруг этого инструмента со своим чатом или любым другим сервисом для общения.

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

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

Егор Яковишен

Senior Frontend Developer в Look At Media

Причин, почему стоит начать программировать, несколько. Это активно растущий рынок труда. Я неоднократно видел цифру в миллион человек - таков будет недостаток людей в этой сфере к 2020 году. Есть такая книга, своего рода манифест, «Программируй или будь запрограммирован ». Суть её сводится к тому, что либо ты сам начинаешь разбираться в технологиях, либо технологии начинают формировать твою жизнь. Продукты, которыми мы пользуемся, пронизаны алгоритмами, которые не все понимают. Соответственно, если хочется хоть как-то разбираться, что к чему, было бы неплохо понимать основы.

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

Многие считают, что для программиста очень важно знать математику, но математики как таковой в базовом программировании практически нет. Гораздо важнее способность абстрактно мыслить. Также важна логика, ведь программирование - это по сути написание алгоритма работы системы. Перед тем как этот алгоритм сделать, ты должен сначала увидеть его у себя в голове. И, конечно, английский. Без английского есть большая вероятность всегда плестись в хвосте. Техническую документацию стоит читать в оригинале: перевод всегда запаздывает.

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

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

Я бы точно порекомендовал ходить на митапы - когда программисты собираются и по очереди выступают с какими-то докладами. Это мотивирует, там всегда приятная атмосфера, можно подойти к любому человеку и задать вопросы по теме. Из самых известных - регулярные встречи разработчиков JavaScript MoscowJS Meetup , «Я.Субботник» и Moscow Tech Meetup.

Где учиться в Москве

Moscow Coding School

Большинство курсов в MCS разработаны в основном для тех, кто с кодом знаком понаслышке. Обучение интенсивное, длится обычно четыре-шесть дней по выходным. За это время слушатели узнают основы и в конце могут создать более-менее рабочий проект. В качестве преподавателей выступают ведущие разработчики из стартапов и медиа: Hello Computer, Hyperboloid, SoundCloud, Look At Media и Meduza. Помимо HTML/СSS и инструментов веб-разработки, можно научиться основам создания мобильных приложений. Занятия проходят в красивом пространстве DI Telegraph на Тверской, а команда собирается в основном из представителей креативных индустрий.

Центр компьютерного обучения «Специалист»

«Специалист» действует при МГТУ имени Баумана. Сайт выглядит слишком сложно, поэтому с ходу найти нужный курс, возможно, не получится. Зато учат здесь многому, а курсы поделены на разные уровни подготовки. Погружаться в мир кодинга с нуля рекомендуется на курсе «Основы программирования и баз данных». Выпускники получают свидетельство об окончании курса, а если после захочется сменить профессию, у центра есть своя служба персонала, помогающая выпускникам устраиваться на работу. Главный плюс - множество точек обучения по Москве, и в каждой нужный курс начинается в разные даты.

Где учиться онлайн

Codecademy

Самый популярный и абсолютно бесплатный сервис в области обучения программированию с нуля. Обучение проходит в форме коротких упражнений с простыми заданиями и инструкциями. Учиться здесь стоит базовым принципам работы с JavaScript, HTML и CSS, а для более глубокого погружения - идти на другие сайты.

Programming and the Web for Beginners

Проверенная временем Coursera сотрудничает с известными учебными заведениями, поэтому внушает особое доверие. Курсы более подробные, к тому же, в отличие от Codeacademy, заниматься придётся как в школе: есть хоть и удалённый, но учитель и определённый темп, который не позволит расслабляться. Интересный вводный курс Гарвардского университета есть ещё на edX .

HTML Academy

Полезный русскоязычный ресурс с 37 разделами, посвящёнными разным аспектам работы с вёрсткой: от занятия по структуре HTML-документа до курсов о новых возможностях HTML5 и CSS3. Для тех, кто хочет стать профессионалом, есть два онлайн-интенсива (базовый и продвинутый).

Самый популярный сервис в области обучения программированию с нуля, получивший несколько значительных раундов финансирования. Известен тем, что абсолютно бесплатен и создан специально для тех, кто ничего в программировании не понимает. Учит базовым принципам работы с JavaScript, HTML and CSS, Python и Ruby. Обучение проходит в форме коротких упражнений с простыми заданиями и инструкциями. Пользователь пишет код и сразу видит результат своих действий.

Для дополнительной мотивации в Codecademy придумали систему поощрительных бейджей за выполненное задание, прохождение раздела или сдачу тестов. Сервис внимательно следит за успеваемостью и последовательно выстраивает курс обучения, подсказывая, какие темы нужно дальше изучить. Также любой желающий может сделать собственный курс или написать несколько упражнений для остальных пользователей. Самый популярный курс называется Code Year - пройдя его, можно научиться делать сайты или игры.

Если Codecademy исповедует минималистичный подход к обучению, то в Code School любят фантазировать и экспериментировать. Самое интересное у них - не базовые уроки по Ruby, JavaScript, HTML/CSS и iOS, а курсы-продолжения, такие как Rails for Zombies . Кредо компании - Learn by Doing («Обучайся, действуя»). Вместо скучных абстрактных заданий они предлагают пользователям программировать то, что им интересно, например игры про зомби.

Все базовые курсы состоят из пяти уровней, каждый из которых начинается с 15-минутных обучающих видео. Затем следуют упражнения, в процессе выполнения которых сразу можно получить фидбэк и увидеть свои результаты. Так, например, в курсе для создания приложений для iPhone есть эмулятор, показывающий, как код будет выглядеть на экране гаджета. Здесь тоже не обошлось без геймификации: нужно зарабатывать очки и получать бейджи.

Treehouse делают акцент на обучающем видео. Даже если вы не готовы к полноценному курсу по созданию сайта, приложения для iPhone или Android, а просто хотите получить базовые знания о том, что такое интернет и как он работает, стоит подписаться на их канал на YouTube. Тех, кто решит начать изучать Ruby on Rails, PHP и другие языки программирования, на сайте ждёт более 1 000 видеоуроков. Они собраны в курсы, посвящённые веб-дизайну, программированию, технологическому предпринимательству и многому другому.

Видео постоянно обновляются, так что курсы морально не устаревают. После каждого видео даются практические задания, интерактивные квизы. В конце каждого курса у вас будет готов небольшой проект. После этого сервис подскажет, что стоит изучить дальше. На сайте есть хороший пользовательский форум, можно получить фидбэк от экспертов, поучаствовать в мастер-классах. Единственный недостаток - обучение стоит денег, от $250 до $490 в год. У Treehouse есть отличный бесплатный дочерний проект для тех, кто уже чему-то научился, - Code Racer . Там нужно кодить на скорость, соревнуясь с противником. В процессе ему можно всячески мешать: например, забрасывать его экран фотографиями кошек.

Если обучение в одиночку вам не подходит, можно пройти онлайн-курсы с другими начинающими на Coursera, Udacity и других профильных сайтах, о которых мы уже . Плюс таких курсов в том, что у вас есть хоть и удалённый, но учитель, и определённый темп обучения, который не позволяет расслабляться. Курс Introduction to Computer Science (на видео) очень популярен среди новичков. Udacity, созданный на базе Стэнфордского университа, хорош тем, что совершенно бесплатно предоставляет университетские курсы в адаптированной под удалённое обучение форме. Рядом с каждым курсом есть шкала сложности. Предполагается, что, пройдя курс с нулевой сложностью, вы будете готовы к прохождению остальных, где изучаются конкретные языки. На Coursera тоже немало курсов для начинающих программистов, например, этот , посвящённый Python, и этот ­- про создание креативных мобильных приложений.

Если подавить гордость и признать, что все вышеуказанные курсы всё равно слишком сложны, можно начать с тех, что созданы специально для детей. Например, приложение для iPad и iPhone Move the Turtle . Это игра, которая обучает программированию через небольшие задания, каждое из которых заставляет двигаться черепашку. Сервис Alice , созданный в Carnegie Mellon University, учит созданию движущихся 3D-героев, параллельно давая основы C++ и Java. Hackety Hack - приложение, обучающее азам Ruby. В отличие от предыдущих оно делает это не через картинки, а уже через конкретные языковые команды. Но, конечно, самое лучшее для детей - это роботы, запрограммированные выполнять простые команды, которые сначала нужно прописать в виде компьютерного кода. Один из таких - робот Sparki, собравший деньги на Kickstarter. Сделать предзаказ можно , и стоить он будет всего $100.

Фотография via Shutterstock