Задача «научиться программированию с нуля» кажется такой необъятной, что многие новички теряются и не знают, с чего начать. На самом деле освоить любой язык программирования можно по одному алгоритму. Разбираем его по шагам вместе с экспертами, которые тоже с чего-то начинали, ошибались, но в итоге смогли.
Выберите любой язык
Вместо того чтобы мучаться с выбором, просто начните. На старте можно освоить любой язык, чтобы понять общие принципы программирования. Затем вы можете доучить другие языки, которые вам будут интересны или пригодятся в практических задачах. Возможен вариант, где вы досконально изучаете один-два языка, например, JavaScript и Python, а у остальных знакомитесь только с основными технологиями и принципами.
Посмотрите, какие языки сейчас востребованы больше всего, на какие вакансии в IT высокий спрос. Для этого можно обратиться к рейтингу популярности языков, например, TIOBE Index, или ознакомиться со списками востребованных IT-профессий.
Если вы хотите научиться программировать быстро, стоит выбирать языки с низким порогом входа. Например, низкоуровневый язык C выучить быстро с нуля может быть сложно, а вот Python новичкам неплохо дается.
Не тратьте на выбор слишком много времени, смело определяйтесь с языком и переходите к выбору книг/статей и курсов по нему.
В 13 лет я пошел на кружок по программированию в Уфимский Дворец пионеров, там научился писать код на Turbo Pascal. Этот язык не очень практичный, но на нем я хорошо разобрался в построении алгоритмов.
Через год я начал делать игру-платформер, в которой нужно было прописать прыжки, продвижение по лестницам, поиск объектов для перехода на другой уровень. Для этого проекта я выбрал язык Delphi, это тот же Pascal, но с окошками. В итоге получилась не игра, но ее базовая заготовка. Я сделал управление по 4 клавишам WASD, отрисовал графические примитивы (квадраты и кружки). Реализовал многоуровневость и сохранение игры через запись уровня в файл.
Где-то в 16 лет стал изучать одновременно Java и Python. Java рекомендую всем, это классический язык, который подходит для старта в программировании. Всю информацию о том, что делать, искал в интернете. Постепенно я стал заниматься разработкой под Android, выпустил несколько игр — одну из них скачали 1500 раз!
Сейчас я разработчик на iOS, применяю язык Swift. Учился ему по тому же принципу, что и раньше — гуглил, как сделать то, что задумано. Конечно, это не лучший способ обучения, потому что ускользают какие-то базовые вещи в коде, которые потом приходится разбирать дополнительно. С другой стороны, это приятный формат, потому что ты учишься именно тому, что хочешь сделать.
Начните с основ
Владислав Гукасов, Senior Software Engineer в финтех-компании Space 307, рекомендует в первую очередь разобраться с синтаксисом языка и понять основные концепции программирования:
- переменные;
- условные конструкции;
- циклы;
- функции;
- коллекции и структуры.
Если вы не знаете, с чего начать, посмотрите дорожные карты языков на GitHub, например, для Java. Они показывают, какие инструменты и подходы важно изучить. Двигаясь по ним, вы можете начать с основ и углубляться в изучение языка.
Если дорожная карта выглядит слишком страшно, попробуйте найти себе харизматичного товарища, который расскажет обо всем на простых примерах. Это может быть, например, YouTube-блогер. Сейчас в интернете огромное количество уроков для начинающих, выбирайте канал, который дает вам пользу.
Напишите что-нибудь
Лучший способ изучить язык с нуля, обнаружить свои пробелы и восполнить знания — написать собственный проект. Для старта можно выбрать что-то несложное, найти пошаговые инструкции в интернете. Главное — попробовать. Сделайте сайт или Telegram-бот, это хорошие задачи для старта.
Скорее всего, архитектура проекта будет неидеальной, вам придется гуглить каждый шаг разработки, но в этом весь смысл. Также вам будет проще сохранять мотивацию учиться, потому что вы работаете над реальным проектом, а не сидите над книжками. Только практика поможет понять, действительно ли программирование и конкретный язык вам подходят.
Ищите работу в процессе обучения
Вначале ваша задача — приобрести как можно больше опыта разными способами и наполнить портфолио. Для этого можно начать искать работу уже в процессе обучения. Проходите собеседования, делайте тестовые и запрашивайте подробную обратную связь. Так вы поймете, чего от вас ожидают работодатели, порешаете реальные задачи на технических интервью и, возможно, попадете на стажировку или Junior-позицию.
Во фронтенд я пришел по внутреннему найму, до этого у меня было всего одно собеседование — на тестировщика. У меня развился синдром самозванца. Чтобы его победить, я решил походить по собеседованиям. Не для того, чтобы трудоустроиться, а ради опыта.
Интервью у меня были как удачные, так и неудачные. Одно из первых собеседований я проходил в МТС — они раскатали меня по технологиям: на тот момент у меня были пробелы в знаниях React. После я добрал нужные навыки, и больше с этой темой проблем не было.
Всего я прошел около 40 собеседований, на каждом записывал вопросы, на которые не мог ответить, и потом их изучал. Для себя я понял, что, во-первых, проходить собеседования — это тоже навык, который можно прокачать, а во-вторых — это очень хороший канал получения опыта. Даже провальное собеседование может вам многое дать.
Бойтесь, ошибайтесь, но продолжайте кодить!
Даже программисты с опытом 15+ лет сталкиваются с тем, что им непонятно, совершают ошибки и учатся. Вы — новый человек в программировании, и вам обязательно будет что-то непонятно. Google — ваш друг в процессе написания кода и изучения разработки. Гуглите, разбирайтесь самостоятельно. Не получается? Подробно опишите все шаги и задайте вопрос тому, кто уже проделал большой путь в карьере и мог столкнуться с такой же проблемой несколько раз.
Чтобы практиковаться в программировании, используйте CodeKata — кодовые головоломки для прокачки навыков. Пользуйтесь сервисами codewars.com, exercism.io, hackerrank.com. С их помощью вы научитесь решать простые задачи и будете готовы двигаться к реальным проектам.
Как и в любом обучении, старайтесь не зубрить, а понимать и применять. Это отлично сработает с терминами программирования. Читайте статьи и словари, смотрите видео, ходите на конференции (например, Mobius), и со временем незнакомые слова станут привычными.
Во время обучения на химическом факультете ТГУ я использовал свободное время для изучения программирования. Выбор случайно пал на язык С#, который я стал учить по видео на YouTube. Он показался мне довольно сложным, я многого не понимал. По совету друга-разработчика я переключился на Python. Начал проходить курс по Python на Coursera — сейчас он есть на Openedu. Друг посоветовал два курса на Stepic: «Программирование на Python» и «Python: основы и применение».
Я хотел двигаться в сфере веб-разработки, поэтому зашел на сайт Django и начал проходить там туториал. После его окончания я продолжил дорабатывать свой сайт на Django и экспериментировать с кодом.
Параллельно с прохождением курсов и работой над сайтом я смотрел вакансии на HH.ru. В компании, где работал мой друг, открылась вакансия стажера. Я прошел собеседование, и меня взяли на позицию. Мне повезло: я нашел работу примерно за полгода изучения языка. После я работал в Яндексе и OZON, а теперь — в команде Amazon в Дублине.
Мой первый проект стартовал пять лет назад, когда требований к стажерам было немного меньше. Сейчас нужно уметь пользоваться Git, системой сохранения и отслеживания изменений в файлах проекта. Также важно иметь небольшой законченный пет-проект (собственный продукт разработчика, который он создает вне работы). Но на данный момент, как и пять лет назад, устроиться разработчиком без опыта и профильного образования реально. Мой друг-химик год назад начал работать разработчиком на языке С#.
Возьмите курсы, напишите небольшой пет-проект (допустим, Telegram-бота). Составьте резюме, откликайтесь на вакансии, ходите на собеседования и запрашивайте комментарии по итогу. Самое главное — продолжайте обучение.