Я начинал с решения интересных прикладных задач - теория без практического приложения быстро устаревает и забывается. Откройте тематические сайты и форумы, выбирайте свежую "боль", которая вам по силам, пробуйте написать решающий код. Не бойтесь и не стесняйтесь выкладывать свой код в сеть, в большинстве случаев ваши ошибки поправят опытные коллеги, а вы получите новые знания и опыт. А попутно закроете чью-то боль и заработаете плюсик в карму :) Успехов!
Я сейчас являюсь senior python разработчиком, поэтому позволю себе просто описать свой путь.
Если программист начинает с азов, лучше подойти к вопросу комплексно.
Погрузиться в среду
Начните читать СМИ об IT, подпишитесь на блоги практикующих программистов, следите за сайтами крупных образовательных проектов для программистов. Например, на сайте Geekbrains.ru (совместный проект с Mail.ru Group) регулярно появляются полезные статьи и вебинары на темы, так или иначе касающиеся жизни разработчиков. Здесь же функционирует очень живой форум, где отвечают на любые вопросы от новичков, даже самые наивные.
Выбрать язык
Начать можно с псевдокодов. Это букварь программиста, который познакомит с азами профессии. Псевдокоды используют для обучения школьников, но познакомиться с ними будет интересно в любом возрасте. Обратите внимание на Scratch. В нем не нужно писать программу в виде текста, код составляется из блоков.
Затем можно переходить на языки для взрослых. Начните с HTML: вы научитесь верстать сайты, освоите язык разметки web-страниц. Ещё один вариант для начинающего — Python. Это лаконичный, простой в освоении язык, который пригодится на разных этапах карьеры. Его плюсы: возможность быстрого перехода непосредственно к web-разработке, множество обучающих материалов, библиотек.
Пройти бесплатные курсы
Образовательные порталы часто предлагают бесплатные курсы для новичков. Тренинги и интенсивы не превратят вас в гуру программирования, но помогут сделать первые шаги и, главное, объяснят, в какую сторону двигаться дальше.
Начать программировать
Без этого начинающему программисту никак не обойтись. Попробуйте написать что-то простое, чтобы получить быстрый результат. Первые успехи вдохновят вас продолжать. Или мотивируют выбрать другую отрасль для начинаний.
Выучить английский
Этот пункт идет в списке последним, в действительности он первый и главный. Знание языка на уровне, позволяющем читать профессиональную литературу, облегчает жизнь разработчика. Полезных книг и сайтов на русском языке существуют тысячи. Но это только верхушка айсберга. То есть ещё примерно 90% от этой глыбы знаний находится в англоязычном сегменте интернета. Да и коллег, у которых можно спросить совета, станет гораздо больше.
Самое важное для программиста - постоянная практика и постоянное самосовершенствование.
Самое ваше первое действие - начать программировать.
Берите любой язык и попробуйте написать самую первую программу, которая что-то выводит на экран/браузер/что-еще. Потом чуть посложнее. Будьте любопытным, дотошным, возможно, даже занудой. Критичным к своему коду.
По поводу выбора:
Новичок теряется в широком выборе языка и средств разработки. Если начать выбирать, то вы застрянете на этом этапе очень надолго, потому как в интернете куча статей, что именно тот или иной язык/инструмент является самым лучшим и самым актуальным. Потом можно определиться с выбором. Программисты сегодня не застревают на одном языке(технологии) и пытаются всегда освоить что-то новое, перейти в другую область.
Но базовые вещи, которые должен знать программист остаются неизменными - алгоритмы и структуры данных, владение математическим аппаратом(матрицы, графы, теория вероятности), системы счисления, знания о парадигмах программирования(возможно, кто-то еще добавит тут пункты).
Главное ничего не бояться, даже если какие-то вещи вам покажутся очень сложными, всему можно научиться.
Удачи!
Для начала, важно убедиться, что вы действительно начинающий программист =)
Выберите язык программирования, с которым вы будете работать. Для первых опытов подойдет Python, для более сложных технических задач - C++, Java. Изучать языки программирования удобнее по многочисленным онлайн курсам и интерактивным платформам (https://stepic.org/explore/courses).
Когда язык станет достаточно знаком, попробуйте выбрать реальную задачу, решение которой пригодилось бы в жизни лично вам. Следить за трендами в twitter, играть в карточную игру с друзьями онлайн - некоторое упорство и доступ в интернет помогут разобраться с необходимыми библиотеками и технологиями для выбранного языка и реализовать идею.
Если вы еще учитесь в школе, то посмотрите на кружки и олимпиады по программированию - в соревновательном формате легко изучать алгоритмы и структуры данных, стандартные приемы и техники. Обязательно поступайте в хороший технический вуз, изучите учебную программу, убедитесь что практические занятия посвящены актуальным технологиям.
Школа и университет давно позади? Посмотрите на образовательные проекты, которые проводят в онлайне и оффлайне IT-компании. "Домашние" проекты хорошо получаются? Не забудьте опубликовать их на github — он станет существенной частью вашего резюме и копилкой ваших идей.
И, пожалуйста, не забывайте иногда открывать свои старые проекты и "обновлять" их в соответствии с новыми умениями. Предъявляйте к своему коду самые высокие требования. Поддержка собственных программ - ценный опыт, который можно приобрести только самостоятельно.