Неважно, откуда ты пришел. Возможно ты еще учишься или только окончил школу и думаешь чем заняться дальше. Возможно последних 5 лет ты работал в банке или маркетинговом агенстве и решил сменить род деятельности. Возможно у тебя уже есть небольшой опыт программирования в других областях, но сейчас ты заинтересовался разработкой серверных приложений.
В наши дни существует огромное количество онлайн и оффлайн курсов, на которых обещают сделать из тебя крутого специалиста за пол года. Это хороший вариант для обучения, однако далеко не у всех есть возможность потратить деньги на оплату этих курсов, или достаточно времени на их посещение.
Правда в том, что обучится данному ремеслу можно самому и это вполне реально. Огромное количество различных материалов, статьей и видео в бесплатном доступе делает этот процесс не сложным и интересным.
Лично я никогда не посещал курсы и не учился этому в университете. Я самоучка, мне 19 и мой заработок в несколько раз превышает среднюю зарплату по Киеву.
Короче говоря, стать высокооплачиваемым специалистом без профильного образования в наши дни абсолютно реально.
Однако при таком подходе важно правильно подойти к структуризации своего обучения, и это письмо должно тебе с этим помочь!
Надеюсь, последующие советы будут для тебя полезны, помогут выбрать правильный вектор профессионального развития и избежать возможных ошибок, которые начинающие специалисты часто допускают.
Также я поделюсь с тобой материалами, которые, на мой взгляд, идеально подходят для освоения нужных топиков.
Скорее всего ты уже понимаешь, чем занимаются Back-End специалисты, но давай еще раз по этому пройдемся.
Когда ты заходишь, к примеру, на медиум, ютуб или инстаграм, умные алгоритмы подгружают в твою ленту самые актуальные статьи/видео/публикации.
Сама визуальная часть (веб сайт или мобильное приложение) — это Front-End приложения, которые занимаются отрисовкой и визуализацией данных, которые они получают от своего Back-End’a с помощью API (Application Programming Interface).
Все данные (видео/статьи/публикации/аккаунты и тд) хранятся на серверах, и в большинстве случаев, вся бизнес логика работы с этими данными реализована на стороне сервера.
Описанная выше модель называется клиент-серверная архитектура, которая наиболее часто встречается в современных приложениях.

Короче говоря, бэкендщики разрабатывают серверную часть, создают большую часть логики и “магии” приложений, которая скрывается за красивыми интерфейсами.
Разобрав сферу экспертизы бекенд разработчика, давай перейдем непосредственно к шагам на пути к его становлению.
Начни с азов
Как и в любой сфере деятельности, начинать стоит с азов.Нас не учат решать интегралы, пока мы не усвоили как решать простые уравнения с одним неизвестным.
Так же и тут, ты не начнешь проектировать и разрабатывать высоконагруженные системы, не разобравшись с базисом разработки.
Под азами я имею ввиду:
- Базовые конструкции языка программирования (об этом чуть позже)
- Алгоритмы и структуры данных
- Модель памяти компьютера
Это самые базовые вещи, с которых стоит начинать свой путь в программировании. Они заложат фундамент, на котором вы продолжите изучать более сложные концепции.
Для изучения вышеуказанных тем, я крайне рекомендую просмотреть курс от Гарварда CS50, который нацелен на абсолютных новичков, которые хотят изучить компьютерные науки.
Познакомиться с базовыми алгоритмами и моделью памяти компьютера вам поможет книга от Бхаргава А. “Грокаем Алгоритмы”.
Она обьясняет все необходимые алгоритмы и структуры данных человеческим языком, используя примеры из реальной жизни и является одной из лучших книг по алгоритмам, которую я держал в руках.
Выбери один язык
На сегодняшний день существует множество языков программирования, которые популярны в мире бэкенд разработки, например Java, Python, Ruby, Golang, C#, JavaScript, PHP и много других.В начале своего пути я грешил частой сменой ЯП (языка программирования), прыгав между ними и изучая лишь базовые конструкции.
Возможно, такой подход на самом начале поможет тебе понять различные подходы между языками, и выбрать тот, который больше всего приглянулся.
Однако когда ты уже сделал выбор, не сбивайся с курса. Изучи один язык, изучи его достаточно хорошо. Пройди по нему курс, изучай open-source проекты на GitHub, написаны на этом языке (об этом далее).
Стань экспертом конкретно в этой выбранной технологии и постоянно оттачивай свои навыки.
Рекомендую ознакомиться с видеороликами от Travesty Media. У него есть много практических серий и коротких видеороликов в формате “Выучи за час” которые помогут ознакомиться с основными технологиями на рынке, понять их азы и выбрать ту, которая наибольше приглянулась.
Та и в целом, YouTube — замечательная образовательная площадка, на которой можно найти множество полезных видеоуроков на абсолютно различные тематики.
Пользуйся этим.
Одного знания языка не достаточно
Ну а теперь время сказать, что на сегодняшний день одних лишь знаний языка не достаточно.Сфере разработки уже несколько десятков лет, с каждым годом она развивается семимильными шагами.
Сегодня на рынке существует множество готовых решений, технологий, библиотек и фреймворков. Все они призваны помочь разработчикам не изобретать заново велосипед, а сфокусироваться на решении конкретных задач.
Современные приложения — это сложные системы, которые состоят из множества различных связанных между собой компонентов.
Поэтому знать лишь язык не достаточно. Необходимо понимать и уметь работать с базами данных, фреймворками и библиотеками для выбранного языка программирования, различными сторонними API, очередями сообщений и облачными технологиями.
Чтобы хорошо понимать “матчасть”, будет круто в свободное время написать свой HTTP/FTP сервер, поисковый движок или очередь сообщений. Но на реальных проектах ты будешь использовать уже готовые решения.
Наша с тобой задача как разработчиков — воплощать в жизнь требования от бизнеса, как можно быстрее и качественнее.
Бизнесу не важно, написал ли ты свой поисковый движок или использовал ElasticSearch. Ему нужна рабочая и надежная система.
Поэтому параллельно к изучению языка, займись освоением следующих тем:
- Linux & работа в терминале (Bash)
- Системы Контроля Версий (Git)
- Базы Данных (SQL & NoSQL)
- Очереди Сообщений (Kafka, NATS, RabbitMQ etc.)
- Облачные Технологии (AWS, GCP, Azure)
- Практики Развертывания (Деплоя) Back-End Приложений
- Монолитная и Микросервисная Архитектуры
От теории к практике
Я замечал за множеством моих знакомых, достаточно толковых ребят, то как они застревали в вечном изучении теории.Не пойми меня не правильно, учить теорию необходимо.
Но можно годами учить теорию, толком ничего не разрабатывая. И от этого будет мало толку. Это контрпродуктивно.
Мы быстрее всего учимся, решая реальные задачи и сталкиваясь с реальными проблемами.
Ищи интересные проекты, которые будут тебя вдохновлять и мотивировать.
Не волнуйся на счет того, что ты не знаешь как сделать ту или иную часть своего проекта.
Я никогда не осознавал до конца как я реализую все компоненты системы перед тем как начинал работать над своими небольшими проектами.
В ходе разработки ты будешь сталкиваться с проблемами, биться головой об стену и искать решения в сети. И это, на мой взгляд, самый отличный и быстрый путь к развитию своих навыков разработчика.
Поэтому, изучив азы, начинай думать над тем как ты можешь их применить. Подумай что бы ты хотел разработать. И берись за работу!
На самом деле, ты убиваешь одним выстрелом двух зайцев.
Работая над своими проектами, ты быстрее учишься и получаешь реальный опыт. Но также, ты создаешь себе портфолио, которое очень важно для начинающего разработчика.
Показав свои проекты потенциальным работодателям, ты демонстрируешь свои навыки, а также страсть и интерес к разработке, что значительно увеличивает твои шансы устроиться джуниором в свою первую компанию.
Поэтому создавай!
Пусть ты начнешь с примитивных калькуляторов, но ты будешь учиться мыслить как разработчик, писать и дебажить код, фиксить баги и создавать с нуля проекты.
Изучай Open-Source проекты
Твой код по началу будет говном. Это факт.Недостаточно лишь изучить синтаксис и семантику языка чтобы писать качественный продукт.
У каждого языка есть свой набор лучших практик и правил хорошего тона.
Качественный код должен обязательно быть хорошо задокументированым (содержать комментарии) и покрыт тестами.
Чувство и понимание этих вещей приходит с опытом и изучением кодовой базы различных проектов.
И у нас с тобой есть замечательная возможность изучать исходный код, который находиться в открытом доступе на GitHub.
Поэтому регистрируйся там и ищи интересные проекты, написаны на выбранном тобою языке.
Изучай подходы, которые используют другие разработчики. Это даст тебе понимание того, как структурировать проекты, оформлять код и писать юнит тесты.
Верь в себя
Верь в себя и в свои силы. Это далеко не самый последний пункт.Я уверен, что при должном, дисциплинированном подходе, уже за 6–12 месяцев ты можешь устроиться на свою первую работу.
Составь план на несколько месяцев вперед, базируясь на вышеуказанных пунктах.
Изучай технологии и пробуй создавать параллельно свои небольшие проекты.
Это может быть небольшой веб сайт (прийдется разобраться с версткой и JS, но там нету ничего сложного) или какое нибудь API.
Это может быть простой бот в телеграмм.
Это может быть что угодно, предел зависит лишь от твоей фантазии.
Изучай проекты в открытом доступе.
И пробуй! Ходи по собеседованиям, проверяй свои силы. Демонстрируй свои проекты и наработки.
Конечно, у тебя сразу может не получиться. Не расстраивайся, это вполне нормально. Ты проверишь уровень своих знаний и поймешь, что нужно подтянуть.
Я уверен что следуя советам выше, ты сможешь в максимально короткое время устроится джуниором в свою первую компанию.
Как только ты попадешь на реальные проекты, в коллектив к другим, более опытным разработчикам, уровень твоих навыков будет расти экспоненциально.
Я надеюсь ты подчерпнул для себя достаточно полезной информации и заряд мотивации чтобы начать двигаться к своей мечте.
Чести и удачи!