Письмо Начинающему (Back-End) Разработчику

Статья скопирована с www.zhashkevych.com.

Спасибо Максиму – за всё. Смотрите его Ютуб. Музычка. unsplash. Инста. linkedin.

Курс по Go


Итак, дорогой читатель, тебя заинтересовала профессия Back-End разработчика и сейчас находишься в самом начале своего пути.

Неважно, откуда ты пришел. Возможно ты еще учишься или только окончил школу и думаешь чем заняться дальше. Возможно последних 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.

Это может быть простой бот в телеграмм.

Это может быть что угодно, предел зависит лишь от твоей фантазии.

Изучай проекты в открытом доступе.

И пробуй! Ходи по собеседованиям, проверяй свои силы. Демонстрируй свои проекты и наработки.

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

Я уверен что следуя советам выше, ты сможешь в максимально короткое время устроится джуниором в свою первую компанию.

Как только ты попадешь на реальные проекты, в коллектив к другим, более опытным разработчикам, уровень твоих навыков будет расти экспоненциально.

Я надеюсь ты подчерпнул для себя достаточно полезной информации и заряд мотивации чтобы начать двигаться к своей мечте.

Чести и удачи!

11.04.2020

Связаться с автором Поддержать автора (что?)

Комментарии

Если у вас есть вопрос, критика или другое мнение - напишите в комментариях.