Какой стек выбрать начинающему программисту — и как его прокачивать

Аватарка пользователя Антон Фокин

Рассказали, откуда стартовать новичкам и какой стек выбрать, если вы только-только присматриваетесь к разработке.

Обложка поста Какой стек выбрать начинающему программисту — и как его прокачивать

Всем привет! На связи Антон Фокин, я CEO студии QTIM. Мы разрабатываем сайты, приложения и цифровые продукты любой сложности. Но это сейчас любой. Когда-то каждый из нас начинал с нуля. Сегодня расскажу, откуда стартовать новичкам и в какую сторону двигаться, если вы только-только присматриваетесь к разработке.

Первая развилка: фронт или бэк

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

Какой стек выбрать начинающему программисту — и как его прокачивать 1

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

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

В каждом из этих направлений есть свои языки. Самый сложный язык программирования обычно первый. Когда ты осваиваешь один язык, освоить второй не составит труда, потому что они все между собой похожи. Я знаю несколько языков: PHP, Go, JavaScript/TypeScript, Python , C++, пишу на Dart (Flutter). Они очень сильно пересекаются. Если ты знаешь хотя бы один язык программирования, то без проблем поймешь, что происходит в любом другом.

Вывод. Сначала поймите, к чему вас тянет больше: к фронту или бэку.

Если к фронту

Еще раз: фронтенд — то, с чем пользователь взаимодействует напрямую. Интерфейс. Клиентская часть приложения. Тут и цвета, и стили текста, а еще изображения, графики, таблицы, меню навигации и так далее. Для разработки интерфейса используют такие технологии, как HTML, CSS и JavaScript.

Но обо всём по порядку. С чего начать и куда двигаться? Поехали.

Какой стек выбрать начинающему программисту — и как его прокачивать 2

Языки интерфейса. Интерфейсная часть стоит на трех китах. Первый, HTML: базовые элементы разметки, SEO-оптимизация и доступность. Второй — каскадные таблицы стилей, ласково называемые CSS: позволяет применять стили к веб-страницам. И, наконец, JavaScript — язык управления скриптами, который нужен для создания магии на сайтах. Иными словами, с ним мы делаем сайт интерактивным для пользователя.

Интернет. Обязательно нужно понимать как фронтам, так и бэкам — как работает интернет. Как ты с ним взаимодействуешь, что такое http-протокол, DNS, браузер, доменные имена.

Система контроля версий. Чтобы проект не сложился, аки карточный домик, каждый этап надо сохранить. А то вдруг кто-то добавит новую функцию, и всё рухнет? На этот случай и нужна система контроля версий. Самые известные: GitHub, GitLab и BitBucket. Начать логичнее с первой: именно там выполняется большая часть работы OpenSource и находится большинство разработчиков.

Сборка проектов. Чтобы сайт правильно работал, надо его правильно собрать. Для этого есть специальные сборщики. Например, Gulp и Webpack.

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

Фреймворки и библиотеки. Можешь экономить время — экономь. Изобретать велосипед не обязательно. Для этого существую готовые решения: фреймворки и библиотеки. Например, React,Vue, Angular.

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

Адаптивность. Фронтендер должен гарантировать, что сайт адаптивный: то есть корректно отображается на устройствах любого размера. Все элементы должны вести себя нормально, независимо от размера экрана. Для этого нужно разбираться в методах компоновки элементов Flex и Grid и медиазапросах — правилах, которые задают условия отображения на разных устройствах.

HTML, CSS — верстка со скриптом — это довольно простая вещь. Объективно можно научиться верстать за неделю. Ты не будешь делать это суперкруто, но что-то сделать сможешь. А потом это все дело через JavaScript уже соединяется с бэкендом.

Вот и вся картина широкими мазками. Есть еще такой радмеп — карта развития фронтендера, здесь всё очень подробно и со ссылками на полезные обучающие материлы. Пользуйтесь на здоровье.

Если к бэку

Бэкэнд — серверная часть сайта. Он хранит и систематизирует данные, а также следит за тем, чтобы все на клиентской стороне сайта работало нормально. Пользователь не видит эту часть и не взаимодействует с ней — ну, то есть напрямую. Работа бэкендера доступна ему косвенно — через интерфейс сайта.

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

Какой стек выбрать начинающему программисту — и как его прокачивать 3

Интернет. Закрепим. Первое, что нужно понять и фронтам, и бэкам — как работает интернет. Как ты с ним взаимодействуешь, что такое http-протокол, DNS, браузер, доменные имена.

Выбор языка. Здесь всё упирается в то, что человеку ближе. Востребованные языки, в которые проще войти — это PHP, JS и Python. Из более высокопроизводительных — Go. Традиционная Java. Специфичные Rust и Ruby: тут нужно знать, что на них делается, и просто любить их.

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

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

Операционные системы. Бэкенд-разработчик должен знать, что такое консоль и команды, как через первую управлять вторыми — и так далее. Чтобы это понимать, нужно знать соответствующие особенности систем: вводы, выводы, как работает память.

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

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

Тестирование API. Вы столкнетесь таким понятиями, как: Unit, интеграционное и нагрузочное тестирование.

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

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

И напоследок

Какой стек выбрать начинающему программисту — и как его прокачивать 4

Три совета начинающим разработчикам! Немного считерим и начнем с того, что был в начале: попробуйте изучать все и везде — хотя бы почитайте про все. Очевидно, из того, что вы будете пробовать, будет нравиться не всё. И это нормально. Ищите себя.

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

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

Для начинающих
Обучение программированию
1416