Bandicoot
@Bandicoot
Вась-программист

Действительно ли back-end разработка более консервативна, чем front-end?

В последнее время часто слышу, что разработчики жалуются, сколько им нужно знать для успешной работы: технологии, фреймворки, языки программирования, инструменты итд. По своему опыту могу судить, что это напрямую касается front-end разработки - целый ворох js-фреймворков, которые появляются чуть ли не каждый день, препроцессоры css, системы сборки, bootstrap, графические редакторы итд. Но что касается бэка, то там картина не такая пугающая - достаточно хорошо знать 1-2 фреймворка, СУБД и иметь навыки работы с сервером. Все остальное - по потребности. И следить за обновлениями только этих технологий. Так ли это на самом деле?
  • Вопрос задан
  • 34000 просмотров
Решения вопроса 3
hrls
@hrls
Половина ответа в вопросе, но дьявол в мелочах.
Действительно, для относительно продуктивной backend-разработки практически на любом языке программирования необходимо знать несколько базовых фреймворков и тулов, которые решают большинство задач. Это скелет ~90% приложений сложнее hello world. Хотя и этот скелет меняется и развивается, пусть и не так быстро как хотелось бы, как разнообразные отростки (не консервативность, но более долгий жизненный цикл). Суммарный вес технологий и инструментов не меньше, и уж точно не менее динамично изменяющийся, чем у frontend-разработчиков.
Далее личный опыт на примере Java.
Лет 7-8 тому достаточно было знать Spring, Struts, Hibernate да Apache Commons в довесок для разработки большинства решений. Ну и J2EE-стек для задач Enterprise-уровня.
В году 2014 Spring, Hibernate все также в арсенале программиста, но появилась куча абсолютно новых вещей вроде AMPQ, Hadoop, Netty, Scala с функциональной парадигмой, мультиязычные окружения с Clojure/Groovy/JRuby; стали чаще встречаться альтернативные реализации популярных библиотек (например Guice / Guava); старые технологии вроде J2EE стали использоваться несколько реже. А одних только Key-Value хранилищ, кэшей и прочих NoSQL как грязи. Изменился даже сам подход к построению приложений – мало кто в 2005 слышал про asynchronous event-driven модели и отталкивался при проектировании от REST-стиля (собственно, там и корни frontend-девелопера как отдельной специализации). Про эволюцию систем сборок, VCS, бенчмарков и прочих "микро"-элементов можно расписывать не одну простыню.
И да простят меня frontend-товарищи за, возможно, чванливый тон, но раскурить тонкости работы async IO в зависимости от ОС-специфики вроде epoll/kqueue или учитывать CAP-теорему при построении middleware-кэша это уровнем сложности повыше, чем новый CSS-препроцессор и CoffeeScript c очередным MVC / MVVM-фреймворком. Некоторые задачи, вроде синхронизации потоков, так и вообще лежат большей частью в области математики.
Уверен, что и в frontend-разработке существуют задачи сложнее и интереснее поехавшей на пиксель верстки и обновления полей после парсинга JSON, но ИМХО backend-разработка ближе к системному программированию старой школы, в то время как frontend суть прикладное программирование с примесями дизайна.
Frontend-инструментов больше, backend-инструменты сложнее.
Ответ написан
Trow_eu
@Trow_eu
Я бы сказал так - в бекенде можно себе позволить быть консервативным по сравнению с фронтендом, потому что рядовому клиенту пофиг, как работает что-либо, ему важно то, как это выглядит. Следовательно фронтенду нужно "следить за модой", а бэкенду нужно уметь сделать что-угодно с любым привычным ему инструментарием, минимально подходящим для этого, т. е. подгоняться под новинки не необходимо.
Ответ написан
copist
@copist
Empower people to give
Я понимаю, что уже год прошёл. Впишу своё мнение.

Стек технологий для backend и frontend одинаково сложный. Много решений, много тонкостей. Как fullstack
я знаю, о чём говорю.

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

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

С другой стороны, портфолио фронтенд-разработчиков полно красивых скриншотов из готовых проектов, иногда даже ссылками на работающие проекты. Backend такой красотой похвастаться не могут - sphinx, memcache, mongo/redis, mysql/postgre, php/python/ruby - ну или ещё что-нибудь - я имею в виду, что приходится только стек технологий упоминать. А если в портфолио и будут скриншоты, то только с целью сказать позже: там, в тени красивого интерфейса, стабильно и быстро работает мой код.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 9
@goodknight
Да.
Ответ написан
Комментировать
0neS
@0neS
И да начнется холивар!
Ответ написан
Комментировать
afiskon
@afiskon
Я лично думаю, это касается индустрии в целом.

В бэкенде на самом деле все даже хуже по моим представлениям. Потому что на веб-фронтенде у вас только HTML, CSS и JavaScript. В бэкенде вы можете использовать любые языки, плюс к этому СУБД и прочие приложения (веб-сервера, всякие там кэши-шины и тд). Так что проблема как минимум аналогично фронтэндной помноженной на три.

Если хочется относительной стабильности, берите, скажем, Java и предметную область - UI или там веб, и делайте вид, что ничего другого для вас не существует. Даже ограничившись таким образом потоком информации можно запросто захлебнуться.
Ответ написан
@dmppka
Да, во фронтэнде много всего, НО!
У меня есть опыт программирования как на backend'e (Java, PHP, Go, Node.js), так и на frontend'e (JS, HTML, CSS) и вот что я скажу.
Взять SASS. Его я изучил за день. Чуть больше. Перелопатил доки, поделал примеры для закрепленияю
А теперь возьмем ту же джаву. Spring Framework, например. Программирую на нем чуть больше полугода. Даже и близко сказать не могу, что знаю все его тонкости. Вот и вся разница. Не нужно смотреть на количество фрейморков & тулов в той или иной области. Нужно подходить к вопросу с точки зрения инвестирования времени.
Ответ написан
iiil
@iiil
Инженер и вэб-дизайнер, рисую.
Очень похоже на правду, не так ли? То, чего не видят рядовые пользователи, не должно отвечать моде.
Ответ написан
opium
@opium
Просто люблю качественно работать
ну не сказать языков расплодилось
руби питоны пхп
все разных версий
ноды всякие и её аналоги
базы данных плодятся
носкл и прочее
ну и в целом эволюция существенная в бекенде более существенная чем во фронте
Ответ написан
fardok
@fardok
Golang
Бакэндщикам стремно признаться что вся их работа это аналог cout<<"hello world :-) :-) :-)

А по сути фронтэнд это "что, куда, в каком виде вывести и принятт ответ", а бакэнд это только "что вывести".
Ответ написан
pavel_salauyou
@pavel_salauyou
Symfony2 & Angular разработчик
во фронтенд достаточно знать jquery или angular или любой другой по выбору, препроцессоры css и различные css фреймворки, учаться за 2 споловиной дня, в бекенде всё достаточн осложнее, нельзя решить некоторые задачи одним инструментом, нужно знать - субд нескольк mysql, mongodb, системы кеширования redis, memcache, работа с линуксом, не с одной версией ubuntu, ещё может быть и centos, несколько фреймворков, которые тоже клепаются каждый день, те же системы сборки, деплоя, системы асинхронных задач rabbitmq, celery и ещё дофига всяких вещей, следить за обновлениями даже одного фреймворка проблематично, не говоря уже о нескольких.
Ответ написан
MarcusAurelius
@MarcusAurelius
автор Impress Application Server для Node.js
Фронтэндщики влезли на сервер через окно Node.js и мостик JavaScript, и наплодили 80к пакетов, пошла жара, это можно выдержать... https://www.npmjs.org/
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы