Back end разработчик это – Backend разработчик – кто это и что должен знать, где учиться на бэкенд программиста

Содержание

Профессия бэкенд-разработчик. Обучение в сервисе Яндекс.Практикум

Важное уточнение: на момент написания отзыва я успешно окончила бесплатную часть и все блоки, связанные с вёрсткой. Дальше идут разделы о JavaScript и инфраструктуре веб-приложений — о них судить не могу.

Когда объявили о запуске Яндекс.Практикума, я уже несколько месяцев как решила уходить со своей профессии, совсем не связанной с IT, во фронтенд. В моём багаже были базовые знания о JavaScript, HTML и CSS, огромная неуверенность в себе и вопрос «А что дальше?». После нескольких бесплатных курсов, статей, пары книг из списков «Каждый фронтендер должен прочитать» и туториалов я поняла, что хоть и могу решать отдельные задачи, но как подступиться к большим самостоятельным проектам — непонятно.

Больше всего в самообучении не хватало фидбэка, а на форумах не оставляло ощущение, что все поголовно программисты закончили мехмат и написали первую программу/сверстали первый сайт в первом классе. То есть я опоздала со стартом в программировании минимум лет на 20. Мне 27. В момент, когда я задумалась о платных курсах с наставником, в мою жизнь пришёл Яндекс.Практикум.

Помимо учёбы, также очень хотелось поучаствовать в развитии сервиса, помочь ему стать классным и удобным для следующих потоков. Большим плюсом стало то, что у меня появился не просто один наставник, а целое комьюнити из одногруппников, преподавателей и тех, кто создаёт сервис. У нас есть чат, где активны не только студенты, с нами постоянно делятся интересными статьями и регулярно проводят вебинары на темы от Q&A и разбора домашних заданий до БЭМ и эволюции построения сеток.

Принцип тренажёра не новый, такое я видела и раньше, но самое классное здесь — это самостоятельная работа над проектами. Она действительно самостоятельная. Отчётливо помню свой ужас во время первого домашнего задания, когда я увидела, что у меня есть просто статичный макет страницы. Пришлось открыть редактор и с нуля верстать полностью всё. Я думала не смогу. Я боялась, что результат будет настолько плох, что меня отчислят, потому что таким бездарям не место в программировании. И я отчётливо помню невероятное счастье, когда после проверки увидела комментарии ревьюера. Да, были ошибки, но кроме них у меня ещё был структурированный и логичный код, хорошая семантика, и я справилась с именованием классов по БЭМу. За 15 часов, которые я потратила на первое дз и правки, я выучила больше, чем за несколько месяцев самостоятельной практики, но, что важно, я почувствовала, что я могу.

Прошло почти 2 месяца после первого домашнего задания и около 2.5 месяцев — как я с Яндекс.Практикумом. В моём портфолио одностраничный сайт и большой адаптивный лендинг. Я узнала много интересного о вёрстке, научилась отлаживать код и уместно комментировать его, а впереди ещё много тем и дипломный проект. Осенью я планирую начать поиски своей первой работы во фронтенде. Большое спасибо всем из Яндекс.Практикума! Уверена, у нас всё получится.

praktikum.yandex.ru

Back-end разработчик — БудуГуру

Back-end — это разработка, связанная с написанием скриптов для сервера.

Напомним, существует 3 типа веб-разработчиков:
  • Front-end;
  • Back-end;
  • Многопрофильные (объединяющие в себе оба вида).

Back-end разработчики несут ответственность за создание «серверной» части в веб-приложениях, иначе говоря, они имеют дело со всем, что относится к программно-административной части веб-приложения, внутреннему содержанию системы, серверным технологиям — базам данных, архитектуре, программной логике.

Back-end разработчик должен знать серверные языки программирования, такие как PHP, Python, Ruby, Java, Perl, Node JS (программные платформы). Дополнительно к Node JS этому специалисту полезно будет изучить Express (библиотеку для взаимодействия платформы Node JS с сервером) и Mongo DB (базу данных для получения и хранения информации). В качестве дополнительных средств применяются фреймворки Symfony, Codeigniter, Yii, Zend Framework, Kohana и др.

Back-end специалисты работают рука об руку с front-end разработчиками, задавая внешним элементам веб-приложения серверную логику. Для того, чтобы реализовать эту логику, back-end разработчик использует серверные скриптовые языки, такие как Ruby и PHP. Помимо реализации сервисной логики в работу этого специалиста входит оптимизация приложения (улучшение его скорости работы и эффективности). Более того, зачастую они сталкиваются с задачей создания решения для хранения больших объемов информации в базах данных приложения. База данных является важнейшим компонентом для всех веб-приложений, так как предназначена для хранения информации о пользователях, комментариях, постах и т. д. Общие базы данных включают MySQL/SQLite, Mongo DB и PostgreSQL.

Бэкэнд-разработчики редко работают в одиночку, почти всегда они взаимодействуют с UX-дизайнерами, UI-специалистами, и многими другими.

Другие названия профессии: Back-end developer, Бэкенд-разработчик, Веб-разработчик.

buduguru.org

Что нужно знать, чтобы стать бэкенд-разработчиком в 2018

В этой статье речь пойдёт о том, какими языками и инструментами необходимо овладеть, чтобы стать бэкенд-разработчиком в 2018 году.

Фронтенд – это веб-страницы, которые вы просматриваете и взаимодействуете с ними в браузере. Но как веб-страницы вообще попадают в интернет? Каждый раз, когда вы вводите URL в поисковой строке, переходите по ссылке или заполняете форму, браузер подключается к серверу. Когда пользователь запрашивает у сервера какой-либо ресурс, сервер предоставляет его пользователю. Сделать с помощью языка программирования так, чтобы сервер предоставлял пользователю то, что он запрашивает – главная задача бэкендера.

За что конкретно ответственен бэкенд-разработчик?

Бэкенд-разработчики пишут программы, которые обрабатывают:

  • Пользовательские данные

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

На серверной стороне веб-приложения также хранятся данные платёжных методов пользователей вроде кредитных карт или интернет-кошельков. Некоторые бэкенд-разработчики несут ответственность за безопасное хранение этих данных и корректное проведение транзакций.

  • API (Application Programming Interfaces)

С помощью API другие программы и мобильные устройства могут получать доступ к ресурсам веб-приложения. Создание API – это распространённая практика среди разработчиков веб-приложений, так что, чтобы стать бэкенд-разработчиком, нужно уметь создавать API, либо, как минимум, уметь взаимодействовать с API других веб-приложений.

Какими технологиями необходимо овладеть, чтобы стать бэкенд-разработчиком?

Ответ сервера на запрос пользователя требует нескольких шагов, и каждый из них использует свой тип ПО. Комбинация технологий, используемых на определённом веб-сервере, называется

стеком технологий. Вообще, выбор веб-серверов, языков, фреймворков и баз данных  огромен, но они все довольно похожи. Поэтому, программисту, желающему стать бэкенд-разработчиком, достаточно выучить хотя бы по одной технологии из каждого уровня стека, чтобы претендовать на должность бэкендера, а тонкостям работы со стеком определенного проекта в компаниях обычно обучают на месте. Типичный стек технологий состоит из следующих элементов:

  • Серверное ПО (обычно говорят просто «веб-сервер»)

Среди популярных веб-серверов можно отметить:

  • Apache
  • nginx
  • Microsoft IIS (Internet Information Services)
  • Фреймворки, библиотеки и прочие инструменты

Вот некоторые из наиболее популярных:

  • JavaScript
  • Java
    • Spring
    • Hibernate
    • JSF (JavaServer Faces)
  • Python
  • C#

Достаточно овладеть хотя бы одним из языков и перечисленных инструментов, чтобы повысить шансы стать бэкенд-разработчиком и найти работу.

Также не обойтись без:

Чтобы связать код, написанный бэкенд-разработчиком, с базой данных, используется ORM (Object Relational Mapping), – технология, с помощью которой данные из БД конвертируются в объекты. Большинство баз данных используют SQL (Structured Query Language) для доступа к данным. ORM-библиотека автоматически пишет необходимые фреймворку запросы. Однако ORM не может написать за вас какой-либо сложный запрос: это придётся делать вручную. Так что 

знания SQL обязательны для бэкендера.

Наиболее популярными СУБД являются:

  1. MySQL
  2. SQL Server
  3. PostgreSQL

Если вы освоите хотя бы одну из них, то без проблем сможете работать практически с любой СУБД.

  • HTML (ну куда же без него!)

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

Если вы занимаетесь поддержкой API, то вам необходимо также знать JSON или XML, так как данные, предоставляемые для API сервером, конвертируют в один из этих языков. В идеале стоит разбираться и в JSON, и в XML.

  • Системы контроля версий

Без систем контроля версий сейчас проекты никто не разрабатывает. Даже те, кто разрабатывает приложение в одиночку, зачастую используют их, так что о командных проектах даже говорить не приходится. Поэтому знание Git сейчас обязательно для любого программиста, вне зависимости от того, хотите вы стать бекэнд-разработчиком или писать плагины для Sublime Text.

А ещё обратите внимание на облачные платформы:

  • Amazon Web Services
  • Heroku
  • Google Cloud Platform
  • Windows Azure

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

В заключение

Если вы в этой теме новичок и только планируете стать бэкендером, начните со всё тех же «трёх китов веба» в виде HTML, CSS, JS. Бэкенд-технологии, в отличие от фронтенда, более стабильны поэтому, изучив хотя бы один язык, фреймворк и СУБД, вы будете готовы разрабатывать свои веб-приложения, и ваши навыки не так быстро устареют. Хотя это также не отменяет того факта, что вам предстоит постоянно обучаться и совершенствовать навыки разработки.

Источник

proglib.io

Один стендап в Яндекс.Такси, или Чему нужно научить бэкенд-разработчика

Моё имя Олег Ермаков, я работаю в команде бэкенд-разработки приложения Яндекс.Такси. У нас принято проводить ежедневные стендапы, где каждый из нас рассказывает о сделанных за день задачах. Вот как это бывает…

Имена сотрудников может и изменены, а вот задачи вполне себе реальны!

На часах 12:45, вся команда собирается в переговорке. Первым слово берет Иван, стажёр-разработчик.

Иван:

Я работал над задачей отображения всех возможных вариантов сумм, которые пассажир мог дать водителю при известной стоимости поездки. Задача достаточно известная — называется «Размен монет». С учётом специфики добавил в алгоритм несколько оптимизаций. Отдал пул-реквест на ревью еще позавчера, но с тех пор я исправляю замечания.

По довольной улыбке Анны стало понятно, чьи замечания исправляет Иван.

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

Добавил комментариев на будущее, чтобы любой читающий мог быстро разобраться в алгоритме:

for exception in self.exceptions[banknote]:
    exc_value = value + exception.delta
    if exc_value - cost >= banknote:
        continue
    if exc_value > cost >= exception.banknote:
        banknote_results.append(exc_value)

# основные разветвления алгоритма дают некратные купюры
for exception in self.exceptions[banknote]:
    # для таких исключений можно посчитать результат по остатку от
    # деления таких купюр
    exc_value = value + exception.delta
    # но при этом результат не может получиться больше самой банкноты
    # (corner case)
    if exc_value - cost >= banknote:
        continue
    if exc_value > cost >= exception.banknote:
        banknote_results.append(exc_value)

Ну и, естественно, остаток времени потратил на покрытие всего кода тестами.
RUB = [1, 2, 5, 10, 50, 100, 200, 500, 1000, 2000, 5000]
CUSTOM_BANKNOTES = [1, 3, 7, 11]

@pytest.mark.parametrize(
    'cost, banknotes, expected_changes',
    [
        # no banknotes
        (
            321, [], [],
        ),
        # zero cost
        (
            0, RUB, [],
        ),
        # negative cost
        (
            -13, RUB, [],
        ),
        # simple testcase
        (
            264, RUB, [265, 270, 300, 400, 500, 1000, 2000, 5000],
        ),
        # cost bigger than max banknote
        (
            6120, RUB, [6121, 6150, 6200, 6300, 6500, 7000, 8000, 10000],
        ),
        # min cost
        (
            1, RUB, [2, 5, 10, 50, 100, 200, 500, 1000, 2000, 5000],
        ),
        ...
    ],
)

Помимо обычных тестов, которые запускаются при каждом билде проекта, написал тест, использующий алгоритм без оптимизаций (считай — полный перебор). Результат работы этого алгоритма для каждой купюры из первых 10 тысяч случаев положил в файл и прогнал отдельно на алгоритме с оптимизациями, чтобы быть уверенным, что он действительно работает верно.

Давайте на минуту отвлечёмся от стендапа и подведем локальные итоги всего того, о чём говорит Иван. При написании кода основная цель — обеспечить его работоспособность. Чтобы эта цель была достигнута, необходимо выполнить следующие задачи:
  • Декомпозировать бизнес-логику на атомарные фрагменты. Читаемость усложняется при просмотре полотна кода, написанного в одной функции.
  • Добавить комментарии в «особо сложные» части кода. У нас в команде следующий подход: если на код-ревью задают вопрос по поводу реализации (просят объяснить алгоритм), то необходимо добавить комментарий. А ещё лучше подумать об этом заранее и добавить его самому.
  • Написать тесты, покрывающие основные ветви выполнения алгоритмов. Тесты — не только метод проверки работоспособности кода. Они ещё выполняют роль примера использования вашего модуля.

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

Но вернёмся на стендап. После Ивана выступает Анна.

Анна:

Я разрабатываю микросервис отдачи промотирующих изображений. Как вы помните, сервис изначально отдавал статичные данные-стабы. Затем тестировщики попросили кастомизировать их, и я вынесла их в конфиг, а сейчас делаю «честную» реализацию с отдачей данных из базы (PostgreSQL 10.9). Мне очень помогла заложенная изначально декомпозиция, в рамках которой интерфейс получения данных в бизнес-логике не меняется, а каждый новый источник (будь то конфиг, база данных или внешний микросервис) лишь реализует свою логику.

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

Вадим:
А что за запрос?
Аня:
Два условия под OR:
SELECT *
FROM table_1
         JOIN table_2 ON table_1.some_id = table_2.some_id
WHERE (table_2.attr1 = 'val' OR table_1.attr2 IN ('val1', 'val2'))
  AND table_1.deleted_at IS NULL
  AND table_2.deleted_at IS NULL
ORDER BY table_2.created_at 

Explain запроса показал, что в нём не используется один из индексов по атрибутам attr1 таблицы table_2 и attr2 таблицы table_1.
Вадим:
Сталкивался с аналогичным поведением в MySQL, проблема как раз в условии по OR, из-за которого используется лишь один индекс, скажем, attr2. А второе условие использует seq scan — полный проход по таблице. Запрос можно разбить на два независимых запроса. Как вариант — разделить и замержить результат запросов на стороне бэкенда. Но тогда нужно подумать над тем, чтобы обернуть эти два запроса в транзакцию, либо объединить их с помощью UNION — по сути, на стороне базы:
SELECT *
FROM table_1
         JOIN table_2 ON table_1.some_id = table_2.some_id
WHERE (table_2.attr1 = 'val')
  AND table_1.deleted_at IS NULL
  AND table_2.deleted_at IS NULL
ORDER BY table_2.created_at 

SELECT *
FROM table_1 JOIN table_2
ON table_1.some_id = table_2.some_id
WHERE (table_1.attr2 IN ('val1'
    , 'val2')) AND table_1.deleted_at IS NULL AND table_2.deleted_at IS NULL
ORDER BY table_2.created_at
Аня:
Спасибо, попробую ^_^

Снова подведём итоги:
  • Почти все задачи продуктовой разработки связаны с получением записей из внешних источников (сервисов или баз данных). Нужно тщательно подойти к вопросу декомпозиции классов, выгружающих данные. Правильно спроектированные классы позволят вам без проблем писать тесты и модифицировать источники данных.
  • Чтобы эффективно работать с БД, нужно знать особенности выполнения запросов, например разбираться в explain.

Работа с информацией и организация потоков данных — неотъемлемая часть задач любого бэкенд-разработчика. Школа познакомит с архитектурой взаимодействия сервисов (и источников данных). Студенты научатся работать с базами архитектурно и с точки зрения эксплуатации — миграции данных и тестирования.

Последним на встрече выступает Вадим.

Вадим:

Я на неделе дежурил, разбирал очередь инцидентов. Одна нелепая ошибка в коде заняла ну очень много времени: в проде не было логов по запросу, хотя их создание было прописано в коде.

По скорбному молчанию всех присутствующих понятно — все уже так или иначе сталкивались с проблемой.

Для получения всех логов в рамках запроса используется request_id, который прокидывается во все записи в следующем виде:

# запись без request_id
logger.info(
    'my log msg', 
)

# запись с request_id
logger.info(
    'my log msg', 
    extra=log_extra,  # здесь передается request_id — связующая информация о запросе
)

log_extra — это словарь с метаинформацией запроса, ключи и значения которого будут записаны в лог. Без передачи log_extra в функцию логирования запись не будет связана со всеми другими логами, потому что в ней не будет request_id.

Пришлось исправлять ошибку в сервисе, перевыкатывать его и лишь потом разбираться с инцидентом. Такое случается уже не первый раз. Чтобы больше это не повторялось, я постарался исправить проблему глобально и избавиться от log_extra.

Сначала я написал враппер над стандартным исполнением запроса:

async def handle(self, request, handler):
    log_extra = request['log_extra']
    log_extra_manager.set_log_extra(log_extra)
    return await handler(request)

Нужно было решить, каким образом хранить log_extra в рамках одного запроса. Здесь было два варианта. Первый — изменить task_factory для eventloop из asyncio:
class LogExtraManager:
    __init__(self, context: Any,
                  settings: typing.Optional[Dict[str, dict]],
                  activations_parameters: list) -> None:
    loop = asyncio.get_event_loop()
    task_factory = loop.get_task_factory()
    if task_factory is None:
        task_factory = _default_task_factory
    
    @functools.wraps(task_factory)
    def log_extrad_factory(ev_loop, coro):
        child_task = task_factory(ev_loop, coro)
        parent_task = asyncio.Task.current_task(loop=ev_loop)
        log_extra = getattr(parent_task, LOG_EXTRA_CONTEXT_KEY, None)
        setattr(child_task, LOG_EXTRA_CONTEXT_KEY, log_extra)
        return child_task
    
    # updating loop, so any created task will
    # get the log_extra of its parent
    loop.set_task_factory(log_extrad_factory)

    def set_log_extra(log_extra: dict):
         loop = asyncio.get_event_loop()
         task = asyncio.Task.current_task(loop=loop)
         setattr(task, LOG_EXTRA_CONTEXT_KEY, log_extra)

Второй вариант — «протолкнуть» через команду инфраструктуры переход на Python 3.7 для использования contextvars:
log_extra_var = contextvars.ContextVar(LOG_EXTRA_CONTEXT_KEY)

class LogExtraManager:
    def set_log_extra(log_extra: dict):
         log_extra_var.set(log_extra)

Ну и дальше нужно было пробросить сохраненную в контексте log_extra в logger.
class LogExtraFactory(logging.LogRecord):
    # this class allows to create log rows with log_extra in the record

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        task = asyncio.Task.current_task()
        log_extra = getattr(task, LOG_EXTRA_CONTEXT_KEY, None)
        if not log_extra:
            return
        for key in log_extra:
            self.__dict__[key] = log_extra[key]

logging.setLogRecordFactory(LogExtraFactory)

Итоги:
  • В Яндекс.Такси (да и повсеместно в Яндексе) активно используется asyncio. Важно не только уметь его использовать, но и понимать его внутреннее устройство.
  • Выработайте в себе привычку читать чейнджлоги всех новых версий языка, думайте, как вы можете облегчить жизнь себе и коллегам с помощью нововведений.
  • При работе со стандартными библиотеками не бойтесь залезать в их исходный код и разбираться в их устройстве. Это очень полезный навык, который позволит вам глубже понять работу модуля и откроет новые возможности в реализации фич.

Преподаватели Школы бэкенда съели не один пуд соли и набили уйму шишек в асинхронной работе сервисов. Они расскажут студентам об особенностях асинхронной работы Python — и на уровне применения на практике, и в части разбора внутренностей пакетов.

Книги и ссылки


В изучении Python вам могут помочь:
  • Три книги: Python Cookbook, Diving Into Python 3 и Python Tricks.
  • Видеолекции таких столпов IT-индустрии, как Реймонд Хеттингер и Дэвид Бизли. Из видеолекций первого можно выделить доклад «Beyond PEP 8 — Best practices for beautiful intelligible code». У Бизли советую посмотреть выступление про asyncio.

Чтобы обрести более высокоуровневое понимание архитектуры, прочтите книги:
  • «Высоконагруженные приложения». Здесь подробно расписаны вопросы взаимодействия с данными (кодирование данных, работа с распределёнными данными, репликация, секционирование, транзакции и т. д.).
  • «Микросервисы. Паттерны разработки и рефакторинга». В книге показаны основные подходы к микросервисной архитектуре, описаны недостатки и проблемы, с которыми приходится сталкиваться при переходе с монолита на микросервисы. В посте про них почти ничего нет, но всё равно советую прочитать эту книгу. Вы начнёте понимать тенденции в построении архитектур и изучите основные практики декомпозиции кода.

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

Стендап закончился, все разошлись по рабочим местам.

habr.com

кто такой Frontend, Backend и Full Stack разработчик

Открываете новую вкладку браузера, набираете адрес сайта, который необходим, нажимает клавишу Enter. Сайт загружается моментально. Хорошо сконструированные страницы понятны, а визуальная составляющая впечатляет, простая и понятная навигация.

Кто все это создал? WEB-разработчик.

Первый сайт появился 6 августа 1991 года, а сейчас их уже почти миллиард. WEB-разработчики строят, анализируют и поддерживают каждый сайт.

Сайт – необходимый компонент любого конкурентоспособного бизнеса. Тренды и специфика WEB-разработки меняется каждый сезон и работы у WEB-разработчиков всегда много.

Но как понять, кто и чем занимается и на кого следует учиться? Людей, которые занимаются WEB-разработкой много. К ним относятся Front-end, Back-end, Full Stack WEB-разработчики. Поверхностно интересуетесь HTML, JavaScript или Python? Самое время понять, что к чему в WEB-разработке. Кто и за что отвечает во время работы и создания сайта.

Front-end разработчик

Пользователи видят и взаимодействуют только с той частью сайта, над которой работали Front-end разработчики. Все, что видит пользователь на сайте от шрифта, фона, выпадающего меню, слайдера создано с помощью HTML, CSS и JavaScript, контролируется браузером, который установлен на компьютере пользователя.

Навыки и инструменты

Front-end разработчик создает «лицо» сайта, часть, которую видит пользователь. Он учитывает опыт взаимодействия пользователей с сайтами. Чтобы пользователь был доволен всем и понимал, как работать с сайтом, разработчику необходимо знать языки программирования HTML, CSS и JavaScript, а также уметь работать с фреймворками Bootstrap, AngularJS, библиотеками типа jQuery и технологией Ajax, которая позволяет обращаться к серверу без перезагрузки страницы, а это живой поиск, элементы интерфейса, динамическая подгрузка сайтов.

Можно даже сказать, что Front-end разработчик отвечает за внешний вид, фасад сайта, над которым работали Back-end разработчики, если представить Интернет-сайт как здание.

Front-end разработчик совместно работает с дизайнерами и UX-аналитиками над разработкой сайта. Ему важно общаться с другими командами разработчиков, чтобы лучше понимать цели и потребности бизнеса и потом предлагать решения, которые будут лучше соответствовать целям бизнеса.

Все, что Вы сейчас видите на сайте Академии ШАГ создано Front-end разработчиками. Дизайнер создал логотип и графику, фотограф предоставил фотографии, копирайтер придумал тексты, а Front-end разработчик собрал все воедино и перевел на язык WEB.

BackEnd Developer

Итак, что же заставляет работать сайт? Где собираются и находятся основные данные, регистрации, заказы пользователей на покупку и заявки на обратный звонок? Back-end часть сайта состоит из сервера, приложения и баз данных. Back-end разработчик строит и поддерживает технологии, которые управляют всеми компонентами сайта.

Навыки и инструменты Back-end разработчика

Для того, чтобы сервер и базы данных работали вместе, разработчик использует серверные языки программирования вроде PHP, Ruby, Python, Java, или .Net, инструменты MySQL, Oracle и SQL Server.

В описании вакансий Back-end разработчиков часто встречаются требования по работе с РНР фрейморками, опытом работы с системами контроля версий, например, Git.

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

Сервер отправляет информацию компьютеру, когда пользователь начинает перемещаться по страницам сайта, что выражается в отображении необходимой страницы. Вы читаете, к примеру, о направлениях обучения в Компьютерной Академии ШАГ, значит Вы нажали на кнопку «Направления обучения» на сайте Академии и выбрали, к примеру, «Профессиональные спецкурсы», далее «Разработка и продвижение WEB-проектов», именно по этой причине Вы и находитесь на соответствующей странице. Этот сложный процесс – результат кропотливой работы Back-end разработчика.

Full Stack Developer

Основная идея в том, что Full Stack разработчик работает кросс-функционально с полным стеком технологий, и с Front-end и с Back-end. Идею Full Stack разработчиков стали активно продвигать в компании Facebook несколько лет назад.

Некоторые говорят, что работа с серверной и клиентской частью сайта открывают больше возможностей. Но эта работа не без вызовов. Full Stack разработчик должен разбираться и в серверной и в клиентской части сайта одинаково хорошо.

Однако есть мнение, что быть одинаково  хорошим в двух областях сложно, в какой-то одной области разработчик будет лучше.

Инструменты и навыки

Чаще всего Full Stack разработчик работает  над серверной частью сайта и разбирается в Front-end разработке, что позволяет ему контролировать то, как будет выглядеть весь контент на стороне пользователя.

Чтобы проиллюстрировать комплексность Full Stack разработчика приведем несколько фактов. Нехватка специальных инструментов, зависимость от клиента или проекта, Full Stack разработчики должны знать и иметь представление о том, как работает WEB: настройки и конфигурации сервера, оживлять дизайн с помощью CSS, писать на JavaScript. Используя эти инструменты, разработчик определяет клиентскую и серверную часть сайта и отвечает за принятые решения, касательно выбранных технологий. Full Stack девелопер отвечает за работу сайта и за то, что происходит с пользователем на сайте: от времени загрузки сайта до его структуры и интерактивности.

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

И напоследок, отметим, что за последние 10 лет потребность в WEB-разработчиках возросла на 20%, а это больше, чем в среднем по всем специальностям.

В Компьютерной Академии ШАГ студенты получают знания как по Front-end, так и Back-end разработке. 

На занятиях студенты погружаются в атмосферу разработки и создания веб-сайтов. Они изучают HTML, CSS, JavaScript, PHP, Ruby, Python, Java, чтобы создавать сайты, которые помогают пользователям и бизнесу в разных странах.

 

vitebsk.itstep.by

Что такое backend и frontend?

В этой статье поговорим, что такое backend- и frontend-разработка, чем они различаются, какие технологии могут в себя включать.

Что такое frontend?

Фронтендом (англ. front-end) называют клиентскую сторону пользовательского интерфейса по отношению к программно-аппаратной части сервиса.

Говоря простым языком, frontend — это разработка функциональности и пользовательского интерфейса, работающих на клиентской стороне приложения или веб-сайта. Сюда относят всё, что пользователь видит, открывая веб-страницу. Для создания удобного и востребованного продукта фронтенд-разработчики сотрудничают с программистами, дизайнерами, UX-аналитиками.

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

Вот, взгляните:

К frontend-разработке относят: • HTML — язык разметки документов, посредством которого формируют структуру веб-страницы: заголовки, списки, абзацы и т. п.; • CSS — язык для стилизации внешнего вида документа, его описания. Благодаря CSS-коду браузер понимает, как отображать элементы. С помощью CSS задаются цвета и параметры шрифтов, определяется расположение блоков веб-сайта и т. п. Также он даёт возможность выводить один и тот же документ в нескольких стилях, например, для печати и т. д.; • JavaScript — язык, в буквальном смысле оживляющий веб-страницы. Он обеспечивает реагирование интерфейса на действия пользователя, обрабатывает клики мышкой, нажатия клавиш, перемещения курсора. Также посылает запросы на сервер, загружает данные, позволяет вводить сообщения и много чего ещё.

Что такое backend?

Бэкенд (англ. back-end) — это программно-аппаратная часть сервиса. Это набор средств, с помощью которых происходит реализация логики веб-сайта. Это то, что скрыто от наших глаз, т. е. происходит вне компьютера и браузера.

Как только вы введёте запрос на странице поисковика и нажмёте клавишу «Ввод», frontend закончится и начнётся backend. Ваш запрос отправится на сервер Яндекса или Google, т. е. по месту расположения алгоритмов поиска. Именно там и происходит вся «магия». Но вот, на мониторе появляются данные, которые вы запрашивали, — это происходит возвращение во frontend.

Также можно сказать, что backend — это процесс объединения пользователя с сервером.

Что касается backend-разработчика, то он использует любые инструменты, которые доступны на его сервере. На практике программисты применяют любой из универсальных языков: PHP, Ruby, Python, Java. Кроме того, при backend-разработке задействуются СУБД (MySQL, PostgreSQL, SQLite, MongoDB и пр.).

В зависимости от особенностей продукта меняются и обязанности backend-разработчика.

И что в итоге?

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

Вывод прост: современная разработка — это многоуровневый и сложный процесс, который можно разделить на клиентскую и серверную части. А в арсенале frontend- и backend-разработчиков есть множество инструментов. Окончательный выбор средств веб-разработки зависит от сложности проекта и поставленных задач.

Ну и, разумеется, последняя картинка, которая позволит вам окончательно понять разницу между frontend и backend. И улыбнуться при этом))

Кстати, если хотите узнать о том, как происходит взаимодействие между фронтендом и бэкендом, вам сюда.

otus.ru

Разница между Front end, Back end, Full stack разработчиками

Опытного IT рекрутера точно нельзя испугать модными словечками или техническими выражениями, а вот начинающему стоит разобраться во всех тонкостях IT сферы. Узнайте, чем занимаются «front end», «back end», «full stack» разработчики, чтобы быть уверенными в том, что вы с твердыми знаниями подходите к выполняемой роли специалиста. Какие-то различия — существенные, какие-то несут в себе большое количество тонкостей, но все они позволят вам понять текущие потребности IT-индустрии.

На сегодняшний день создается все больше и больше различных веб-инструментов, программ и сервисов. Спрос на разработчиков растет с каждым днем с такой же прогрессией. В связи с этим выросла потребность в IT рекрутерах.
Сегодня мы поможем вам понять, кто такие «front end», «back end», «full stack» разработчики.

Front End разработчик

Когда вы видите наполненный жизнью сайт с привлекательным интерфейсом, вам становится интересно, кто же этот волшебник, который так профессионально с ним поработал. Именно в эту минуту вы думаете о front end разработчике, даже об этом не зная. Любое визуальное отображение, с которым вы работаете, производится потом, кровью и слезами front end разработчика. GUI или «Графический пользовательский интерфейс» — это визуальный фронт, на котором отображается экран, позволяющий клиентам взаимодействовать с программным обеспечением. Любое из сегодняшних устройств с прилагательным «умный», будет иметь интерфейс, который запускает приложения, предоставляет доступ к веб-сайтам, и все это создается разработчиком front end.

UI дизайнер или дизайнер «Пользовательского интерфейса» создает пространство, в котором происходит взаимодействие между человеком и машиной. С точки зрения мастерства, данный процесс требует от программиста сочетания навыков программирования и дизайна, и часто этот человек вовсе не должен быть программистом.

Дизайнер UX ссылается на конструктор «User Experience», в котором описывается путь, который пользователь использует, и его общая эффективность. Front end разработчики также должны думать над общим удобством использования, полезностью и опытом, которые пользователь имеет при взаимодействии с программным обеспечением и этот конкретный сегмент требует, безусловно, самых «гибких навыков» программиста. Тем не менее, эта работа может выполняться также не программистами.

Responsive design — очень трудная работа. Она относится к процессу адаптации дизайна интерфейса к любому экрану, от широкоэкранных настольных компьютеров и ноутбуков до мобильных устройств, таких как планшеты и смартфоны.

Традиционно разработчиком front end является человек, которому удобно работать как с дизайном, так и с кодированием. Другими словами, тот, кому комфортно работать с использованием простых инструментов проектирования и умеет писать структуру веб-сайта в HTML и стилизовать его с помощью CSS-кода. На данный момент самой большой проблей для front end разработчиков является то, что веб-сайт, построенный только с использованием HTML и CSS, будет полностью статическим. Если вы думаете о stickman на пустой странице в качестве веб-сайта. HTML будет достаточно, чтобы нарисовать его форму и CSS будет использоваться для его стилизации (сгустить, покрасить его, добавить одежду и т.д.). Но чтобы заставить stickman двигаться и реагировать, front end разработчику как следствие потребуется что-то еще.

По мере усложнения и совершенствования веб-приложений спрос на полный язык программирования Turing в интерфейсе растет с большой скоростью, поэтому для анимации программистов — stickman используют Java Script, который является языком программирования на стороне браузера.

Back End разработчик

В прошлом back end состоял из физического компьютера и программного обеспечения, предназначенного для запуска запросов через него. Сегодня этот процесс стал куда более сложным: облачные серверы являются более распространенными, трудоемкие базы данных и приложения микросервиса, но в принципе back end по-прежнему остается процессом объединения сервера, приложения и базы данных для решения проблемы.

Весь процесс прочно закреплен в логике, сети процессов и запросов, разрешаемых за считанные секунды, чтобы дать вам, как пользователю, определенный желаемый результат. Выберите рейс из Нью-Йорка в Гонконг и вы находитесь в зоне front end, нажмите клавишу поиска и вы перемещается в back end, чтобы правильно вернуть вам лучший, самый короткий, самый дешевый рейс в мгновение ока. Как только результаты будут отображаться для вас, вы снова будете во front end. Если поисковый запрос выдал вам своевременный и полезный результат, и вы не представляете, благодаря чему это произошло, спасибо разработчику за завершение поиска, а также бесчисленное множество других вещей, упрощающих вашу жизнь.

У back end разработчика может быть множество обязанностей. От создания базы данных и интеграции до обеспечения безопасности, а также технологий резервного копирования и восстановления, также back end разработчики создают мозг приложения.

Back end разработчики используют различные технологии для кодирования основной вычислительной логики информационных систем, конкретного программного обеспечения или веб-сайтов. Они могут включать Java, C#, Python и языки баз данных, такие как SQL и многие другие. Back end отличаются от разработчиков front end тем, что работа back end разработчика полностью лишена какого-либо визуального дизайна и основывается на логике и архитектуре программного обеспечения, целью которой является предоставление определенного результата. Иногда возникают проблемы с объединением back end и front end, что приводит нас к человеку, который может обработать обе части.

Разработчик Full Stack.

Разработчик full stack — это тот, кто хорошо работает как с бэкэнд, так и с фронтэнд. «Чтобы быть более конкретным, это означает, что разработчик может работать с базами данных, PHP, HTML, CSS, JavaScript и всем, что находится между ними, также принимая во внимание преобразование проектов Photoshop в интерфейсный код», — говорит Sitepoint.

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

Full stack разработчик также может быть отличным техническим специалистом. Он имеет широкое понимание технологий и может предвидеть, какие будущие усилия по набору персонала должны быть или какие технологии должны быть реализованы в дальнейшем.

www.itrecruiter.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *