что надо знать backend разработчик
Как стать backend-разработчиком с нуля?
Backend-разработчики отвечают за внутренние процессы сайтов и приложений, выстраивают обмен данными, подбирают системы для хранения и управления информацией, обеспечивают максимум производительности при минимуме сбоев. Рассказываем, какими навыками должен обладать хороший специалист и в каком порядке их стоит изучать.
1. Определитесь с языком программирования
В отличие от frontend-разработчика, которому достаточно владеть HTML/CSS и JavaScript, backend-девелоперу приходится сделать непростой выбор. Языков много, одни развиваются более активно, другие применяются для узких задач.
Разработчикам-новичкам подходят скриптовые языки, например Python. Во-первых, он действительно относительно несложный, его синтаксис легко читать, а значит вы сможете искать решения для своих вопросов и учиться по чужому коду. Во-вторых, в той же веб-разработке позиции Python крепнут с каждым годом. Если вы планируете погрузиться в создание интернет-ресурсов, этот язык обеспечит вам поток интересных проектов.
Cогласно исследованию The State of the Octoverse, Go входит в топ-10 языков с самым быстро растущим комьюнити. Кроме того, в 2020 году он занял первое место в списке самых высокооплачиваемых языков. В backend-разработке он нужен для создания микросервисов и высоконагруженных проектов, где много пользователей одновременно работают с сайтом или приложением.
PHP не сдает позиции одного из самых популярных языков интернета, Ruby и Node.js также предлагают отличные возможности для тех, кто их изучает. Когда вы освоите базовые правила и возможности выбранного языка, сразу опробуйте их на практике. Пишите маленькие приложения, которые будут собирать веб-страницы по заданному тегу, автоматизируйте свои ежедневные задачи, придумывайте цели и выстраивайте пути к ним.
2. Познакомьтесь с пакетными менеджерами
Когда вводная часть позади, а список базовых приложений выходит за 5-10 позиций, переходите к следующему шагу. Освойте пакетные менеджеры (package manager) — специальные утилиты, которые позволяют добавлять в приложения сторонние библиотеки, чтобы расширять свои возможности и создавать новые функции. При помощи них вы также сможете предлагать свои библиотеки для использования другим разработчикам.
Пакетный менеджер у каждого языка свой. В Python он называется pip, в PHP — Composer, в Ruby — RubyGems. К этому моменту вы поймете, чего недостает вашим предыдущим продуктам, улучшите их работоспособность и поставите перед собой новые цели.
Освойте программирование на Go и backend-разработку высоконагруженных приложений, чтобы стать незаменимым специалистом в команде. Дополнительная скидка 5% по промокоду BLOG.
3. Приобщитесь к лучшим практикам
Главный навык любого программиста — это умение искать информацию. Изучайте опыт других разработчиков на Github и других профильных сайтах, ищите отраслевые стандарты. Некоммерческая организация OWASP (Open Web Application Security Project) регулярно обновляет правила для создания безопасных веб-приложений.
Когда вы разберетесь с пакетными менеджерами и усвоите общепринятые принципы разработки, вы сможете создавать более сложные программы. Поищите открытые проекты на GitHub, разберитесь в их устройстве, попробуйте сделать нечто похожее и добавить свои функции. Не стесняйтесь задавать вопросы, но помните, что ответы на многие вопросы уже есть на форумах.
4. Тестируйте свой код
Умение тестировать свой код и вычищать в нем баги входит в must-have любого разработчика. Разберитесь, как строится процесс тестирования, какие бывают тесты для приложений и как их нужно писать.
Попробуйте создать такой тест и испытайте его на своих ранних программах. Помните, что от ваших усилий на этом этапе зависит то, как в будущем к вам будут относиться другие участники проектной команды — разработчиков с чистым кодом ценят везде.
5. Переходите к базам данных
Работа backend-разработчика часто ассоциируется с реляционными хранилищами данных, потому что именно они и составляют backend сайта или приложения. А SQL-базы остаются одной из ключевых технологий как в программной разработке, так и в веб-девелопменте.
Это обширная тема, разобраться в которой может быть даже сложнее, чем выучить тот же Python. Сам по себе язык структурированных запросов (SQL) освоить нетрудно — в 70-х годах его придумали как раз для тех специалистов, которым для работы необязательно знать программирование. Однако простые на вид процессы обработки запросов в базе данных скрывают множество хитростей, так что будьте готовы отложить обучение до тех пор, пока не начнете заниматься рабочими проектами. А пока выучите базовые принципы и термины — ключи, индексы, нормализация и т.д.
После этого вы сможете создавать многопользовательские приложения с возможностью сохранять данные в базе. Попробуйте написать мини-платформу для онлайн-дневников. Ее возможности обязательно должны включать функции регистрации и авторизации, создание новых записей, просмотр и удаление старых постов, а также разграничение доступа к отдельным публикациям. Когда закончите с кодом, обязательно испытайте свою программу на специально написанных тестах.
6. Изучите фреймворки
Фреймворки объединяют набор технических средств, которые упрощают выполнение какой-либо задачи. По сути, это мини-платформа разработки, направленная на узкий спектр целей.
Если вы работаете над средними или крупными проектами, без фреймворков не обойтись. Изучайте форумы, читайте документацию, экспериментируйте с инструментами. Когда почувствуете, что разобрались, примените новые знания на приложениях из предыдущего шага — попробуйте улучшить их производительность и набор функций с помощью тех фреймворков, с которыми успели познакомиться.
7. Углубляйтесь в базы данных
От реляционных баз данных переходите к нереляционным. Эта тема чуть сложнее, поскольку решений для работы с неструктурированными данными очень много, и у многих из них своей собственный, уникальный язык. Новичку стоит разобраться с MongoDB, Cassandra, RethinkDB и Couchbase. MongoDB набирает все большую популярность у разработчиков, так что ее нужно сделать приоритетом.
8. Расширяйте набор умений
К этому моменту вы овладеете базовыми техническими средствами, которых достаточно для запуска веб-ресурса или программы средней руки. Теперь вам нужно научиться эффективной разработке; примерный план обучения такой:
Программная разработка постоянно меняется, так что успешный профессионал постоянно следит за новыми технологиями и применяет их в деле.
Освойте программирование на Go и backend-разработку высоконагруженных приложений.
Что нужно знать начинающему бэкенд-разработчику, кроме языка программирования
Авторизуйтесь
Что нужно знать начинающему бэкенд-разработчику, кроме языка программирования
продакт-менеджер программы «Python-разработчик» в Яндекс.Практикуме
Некоторые новички считают, что достаточно выучить нужный язык программирования — и всё, это знание по умолчанию делает из вас отличного бэкендера. Помните подход «купил зеркалку — стал фотографом»? Но это далеко не так.
Меня зовут Лера Солодовникова, я продакт-менеджер на программе «Python-разработчик» в Яндекс.Практикуме, сегодня хочу обсудить необходимые для работы бэкендера смежные знания и умения. По большей части текст ориентирован на Python-разработчиков, но пригодится и тем, кто работает с другими языками, — принципы довольно общие, разница лишь в инструментах.
Ещё в посте — отношение различных компаний к вашим навыкам, их важность для прохождения собеседования, а также подборка полезных книг по теме.
Базис
Начнём с главного — с ОС. Хороший бэкендер должен быть знаком с unix-подобной операционной системой. Это могут быть не только разные Linux-дистрибутивы, но и macOS или FreeBSD, но общепринятым стандартом всё же является Linux. Работать вы можете на ПК или ноутбуке с любой ОС, но Linux нужно знать. Ведь вам придётся довольно активно взаимодействовать с серверами, а большая часть из них работает на Linux.
13–15 декабря, Онлайн, Беcплатно
Из этого пункта плавно вытекает второй — работа с командной строкой. Это нужно для того, чтобы говорить с сервером на его языке. Нужно не просто знать, как нагуглить ту или иную команду и что она делает, а разбираться в командном интерфейсе. Опять же, допустимы варианты в зависимости от личных предпочтений или литературы, по которой вы учились: zsh, bash, fish, но стандарт — bash.
Следующее требование ― знание систем контроля версий. И тут уже без особых альтернатив: нужен именно Git, несмотря на наличие выбора. Изучите сам Git и механику взаимодействия с ветками, если собираетесь работать в команде. Впрочем, если вы интересуетесь бэкенд-разработкой и сейчас читаете этот текст, аккаунт на GitHub у вас уже наверняка есть (а если нет, вы знаете, что делать).
Очень пригодится базовое знание принципа работы Сети в целом. Мы сейчас не говорим о доскональном изучении HTTP и всех тонкостей DNS, но вы должны представлять, что именно происходит при попытке зайти на какой-то сайт. Что к чему подключается, какие работают связки, что грузится в первую очередь и тащит за собой остальное.
Дополнительным преимуществом для начинающего бэкенд-разработчика будет знание хотя бы одного веб-фреймворка — для Python это Django или Flask. Плюс базовые знания SQL. Никто не будет выставлять вас на ежемесячные соревнования SQL-программистов, но важно уметь самому проектировать БД, работать с ними через ORM, если мы говорим про Django, или через SQLAlchemy в случае с Flask.
Ну и, конечно, никуда без основ администрирования сервера, хотя бы на уровне «Я могу сам задеплоить свой проект по SSH, не отвлекая коллег от чтения Хабра».
Алгоритмы и тестирование
В плане базовых требований к кандидату и знания основ профессии компании делятся на два лагеря.
В первом сидят серьёзные практики, которых волнует только то, что вы умеете делать. У вас может быть любое образование, и, если вы докажете им, что на текущем жизненном этапе вы в состоянии выполнять все задачи, которые они взвалят на бэкендера, вы в деле.
Второй лагерь более требователен — для них важны фундаментальные знания. Техническое образование, математическое мышление и знание алгоритмов — вот тот набор, с которым надо заходить в такие компании. Например, в Яндексе без алгоритмов никуда. Послабление могут сделать в плане самого образования — оно тут как дополнительный плюс, потому что бывают ситуации, когда человек обладает такими знаниями, даже не обучаясь этому в вузе: самоучек много и курсов тоже.
Если вы хотите в Яндекс, то самое важное, на что будут смотреть HR и на техническом собеседовании — это на результаты прохождений самих секций собеседования и на то, насколько вы знаете алгоритмы. Ваш диплом и название вуза здесь как вишенка на торте. Вишенки может и не быть — без неё торт не перестанет быть тортом.
Примерно такое же отношение у работодателей к тестированию. Кто-то уверен, что джун должен заниматься тестированием, и это будет чуть ли не первым вопросом на собеседовании. Кто-то замечает, что для тестирования есть тестировщики. Кто-то вообще ничего не тестирует.
GitHub и хакатоны
Иногда в комментариях к подобным постам встречаются теории о важности наличия у кандидата прокачанного профиля на GitHub или опыта участия в хакатонах. Ваши проекты на GitHub, множество коммитов и форков, килограммы бейджиков с IT-конференций и хакатонов — это дополнительный фактор вашей оценки как специалиста.
Прежде всего на собеседованиях смотрят на практическое решение конкретных задач в рамках прохождения секций. Иногда дополнительно могут посмотреть ваш проект на GitHub, иногда — нет. Если вы идёте на мидла, то хакатонский опыт поможет вам быстрее и легче проходить секции собеседования. Для джуна опыт участия в хакатонах, даже без призовых мест, будет реальным подтверждением того факта, что человеку интересна профессия, он старается быть в курсе новых решений и инструментов, пытается самостоятельно прокачивать навыки. Да, это тоже плюс.
Командная работа
Про soft skills написано множество постов и, скорее всего, несколько книг, поэтому я не будут сильно вдаваться в их важность и необходимость — вы всё это уже читали много раз.
На мой взгляд, главное — уметь работать в команде. Это не значит, что условный интроверт не справится, никто не требует от вас быть душой компании и зажигать на тимбилдингах. В этом пункте речь о способности задавать вопросы. Вы не представляете, сколько проблем в проектах бывает связано с тем, что человек просто вовремя не спросил, не уточнил, не сообщил коллегам, что заметил потенциальный баг.
Разговаривайте, спрашивайте, уточняйте. Это нормально. Так же нормально, как пойти и усердно погуглить что-то, если не получается.
Говоря об отношениях в команде, стоит упомянуть дедлайны. Их важно соблюдать, особенно если они командные. Ситуации, в которых кто-то один просто забыл что-то сделать или не успел (и не сказал об этом), часто заканчиваются тем, что у всей команды съезжает график. Как это отражается на отношении к человеку, регулярно срывающему сроки, вы и без меня знаете.
Ещё несколько советов. Спокойно реагируйте на критику и замечания, прокачивайте уровень самоорганизованности, давайте коллегам обратную связь, не бойтесь ошибаться в работе и исправлять ошибки. И учитесь — возможностей для этого сейчас множество.
Полезные книги
Марк Лутц, «Изучаем Python». Марк написал эту книгу по мотивам собственных курсов, которые ведёт уже более 10 лет. Здесь всё важное: обзор инструментов, типы объектов, функции плюс описания моделей и инструкции по обработке исключений.
Антонио Меле, «Джанго 2 в примерах». Книга делает упор на практическое создание приложений для реальных задач. Кроме непосредственной работы с компонентами самого фреймворка, рассматриваются также и возможности интеграции сторонних инструментов.
Лекции Тимофея Хирьянова по алгоритмам. Тимофей — один из преподавателей МФТИ. Лекций по алгоритмам множество, но эти наглядные. Особенно полезны для новичков, но и разработчику с опытом тоже пригодятся.
Если вы можете свободно читать профильную литературу на английском, то порекомендуем ещё и пару книг о разработке на основе тестов: Harry Percival, «Test-Driven Development with Python» и Kevin Harvey, «Test-Driven Development with Django».
Бойцы невидимого фронта. Кто такой Backend-разработчик и как им стать?
Кто такой Back-end разработчик?
Навыки Back-end разработчика
Как стать Back-end разработчиком?
Выучите основы структур данных и алгоритмов.
Нередко разработчики пропускают данный шаг и сразу приступают к изучению фреймворков. Однако эксперты советуют сначала изучить основы структур данных и алгоритмов, хотя бы поверхностно. Еще рекомендуют разобраться с алгоритмами хеширования, сортировки и поиска, стеками алгоритмов.
Выучите язык программирования и выберите фреймворк(и).
Раз уж в бэкенд-разработке используются разные языки программирования, лучше с самого начала определиться с языком или языками (никто не запрещает изучать сразу несколько), на которых вы будете специализироваться. Помимо Java, начинают чаще всего с изучения C, Python или PHP. JavaScript также будет хорошим вариантом для дополнительного развития.
Выучите SQL и основы управления базами данных.
Следующий логический шаг на пути становления бэкендера — изучение языка SQL и основ управления базами данных. Сейчас есть много удобных и относительно простых систем управления базами данных, из которых можно выбрать одну или две. А знание языка SQL поможет легко разбираться в аналогичных системах и писать sql-запросы. Поскольку все веб-сайты сегодня так или иначе используют базы данных, этот скилл в любом случае будет полезен.
Выбор фреймворка, конечно, будет зависеть от языка программирования. Поскольку большинство фреймворков, таких как Spring, используют один и тот же архитектурный шаблон — MVC (модель-вид-контроллер), знание одного фреймворка значительно облегчает изучение и использование других наборов программных решений в будущем. Не стоит недооценивать важность применения фреймворков и их удобство, ведь с ними можно заметно сократить количество написанного кода.
Начните применять полученные знания на практике.
Практика применения познаний в бэкенд-разработке также играет огромную роль. Поэтому начните с работы над небольшими проектами и/или задачами, такими как создание простого блога, базовых приложений для просмотра изображений или управления проектами, todo-листов и так далее.
Научитесь работать с облачными сервисами.
Еще одним достаточно важным шагом будет научиться развертыванию ваших программных продуктов на платформах облачных сервисов. Основными вариантами облачных платформ являются AWS, Google Cloud, Azure и Heroku.
Как стать бэкенд-разработчиком в 2022 году: дорожная карта
Авторизуйтесь
Как стать бэкенд-разработчиком в 2022 году: дорожная карта
Как стать бэкенд-разработчиком, что изучать в 2022 году и в каком порядке? Мы составили дорожную карту, которая поможет в этом разобраться:
Зона ответственности
Бэкенд-разработчик отвечает за корректность работы и оптимизацию серверной логики. Грубо говоря, аутентификация, раздача прав доступа, обработка действий пользователя, работа с данными, интеграция с другими приложениями, скорость обработки запросов — всё это ложится на плечи сервера. Разумеется, фронтенд тоже не стоит на месте, и ряд функций может быть вынесен на сторону клиента. Но в этом случае следует отдавать себе отчёт в том, насколько это секьюрно для веб-приложения и его пользователей, а также не замедлит ли это сайт.
Далее мы поговорим о ключевых моментах. Более полная картина представлена в виде дорожной карты по бэкенд-разработке.
Операционные системы и базис
Очень важно научиться работать с терминалом, особенно если речь идёт о Linux.
Бэкенд-разработчик должен знать, как работают ОС, что такое потоки и параллелизм, понимать, концепции построения сети и стандарты POSIX, а также уметь управлять процессами, памятью, вводом и выводом (I/O).
Полезные материалы:
А также видео о том, что такое операционная система и как она работает:
Выбор языка программирования
Существует много споров, в которых приверженцы того или иного языка программирования доказывают его превосходство над другими в бэкенд-разработке. Но не стоит забывать, что язык — лишь инструмент, и какой выбрать — зависит от поставленной цели и уже имеющихся знаний.
13–15 декабря, Онлайн, Беcплатно
Допустим, если вы уже знаете JavaScript и вообще решили освоить бэкенд после фронтенда, хорошим выбором станет Node.js: и поддерживать будет проще, и можно поиграться в фулстек. Знаете Python? Что ж, Django также предоставляет много готовых решений для серверной части. За Java стоит браться, если перед вами сложный долгоиграющий проект, а если же веб-приложение небольшое, писать для него бэкенд на Java — всё равно что шар-бабой гвозди забивать. Неизменной классикой по-прежнему остаётся PHP, ведь на этом языке действительно разработано подавляющее большинство современных сайтов.
И это далеко не все. Подробнее можете почитать в нашей статье о 8 основных языках для бэкенда.
Базы данных
Базы данных станут вашим главным ресурсом, а СУБД — новым домом. Следует понять разницу между реляционными и NoSQL СУБД, освоить нормализацию, транзакции, ORM, ACID, проблему N+1 и теорему CAP.
Материалы по работе с базами данных:
Также есть хорошее видео, которое наглядно объясняет нормализацию в БД:
Вам предстоит познакомиться с API как средством интеграции приложений, чтобы выполнять подключение сторонних сервисов, импорт данных, использование готовых решений для своего веб-ресурса. Зачастую сервисы, которые предоставляют доступ к своему API, описывают процесс подключения в документации. Иногда она максимально доступна, а иногда некоторые моменты приходится додумывать самостоятельно, поэтому важно не просто знать, но и понимать, как устроен API.
Веб-серверы
Стоит научиться устанавливать и настраивать популярные веб-серверы, такие как Nginx, Apache, Caddy и MS IIS. Все они достаточно безопасны и просты в использовании.
А ещё можете почитать о том, как самостоятельно настроить сервер для сайта, используя DigitalOcean хостинг и операционную систему Ubuntu 20.04 LTS.
Заключение
Так как стать бэкенд-разработчиком в 2022 году? Стоит разобраться в принципах работы операционных систем, основных командах терминала, выбрать предпочтительный язык программирования, освоить работу с базами данных, API и научиться работать с веб-серверами. О веб-безопасности мы уже писали в нашем гайде по фронтенд-разработке. Кстати, быть в курсе того, как работает фронтенд, бэкенд-разработчику также не помешает, ведь в итоге клиентская и серверная сторона должны эффективно взаимодействовать, обеспечивая бесперебойную работу веб-ресурса.
Как достичь успеха в сфере IT: интервью с бэкенд-разработчиком
В чём заключается работа бэкенд-разработчика?
Работа бэкенд-разработчика заключается в написании логики обработки запросов. Среди «разрабов» есть шутка, что бэкенд нужен, чтобы перекладывать JSONы. JSON — это один из популярных форматов текстового сообщения. То есть рабочий день любого бэкенд-сервиса похож на день клерка: среди горы макулатуры сидит скучный человек, а на него сверху сыпятся всё новые бумаги. И ему нужно каждую из них распределить по отдельным папкам, отделам и прочему.
Разработчик бэкенда — это тот, кто пишет инструкцию для такого клерка. Например, если пришел документ, нужно:
1. Посмотреть на дату исполнения. Если дата истекла — нужно выкинуть документ.
2. Посмотреть на отдел назначения. Если это не твой отдел — поставить печать «Не тот отдел» и отправить документ обратно.
3. Обратить внимание на форму документа.
3.1 Если форма У-0236 — надо отправить в ответ форму З-1348.
И так далее.
После такого объяснения бэкенд-разработка может показаться скучной, но самое интересное начинается, когда запросов становится сотни и тысячи в секунду, а ресурсов мало. Тогда нужно запускать множество сервисов параллельно, синхронизировать их работу между собой, продумывать варианты оптимизации. И максимальное удовольствие наступает в момент, когда находится простое решение, налаживающее такой сложный процесс. Настоящий катарсис.
Где вы учились и с чего начинали свой пусть в бэкенде?
Я учился в Армавирском механико-технологическом институте на специальности «Программное обеспечение вычислительной техники и автоматизированных систем». Это небольшой провинциальный институт, но некоторые преподаватели были очень толковыми, да и в целом там было весело.
Моя первая работа была в небольшом банке, в отделе сопровождения систем интеграции. Там мы писали самодельные сервисы для поддержания консистентности (согласованности) данных в гетерогенной среде. Проще говоря, каждому новому сотруднику банка для работы требовалась учетная запись во множестве систем — в домене, на портале, в трекере задач. Так же и при увольнении, чтобы аккаунт удалялся или блокировался.
Реализовано всё было элементарно: программа запускалась по таймеру раз в 15 минут и сравнивала все записи во всех системах по очереди. То есть никакой параллельности и сложных штук не было. Но за время работы там я «пощупал» много разных баз данных (Oracle, MS SQL, MySql) — каждая со своим синтаксисом. Также научился паре золотых заповедей вроде «работает — не трогай».
Насколько реально самостоятельно научиться разработке и какой уровень будет у такого самоучки?
Если в самом начале пути у него будет опытный наставник — это даст потрясающий фундамент, так гораздо легче воспринимать новые знания. Но база — это 20 % от того, что должен знать опытный специалист.
Практикующий разработчик не может остановиться и сказать: «Я теперь всё знаю». Необходимо постоянно учиться чему-то новому. Льюис Кэрролл когда-то писал: «Чтобы оставаться на месте, нужно бежать со всех ног, а чтобы куда-то попасть — надо бежать как минимум вдвое быстрее!» Это самое точное положение дел работника IT-отрасли.
Чем отличается классическое университетское образование в сфере IT от курсов разработчиков?
На мой взгляд, это взаимодополняющие вещи. Университетское образование дает хорошую базу — курсы показывают множество практических способов применения.
Идеальным вариантом для меня было закончить хороший вуз, с 3–4 курса стажироваться в IT-компании и периодически повышать квалификацию на курсах. Еще один важный момент: с дипломом вуза иногда гораздо легче уехать работать за границу.
Но даже если у тебя нет профильного образования в IT, это не значит, что работать в этой сфере ты не сможешь. Сегодня на курсах дается похожий теоретический базис, но в более сжатом объеме, и студенты, приходящие на них с полным отсутствием знаний, получают все необходимые навыки и впоследствии умеют их применять.
В школе Skillfactory проводятся курсы по Full-stack-веб-разработке, на которых можно не только стать компетентным бэкенд-разработчиком на одном из наиболее популярных языков программирования Python, но также освоить фронтенд, закрепив мощную теоретическую базу на практической плоскости.
Какие качества и навыки необходимы современному бэкенд-разработчику?
Веб-разработка не rocket science (ракетостроение) — здесь совсем необязательно быть гением. Достаточно обладать аккуратностью и внимательностью.
Какой уровень востребованности у данной профессии и какие условия сейчас предлагает рынок труда для бэкенд-специалистов?
Бэкенд-разработчики могут работать там, где есть сайты и информационные системы, то есть практически везде. Для новичков, правда, всё довольно сложно устроено. Некоторые крупные компании берут студентов-стажеров и при этом даже платят какие-то деньги. Нужно быть в офисе некоторое количество часов в неделю, выполнять какие-то задачи.
Это трудно осуществить, потому что параллельно нужно учиться, но зато такой сценарий дает почти 100% вероятность попасть в штат на полный оклад после окончания учебы. К примеру, в моей компании в прошлом году на место стажера был конкурс около 140 человек.
Представим такой сценарий: ты бэкенд-разработчик на распространенном стеке (PHP, C#, Java, Go, Python), который создавал сайты друзьям, но опыта работы в организации нет. Твоя квалификация — junior (джун).
Чтобы получить должность junior backend developer, тебе может потребоваться 10–15 попыток и 2–3 месяца походов по собеседованиям. После каждого собеседования будет полезно запрашивать у компании обратную связь о результатах интервью. После — подтягивать пробелы в знаниях и идти на следующее собеседование. Зарплаты у джунов небольшие, задачи обычно не особо интересные, но им нужно набраться терпения и ответственности, получить опыт, прокачать скиллы.
Далее, предположим, ты много работал, читал книги, проходил курсы — и спустя 3 года решил сменить работу. Теперь твоя квалификация — крепкий middle (мидл). Тебя не интересует конкретная фирма — ты готов работать в офисе в любом районе города и хочешь среднюю зарплату по рынку. Я думаю, что в Москве ты выйдешь на новую работу уже через 2–3 дня.
На кандидатов с промышленным опытом работы больше пяти лет уровень востребованности очень высок. На рынке всегда дефицит квалифицированных разработчиков. Таким людям компании предлагают огромные зарплаты, жирнейший ДМС, компенсации питания, спортзалов и больничных, психолога и массажиста в штате. Корпоративным ноутбуком и гибким графиком уже никого не удивить. У некоторых ребят в офисе вообще бесплатная еда, бильярд и спальные капсулы.
Курсы в Skillfactory призваны научить качественно выполнять те функции, которые встречаются в 80 % всех задач как на штатной работе, так и на фрилансе. К тому же по окончании курсов лучшие выпускники получают возможность пройти стажировку и устроиться в штат на постоянную работу в компаниях-партнерах.
Деньги являются одним из главных критериев успеха, но если не опираться на них — как оценивать успешного разработчика?
С точки зрения бизнеса успешный разработчик — это тот, кто говорит: «Я решу эту задачу за Х часов» — и делает это. При этом всё работает, а то, что работало раньше, не сломалось.
Я же считаю, что успешный коллега-разработчик — тот, кто решает задачу так, что ее решение понятно, красиво, лаконично, гибко. И я могу воспользоваться этим методом для решения своих собственных задач.
Сегодня технологии меняются очень стремительно. Как в таких условиях создать продукт, который будет актуален всегда?
Постоянно его переписывать на всё более новые технологии. Только так.
Какой потолок амбиций/возможностей в самореализации в работе бэкенд-разработчиком?
У кодеров (разработчиков, пишущих код) есть стандартная «лесенка» квалификации: стажер — джун — миддл — сеньор. Больше знаний — больше денег, больше ответственности.
Если у тебя есть лидерские навыки, то можно вырасти в тимлида, если стратегическое мышление — в архитектора. Если есть желание отойти от железа и больше разобраться в бизнесе, можно стать начальником отдела-начальника или техническим директором. Люди на этих должностях уже не пишут кодов.
Многие коллеги на работе, что называется, зарабатывают деньги, а в свободное время делают проекты «для души».
В школе SkillFactory обучение ориентировано непосредственно на практику. Девятимесячные интенсивные курсы разработки направлены на то, чтобы дать студентам возможность получить актуальные знания в программировании и применить их на деле. На курсах учащиеся смогут перенять мастерство веб-разработки у опытного профессионала, получить от него помощь и поддержку и сходу начать зарабатывать деньги на создании сайтов и веб-приложений.