@Rocknrolla99
Some text

Что нужно знать для backend разработки?

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

Ситуация следующая, на данный момент я имею уровень middle во фронте, работаю с одним из фреймворков.

Есть мысли начать изучать один из доступных серверных языков, но к сожалению я не имею ни малейшего представления, какой язык предпочтительнее выбрать, что вообще нужно знать для бека, слышал мельком о каких то базах данных, но убежден, что этого не достаточно. Интересует скорее не сам язык , а те технологии, что окружают его.

Да, естественно в сети полно информации, но это боль читать всё что попадает под глаза и пока я смогу сам понять что из этого мусор, а что нет - пройдет много времени.

Нет цели сесть и выучить язык за 2-3мес и устроиться на работу.

Правильно ли я понимаю, если речь идет о web разработке(backend), то принцип работы связанной с базами данных, протоколами и т.п. остается одним и тем же меняется только язык ?
Прошу прощения если вопрос звучит глупо, сказывается недостаток знаний.

И нужно ли знать ООП для backend'a или это зависит от языка ? На фронте современном мало используются принципы ООП, в основном функционально пишем код , отсюда уровень знаний и опыта в ООП минимальный

В общем это скорее просьба, чем вопрос к людям опытным, которые уже прошли подобный путь. Можете ли вы посоветовать язык и в зависимости от языка указать какую-то структуру того что нужно читать и с чем придется работать(может какие-то порталы, книги, статьи). Или возможно язык не имеет значения и с ним я смогу определиться сам, но есть стек технологии , которые нужно знать вне зависимости от языка.
  • Вопрос задан
  • 11716 просмотров
Решения вопроса 2
xmoonlight
@xmoonlight
https://sitecoder.blogspot.com
Выучите PHP.
99% открытого бэка - написано на нём.
Ответ написан
Технологии и прикладнуха - дело наживное, да и к тому же тут достаточно об этом написали.
Пару слов от себя вставлю: язык и фреймворк выбрать - вообще не проблема. Если js, то это nodejs+express, если java, то java+kotlin+gradle+spring, я лично изучаю на досуге Elixir и Phoenix.

Вот пара мыслей, какие фундаментальные темы нужно усвоить для перехода в бэк, а языки и фреймворки уже в последнюю очередь пойдут:
Основы операционных систем
Основы реляционных баз данных
Виртуализация и контейнеры
Configuration management (CI\CD, IaC, ansimble, automation)
Парадигмы и основы программирования (без этого вообще никуда, я бы сказал до уровня middle во фронтенде даже без этого не дойти).

Главный совет - не нужно распыляться. Виделите для себя что-то одно на первое время и постепенно в комфортном для себя ритме изучайте по разным источниками (курсы, статьи, большие книги, видео, общение с другими людьми, пет-проджекты).
Ответ написан
Пригласить эксперта
Ответы на вопрос 7
JaxAdam
@JaxAdam
Junior Full-Stack Developer
Можешь прямо на JS начинать. Сначала научись поднимать сервак на ноде (NodeJS). Потом попробуй поработать с фреймворками вроде ReactJS, AngularJS. Пойми как работают БД. Пойми основы роутинга. Попробуй написать свои скрипты обработки URL. Попробуй создать свой API. Научись как правильно делать запросы к серваку, а дальше само собой свяжется с помощью гугла и кучи проблем) Без понимания ООП будет сложно. Особенно сложно будет читать чужой код, ведь ООП сейчас почти везде. И пожалуй самый главный совет новичку в бэке: "Помни о принципе единичной ответственности: в любой программе всегда должен быть только один вход"(сам недавно бэком начал интересоваться, и этот совет пожалуй был самым полезным). Главное просто не сдавайся и пытайся выделять времени, сколько не жалко. Если с JS трудновато, можешь с пихи(PHP) начать попробовать. Там легче для новичков, ИМХО, потому что не требуется использовать сторонние библиотеки для реализации тех или иных действий... В JS же иногда для реализации задумок требуется подключать дополнительные библиотеки, разбираться как она работает и.т.д., что для новичков по началу сложно, потому что они и так получают много информации
Ответ написан
@ilyako87
Бэк != работа только с БД. Как практикующий разработчик, Вы должны иметь представление об архитектуре Вашей системы, даже если Вы - узкоспециализированный фронтенд-разработчик. Например, если бэк предоставляет хорошо задокументированный API, с которым Вы работаете на фронте, то довольно легко представить, как реализовать подобный API с другой стороны.
Зная, какой-либо js-фреймворк, можно было бы попробовать изучить Node.JS в качестве основы для бэка.
Ну а так вообще я за Java+Spring, если речь идёт о серьёзных вещах.
Ответ написан
0. В начале 10 раз подумать - зачем? Если хочется больше денег, то тогда быстрее и намного проще стать Senior Frontend. Так как бекенд намного глубже и сложнее, а платят почти так же.

1. В вашем случае действительно лучше всего начать с Node.js + express.js + любая БД, которая будет в том видео курсе, который вы будете смотреть. Так вы сможете сделать свое первое API для фронтенда и понять, что такое бекенд. Но стоит понимать, что Node.js это нишевое решение и для большинства сайтов оно не подойдет по многим причинам.

2. PHP СРАЗУ ЗАБЫТЬ!
Сказки про то, что на PHP написано 99% всех сайтов уже 10 лет не актуальны, а их все повторяют. Особенно смешно когда рассказывают про ВКонтакте и Facebook как о примерах проектов на PHP. И Вк и ФБ давно избавились от чистого пхп и написали свои трансляторы PHP в C++. (KittenPHP и HipHop).
Хотя после JS пхп может показаться хорошим языком (богаче стандартная библиотека, ООП) но не стоит заблуждаться - есть языки намного лучше/проще/мощнее/современнее.
Для тех, кто хочет поспорить - Про 50 оттенков PHP хорошо написано тут: https://habr.com/ru/post/142140/
Хотя тягу истинных индусов кататься на слоне не унять ни какими доводами:)

3. Java, C# - сомнительно. Да, на них пишут большие и серьезные проекты и платят хорошие деньги. Но часто ли пишут такие проекты? Особенно в СНГ. И берут ли на них новичков?:) Лучше вначале хорошо изучить спрос на июней на фриланс биржах и количество вакансий, ОСОБЕННО, если хотите работать удаленно.

Я 4 года был fullstack-разработчиком. Писал на PHP/CodeIgniter/Kohana/Zend/Yii1,2/Symfony/Laravel 4,5/MySql/JQuery/Vue.js. С опытом я понял, что у PHP много проблем. Развитие языка остановилось/идет не туда, сам язык плохо спроектирован. И я стал активно изучать на какую платформу/язык мне перейти.
Попробовал Java, Ruby, Objective-c/Swift, Node.js, Python.

Остановился на Python/Django framework/PostgreSQL. На Python можно писать как асинхронные приложения (здравствуй Node.js) так и синхронные (привет PHP). Django на голову выше любого PHP фреймворка, а порог вхождения ниже чем у Symfony, Zend и примерно такой же как у Laravel, Yii.
В целом Python как язык спроектирован лучше PHP, у него больше возможностей, он современнее и активнее развивается.

Переход на новый язык оказался не таким быстрым и простым, как казалось сначала). Хоть и переходил с бекенда на PHP в бекенд на Python. Кроме самого языка нужно еще освоить новый стек популярных для него фреймворков, библиотек, инструментов. А так же заново наработать портфолио. У меня выход на прежний уровень ЗП занял 2 года. Работаешь на старом стеке, что бы было что кушать, а после работы и по выходным изучаешь новый, если мотивация не закончится:)

P.S Не советую быть Fullstack-ом. Лучше стать грамотным специалистом в одной области чем недоучкой в двух. Платят middle fullstack так же как и middle frontend или middle backend по отдельности. Да, работу найти fullstack-у чуть легче но и обязаностей будет намного больше.
Ответ написан
@Tech_Nomad
Веб-разработчик, электрик, кочевник
Бэкенд разделяется как минимум на четыре части:
- язык для программирования приложения
- администрация базы данных
- администрация сервера и операционной системы
- DevOps

Языки для программирования приложения:
- JavaScript + Node.js/Express.js любимчик хипстеров и стартапов: так как у вас или как минимум у меня нет конкретных представлений о том что вы хотите не нужно далеко идти. Знания Node.js поможет вам и с фронтондом, так как Webpack работает с Express.js а индивидуальная настройка Webpack огромный pain in the ass и с поиском работы среди хипстерских компаний.
- PHP/Symfony. PHP - любимчик пролетариата - всегда хороший выбор. Язык написан как и JavaScript специально для вэб-приложений. Маленькие проекты реализуются очень быстро благодаря отсутствию каких либо рамок со стороны языка. От сюда же и плохая репутация этого языка так как очень много (с точки зрения ООП архитектуры) не грамотно созданных проектов на PHP, среди которых самый известный это WordPress. Но PHP полноценный язык программирования и нет больших объективных поводов поливать его грязью как это любят делать сектанты JavaScript, Java, Ruby, Python итп (хотя и каждый из этих языков поливается грязью сектантами других языков). Фреймворк для enterprise level: Symfony + Doctrine ( ужасное дерьмо, нужно только реально для enterprise level - для личных проектов Doctrine лучше избегать и использовать PDO). Практически все популярные eCommerce системы написаны на PHP (WooCommerce, Magento, Shopify, Shopware). Ну а про WordPress вообще говорить нечего. 35% сайтов работают с WordPress. WordPress с технологической точки зрения не самый лучший Framework, но так как самый популярный среди пользователей, то экспертиза в этой сфере всегда поможет вам с работой на фрилансе. Хотя пользователи WordPress в среднем не самые платежеспособные клиенты. Но есть (где то) и клиенты которые готовы платить десятки тысяч долларов за проект на основе WordPress.
- Java/Spring - любимчик корпораций: практически все индивидуальные разработки больших корпораций делаются на Java (если не учитывать языки Microsoft). Популярный fullstack генератор для проектов на Java: JHipster. Сектанты Java ненавидят всех и являются главным источником шитстормов против всех остальных языков. По крайней мере мне так кажется. Одно из больших преимуществ Java: можно писать приложения как для вэба, так и для мобайл и десктопа.
- Kotlin - язык программирования от русской компании JetBrains который должен в длительной перспективе заменить Java для Android, из-за каких то разногласий между Google и Oracle. Kotlin был развит на основе Java и на сколько я знаю можно всё что написано на Java (как то) использовать с Котлин. Котлин любят все как мне кажется. Ребята от JetBrains знают на генетическом уровне что нужно разработчику. По крайней мере мне так кажется когда работаю с их продуктами (PhpStorm/WebStorm + DataGrip).
- Python/Django: супер универсальный язык который популярен как для разработки веб-приложений так и в научной сфере и сфере искусственного интеллекта. Говорят его так же легко выучить как и PHP. От сюда же наверное и шитстормы в его сторону, хотя конечно их меньше чем в сторону PHP. Язык так же популярен среди хакеров и является главным языком для программирования crawler ботов. YouTube написан на Python
- Ruby (on Rails): ничего не знаю об этом языке/фрэймворке кроме того что относительно много компаний среднего уровня его используют.
- C/C++: веб-фреймворков для этих языков практически нет. Но это самые быстрые языки из всех перечисленных. Эти языки используются для всего где скорость играет большую роль (видео обработка например). JavaScript, все программы от Adobe CC, а также Ableton Live написаны на C++. Linux Kernel и PHP написаны на C. Также это главные языки для электроприборов/микроконтроллеров и поэтому в сфере IoT. Возможно эти языки начнут также играть большую роль во фронтенд!!! благодаря WebAssembly, что делает (теоретически) возможным переносить такие программы как Photoshop, Illustrator, Premiere Pro, After Effects, Ableton Live или же игры как Counter Strike полностью в броузер. 
Если бы я начинал учить новый бэкенд язык я бы начал с C/C++.
Ответ написан
Aco
@Aco
Заклинатель кода
Есть хороший список базовых технологий и знание куда копать: https://github.com/bzick/oh-my-backend#oh-my-backend

Сам язык там упоминается вскользь и без определенного указания предпочитаемого языка так как по факту толковому бекендеру уже всё равно на каком языке писать.
Ответ написан
mindyourlifeguide
@mindyourlifeguide
На данный момент я junior, но тоже задавался этим вопросом.
Присматривался к стэку MERN, но пока не совсем ясна робота согласно ACID и что лучше для интернет магазинов и highload проектов.
Сравнение разных бд смотрел, но так же из-за отсутствия знаний пока не понял, что и для чего.
Буду отслеживать ваш вопрос)
Ответ написан
firedragon
@firedragon
Senior .NET developer
Присмотритесь к C# и net core.

Работает везде, как в свое время декларировали явисты, ОЧЕНЬ удобная IDE. Поддерживает все нормальные БД.
Есть свои минусы.

Go - тоже хороший кандидат.

PHP - востребован всегда.

Java - ну можно конечно, но если только есть основной клиент который этот праздник будет оплачивать
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы