Как научиться программировать: с какого языка начать, куда пойти учиться и работать
Навык программирования открывает новые возможности как для самореализации, так и для построения успешной карьеры. Приобретение этого навыка – сложный и кропотливый, но, вместе с тем, увлекательный процесс. Программирование осуществляется на множестве языков (Delphi, C, C+ и другие). Сегодня поговорим о том, как научиться программировать.
Разберитесь в мотивации: нужно ли вам вообще программирование
В первую очередь, нужно понять, для каких целей вам нужно программирование. Сразу заметим, что возможность получения высокой заработной платы – далеко не лучшее основание.
Романтики в этой профессии нет. Напротив, вам придется много и усердно работать, постоянно повышать свой профессиональный уровень. Если вы далеки от математики и больше тяготеете к гуманитарной сфере, то неизбежно придется столкнуться со сложностями и тратить многие часы на решение задач, которые профи решает за несколько минут.
В программировании много рутины и однообразных действий. Хотя гуру этого труда считают свою профессию настоящим творчеством, и во многом с ними можно согласиться. Хотя у обывателя может вызвать недоумение реплика программиста, называющего то или иное решение в коде красивым. Речь в этом случае идет не об эстетике, а о рациональности и эффективности неочевидного решения какой-то проблемы в написании кода.
С какого языка программирования начать изучение
Насчитывается несколько сотен языков программирования , однако всеобщее распространение получили около десяти из них. Сперва нужно выбрать сферу, в которой будет осуществляться программирование, и только после этого переходить к выбору подходящего для соответствующих задач языка.
Новичкам следует обратить внимание на язык Python. Этот универсальный язык имеет упрощенный синтаксис и широко используется во всем мире.
Более сложны Java и C. Они предоставляют больше свободы действий и помогают лучше понять принципы программирования. Язык C наряду с языком Pascal входит в учебные программы вузов.
Более специфическими языками являются PHP, Ruby, Java, которые широко применяются в серверных программах. Java Script хорошо подходит для написания клиентских приложений.
Сложные проекты позволяет реализовать язык C++, который также используется и в игровой индустрии.
Узнай, какие ИТ — профессии
входят в ТОП-30 с доходом
от 210 000 ₽/мес
Павел Симонов
Исполнительный директор Geekbrains
Команда GeekBrains совместно с международными специалистами по развитию карьеры подготовили материалы, которые помогут вам начать путь к профессии мечты.
Подборка содержит только самые востребованные и высокооплачиваемые специальности и направления в IT-сфере. 86% наших учеников с помощью данных материалов определились с карьерной целью на ближайшее будущее!
Скачивайте и используйте уже сегодня:

Павел Симонов
Исполнительный директор Geekbrains
Топ-30 самых востребованных и высокооплачиваемых профессий 2023
Поможет разобраться в актуальной ситуации на рынке труда
Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка
Только проверенные нейросети с доступом из России и свободным использованием
ТОП-100 площадок для поиска работы от GeekBrains
Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽
Получить подборку бесплатно
Уже скачали 25504
Для мобильных приложений применяются Java, Objective-C, Swift.
Настоящий программист должен владеть несколькими языками, но основную массу работы он выполняет обычно только на одном из них.
Какой язык программирования учить, чтобы делать сайты
Frontend-программист
Такой программист отвечает за визуальное отображение сайта. В его зоне ответственности – корректное отображение сайта на всех устройствах, придание ему вида, задуманного дизайнером, правильность отображения текста и графики, которые не должны перекрывать друг друга.
Этот язык является базовым в веб-дизайне. Несмотря на наличие огромного количества удобных конструкторов сайтов, именно этот язык гипертекста позволяет написать сайт буквально в блокноте и разместить таким способом львиную долю контента.
Если HTML-код по виду представляет собой обыкновенный текст, то CSS (каскадная таблица стилей) позволяет указать, каким образом этот код должен отображаться на мониторе. От него зависит размещение графических элементов, их размер, кегль шрифта, размещение иных элементов сайта друг относительно друга. CSS определяет, как выглядит страница, не меняя самой логической структуры страницы (за это отвечает HTML). Параметры CSS хранятся в отдельном файле с одноименным расширением.
Этот код позволяет разместить на странице интерактивные элементы. От него зависит реакция кнопок на странице при нажатии на них, появление всплывающих окон, возможность перемещения элементов страницы пользователем и т.д. Поэтому, несмотря на сложность языка, опытный веб-программист просто обязан им владеть для написания качественного сайта. Код JavaScript вносится непосредственно в HTML-код.
Языки веб-программирования не стоят на месте, появляются новые инструменты. поэтому программисту необходимо следить за новинками в этой сфере.
Backend-программист
Визуальное оформление сайта, безусловно, важно. Но оно не будет иметь смысла без корректной и стабильной работы сайта. Backend-программист отвечает за технический элемент сайта, его связь с сервером другими сайтами. Он же отвечает за обеспечение безопасности сайта и предотвращает атаки хакеров на него. Защита от распространенных ныне DDoS-атак – также функция backend-программиста.
Как стать разработчиком с нуля
Рассказываем, что нужно знать айтишнику и как стать программистом с нуля ✔️ Отучиться на программиста самостоятельно и войти в IT реально!
Как стать программистом и с чего начать, если нет практического опыта, а представление о программировании весьма размытое? Подробно рассказываем, как стать востребованным программистом с нуля и на что обращать внимание в ходе обучения.
- Кто такой программист
- Почему вы хотите начать программировать
- Что нужно знать, чтобы стать программистом
- Какое направление в программировании выбрать в 2023 году
- Десктопная разработка
- Data Science
- Как стать разработчиком на Андроид
- План развития iOS разработчика
- Как стать разработчиком игр
- Как стать Python разработчиком
- План развития Java-программиста
- Бэкенд разработка — с чего начать?
- Как стать фронтенд разработчиком
- Full Stack разработка
- Какой язык программирования выбрать в 2023 году
- Где выучиться на программиста
- Классификация разработчиков
- Как стать Junior-разработчиком
- Где работают программисты
- Как найти первую работу в IT
- Что спрашивают у Джунов на собеседовании
- Что делать, если вам не хватает знаний до вакансии Джуниор-программиста
- Заключение
1. Кто такой программист
Программист — это специалист по разработке компьютерных программ. Под разработкой понимается продумывание архитектуры программы, её реализация, оптимизация и тестирование. Далее мы разберёмся, как стать настоящим айтишником и что для этого нужно знать.
1.1 Чем занимается программист
Это зависит от специфики выбранной отрасли, но в целом всё сводится к написанию и тестированию кода. Важно понимать свои обязанности и не скатываться в звание тыжпрограммиста, которому поручают всё — от установки Windows до починки техники.
1.2 Можно ли стать айтишником с нуля
Разумеется. Для этого существуют материалы, ориентированные на новичков: туда входят статьи, подборки книг, обучающие приложения, задачки, видеоуроки и туториалы.
А вот как стать крутым программистом с нуля и с чего начать — другой вопрос. К примеру, Senior разработчика от джуна отличают годы практики и колоссальный опыт, так что только терпение и труд.
2. Почему вы хотите начать программировать
IT — перспективная отрасль, которая сулит хорошим специалистам немаленькие зарплаты. Но если деньги — единственная причина, подумайте трижды. Вам предстоит работать в офисе, дома, забывать о выходных и возможности расслабиться: все мысли в тасках и багах. А всё, что обязательно нужно знать начинающему программисту, курсы не дадут: будьте готовы доучиваться.
Если же вы питаете неподдельный интерес к процессу, смело ступайте на стезю разработки.
3. Что нужно знать, чтобы стать программистом
Чтобы стать успешным и востребованным программистом, нужно обзавестись рядом hard skills и soft skills. Первые отвечают за технические умения и знания, вторые — за качества, которые помогают эффективно работать и находить общий язык с командой.
3.1 Hard skills
У каждой профессии свой набор хард скиллов. У программиста это общие технические знания (математика, информатика, алгоритмизация) и набор навыков, свойственный конкретному стеку.
3.1.1 Основы информатики
В такой сложнотехнической профессии понадобятся даже самые азы, а именно:
- какие типы данных бывают и чем они отличаются друг от друга;
- понимание систем счисления — двоичной и шестнадцатеричной;
- булева алгебра;
- понимание принципов выполнения операций ЭВМ.
3.1.2 Математика
А как же стать настоящим программистом, если плохо с математикой, и насколько важна математика в разработке? Требования разнятся в зависимости от сферы: для работы с графикой нужно знать геометрию, а для машинного обучения — теорию вероятностей и статистику. Но базовые знания математики никогда не будут лишними, особенно если вы осваиваете программирование с нуля.
3.1.3 Алгоритмы
Это то, что нужно обязательно знать, чтобы стать программистом. Алгоритмами называют последовательность действий, которая преобразовывает входные данные в некий результат. Наверняка вы слышали об алгоритмах поиска и сортировки — это они и есть. Разобравшись, как устроены алгоритмы, вы сможете создавать свои решения сложных задач и даже комбинировать их.
3.1.4 Принципы ООП
Объекто-ориентированное программирование — это подход в разработке, при котором за основу берутся абстрактные объекты, а не функции или процедуры. Данный подход используется в большинстве современных языков программирования, поэтому крайне важно понимать основные принципы ООП:
- абстракция;
- наследование;
- инкапсуляция;
- полиморфизм.
3.2 Soft skills
Софт скилы, они же гибкие или мягкие навыки, — это совокупность нетехнических неспециализированных навыков, которые тем не менее важны для производительности и профессионального развития. Это то, что также нужно знать программисту для эффективной работы.
3.2.1 Знание английского
Необходимость английского языка в программировании зависит от ваших конечных целей. Если вы видите программирование своим хобби, то можно обойтись базовыми знаниями английского и помощью онлайн-переводчика. Но если вы серьёзно настроены на карьеру разработчика, английский язык необходим.
3.2.2 Умение работать в команде
Программирование — это почти всегда командная работа. Как минимум, чтобы стать программистом, нужно уметь взаимодействовать с PM, тимлидом и просто камрадом по проекту.
Речь идёт не о социопатии и необходимости быть душой компании. Чтобы стать разработчиком, нужно слушать и слышать, задавать вопросы, признавать ошибки и исправлять их плечом к плечу, а не сваливать вину на сослуживцев при первой же возможности.
Для эффективной командной работы следует понимать и использовать гибкие методологии разработки. Почитайте об Agile, Scrum и Kanban — пригодится.
3.2.3 Стрессоустойчивость
Ответственность программиста сравнима с бухгалтерской. Так, запущенный на продакшене код с ошибкой может удалить часть или все данные, потревожить клиентов заказчика и вообще сделать последнему убытки.
Кроме того, вам нужно спокойно принимать пожелания и вносить правки, если требуется, не срываясь на проджект-менеджера и тем более заказчика. Хорошим подспорьем станут книги «Как разговаривать с кем угодно, когда угодно и где угодно» и «HBR Guide. Эмоциональный интеллект».
3.2.4 Постоянное саморазвитие
Не думайте, что программирование можно раз освоить и забыть. Отрасль богата переменами, нововведениями — уходом старого и появлением нового. Это и языки, и фреймворки, и сопутствующие технологии, которые всё время меняются и совершенствуются для более эффективной разработки.
Настраивайтесь на постоянные митапы, вебинары и курсы повышения квалификации. А ещё не забывайте о сертификатах, которые нужно получать и подтверждать с разной периодичностью.
3.2.5 Тайм-менеджмент
Контроль времени на решение поставленных задач существенно экономит и само время, и ресурсы, а также увеличивает продуктивность. Тайм-менеджмент для разработчика базируется на тех же концепциях, что и для любой другой профессии.
При планировании рабочего дня учитывайте дедлайны, используйте тайм-трекер и таблицу Эйзенхауэра:
4. Какое направление в программировании выбрать в 2023 году
Прежде чем думать, как стать айтишником с нуля самостоятельно, стоит определиться с направлением. По данным Stack Overflow Developer Survey 2020, популярность IT-специальностей такова:
В опросе приняло участие 65 000 разработчиков из разных стран.
Но что насчёт России? Согласно данным «Университета 20.35» за 2020 год, в топ-10 востребованных удалённых ИТ-профессий России вошли:
- Java-разработчик
- Аналитик данных
- Разработчик на языке C#
- PHP-разработчик
- Специалист службы поддержки
- Продуктовый аналитик
- Разработчик 1С
- Kotlin-разработчик
- Системный администратор
- Системный аналитик
А вот зарплаты айтишников по специализациям за второе полугодие 2020:
Проценты на диаграмме отражают разницу с предыдущим периодом, а прочерк означает, что данных для сравнения недостаточно.
5. Десктопная разработка
Десктопными называют приложения, которые устанавливаются на компьютер и работают под управлением ОС. Как известно, чтобы стать айтишником с нуля, сперва в любом случае нужно практиковаться на консоли и десктопе.
Хотите заниматься этим на серьёзном уровне? Здесь всё просто: если планируете разрабатывать под Windows — учите язык C#, под Linux — C++ или C, под macOS — Swift.
5.1 Программы для Windows
Стоит отметить, что для создания десктопных приложений можно использовать почти любой язык: Java, Python и даже Delphi. Мы же затронем самые оптимальные и популярные языки.
5.1.1 C# / C++
Для серьёзного высокопроизводительного приложения подойдут «плюсы». Но если жёстких требований к производительности нет, лучше обратиться к GUI-платформе Windows Presentation Foundation в составе .NET Framework. Писать на C# проще, и развивается это язык динамичнее того же C++.
Также есть вариант объединить мощность C++ и удобство .NET. Например, пользовательский интерфейс на C#, а подключение «плюсовых» библиотек через C++/CLI.
Чуть больше вы сможете узнать из нашего гайда по программированию на C++ с нуля.
5.2 Для Linux
5.2.1 C
Linux — это семейство Unix-подобных операционных систем, и так сложилось, что ядро Linux написано на языке C. Да, Си считается устаревшим, поэтому многие программисты предпочитают ему Python, Java, Perl, иногда Ruby. Но драйверы, модули ядра и большая часть системного ПО всё же написаны на языке программирования Си, и для Linux-программ он приоритетен.
Если вас интересует, как стать разработчиком на языке C, загляните в материалы по изучению Си.
5.2.2 C++
По сути, это усовершенствованный С. Браузеры, графические окружения, утилиты GNU и прочее программное обеспечение под Linux написаны на C++. А ещё на «плюсах» написан Qt — графический фреймворк, который используется во многих кроссплатформенных программах и является бесплатным для разработки свободного ПО.
5.3 Для macOS
5.3.1 Swift
Swift — родной язык для Apple-приложений, так что он оптимален для разработки под macOS. Выбрать можно и Objective-C, но последний проигрывает в скорости работы.
- прост в изучении;
- легко читается;
- поддерживает современные синтаксические конструкции;
- есть опционалы, которые «спасают» от null.
6. Data Science
Языки программирования Python и R — общепринятый стандарт для Data Science, так как они оба отлично подходят для работы со статистикой.
6.1 Python
Как стать Python программистом с нуля самостоятельно? На самом деле, не так уж сложно: у языка Пайтон простой синтаксис, много библиотек, развёрнутая и понятная документация. Но есть и минусы, такие как отсутствие удобных средств ORM и не самая высокая скорость работы.
Для Data Scientist у Python есть немало библиотек и фреймворков:
6.2 R
R в свою очередь характеризуется богатой ML-экосистемой, поддержкой векторных вычислений и синтаксисом, заточенным под нужды статиста. Из минусов — меньшее комьюнити и не самый простой синтаксис.
Но у языка R есть свои инструменты для Data Science:
- Esquisse и Ggplot2 — библиотеки для создания графиков.
- Dplyr — аналог Pandas для R.
- Shiny — пакет для интерактивных веб-приложений с визуализацией исследований.
И это не говоря о randomForest, Caret и других библиотеках с методами машинного обучения.
7. Как стать разработчиком на Андроид
В 2019 году компания Google объявила Kotlin предпочтительным языком программирования для создания Android-приложений. Это спровоцировало новую волну споров по выбору языка.
Ответ таков: чтобы стать Android-разработчиком, нужны оба языка, но при этом ознакомиться с их отличительными характеристиками не помешает.
7.1 Java
- много библиотек и готовых решений;
- большое комьюнити;
- разные сферы применения, если вдруг надоест Android-разработка;
- документация Kotlin предполагает, что вы знаете Java.
7.2 Kotlin
- лаконичный синтаксис;
- актуальная IDE, тесно связанная с языком разработки (Android Studio и Kotlin созданы JetBrains);
- предсказуемое развитие;
- перспективы.
8. План развития iOS разработчика
А как же тогда стать разработчиком iOS? Здесь всё гораздо проще, так как основной язык всего один.
8.1 Swift
Этот язык программирования разработан Apple и многое заимствовал из Objective-C, а также C++.
- компактный язык программирования;
- производительность приближена к C++;
- тестирование кода в реальном времени со Swift Playgrounds;
- постепенно распространяется на другие платформы.
9. Как стать разработчиком игр
Что нужно знать программисту, чтобы войти в геймдев? Сперва необходимо определиться, как устроены игры. Хороший вариант для начинающих — готовые движки, такие как Unity и Unreal Engine (но последний сложнее и серьёзнее).
Далее стоит определиться с платформой, под которую вы хотите разрабатывать игры. Поэтому на вопрос, что нужно знать разработчику игр, ответить не так просто.
9.1 Игры на iOS или macOS
Поговорим о программировании игр на Swift. Для начала необходимо установить «яблочную» IDE Xcode: в ней поддерживается разработка как на iOS, так и на macOS. Среда бесплатная и функциональная. В ней создайте новый проект с шаблоном Single View Application или Game. Тут уж к чему душа лежит:
- Single View Application предназначен для приложения с одним экраном. Шаблон включает в себя компонент View Controller для настройки вида с конструктором Interface Builder.
- Это специальный игровой шаблон. В нём предусмотрены фреймворки для двумерной визуализации, 3D-графики без OpenGL и низкоуровневый API, с которым можно писать действительно высокопроизводительные игры.
9.2 Браузерные игры
Вообще, создать браузерную игру можно и на HTML/CSS/JavaScript, но мы затронем PHP.
9.2.1 PHP
PHP актуален для разработки браузерных игр, хоть и не заточен под них специально. Такие компании, как Funzio, Gameforge, Goodgame Studios и другие продолжают использовать этот язык в своих играх.
Есть исчерпывающий видеокурс по созданию браузерной игры на PHP — от настройки окружения до регистрации и авторизации:
9.2.2 JavaScript
После ухода тяжеловесной технологии Flash из браузеров у JavaScript-разработчиков появилось много возможностей. Сейчас есть сильная альтернатива — элемент Canvas в HTML5 для создания двухмерных изображений через JavaScript-команды.
Чтобы понимать принцип создания игр на JS, проанализируйте код рандомайзера с угадыванием чисел.
Как только освоите азы, попробуйте написать что-то сложнее. В этом видеоуроке как раз используются чистый JavaScript и HTML5 Canvas:
9.3 Игры на Unity
Это популярная платформа для разработки игр. Очень дружелюбна к новичкам: можно бесплатно загрузить и обучаться с помощью курсов, словарей и других материалов, которые предоставляет компания и участники сообщества. Платформа поддерживает создание 2D- и 3D-игр.
Игры на Unity пишут с использованием языков C# и JavaScript. Почитайте, как создать простую 2D-игру на Unity.
9.4 Современные большие и требовательные игры
Речь о тяжеловесных многопользовательских играх с сильной нагрузкой на сервер. Такая задача под силу языкам C и C++.
9.4.1 C++
Что нужно знать начинающему программисту о C++? Это самый популярный язык программирования для геймдева: быстрый, мощный, с большим набором полезных инструментов. C++ — практически неограниченные возможности в среде масштабных проектов, в том числе в создании 3D-игр со сложной графикой и анимацией.
Не даром ведущие разработчики многопользовательских игр, такие как Blizzard Entertainment, работают с C++. На нём написаны World of Warcraft, Diablo, StarCraft, Counter-Strike и другие популярные игры. В основе Xbox и PlayStation также лежит C++.
9.4.2 С
Да, язык не такой популярный, как «плюсы», но по-прежнему хорошо справляется с большими нагрузками — альтернатив на низком уровне нет. Когда дело доходит до компиляции, сложно представить, какой бы язык мог конкурировать с Си.
10. Как стать Python разработчиком
Чтобы стать питонистом, нужно начинать с азов, таких как принципы ООП и синтаксис языка. А понимание того, как стать программистом Python, придёт с определением сферы деятельности. Основных направления для Пайтон-разработчиков два:
- Data Science
- Веб-разработка
Поскольку первое направление мы уже разобрали, сосредоточимся на веб-разработке. Что же что нужно знать Python веб-разработчику? Обратите внимание на фреймворки Django и Flask. Для эффективной работы с бэкендом достаточно одного из них, но в идеале следует понимать оба.
Python можно использовать для создания десктопных приложений, геймдева и мобильной разработки, но наилучших показателей с этим языком можно достичь в перечисленных направлениях.
11. План развития Java-программиста
А как можно стать Java разработчиком, если никогда не был программистом? Базис для всех языков плюс-минус одинаков: синтаксис, переменные, условия, циклы, ООП. Для решения специфических задач нужно освоить инструмент сборки и управления проектом Maven. Будет полезен и набор open source сервисов Netflix Stack.
Дальше всё зависит от выбранного направления в Java:
- веб-разработка;
- Android разработка;
- программирование для десктопов;
- Big Data.
Все материалы по этим направлениям, инструменты и путь развития вы найдёте в дорожной карте Java-программиста.
12. Бэкенд разработка — с чего начать?
Как стать бэкенд разработчиком? Нужно понимать, как устроены операционные системы, уметь работать с терминалом, знать стандарты POSIX и концепции построения сети, управлять вводом и выводом (I/O), процессами, а также памятью.
12.1 Обучение PHP
Как вы могли догадаться, стать бэкенд-разработчиком без знания языка невозможно.
PHP принято считать стандартом бэкенд-разработки, так как на нём написано множество веб-проектов, включая Facebook, Viber, Yahoo, YouTube, Wikipedia и даже движок WordPress, на котором вы сейчас читаете эту статью.
Другие преимущества PHP:
- простая установка и настройка;
- кроссплатформенность;
- выполнение программы до достижения ошибки в коде;
- большое комьюнити.
12.2 Обучение Node.js
Как известно, стать бэкенд веб-разработчиком на JavaScript можно с программной платформой Node.js. Она позволяет запускать JavaScript-код без браузера на бекенде, а в пакетной экосистеме npm есть много готовых решений.
12.3 Обучение Java
Мы уже разобрались, как можно стать Java программистом с нуля — поговорим прицельно о роли языка в бэкенде.
Для новичка Java сложнее, чем условный Python или PHP, да и код выйдет более громоздким. Однако это мощный инструмент в создании больших веб-проектов вроде eBay или LinkedIn, которые как раз и написаны на Java.
12.4 Обучение Django
Задаётесь вопросом, как стать веб разработчиком, зная Python? Используйте для этого Django — полнофункциональный веб-фреймворк, который предоставляет достаточно готовых решений для серверной части.
12.5 Основы SQL
Это язык запросов для работы с базами данных. Вы вряд ли вы найдёте по нему гайд в разделах «Как стать программистом», ведь SQL нужно не учить, а понимать.
Держите материалы, которые позволят разобраться в основах SQL:
- Основные команды SQL, которые должен знать каждый программист
- 27 распространённых вопросов по SQL с собеседований и ответы на них
13. Как стать фронтенд разработчиком
Итак, frontend программирование — с чего начать? Вам нужно освоить HTML, CSS и JavaScript — три кита, на которых стоит фронтенд-разработка.
13.1 Обучение HTML
Разметка — это каркас сайта. Чтобы работать с фронтендом, следует хорошо понимать анатомию HTML-разметки, знать основные атрибуты и теги, обеспечивать доступность и освоить SEO хотя бы на базовом уровне.
Для лучшего понимания рекомендуем ознакомиться с видеокурсом «HTML5 для начинающих».
13.2 Обучение CSS
Далее идут каскадные таблицы стилей. В разрезе CSS вам нужно освоить:
- компоновку;
- центрирование и выравнивание;
- видимость элементов.
Это базис. Следующим этапом можно переходить к медиа-запросам, которые позволят учитывать технические параметры разных устройств. В создании адаптивного отзывчивого дизайна помогут CSS Grid и Flexbox.
13.3 Обучение JavaScript
Ну и как стать эффективным фронтенд разработчиком без знания JavaScript? Именно он отвечает за функциональность сайта и возможность с ним взаимодействовать: заполнение и отправка форм, нажатие кнопок, прослушивание событий и многое другое.
Не спешите осваивать фреймворки — сперва чистый JavaScript. Это язык со слабой типизацией, а значит операция вроде 2 + “2” вместо ошибки выдаст результат 22. Так что есть с чем разбираться и без фреймворков.
Больше полезных материалов и инструментов для фронтенд-разработчика вы найдёте в дорожной карте по фронтенду.
14. Full Stack разработка
Эдакий гибрид frontend- и backend-разработки. Данное направление набирает популярность. Сейчас сложно найти чистых фронтендеров или бэкендеров: для взаимодействия этим специалистам нужно знать, за что отвечают их коллеги по вебу.
Фуллстек-разработчик не будет одинаково хорош в разработке серверной и клиентской части. Но как стать чистым Full Stack разработчиком, и чем вообще занимаются эти специалисты?
Хороший пример — CRM-разработчик. В его обязанности входят:
- Работа с базами данных клиента: создание событий, автоматизация процессов и интеграция приложений посредством API.
- Настройка аналитики в формате репортов/дашбордов.
- Создание простенького, но понятного интерфейса для работы с готовым продуктом.
Здесь также применимы инструменты вроде Bootstrap или Angular, но без фанатизма — важно создание рабочего функционального продукта.
15. Какой язык программирования выбрать в 2023 году
Всё ещё не определились с языком? Для начала взгляните на рейтинг TIOBE:
А теперь давайте пробежимся по самым популярным языкам программирования, затронем их сильные стороны и уточним сферы применения.
15.1 Python
Как уже говорилось ранее, стать Python программистом с нуля самостоятельно несложно, ведь у языка низкий порог вхождения и понятный синтаксис. Пайтон рекомендуется к изучению в вузах в качестве базового языка.
Основные сферы применения Python:
- Data Science
- Веб-разработка
15.2 JavaScript
О сферах применения JS говорить не стоит: язык давно стал лидером в веб-разработке, сперва захватив фронтенд, а теперь и отжимая бэкенд за счёт Node.js. Если хотите разрабатывать веб-приложения, учите JavaScript.
15.3 Java
Java — это кроссплатформенный язык программирования, мощный обработчик и внушительная библиотека. У Java много готовых решений и исчерпывающая документация.
Основные сферы применения Java:
- Веб-разработка
- Android разработка
- Десктопная разработка
- Big Data
15.4 C++
Быстрый, универсальный и полезный в качестве фундамента язык. Да, пусть Python в разы проще, но за сложностью C++ скрываются и преимущества. Освоив «плюсы», будет легче понять Java, C# и JavaScript, в основу которых легли принципы C++.
Главные сферы применения C++:
- Геймдев
- Интернет вещей (IoT)
- Операционные системы
- Ускорение существующих приложений
15.5 С#
C# часто сравнивают с Java, и у них действительно много общего. Код на C# удобочитаемый, а синтаксический сахар обеспечивает высокую скорость разработки.
Основные сферы применения C#:
- Геймдев
- AR/VR
- Десктопная разработка
По этому видеокурсу вы узнаете, как стать C# разработчиком.
15.6 PHP
Это бессмертная классика серверной части веб-приложений. PHP бюджетен, прост в освоении и успел обрасти внушительным комьюнити. Пусть современные сайты и пишутся то на Java, то на Node.js, существует огромная база написанных на PHP веб-приложений, которые всегда будут нуждаться в поддержке.
15.6 Kotlin
Здесь только Андроид. Но, как говорилось ранее, чтобы стать Android разработчиком с нуля, стоит начать с изучения Java, а только после переходить на Kotlin.
15.7 Swift
Если хотите писать десктопные и мобильные приложения для Apple устройств, осваивайте Swift. Это компактный и производительный язык программирования, который постоянно совершенствуется компанией Apple.
15.8 На что обратить внимание при выборе
На отрасль, в которой желаете развиваться. Но чтобы понять, как стать программистом и с какими трудностями придётся столкнуться, рекомендуем начать с C или C++, после которых любой другой язык освоить куда проще.
Если же вы точно определились, с чем именно хотите работать, смело выбирайте язык, который для этого подходит. Опирайтесь на рейтинги популярности, просматривайте вакансии по желаемому направлению в вашем городе, сравнивайте уровень востребованности и зарплаты.
16. Где выучиться на программиста
Чтобы ответить на вопрос, где учиться на программиста, необходимо рассмотреть все доступные варианты.
16.1 Самостоятельная учеба
Обилие книг, видеоуроков и сервисов вроде Scratch позволяет освоить базис, не выходя из дома. Но как выстроить план обучения, чтобы стать программистом с нуля самостоятельно? Обратитесь к стандартным программам обучения или роадмапам. Чаще всего основы включают в себя:
- Знакомство с программированием.
- Разнообразие IT-направлений.
- Основы выбранного языка: синтаксис, объекты и классы, функции, списки и словари, условия, циклы.
- Hello World.
- Модульное тестирование.
- Безопасность.
16.2 ВУЗ
Это более основательный подход, и, вопреки распрсотранённому заблуждению, «корочка» IT-специалиста действительно ценится, особенно в крупных компаниях. Если вы серьёзно настроены на карьеру в IT и думаете, как отучиться на программиста, выбирайте вуз.
16.3 Практические курсы
К курсам можно относиться по-разному, но если у вас нет профильного образования и вы не хотите тратить несколько лет в вузе, курсы — хороший вариант. К тому же, современные курсы покрывают практически все нужды, обеспечивая обучение основам программирования, более продвинутым темам, помогая с составлением резюме и трудоустройством.
16.4 С помощью ментора
Мы уже разобрались, как можно стать айтишником с нуля дома, но не затронули менторство. Всё потому, что оно не всегда подразумевает обучение на дому: это может быть как онлайн-репетитор, так и индивидуальные занятия оффлайн.
Ментор не только объяснит материал, но также обратит ваше внимание на ошибки, которые вы допускаете на практике. Внимание наставника не растекается по группе людей, а сосредоточено именно на вашей работе, что даёт более прицельное обучение программированию.
17. Классификация разработчиков
Когда люди говорят, что программисты много зарабатывают, они чаще всего подразумевают сеньоров. Давайте разберёмся, какие уровни IT-специалистов существуют и чем разнятся.
17.1 Стажёр
Стажёр — это вчерашний студент, который набивает шишки на практике. Обычно это низкооплачиваемые сотрудники, которых компания нанимает специально, чтобы взрастить нужного специалиста.
Стажировка может быть как оплачиваемой, так и неоплачиваемой: всё зависит от договорённости с нанимателем. Продолжительность стажировки оговаривается индивидуально. Чаще к стажёру приставляют ментора от компании.
17.2 Junior разработчик
Как правило, чтобы стать Джуниор программистом, достаточно освоить синтаксис языка, простые задачи решать самостоятельно, а сложные — заручившись помощью более опытного коллеги. Младший разработчик постоянно учится, совершенствует свои навыки. Его код нуждается в постоянном ревью.
17.3 Middle разработчик
У такого программиста уже есть опыт в разработке, он самостоятельно выполняет сложные задачи, но по-прежнему нуждается в ком-то, кто направит. Чаще стек технологий Мидла ограничен необходимым базисом. Нередко он знает, как выполнить поставленный таск, но не до конца понимает, как его решение интегрируется в готовый проект.
17.4 Senior разработчик
Сеньор, или старший разработчик, уже обладает широким кругозором, знает несколько языков программирования и технологий, способен с нуля создать архитектуру проекта с учётом его будущего развития. Senior программисты продолжают совершенствовать навыки, но при этом способны генерировать собственные идеи и делиться ими с командой.
Переход между перечисленными уровнями требует не столько времени, сколько усердия со стороны самого разработчика.
18. Как стать Junior-разработчиком
Здесь опять всё упирается в выбранную отрасль: у каждой специальности свои требования. Давайте разберёмся, что нужно знать младшему программисту на примере веба и мобильной разработки.
18.1 Frontend Junior
Сразу оговоримся, что алгоритмы, Git, тестирование и прочий базис мы затрагивать не будем, так как это актуально для всех направлений.
Итак, что же нужно знать младшему Frontend разработчику в 2023 году?
- HTML5, понимать разметку, освоить базовые теги, атрибуты и вложенные элементы.
- CSS3 — позиционирование, компоновка и выравнивание элементов, их видимость, отзывчивый дизайн и подходы mobile-first.
- Если мы говорим о JavaScript, то сперва следует выучить основы языка, а лишь потом двигаться к фреймворкам.
- Понимание MongoDB.
18.2 Backend Junior
К младшему бэкенд программисту иные требования. Он должен знать:
- Принцип работы интернета и операционной системы.
- Язык серверного программирования: PHP, Java, JavaScript (Node.js), Python (Django) или другой.
- Базы данных — реляционные и NoSQL.
- API — REST, JSON.
Плюсом будет умение установить и настроить хотя бы один из популярных веб-серверов: Nginx, Apache, Caddy или MS IIS.
18.3 Junior iOS
Чтобы влиться в iOS-разработку, нужно:
- Знать язык программирования Swift.
- Иметь практический опыт работы с IDE Xcode.
- Понимать сущность MVC, а также то, как «яблочные» приложения строятся на основе этого паттерна.
- Уметь запускать приложения на устройствах и распространять их.
18.4 Junior Android
Как уже говорилось, начать следует с выбора языка, но за основу лучше взять именно Java, а при необходимости дополнительно изучить Kotlin. Далее:
- Практический опыт работы с Android Studio.
- Понимание Android Architecture: паттерны MVVM, MVI, MVP.
- Изучение жизненного цикла Activity.
- Умение создавать гибкие интерфейсы с использованием фрагментов.
- Запуск приложений на устройствах.
19. Где работают программисты
Сложно ответить на вопрос, где в целом работают программисты, потому что сегодня профессия требуется чуть ли ни в любой сфере.
19.1 Фриланс
Как стать айтишником на фрилансе? Для этого есть немало площадок: Upwork, Weblancer, Kwork, FL и другие. Но будьте готовы нарабатывать портфолио и репутацию, а для этого первое время придётся перебиваться дешёвыми заказами.
Большой плюс — знание английского и умение строить вопросы на получение исчерпывающих ответов: вы сами себе PM, тимлид и разработчик.
19.2 Компании аутсорсеры
Также ласково называемые галерами. А всё потому, что от сотрудников часто требуется многозадачность за зарплату одного специалиста.
Но не всё так плохо. Во-первых, аутсорсинг — это готовые задачи, которые на фрилансе нужно выбивать, доказывая свою профпригодность. Здесь же менеджеры сами договариваются и берут нужный таск. Во-вторых, корпоративная жизнь предполагает бесплатный чай/кофе, абонементы в спортзал, тимбилдинги, корпоративы и вообще комфортную работу. Не всегда, но в крупных компаниях это так.
19.3 Стартапы и небольшие компании
Неплохо для начинающих программистов и опасно для опытных, которые готовы ради этого бросить более крупную «рыбу». В стартапах всегда есть риски:
- итоговая зарплата окажется ниже обещанной;
- выплачиваться будет с задержкой;
- компания в любой момент может закрыться, не выдержав конкуренции.
Но это хороший опыт для стажёров, которые всё ещё думают, как стать программистом, младших разработчиков и тех, кто хочет уйти от фриланса.
19.4 Банки и энтерпрайз
Здесь потребуется разработка, направленная на решение проблем бизнеса, а не конечных пользователей. Именно поэтому в банки и бизнес-отрасли часто набирают только Senior-программистов, так как нужно дописывать и поддерживать готовые проекты, нередко с Legacy-кодом. Зарплаты обычно выше средних на рынке, а от самого разработчика требуется терпение и исполнительность.
19.5 Продуктовые компании
Если аутсорсинг сосредоточен на разноплановости, ограниченных сроках и бюджете, то продуктовая компания — на эффективном управлении своими решениями. Во втором случае никто не будет требовать от вас проект на вчера и ведение сложных переписок с кучей недопониманий. К тому же, вы явно будете видеть свой вклад в развитие одного большого проекта.
Как стать разработчиком продуктовой компании? Точно так же, как и аутсорсинговой, но будьте готовы, что требования могут быть выше, ведь компания ищет программиста непосредственно для себя, а не для левого дяди.
Где ещё можно работать программистом? Это фриланс, open source и собственные проекты.
20. Как найти первую работу в IT
Всё чаще поднимается вопрос поиска и найма недооценённых специалистов — без диплома или соответствующего опыта работы. Исходя из этого, что же всё-таки нужно знать начинающему программисту?
Для начала вы должны показать, что нанять вас выгодно. В этом помогут теоретическая база, опыт в других сферах, знание английского и мотивация. Можно изобразить это так:
20.1 Где брать проекты для портфолио
Если в поисках ответа на вопрос, где можно выучиться на программиста, вы выбрали курсы, практический опыт гарантирован: курсы для разработчиков не обходятся без написания проектов. То же касается и вузов, где присутствует обязательная практика.
Сложнее будет, если вы самоучка. Но и здесь можно что-то придумать:
- писать небольшие программы по туториалам;
- искать задания на фрилансе и выполнять их самостоятельно;
- принимать участие в разработке open source проектов.
20.2 Как составить резюме, если нет опыта
- Нормально назовите резюме. В названии должны быть желаемая должность и ФИО кандидата, как здесь: «Junior Java — Пупкин Иван Иванович».
- Резюме может быть в формате Doc, PDF или сайта-визитки, если вы веб-разработчик.
- Добавьте адекватное фото и контакты.
- Укажите места, где учились и повышали квалификацию.
- Не копирайте бездумно инфу из разделов, что нужно знать, чтобы стать крутым программистом: вы должны доказать эти знания на собеседовании.
- Если нет опыта работы, указывайте, сколько времени практикуетесь в том или ином языке/технологии.
Последний пункт в резюме программиста может выглядеть примерно так:
- Java — 1 year;
- PHP — 0,5 years;
- JavaScript — 0,5 years.
20.3 Где искать вакансии и работу
О фриланс-сервисах мы уже говорили, потому затронем платформы по поиску работы в офисе или в ремоут-режиме. Для России и стран СНГ лучшие сайты с вакансиями для программистов это:
20.4 Как общаться с рекрутерами
Как вы понимаете, стать хорошим программистом в обход общения с HR невозможно. На собеседовании не стесняйтесь озвучивать свои желания и вопросы. Если на всё кивать головой, как автомобильная собачка, после трудоустройства можно обнаружить себя в крайне некомфортных условиях работы. Мы подготовили 13 вопросов работодателю, которые стоит задать на собеседовании.
Несмотря на это, нужно вести себя в меру сдержанно, демонстрировать серьёзность и говорить о своей мотивации.
21. Что спрашивают у Джунов на собеседовании
Огромный пласт вопросов приходится на теорию, чуть меньше занимает практика. Перед собеседованием изучите информацию о компании — обязательно спросят, почему именно она вас заинтересовала. Также подготовьтесь к каверзным вопросам рекрутера.
Будут и логические задачи. При этом ответ не обязательно должен быть верным — важно озвучивать ход мыслей, показывать, как именно вы пришли к тому или иному решению.
Из задач встречаются алгоритмы поиска и сортировки, расчёты, работа со строками и списками, оптимизация готовых решений. Держите несколько сложных задач с собеседований с разбором и кодом.
Другие вопросы, которые могут прозвучать на собеседовании:
- Принципы ООП и их понимание.
- Команды Git — как сделать пуш, коммит и т. д.
- Основные SQL-запросы.
Всё остальное будет касаться выбранного языка.
22. Что делать, если вам не хватает знаний до вакансии Джуниор-программиста
Трудоустроиться после первого же интервью почти нереально. Не расстраивайтесь из-за отказов, а используйте их с пользой. Как же стать востребованным айтишником с нуля? Будьте готовы набивать шишки на собеседованиях, запоминать или записывать вопросы, которые ранее не встречались, включать их в программу подготовки к собеседованию.
23. Заключение
Надеемся, этот гайд ответил на вопрос, как стать программистом, дал полезные советы и материалы, а также мотивировал на покорение новых вершин.
Остались вопросы? Задайте их в комментариях.
Как самостоятельно стать программистом с нуля: советы и реальные истории

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

Освойте профессию
«Fullstack-разработчик на Python»
Чем занимаются программисты?

Благодаря поп-культуре у большинства далеких от IT людей сформировался стереотип о программистах как о бородатых мужиках в футболках с супергероями, нелюдимых и замкнутых. При этом считается, что они умеют все: от взлома баз данных до починки холодильника, — но на деле в IT-индустрии более узкие специальности.
Профессия / 12 месяцев
Fullstack-разработчик на Python
Создавайте веб-проекты самостоятельно
4 116 ₽/мес 7 483 ₽/мес

Пройдите наш тест и узнайте, какой язык программирования вам подойдет. Ссылка в конце статьи.
Но чем конкретно занимаются программисты?
- Разработка мобильных приложений — одна из топовых специальностей в программировании, в которой ежедневно открываются сотни вакансий. Всего есть три вида мобильной разработки:
- iOS-разработка подразумевает создание приложений для iPhone. Чтобы работать с этой системой, нужен MacBook или компьютера Mac.
- Android-разработка — для старта подойдет любой ноутбук на Windows. Выбор устройств для разработки гораздо шире: флагманские, средние и бюджетные линейки Samsung, Xiaomi, Honor и еще десятка производителей.
- Кроссплатформенная разработка для двух операционных систем одновременно.
Обычно для разных типов систем крупные компании нанимают двух разных разработчиков, но иногда ищут специалистов-универсалов.
- Frontend — программирование видимой части сервиса, с которой пользователь взаимодействует в браузере. Сюда входят, например, внешний вид сайта, выпадающее меню, взаимодействие с кнопками, формы обратной связи и многое другое.
- Backend — работа с внутренней частью сайта или веб-приложения, невидимой для пользователя. Backend-разработчики отвечают за то, чтобы информация после заполнения формы на сайте попадала в базу данных, а при необходимости данные быстро подгружались из базы и передавались на фронтенд, видимую часть сайта. Например, когда вы просматриваете новости, код, написанный на бэкенде, извлекает из хранилища свежие публикации, передает их на фронтенд, и пользователь уже видит привычную ленту.
- Fullstack — это работа со всем сразу. Термин придумали для программистов, знающих несколько языков и совмещающих навыки фронтенда и бэкенда. Некоторые fullstack-специалисты берут на себя мобильную разработку, работу с сервером или UX-дизайн. Их многофункциональность может стремиться к бесконечности.
- Разработка игр или геймдев — игровые разработчики участвуют в создании компьютерных и мобильных игр разной сложности, от простых платформеров в 2D до крупных AAA-проектов уровня GTA, «Ведьмак» и Cyberpunk 2077.
- Системное программирование — это создание программного обеспечения для операционных систем. Не самое популярное направление разработки, зато в нем меньше конкурентов. Например, системный программист занимается разработкой драйверов, которые помогают системе взаимодействовать с другими устройствами: подключить колонки к ноутбуку с помощью аудиодрайвера или принтер с помощью драйвера, разработанного под конкретную модель.
Какой язык программирования выбрать?
Это зависит от того, чем вы хотите заниматься:

Для тех, кто никогда не имел дела с кодом, лучше всего подходит Python. Его используют и в Data Science и машинном обучении, для создания скриптов в 3D-редакторах и, разумеется, в веб-разработке.
Google использует Python для ранжирования поисковой выдачи, также на нем работают YouTube, Dropbox и Reddit. Еще на этом языке написан фреймворк Django — универсальный инструмент для веб-разработчиков, который отвечает за создание внешнего интерфейса и работу на сервере.
Чтобы стать программистом в веб-разработке, определитесь, что вам больше интересно: backend или frontend. Вот, что нужно освоить для каждой специальности:
Frontend
Backend
HTML и CSS — это языки разметки, с помощью которых элементы сайта в браузере встают на нужные места.Go — язык для backend с простым синтаксисом. Подходит для крупных проектов и высоконагруженных приложений, таких как YouTube или Ozon.
Javascript — язык, который добавляет сайту динамику: анимацию нажатия кнопок, движение карточек продуктов, отправку уведомления.
PHP — простой в освоении язык, подходит только для backend, но специалисты советуют обратить внимание на более современные инструменты.
Python — универсальный язык, который подходит для frontend-разработки, а также backend и других интересных задач.
Java — универсальный язык, который используется уже более 20 лет. Код, написанный на Java, работает одинаково на разных устройствах, что является его базовым преимуществом.
Кроме этого, понадобится базовое знание основ веб-технологий. Например, нужно знать, как работает протокол http или зачем необходимо шифрование данных.
Начинающим разработчикам мобильных приложений стоит определиться, с какой операционной системой они будут работать, потому что код для iOS и Android пишется на разных языках.
iOS
AndroidObjective-C — язык программирования Apple, который используется в первую очередь для MacOS. Приложения для iOS раньше тоже писали на нем, но теперь мобильные разработчики используют в основном Swift.
Java — кроссплатформенный язык для создания мобильных и серверных приложений. На нем также можно писать backend для сайтов.
Swift — понятный и логичный язык, который отражает главные качества iOS — функциональность и производительность.
Kotlin — язык, альтернативный Java, большую часть нового кода сейчас стараются писать именно на нем. Но Java стоит знать для того, чтобы ориентироваться в уже написанном коде, а благодаря совместимости языков код на Kotlin и Java можно миксовать в одном проекте.
В геймдеве выбор языка зависит от уровня проектов и платформ, с которыми вы хотите работать:
C++ — потребуется, если вы планируете создавать крупные AAA-проекты с фотореалистичной графикой для PlayStation и Xbox. В этом случае обойтись простыми в изучении базовыми языками точно не получится. Подробная статья о С++.
C# (Си-шарп) — язык для движка Unity, разработанный компанией Microsoft. Он особенно популярен в России и считается более простым в освоении, чем C++. Изначально на нем создавались проекты эксклюзивно для ПК, но сейчас код, написанный на C#, можно портировать на Android, iOS, Xbox и другие платформы.
Как стать Junior-программистом?
Junior, или коротко джун, — это специалист начального уровня. Джуниор — уже не стажер, а начинающий разработчик: ему не поручают сложных задач и не привлекают к помощи новичкам. Со временем джуниоры «вырастают» до мидл- и сеньор-специалистов.
Если человек только начинает свой путь в разработке, он может претендовать на вакансии джуниора. Или, если знаний не хватает, — стажера либо ученика, так называемого trainee.
Какие знания нужны. Если на позицию стажера или trainee можно прийти без особенных знаний, то от джунов обычно уже просят каких-то результатов. Например, понадобится иметь портфолио, пусть даже состоящее из собственных пет-проектов: это выделит соискателя среди десятков других кандидатов. Джуниоров много, больше, чем джуниорских вакансий, поэтому конкуренция тут большая — надо уметь выделяться среди других.
- синтаксис и особенности выбранного языка программирования;
- основные фреймворки и библиотеки, с которыми придется работать;
- стиль кода, принятый в выбранном языке;
- направление разработки в целом — например, веб-разработчик должен иметь хотя бы примерное представление об устройстве сайтов в целом.
Что еще понадобится. Будет плюсом, если джун окажется знаком со вспомогательными инструментами разработчика: IDE, системами контроля версий, сборщиками или шаблонизаторами. Для каждого направления свой набор must have инструментов, так что не стоит учить все сразу.
Хорошее понимание сложных алгоритмов и паттернов проектирования на этом этапе еще не обязательно, но если джун окажется с ними хотя бы приблизительно знаком — будет хорошо. А вот простые алгоритмы, как, скажем, основные виды сортировки, знать надо.
Что нужно делать. Для начала стоит изучить синтаксис и особенности языка, потренироваться работать со вспомогательными инструментами, чтобы они не стали для вас сюрпризом на собеседовании.
Еще понадобится теоретическая база и портфолио. У джунов обычно нет или мало опыта, поэтому работодатели смотрят на проекты, которые человек реализовал сам. Например, фронтендер может сделать дашборд или таск-трекер, а ML-специалист — обучить несложную нейросеть.
Как набрать опыт. Нарабатывать портфолио можно в ходе обучения — самостоятельно или на курсах. На каком-то этапе тренировочные учебные проекты достигнут уровня, на котором их уже можно добавлять в портфолио.
Если нет уверенности в своих силах, можно записаться на стажировку. Некоторые из них оплачиваемые, а еще стажировка — отличный способ попробовать свои силы в настоящей рабочей обстановке. Более того: успешных стажеров могут пригласить в штат.
Что еще нужно знать, чтобы стать программистом?
- Знаниеязыкапрограммирования— это hard skill или базовый навык разработчика. Сюда же можно отнести:
- знание алгоритмов (для поиска, сортировки или сжатия данных);
- работу с библиотеками и фреймворками (для упрощения многих вычислительных задач);
- работу с системами управления версиями (позволяют возвращаться к более ранним версиям проекта);
- навык чтения чужого кода;
- чтение технической документации.
Владение английским языком — важный навык для тех, кто хочет стать программистом с нуля самостоятельно. Во-первых, знание английского нужно, чтобы лучше понимать код, написанный на языке программирования. Важно прокачивать технический английский, чтобы ориентироваться в англоязычной документации. Во-вторых, комьюнити разработчиков, говорящих на английском, гораздо шире русскоязычного, поэтому стоит быть в курсе мировых трендов, общаться и получать информацию на этом языке.
Как найти первую работу в IT?
Устройство на работу можно условно разделить на три этапа:
- поиск вакансий и отклики на них;
- прохождение собеседований;
- получение оффера и онбординг.
Искать работу можно по разным каналам. Вот несколько вариантов — мы рекомендуем пользоваться ими одновременно, поиск по многим направлениям сразу обычно дает лучший результат.
На специализированных сайтах. Речь о сервисах вроде HH, где размещают вакансии. Плюс в том, что на таких сайтах собрано огромное количество вакансий, есть удобные фильтры для поиска, а искать можно по всей России и за ее пределами. Минус — не все компании пользуются подобными сервисами, потому что размещение на них платное. А если организация небольшая и ищет молодого специалиста или стажера, то ей не всегда выгодно размещаться на HH.
На агрегаторах стажировок. Кроме hh.ru, есть тематические агрегаторы для джунов — сайты, где публикуют актуальные стажировки от разных компаний и стартовые вакансии для молодых специалистов. Как пример — FutureToday или Changellenge.
В телеграм-каналах. Есть специальные каналы для поиска работы в разных направлениях, в том числе в IT. Некоторые компании вместо HH сразу идут туда: там дешевле размещение и выше шанс найти профильного специалиста. Бывают в таких каналах и вакансии джуниоров. Более того: есть каналы, которые специализируются на стартовых вакансиях, например, Remote Junior. Часто каналы работают как тематические агрегаторы и собирают вакансии из разных источников.
На сайтах компаний. Некоторые крупные компании, такие как ВК или Сбер, развивают собственные направления для обучения и онбординга молодых специалистов. На сайтах этих проектов регулярно размещают вакансии джунов и стажеров.
Что нужно помнить при поиске работы?
- Резюме и сопроводительное письмо важны. Можете воспользоваться советами по их написанию, например от Максима Ильяхова. Красивое и подробное резюме и нешаблонное сопроводительное письмо оставят о вас более хорошее впечатление. Это способ выделиться среди множества других откликов.
- Скорее всего, на большинство откликов вы не получите ответа. Так часто бывает, особенно с джуниорскими позициями. Не стоит расстраиваться и падать духом: даже если вы получите десяток отказов подряд, это еще ни о чем не говорит.
- Будьте готовы к тому, что первое собеседование может оказаться провальным. Это, опять же, частая ситуация. Человек нервничает, он трудоустраивается в новую область, поэтому может ошибиться — а еще всегда высока вероятность, что вы просто не сойдетесь с работодателем. Настройтесь на то, что первые собеседования — это тренировка того, как вы ведете себя на собеседованиях. Со временем станет проще, и вы начнете лучше ориентироваться в разговорах с работодателем.
Главное — не отчаиваться. Первую работу в новой сфере можно искать несколько недель или даже месяцев, и это нормально, причем не только для IT. Запаситесь терпением и не позволяйте отказам вас демотивировать.
Что спрашивают у джунов на собеседовании?
Конкретные вопросы зависят от сферы: фронтендера и системного аналитика будут спрашивать о разных вещах. Но общие принципы и структура собеседования обычно одни и те же.
Тестовое задание. Оно бывает не всегда: иногда, чтобы отсеять неподходящих кандидатов на раннем этапе, работодатель предлагает выполнить тестовое по теме. Например, верстальщику могут предложить сверстать страницу по макету, фронтендеру — «оживить» страницу, бэкендеру — настроить связь с сервером. Это обычно задачи, выполнение которых занимает не больше часа. При выполнении советуем сразу пользоваться «хорошими практиками»: писать чистый и понятный код. Еще работодатели иногда просят замерять, сколько времени ушло на выполнение задачи — это помогает им понять, с какой скоростью работает человек. Тут лучше отвечать честно — если ваши темпы не совпадают, вы все равно вряд ли сработаетесь, так что завышение или занижение срока ничего не даст.
Техническое интервью. Это своего рода «экзамен»: интервьюер задает вопросы и иногда дает задачи, нужные, чтобы понять уровень знаний претендента. Вот какие это могут быть вопросы:
- теория: как устроена та или иная структура данных, что означает какое-то понятие, в чем разница между двумя типами и так далее;
- особенности языка: какие значения у переменных разных типов по умолчанию, как в языке реализован тот или иной принцип, каким образом можно решить такую-то задачу с учетом специфики языка;
- особенности фреймворка: какие у него есть возможности, что означает то или иное понятие, как пользоваться тем или иным инструментом и так далее;
- принципы и алгоритмы: что означает то или иное понятие из ООП, как устроена такая-то парадигма программирования, какие алгоритмы для решения задачи вы знаете, как решить ее эффективнее;
- практика: решить какую-нибудь несложную задачу, например, написать SQL-запрос с определенными условиями, реализовать алгоритм или найти решение математической задачки.
Популярные вопросы меняются из года в год вместе со стеками технологий. Поэтому перед поиском работы стоит поискать актуальные списки частых вопросов для вашей сферы и стека — и проверить свои знания по ним. Не факт, что у вас спросят именно это, но освежить знания перед собеседованием не помешает.
Общее интервью. Оно может идти до или после технического. Это стандартное собеседование, какие есть в любой сфере: рекрутер спрашивает об ожиданиях, планах, интересах, причинах выбрать именно эту вакансию. Тут же могут рассказать о компании, ее миссии и требованиях, о спектре основных задач. На этапе общего интервью не только рекрутер выбирает сотрудника — соискатель тоже выбирает работодателя. Так что советуем отнестись к собеседованию внимательно, чтобы понять, сработаетесь вы с этой компанией или нет. Лучше не согласиться на неподходящую для вас вакансию, чем трудоустроиться «не туда», выгореть и потерять время.
Что почитать?
Онлайн-медиа — здесь обсуждаются нишевые события и более узкие темы.
- Google Developers — надежный первоисточник, из которого можно узнавать актуальные новости о продуктах компании.
- I Programmer — портал для программистов. Новости обо всех направлениях от UX до робототехники и всех языках программирования.
- Smashing Magazine — статьи о веб-дизайне: разбор кода, свежие кейсы, советы по трудоустройству и общению с клиентами.
- Хабр — универсальный русскоязычный ресурс, где можно найти гайды, обсуждения, код-ревью и кейсы от разработчиков разных компаний от IT-гигантов до небольших digital-агентств.
- Вастрик — авторский инди-блог про IT и выживание в мире технологий. Тексты про машинное обучение, блокчейн, VR, вычислительную фотографию, машинный перевод и многое другое.
- Reddit — популярный форум на все темы подряд, на котором часто сидят опытные разработчики, выкладывают свои кейсы и комментируют другие публикации. Найти их можно по тегу «programming».
- Stack Overflow — закрытый клуб для программистов без рецептов и котиков. Здесь можно запросить у опытных коллег code review, комментировать публикации и давать им оценку.
- CyberForum — форум программистов, системных администраторов, где помогают в решении задач по программированию.
- Game Dev — форум, на котором разбирают создание игр и все, что с ним связано.
- Crash Course on Python, разработанный в партнерстве с Google;
- Java Programming and Software Engineering Fundamentals от Duke University (США);
- HTML, CSS, and Javascript for Web Developers от Johns Hopkins University (США);
- iOS-разработка: Swift, UI и многопоточность от Московского физико-технического института;
- Python Basics for Data Science;
- Programming for the Web with JavaScript;
- Introduction to C++.
- «Чистый код» Роберта Мартина;
- «Совершенный код. Мастер-класс» Стива Макконнелла;
- «Искусство программирования» Дональда Кнута;
- «Паттерны проектирования» Эрика и Элизабет Фримен;
- «Алгоритмы: построение и анализ» Томаса Кормена и Чарльза Лейзерсона.
Как стать программистом с нуля самостоятельно?
Чтобы самостоятельно стать программистом с нуля, нужно иметь базовое понимание компьютерных наук и языков программирования. Важно выбрать конкретный язык программирования, который будет использоваться, и начать изучать его. Также необходимо практиковаться, создавая свои собственные проекты и участвуя в сообществах программистов.
Что нужно знать, чтобы стать программистом?
Для того чтобы стать программистом, нужно иметь понимание языков программирования, компьютерных наук, алгоритмов и структур данных. Также важно быть готовым к постоянной самообразованию и обновлению своих знаний.
Как выучиться на программиста?
Для того чтобы выучиться на программиста, нужно выбрать конкретный язык программирования и начать изучать его. Для этого можно воспользоваться онлайн-курсами, учебниками и другими ресурсами. Важно также практиковаться и создавать свои проекты.
Fullstack-разработчик на Python
Fullstack-разработчики могут в одиночку сделать IT-проект от архитектуры до интерфейса. Их навыки востребованы у работодателей, особенно в стартапах. Научитесь программировать на Python и JavaScript и создавайте сервисы с нуля.
Как начать программировать


Итак, вы чувствуете, что пришла пора поменять сферу деятельности и освоить новую профессию. Почему бы не попробовать программирование? За это хорошо платят, это перспективно и интересно. Только вот сразу возникает вопрос: что делать, куда бежать, как начать программировать? Как человек, прошедший этот путь с нуля, могу вас уверить, что при правильном подходе к обучению, терпении и настойчивости вы сможете в скором времени стать программистом и найти хорошо оплачиваемую работу. В этой статье я хочу поделиться советами, как начать программировать.
Ставим цель
Чтобы понять, к чему стремиться и какого уровня достичь, ответьте на простой вопрос – зачем вам программирование? Если ваша цель — стать профессионалом и зарабатывать программированием на жизнь, настраивайтесь на серьезную и интенсивную подготовку. При этом вы должны быть готовы ежедневно уделять время изучению программирования. Если ваша цель — хобби или расширение кругозора, можно выбрать темп помедленнее по мере наличия свободного времени и желания. Но в любом случае не стоит растягивать обучение «на годы». Во-первых, знания уходят быстрее, чем накапливаются, во-вторых, технологии программирования очень быстро развиваются. Пока вы изучаете какой-то инструмент разработки или фреймворк, он может устареть и оказаться ненужным к моменту трудоустройства. Лучшее решение, на мой взгляд, набросать приблизительный план обучения. Но для начала определитесь со стеком технологий.
Выбираем язык
Если у вас есть конкретное представление, чем бы вы хотели заниматься в программировании, то это значительно упрощает выбор языка. Каждый язык имеет свою специализацию и направленность. Конкретную информацию об этом можно легко найти на просторах интернета.
- Что делают UX и UI-дизайнеры, а что — фронтендщики?
- Близок ли конец Java? Нет! И вот почему…
- Что нужно понимать программисту-новичку?

Если у вас такого представления нет, присмотритесь к двум аспектам: востребованность технологии на рынке и сложность изучения. Лично я в своё время остановился на Java. Причина такого выбора проста: этот язык очень популярен и востребован на рынке. Кроме того, его несложно изучать. Плюс я хотел быть поближе к веб-технологиям.
Оценить популярность Java и ее лидирующую позицию на протяжении длительного времени можно, например, глядя, на индекс популярности языков программирования от компании TIOBE Software, которая занимается постоянным мониторингом поисковых запросов на тему программирования.
Пишем план подготовки
Именно с плана я бы советовал начинать путь программиста. Разбейте свое обучение на этапы и отведите на каждый этап определенное время. Чтобы лучше понять, как программировать, а точнее, что происходит по сути, когда процессор выполняет ваш первый «Hello, Word!» вам потребуются общие знания архитектуры компьютера. Если у вас в этой области пробелы, желательно их устранить. Так что рекомендую включить архитектуру ПК в ваш учебный план. Изучение выбранного языка разбивайте на этапы по мере увеличения сложности материала. Примерное представление о требуемых знаниях можно узнать, изучив вопросы к собеседованию или требования к соискателям на должности в IT-компаниях. Как научиться программировать, если раньше этим не занимались? Ответ прост: чтобы выучить иностранный язык, сначала изучают простые слова, потом правила, позволяющие их связывать, далее вы учитесь понимать и разговаривать. Чтобы выучить Java, попробуйте следовать такому же алгоритму.
Как выучить Java?
Для начала изучите синтаксис языка: ключевые слова, операторы, правила написания кода. Постепенно переходите к изучению более сложных конструкций языка – методов, конструкторов, классов, библиотек и фреймворков. Чтобы понять, как программировать правильно, включите в программу обучения алгоритмы и структуры данных. Это очень полезно для формирования мышления программиста. Данный этап желательно проходить после изучения синтаксиса языка.
И, тем не менее, помните: ваш план — это не статичная конструкция, которую ни в коем случае нельзя модифицировать. Приметили интересную и перспективную технологию или инструмент разработки — смело включайте в свой план!
Как научиться программировать на Java?
Чтобы начать программировать на Java, изучите такие базовые разделы как ООП, исключения, многопоточность, коллекции. Все это входит в Java SE, стандартный набор инструментов разработчика, и обязательно должно присутствовать в вашем плане обучения. После освоения Java SE можете переходить к Java EE, к технологиям клиент-серверного программирования, базам данных, технологиям веб-программирования. Здесь вы столкнетесь просто с колоссальным объемом всевозможных фреймворков и инструментов.
- Пройти первые 10 уровней JavaRush
- Инструменты разработки IDE, Eclipse, NetBeans
- JRE, JDK, JVM, компиляция, выполнение программы
- Синтаксис Java
- «Философия Java», Брюс Эккель, главы 1- 5
- Яков Файн «Введение в программирование на языке Java» урок 1
- Пройти 11-13 уровень JavaRush
- ООП
- «Философия Java», Брюс Эккель, главы 6-10
- Яков Файн «Введение в программирование на языке Java» уроки 2, 4
- Пройти 14-17 уровень JavaRush
- Основы многопоточности
- Алгоритмы на Java, Роберт Седжвик, Кевин Уэйн, главы 1-3
- «Философия Java», Брюс Эккель, глава 21
- Яков Файн «Введение в программирование на языке Java» урок 11
- Пройти 18-20 уровень JavaRush
- Основы XML
- Input/Output
- «Философия Java», Брюс Эккель, глава 18
- Яков Файн «Введение в программирование на языке Java» урок 9
- Пройти 21-23 уровень JavaRush
- Строки
- Регулярные выражения
- Основы HTML
- «Философия Java», Брюс Эккель, главы 13-16
- Яков Файн «Введение в программирование на языке Java» урок 3
- Пройти 24-26 уровень JavaRush
- Многопоточность
- Исключения
- Внутренние классы
- «Философия Java», Брюс Эккель, главы 10, 12
- Яков Файн «Введение в программирование на языке Java» урок 6-7
- Пройти 27-28 уровень JavaRush
- java.util.concurrent
- Основы SQL и БД
- JDBC
- Аннотации
- Рефлексия
- «Философия Java», Брюс Эккель, глава 20
- Яков Файн «Введение в программирование на языке Java» уроки 12,13
- Пройти 28-30 уровень JavaRush
- Swing
- Сериализация
- Парсинг XML
- Сервлеты
- JSP/JSTL
- «Философия Java», Брюс Эккель, глава 22
- Яков Файн «Введение в программирование на языке Java» уроки 14- 15
- Пройти 31-33 уровень JavaRush
- JSON
- URL. Работа с сетью
- Основы CSS
- Яков Файн «Введение в программирование на языке Java» урок 10
- Пройти 34-36 уровень JavaRush
- Логгирование
- JUnit
- Git
- Maven
- List
- Queue
- Работа с коллекциями
- Пройти 37-38 уровень JavaRush
- Map
- Паттерны проектирования
- «Философия Java», Брюс Эккель, глава 11
- Яков Файн «Введение в программирование на языке Java» урок 8
- Пройти 39-40 уровень JavaRush
- Rest
- Tomcat
- Сборка и развертывание приложений
- Яков Файн «Введение в программирование на языке Java» урок 16-18
Методология
Для начала необходимо установить требуемые инструменты для написания программы. Если вы хотите понять, как научиться программировать на Java, я советовал бы разобраться с такими понятиями как JRE, JDK, JVM. Что такое IDE, как работает программа, что такое компиляция, как происходит выполнение программы. Чтобы понять, как программировать на Java, обязательно необходимо разобраться с базовыми принципами ООП. Программирование — это набор практических навыков владения языком, который вы расширяете в процессе обучения. Чем больше вы будете практиковаться, тем быстрее овладеете языком. Поэтому кроме изучения теории ежедневно уделяйте время практике. Чем больше — тем лучше. Если практических навыков пока не хватает, разбирайте чужой код, повторяйте примеры из книг и статей в интернете. Хороший путь понять, как научиться программировать — использование дебаггера для анализа чужого кода. Если не удалось освоить материал сразу — не останавливайтесь, возьмите другую тему или повторите пройденную. К трудной теме можно вернуться позже: взгляд по другим углом зрения или другого источника информации иногда помогает в освоении нового материала. Трудный для понимания материал можно законспектировать, а лучше — разобрать на примерах. При этом рекомендую использовать комментарии в коде для пометок ключевых моментов. Хороший стиль программирования, примеры правильного кода, а также ответы как программировать на Java вы сможете найти в разделе The Java Tutorials на сайте Oracle. Если понимание как программировать так и не пришло, можно обратиться к опытным коллегам или людям, прошедшим уже этот путь. Для этого неплохо найти себе подходящее сообщество для общения. Там вам всегда смогут дать ответ как научиться программировать с нуля.
Выбираем источники информации
Для понимания как научиться программировать с нуля, используйте все, до чего сможете добраться – статьи в интернете, обучающие видео, книги, форумы, официальную документацию.
Используем онлайн-курсы
Если нет возможности оторваться от работы, онлайн-курсы – один из лучших вариантов обучения. Это не волшебная пилюля, но они очень сильно помогают влиться в изучение, особенно если обучение проходит с азов. Лично я, как видно из моего плана, начинал с JavaRush. Мне понравился формат обучения, поэтому я прошел весь курс, включая стажировку.
Проходим практику
Реальная практика, стажировка — неотъемлемая часть обучения в любом процессе, а тем более в программировании. Это начало вашего пути и вам будет большой плюс для старта. Используйте любую возможность приблизиться к реальной работе. Пробуйте писать собственные приложения, изучайте примеры готовых приложений в интернете. Если есть возможность, участвуйте в бесплатных обучающих стажировках от IT-компаний. Не упускайте любую возможность поучаствовать в реальном проекте.
Резюме
Обучение программированию — процесс непростой. Поэтому нужно не распыляться, а задаться целью, всё время держать себя в тонусе, не унывать и… набраться терпения. Не поленитесь наметить основные направления и составить план. Учтите: вам придётся каждый день кодить, и разбираться со сложной и непривычной информацией. Иногда — смело переключаться на другую тему, а порой и терпеливо ждать озарения.… И цель ваша будет достигнута.