С чего начать изучать

от admin

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

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

Рынок переполнен специалистами и сквозь огромную конкуренцию прорваться просто невозможно. У меня тоже были такие мысли, когда я уже нашел первую работу. Меня это очень бесило до тех пор, пока я не увидел, какое большое количество людей боится сложностей, связанных с обучением. ОЧЕНЬ много новичков забрасывают курсы или свое личное обучение по многим причинам. Я общаюсь с людьми из этой сферы и могу уверенно сказать, что очень часто слышна цитата «Мы не можем найти хорошего разработчика». Учитывая то, что последние 3 года реклама курсов звучит из каждого утюга, потребности в специалистах вообще не должно быть, но она есть) Также аргумент против мифа о перенасыщении рынка -это то, что сама сфера развивается очень быстро, появляются новые компании, появляются рабочие места.

Обучиться профессии в IT очень сложно. На это можно сказать и да, и нет. Курсы, которые говорят: «ПОСЛЕ ПОЛУГОДА КУРСОВ ГАРАНТИЯ ТРУДОУСТРОЙСТВА» лгут, никто не будет искать вам работу) Суть в том, что обучение любой новой профессии, с которой ранее вы не были знакомы, будет тяжелым, но это только сначала. Информации, которую надо будет выучить, действительно много, но с каждым месяцем обучения будет становиться все проще и проще. А когда найдется первая работа с хорошим тимлидом, который будет указывать на ошибки прямо в проекте, вы получите буст в скорости обучения который сложно осознать.

Кто-то уже впереди и мне его не догнать. Я не психолог, но мне кажется, что этот загон появляется у всех людей в самых разных жизненных ситуациях. Лично у меня такие мысли были во время обучения в универе. Ребята с макбуками и в костюмах, которые зачем-то писали код, пока сидели в столовой и на перерывах между парами, рассказывали что у них новый ПРОЕКТ, или разговаривали о простых вещах сложным языком, заставляли думать, что я позади шагов на 10. Но по факту все это отставание было только у меня в голове. Тут могу только посоветовать почитать несколько притч про черепаху и зайца, не обращать на это внимания и спокойно учиться в том темпе, в котором вам комфортнее.

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

Работа разработчиком для очень умных ребят. Вранье, я троечник, чуть не вылетел после 9 класса в техникум, поступил в Бауманку на платку, никогда на учебу не забивал, но и звезд с неба не хватал. Много списывал. Все, что знаю, получил не с пар, а из гугла. Всем этим совсем не горжусь, но это прямое доказательство того, что даже не самый «Умный» паренек может чему-то научиться, главное быть усердным и не забивать на развитие. Данных заблуждений в голове может быть огромное множество, поэтому их все расписать невозможно, но мне кажется, что эти — самые популярные. Если вы твердо решили чему-то учиться, двигаемся дальше к основной теме этой статьи. С чего же все-таки начать изучать программирование?

Что из себя представляет разработка? Для людей которые совсем не представляют, что делает программист на работе, постараюсь объяснить простыми словами. Есть проект, например какой-то сайт. Пусть будет ВК. У ВК есть группа людей, которые разбираются в том, какие новые функциональности хотят видеть пользователи. Они заметили, что многим не нравится слушать голосовые сообщения. Было решено добавить возможность распознавания речи, чтобы пользователь нажал кнопку и увидел текст голосового сообщения. Дальше эта идея подробно расписывается на бумаге: как и что должно работать. После этого в игру вступают дизайнеры. Это ребята которые по описанию фичи рисуют то как она будет выглядеть на сайте. И вот на следующем этапе начинают работу разработчики. У них на рабочих ноутбуках есть самая обычная папка, в которой лежит много текстовых файлов. Вот в этих текстовых файлах находится код на разных языках программирования. Задача разработчика добавить в нужные места такой код, чтобы все выглядело и работало согласно дизайнам и описанию фичи. Если все работает, дальше работу программистов проверяют тестировщики, и, если все хорошо, отправляют пользователю.

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

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

Количество вакансий (Статья на тему). Тут все понятно. Больше вакансий — больше работы.

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

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

С чего начать изучение? Дальше я буду рассказывать обо всем на примере JavaScript, просто по той причине, что я прошёл этот путь. На этот вопрос, как и на другие, уже нашли ответ. Существуют так называемые дорожные карты. Гуглятся по запросу «JS дорожная карта» можно много на них смотреть, но в них есть кое-что общее. Это большие блоки JavaScript, HTML, CSS. Эти 3 вещи основа которую надо знать обязательно. Подробнее про каждый из этих трех языков мы поговорим в будущем, но если хочется с чего-то начать, можно открыть YouTube и вбивать уроки по каждому языку в том порядке, в котором они написаны выше. Также я преступно поздно узнал о такой классной штуке как матрица компетенции программиста (Хороший пример матрицы к которой я иногда обращаюсь). Сильно запариваться по поводу того, что вы чего-то не понимаете из этих тем, не стоит, поскольку разные должности требуют разных знаний, но посмотрев на неё можно примерно понять область знаний которые стоит подтянуть.

Где искать материалы для обучения? Я большой противник курсов поскольку человек мысленно перекидывает ответственность за свое обучение на кого-то другого и расслабляется. Но если вы думаете что это будет дополнительным стимулом и без курсов не обойтись, важно понимать, что одними курсами все равно не обойтись 100%. Поэтому вот мой топ сайтов для обучающихся.

САМОЕ важное, что должен уметь делать программист — правильно формулировать вопрос в Гугл. В работе приходится обращаться к гуглу почти каждый день, во время обучения нужно гуглить целый день.

youtube.com — Главный друг человека, который только начал обучение. Вбиваете например «JavaScript уроки» и вам попадается пара-тройка плейлистов с названиями наподобие «JavaScript с нуля». Найдите того, кто объясняет понятнее, и смотрите его. Если что-то не поняли в объяснении, сформулируйте запрос в Гугл и ищите до тех пор, пока не сможете объяснить своими словами. Это идеальный вариант.

habr.com, medium.com и прочие сайты со статьями — Скорее всего вам будут часто попадаться на сайты со статьями. Иногда они будут на английском, это нормально, пугаться не стоит. Переводите в переводчике, делайте все как там написано, и все будет работать. Если не работает — формулируете вопрос и пишите в поисковой строке гугла.

stackoverflow.com — Это лучший источник информации когда попадется незнакомая ошибка. Просто вставляете в поисковую строку Гугла текст ошибки, с вероятностью 99% в первых ссылках будет этот сайт. В основном там пишут на английском, но переводчик поможет разобраться что к чему.

learn.javascript.ru — Замечательный учебник по JS который охватывает весь синтаксис. В конце каждого урока есть задание и решение к нему с объяснением.

Подытожим. Для того, чтобы начать изучать любой язык программирования, нужно:

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

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

Я бы посоветовал долго не штудировать синтаксис на маленьких задачках и поставить перед собой цель сделать стандартный «Список дел». Обычное приложение которое может создавать, отображать, изменять и удалять текстовые заметки. Такие приложения называют CRUD приложениями (Create Read Update Delete) и очень часто их дают в качестве тестового задания на позиции джуна. В процессе его создания вы изучите синтаксис языка, столкнетесь с кучей проблем и будете искать их решение в гугле. Никто не мешает поискать гайды в YouTube «Как сделать список дел на JavaScript» к примеру. Делаете все как на видео, набираетесь опыта. Далее к этому приложению можно будет прикрутить базу данных, написать для него сервер и, если вам хочется запариться, развернуть в интернете, чтобы кто-то мог зайти туда по ссылке.

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

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

Как я изучал программирование по бесплатным курсам и книгам

Рассказываю основываясь на своем опыте, на примере языка Python.

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

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

Специальные знания нужны для того, чтобы его применять. И это не обязательно математика или устройство компьютера. Если вы хотите заниматься веб-программированием, вам нужно изучить СУБД, и один из популярных фреймворков, Django/Flask. Математика тоже нужна, но в программировании искусственного интеллекта.

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

Очень важно изучить как работают алгоритмы и паттерны проектирования.

  • Изучение языка

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

Мне интересна веб-программирование, поэтому я продолжил изучение на Яндекс.Практикум, на бесплатной части курса “Профессия python разработчик”. Окончив пробную часть я окончательно убедился, что мне интересно развитие в этом направлении.

  • Изучить фреймворк и библиотеки

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

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

У неё есть свежее издание, и затрагиваются интересные мне фреймворки и библиотеки.

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

  • Начать работу над своим проектом

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

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

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

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

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

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

  • Автоматизировать рутинную работу. Если вы тратите много времени на выполнение похожих действий скорее всего я смогу вам помочь.
  • Написать парсер. Он сможет обирать почти любую информацию из интернета и сохранять в удобном вам виде или отправлять в мессенджер.
  • Сделать серверную часть сайта или админку для управления сайтом.
  • Написать чат-бота почти любой сложности.
  • И многое другое, пишите, возможно сделаю работу для вас за символическую оплату и отзыв:)

На этом всё. Если у вас есть какие либо вопросы, буду рад ответить.

Самое важное что нужно программисту это страсть к программированию, все остальное — второстепенно.
Вся работа со стороны это сидение на стуле за монитором по 10-16 часов.
Без этой страсти и горящих глаз — вы сольетесь годам к 30ти в том или ином виде. Еще и жалеть потом будете что вообще ввязались.
Ну и денег особых не приносит давно.

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

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

К 30-ти годам горящих глаз тоже не остаётся

вопрос автору — а вы до начала этого обучения с базовой алгоритмизацией были знакомы?
то есть условный оператор if, цикл while,for, массив, переменная

если нет, то насколько сложно было ее освоить до уровня "написать цикл for который считает сумму чисел в массиве или написать цикл for который находит минимальное число в массиве"?

у меня по опыту у взрослых именно вот эта часть вызывает такой ступор что они отваливаются наглухо.

а литература как раз этому и не учит, учит синтаксису языка, подразумевается что человек if,for, while — то есть набор тюринг полных инструкций знает "уже и так". ну или обьясняется но примитивно, подразумевая что все это поймут либо быстро либо знают и так.

есть же замечательный курс

Нет, изучал с нуля.

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

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

Автор приводит курс на coursera. Там очень много практических заданий. Как раз так сможете преодолеть свой барьер. По крайней мере я этот курс с самого нуля проходил. Знаний никаких не имел.

"Математика тоже нужна, но в программировании искусственного интеллекта". Это не совсем так, например, когда я учил PHP — там вообще не нужна была математика, но когда стал учить C++ и увлекаться компьютерными сетями, протоколами, алгоритмами, и криптографией, то математика очень даже сильно понадобилась. Приходилось даже гуглить, чтобы понять подавляющее большинство формул.

По поводу курсов, то в сети очень много сливов, например, на форуме Openssource и на сайте CourseHunter. Ну, а любые книги можно скачать в Telegram или в Даркнете на сайте Флибуста.

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

Про важность математики в играх забыл упомянуть.

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

Но в будущем мне интересно изучить C++ и Assembler, для общего развития и удовольствия.

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

Странно почему в качестве учебника не выбрали Лутца.

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

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

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

мне кажется для взрослого человека очень большая проблема во первых мотивация, а во вторых это "игрушечность" задач.
ну то есть типа чтобы научиться программировать надо писать программы типа a = a+b; print(a); и это взрослого демотивирует типа "что и вот эта херь бл. это программирование".

то есть при наличии мотивации это типа все понятно куча курсов взял да сделал. но мне кажется взрослому мотивацию получить для занятия таким делом это как курить бросить. можно, но единицам.

(сказано по опыту попыток менторства взрослых кто хотел стать разработчиками)

Интересно, каков практический смысл взрослому человеку осваивать программирование с нуля?

Читать:
Латентность cl19 и cl16 что лучше

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

А не курю я уже год примерно, бросал несколько лет)

автор молодец если прошел стадию "мотивировать себя" успешно. дальше уже дело техники.

25 бесплатных онлайн-курсов программирования для обучения с нуля

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

Основы языка Java

  • Объём: 29 уроков, 37 часов.
  • Площадка: «Хекслет».
  • Организатор: «Хекслет».
  • Язык: русский.

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

Java. Быстрый старт

  • Объём: 9 лекций.
  • Площадка: GeekBrains.
  • Организатор: GeekBrains.
  • Язык: русский.

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

Java. Базовый курс

  • Объём: 23 лекции (5 часов видео).
  • Площадка: Stepik.
  • Организатор: Computer Science Center («CS‑центр»).
  • Язык: русский.

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

Разработка мобильных приложений для Android

  • Объём: 7 лекций.
  • Площадка: Stepik.
  • Организатор: ОмГТУ.
  • Язык: русский.

Серия лекций для ознакомления с разработкой под Android, требующей базовых знаний Java. В курсе собраны только главные моменты, без углубления в детали и без использования компонентов приложений.

JavaScript

JavaScript для начинающих

  • Объём: 17 лекций, 1–2 часа в неделю.
  • Площадка: Stepik.
  • Организатор: Stepik.
  • Язык: русский.

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

Основы языка JavaScript

  • Объём: 39 уроков, 50 часов.
  • Площадка: «Хекслет».
  • Организатор: «Хекслет».
  • Язык: русский.

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

Kotlin

Основы программирования на языке Kotlin

  • Объём: 31 лекция, 3–5 часов в неделю.
  • Площадка: «Открытое образование».
  • Организатор: Университет ИТМО.
  • Язык: русский.

Курс даёт базовое понимание мобильной разработки для платформы Android на языке Kotlin. Слушатели изучают основы синтаксиса и конструкции для создания программ.

Python

Основы языка Python

  • Объём: 44 урока, 56 часов.
  • Площадка: «Хекслет».
  • Организатор: «Хекслет».
  • Язык: русский.

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

Программирование на Python

  • Объём: 28 лекций, 3–6 часов в неделю.
  • Площадка: Stepik.
  • Организатор: Bioinformatics Institute.
  • Язык: русский.

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

Python: основы и применение

  • Объём: 20 лекций, (5 часов видео).
  • Площадка: Stepik.
  • Организатор: Bioinformatics Institute.
  • Язык: русский.

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

Machine Learning with Python: A Practical Introduction

  • Объём: 5 недель, 4–6 часов в неделю.
  • Площадка: edX.
  • Организатор: IBM.
  • Язык: английский.

Вводный онлайн‑курс по основам машинного обучения на Python, который познакомит с различными видами моделирования. Слушатели освоят классификацию, кластеризацию и другие популярные алгоритмы, а также подкрепят полученные теоретические знания практическими навыками.

Введение в программирование (C++)

  • Объём: 12 уроков.
  • Площадка: Stepik.
  • Организаторы: «Академия „Яндекса“», Высшая школа экономики (НИУ ВШЭ).
  • Язык: русский.

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

Fundamentals of C++

  • Объём: 5 недель, 5–6 часов в неделю.
  • Площадка: edX.
  • Организатор: IBM.
  • Язык:английский.

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

C++ Programming: Basic Skills

  • Объём: 5 недель, 2–3 часа в неделю.
  • Площадка: edX.
  • Организатор: Codio.
  • Язык: английский.

Рассчитанный на новичков онлайн‑курс, который посвящён основам языка C++. Охватывает базовые элементы и азы объектно ориентированного программирования с примерами и заданиями.

Программирование на языке C++

  • Объём: 41 урок (10 часов видео).
  • Площадка: Stepik.
  • Организатор: Computer Science Center («CS‑центр»).
  • Язык:русский.

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

Углублённое программирование на C/C++

  • Объём: 12 уроков (16 часов видео).
  • Площадка: Stepik.
  • Организатор: VK Team.
  • Язык: русский.

Ориентированный на начинающих разработчиков онлайн‑курс, который предполагает знание основ C++. Материалы помогут приобрести навыки создания программ средней сложности и типовых шаблонов объектно ориентированного программирования. Также рассматриваются ключевые аспекты работы с памятью, асинхронные вычисления и диалекты.

C++ Programming using Advanced Features

  • Объём: 5 модулей, 2–3 часа.
  • Площадка: Alison.
  • Организатор: Microsoft.
  • Язык: английский.

Более сложный онлайн‑курс, в котором студенты научатся создавать быстрые программы, используя продвинутые возможности C++. Всего за несколько часов лекторы объяснят ключевые расширенные функции этого языка, которые будут закреплены практическими занятиями.

Objective‑C

Become an iOS Developer from Scratch

  • Объём: 98 лекций (8 часов видео).
  • Площадка: Udemy.
  • Организатор: Udemy.
  • Язык: английский.

Обширный и детальный курс, который является пошаговым руководством для всех, кто хочет с нуля освоить Objective‑C и научиться создавать программы для iPhone. Слушатели ознакомятся с пакетом iOS SDK и, применяя доступные инструменты, напишут своё первое полнофункциональное приложение.

Swift

Swift 5: основы

  • Объём: 78 лекций (13 часов видео).
  • Площадка: Udemy.
  • Организатор: Udemy.
  • Язык: русский.

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

Intro to iOS App Development with Swift

  • Объём: 5 лекций, примерно 1 месяц.
  • Площадка: Udacity.
  • Организатор: Udacity.
  • Язык: английский.

Практический онлайн‑курс для тех, кто уже владеет основами, познакомит с разработкой под iOS на Swift. Слушатели изучат все нюансы этого языка программирования и создадут забавное приложение, искажающее голос (звучит как у бурундука или Дарта Вейдера).

Веб‑разработка

Введение в веб‑разработку

  • Объём: 8 уроков, 3 часа.
  • Площадка: «Хекслет».
  • Организатор: «Хекслет».
  • Язык: русский.

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

Введение в базы данных

  • Объём: 23 урока (7 часов видео).
  • Площадка: Stepik.
  • Организатор: «CS‑центр».
  • Язык: русский.

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

Основы языка PHP

  • Объём: 41 урок (52 часа видео).
  • Площадка: «Хекслет».
  • Организатор: «Хекслет».
  • Язык: русский.

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

Beginner PHP and MySQL Tutorial

  • Объём: 156 лекций (10 часов видео).
  • Площадка: Udemy.
  • Организатор: Udemy.
  • Язык: английский/русский.

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

Этот материал впервые был опубликован в октябре 2019 года. В сентябре 2022‑го мы обновили текст.

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

Автор: Роза Дулёва

Если вы ищете своё призвание и вам интересно программирование, вы наверняка задавались вопросом, с чего начать погружение в эту сферу. Один из возможных путей в IT — изучение языков программирования. Так вы освоите первый инструмент будущей профессии: HTML и CSS для вёрстки страниц, Java и Swift для мобильной разработки, SQL для работы с базами данных, а JavaScript и Python — для веб-разработки и не только.

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

Подводные камни самостоятельного обучения

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

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

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

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

Чтобы изучать программирование самостоятельно с нуля, вам потребуется система, которая не даст запутаться и свернуть с маршрута. Мы подробно рассмотрим способа освоения языков программирования: книги, тренажёры, метод Франклина и онлайн-курсы.

Если начали с основ, изучайте всю полезную информацию

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

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

Учебники и книги

Учебники и книги

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

Мы выбрали несколько самых востребованных языков программирования и вот какие книги по ним можем посоветовать:

Название О чём книга
С++. Базовый курс , Герберт Шилдт Вы с нуля изучите основные средства языка С++ от простых элементов и функций до расширений. Язык постоянно развивается и совершенствуется, поэтому новые издания регулярно дополняются актуальной информацией
C# 7 и .NET Core. Кросс-платформенная разработка для профессионалов , Марка Дж. Прайс Пусть вас не смущает формулировка «для профессионалов», эта книга включают всю необходимую базу C# для новичков
Изучаем программирование на JavaScript , Эрик Фримен и Элизабет Робсон Авторы доступным языком и с множеством примеров рассказывают, как написать универсальный код на JavaScript для любого браузера
Простой Python. Современный стиль программирования , Билл Любанович Вы изучите основы Python, освоите современные библиотеки и научитесь отлаживать и тестировать код. Автор приводит много примеров, чтобы наглядно продемонстрировать теорию начинающим программистам
Java. Полное руководство , Герберт Шилдт Вы поймёте, как разрабатывать и отлаживать код на Java и оптимизировать написание кода через универсальные шаблоны и научитесь создавать графические элементы для интерфейсов в библиотеках Swing и JavaFX

При выборе книг отталкивайтесь от своего уровня знаний — нет ничего зазорного, чтобы начать изучать программирование с книг для детей. Взрослым тоже будут полезны книги вроде «Python для детей» Д. Бриггса или «Minecraft. Программируй свой мир на Python» Д. Вэйла и М. О`Хэнлона, поэтому не сбрасывайте их со счетов.

Тренажёры

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

    — изначально Code Combat позиционировали себя как платформа для детей и подростков, но со временем она привлекала всё больше взрослых учеников. Вы сможете с нуля освоить Python, JavaScript и C++, а играть можно индивидуально и в командах. Вы сами выбираете, какой язык изучать, и проходите игру уровень за уровнем с нарастающей сложностью; — это игровая платформа для программистов, где вы научитесь писать код во время игры и можете добавить его себе в портфолио. Сайт поддерживает 25 языков программирования, можно играть самостоятельно или в команде, участвовать в международных соревнованиях и конкурсах и оттачивать навыки на практике; — ресурс для обучения и практики программирования на Python и TypeScript, где можно прокачать навыки кодирования — для перехода на каждый следующий уровень игры необходимо написать новый код. В скором времени CheckIO обещают запустить тренажёр для JavaScript и других языков программирования.

Не все тренажёры доступны на русском языке, но в CheckIO есть отдельные игры на русском. Так или иначе в будущей IT-карьере вам придётся часто сталкиваться с английским языком — базовые команды и термины вы сможете различать и без продвинутого владения иностранными языками. Программистам полезно владеть не только языками программирования, но и английским — это даст возможность участвовать в международных проектах и работать на иностранные компании. Если вам нравятся такие перспективы, начинайте прокачивать язык уже сейчас.

Метод Франклина

В основе метода Франклина — память и практика. Чтобы научиться программировать, нужно выполнить 4 действия:

  1. Прочитать пример — предположим, вы хотите запомнить код.
  2. Прочитать его ещё несколько раз — при этом делайте пометки в самых интересных на ваш взгляд местах, это поможет лучше запомнить.
  3. Попробовать повторить — закройте книгу и делайте всё по памяти, это важно. Даже если не получается, не открывайте книгу сразу — боритесь с проблемой и решайте самостоятельно. Постарайтесь сделать дубликат кода, который вы прочитали.
  4. Сравнить и повторить снова — сравните свой код с представленным в примере, исправьте ошибки и допишите то, что не смогли вспомнить. Прочитайте полученный код несколько раз, удалите его, и повторите всё сначала.

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

Метод Франклина

Онлайн-курсы

С одной стороны, онлайн-курсы — это не совсем самостоятельный способ изучения языков программирования. И вот почему:

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

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

Как изучать языки программирования на онлайн-курсах

Есть как минимум два возможных варианта изучения языков программирования в онлайн-школах: курсы по отдельным языкам программирования или по направлениям. Рассмотрим каждый вариант подробнее.

Онлайн-курсы по языкам программирования

Мы заглянули на github.com и узнали, какие языки программирования сегодня наиболее востребованы:

Рейтинг языков программирования github.com

Рейтинг языков программирования github.com

Так как TypeScript — это не столько язык программирования, сколько расширение для JavaScript, остановимся на следующих языках: JavaScript, Python, Java, C# и PHP.

JavaScript — подходит для мобильных платформ iOS и Android и операционных систем Windows, macOS и Linux. На нём разрабатывают пользовательские интерфейсы сайтов и приложений.

Освоить JavaScript можно на курсах из подборки ТОП курсов по обучению JavaScript

Python — язык широко применяют в игровой и веб-разработке, аналитике данных и машинном обучении. У него много библиотек и фреймворков, которые надо осваивать параллельно с самим языком.

Становитесь python-разработчиками на онлайн-курсах по Python

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

C# — на нём создают мобильные и веб-приложения, игры и ПО для компьютеров и мобильных устройств. Так, большинство продуктов Microsoft Office были разработаны именно на этом языке.

Пройдите онлайн-курсы из нашей подборки курсов по С#

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

Онлайн-курсы по IT-направлениям

Языки можно изучать не только по отдельности, но и в рамках конкретных направлений, в которых вы хотите развиваться.

Фронтенд-разработка — создание внешней стороны сайтов и пользовательского интерфейса: кнопок, плашек, баннеров и др. Помимо адаптивной вёрстки, тестирования веб-приложений, графических редакторов и конструкторов сайтов фронтенд-разработчик должен освоить языки HTML, CSS, JavaScript и TypeScript.

Если вам интересно это направление, пройдите курсы по фронтенд-разработке

Бэкенд-разработка — создание «начинки» сайта и приложений и контроль за их корректной работой. Бэкенд-разработчик знаком с принципами объектно-ориентированного программирования и владеет минимум одним из языков программирования — PHP, C#, Java, Python или JavaScript.

Мобильная разработка — создание приложений и игр для мобильных устройств на iOS и Android. Специалистам необходимо освоить минимум один из языков программирования: Swift и Objective-C для iOS или Kotlin и Java для Android.

Становитесь мобильным разработчиком на курсах мобильной разработки

Data Science — это комплексная работа с данными: сбор, обработка, анализ и автоматизация анализа данных. В работе дата-сайентиста не обойтись без навыков статистики и анализа и языков SQL, R и Python.

Машинное обучение включает создание искусственного интеллекта и обучение компьютерных программ обработке данных. Яндекс и Google.Карты, стриминговые сервисы и сайты прогноза погоды работают на базе искусственного интеллекта. В машинном обучении не обойтись без Python и его библиотек.

Осваивайте это направление на курсах по машинному обучению

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

Похожие статьи