Що роблять бекенд програмісти

У чому полягає робота бекенд розробника?

Чим займається бекенд-розробник? Бекенд-розробник – це фахівець, який займається розробкою функціональної частини веб-сайту або програми. Його робота полягає у створенні серверної частини програми, налаштуванні бази даних та розробці API для взаємодії з фронтенд-рішенням.

Що повинен робити бекенд?

Backend розробник займається написанням та підтримкою серверної частини веб-додатків. Це включає управління базами даних, реалізацію логіки програми і забезпечення зв'язку між інтерфейсом користувача і сервером.

Що включає бекенд?

Бекенд-Розробка передбачає створення скриптів для сервера, на якому розміщується сайт, внутрішнього наповнення системи веб-ресурсу, роботу з серверними технологіями (проектування та розробка програмної логіки, взаємодія з базами даних (БД), робота з архітектурою і т. д.).

Highload.today
Backend-розробка: що це таке? – Highload.today Що таке backend технологія? Необхідні навички та знання

Бекенд-розробник (Back-end developer)

Бекенд-розробник (Back-end developer)

Бекенд-розробник (з англ. back-end (дослівно «задня частина») developer) займається програмно-адміністративною частиною веб-додатку, внутрішнім змістом системи, серверними технологіями – базою даних, архітектурою, програмною логікою. Зазвичай бекенди самі адмініструють свої системи, якщо цей обов'язок покладено на окремого фахівця — DevOps, тоді backend-програміст може сконцентруватися на написанні безпосередньо коду. Варіанти назви професії: backend-програміст, девелопер або просто backend бекенд.До речі, нещодавно центр профорієнтації ПрофГід розробив точний тест на профорієнтацію, який сам розповість, які професії вам підходять, дасть висновок про ваш тип особистості та інтелект. Професія підходить для тих, кого цікавить інформатика (див. вибір професії з інтересу до шкільних предметів).

Бекенд-розробник – «боєць невидимого фронту»

Багато сучасних сайтів, веб-додатків (ті, що запускаються не на шаблонних конструкторах) стали дуже складними, тому над ними працює ціла команда фахівців. Щоб створити повноцінний, красивий, функціональний та зручний для користувача сайт, необхідна узгоджена робота дизайнерів, фронтенд- та бекенд-розробників та тих, хто всю цю роботу контролюватиме, щоб вийшов потрібний бізнесу додаток: аналітиків, проджект-менеджерів або самих замовників, представників якогось бізнесу. Поділ праці прискорює роботу зі створення сайту або веб-додатку та полегшує його обслуговування.

Говорячи образно, backend-розробка – це вся начинка автомобіля, прихована від користувача: системи – паливна та охолодження, двигун, коробка передач, вентиляція та кондиціювання. А все, що бачить і чим користується користувач: налаштування бортових систем, 2-3 педалі, кермо, гарний кузов і салон – це frontend-частина.

Професія бэкенд-разработчик

Якби ця стаття вийшла не на Хабре, а в освітньому журналі, я почав би її так: «Згадайте сайти, які вам подобаються, на яких зручна навігація та приємний інтерфейс. А чи знаєте ви, що це лише верхівка айсбергу…». Але на Хабрі це знають, мабуть усі, тому жодної лірики.Бекенд будь-якого веб-проекту – це складна система, яка дозволяє додатку швидко працювати, якісно шукати, швидко віддавати інформацію користувачеві, надійно і безпечно зберігати дані і при необхідності працювати з іншими зовнішніми системами. Це як швейцарський годинник: купує його за стиль і шильдик, але цінителі знають, що під стриманим циферблатом криється чарівний світ годинникового механізму. І бекенд-розробники – це маги механізмів, організмів, кишок, нутрощів або як ви ще це називаєте у веб-додатків. Ех, без лірики не вдалось!

Коротше сьогодні розбираємо чергову професію в серії «Професія…». Отже, а що, якщо піти у бекенд-розробники?

Хто це?

Якщо говорити академічно, то бекенд-розробник – це програміст, який відповідає за внутрішню та обчислювальну логіку веб-сайту чи веб-додатку, а також іншого програмного забезпечення та інформаційних систем. Строго кажучи, бекенд буває не тільки у веб-рішень, він є і в робочого столу, і в мобільних додатків, т.к. по суті бекенд – це все, що відноситься до програмно-апаратної частини сервісу. Але історично так склалося, що бекенд та фронтенд почали особливо явно виділяти саме у веб-розробці. А оскільки це ще й найпопулярніша на даний момент сфера, то і ми говоритимемо саме про інтернет (для десктопу багато тез теж будуть справедливі, а про мобільних розробників ми з вами поговоримо в одному з випусків окремо).

Бекенд-розробник створює компоненти та функції, які доступні користувачеві програми або сайту через інтерфейс. Простіше кажучи, бекендери – це програмісти, які розробляють все те, що не бачить і безпосередньо не чіпає користувач.Тобто гарна форма введення даних або кошик інтернет-магазину — це фронтенд, а зберігання даних у СУБД, зв'язування полів форми реєстрації та кошика, інтеграція з платіжним шлюзом, автоматичні листи, підвантаження та оновлення контенту — це все бекенд. Тому, якщо форма реєстрації почала давати помилку бази, винен… тестувальник 🙂 (чому ми теж розповімо в черговій серії).

За що відповідає бекенд-розробник:

  • забезпечення коректної роботи всіх функцій сайту та його обчислювальної логіки;
  • організація та робота з базами даних за допомогою СУБД;
  • розробка базової логіки та алгоритмів роботи програми;
  • API;
  • необхідні інтеграції із зовнішніми сервісами;
  • тестування та налагодження програми та окремих компонентів.

Фронтенд-розробники фарбують лампу в жовтий колір і втирають бекенду, що лампочка працює, але тільки вдень.

Бекенд-розробники дивуються, звідки у всіх взялися проблеми з цими лампочками, згадує, що забув задеплоїти світло в базу даних, заспокоюється і валить вину на фронтенд.

Де потрібний?

Як і у випадку з фронтенд-розробкою, абсолютно скрізь, де є сайт або програма, яка в Інтернеті взаємодіє з користувачем. Інша річ, що всім потрібні бекендери різного рівня: в офісі умовної соціальної мережі або великого сайту оголошень бекенд-розробник зобов'язаний не просто мати базові навички, а й працювати з високими навантаженнями, мікросервісною архітектурою та контейнеризацією (Docker, Kubernetes), знати системи моніторингу ( типу Zabbix, Grafana), мати навички Scrum (опційно для конкретних компаній). А для невеликого інтернет-магазину цілком достатньо зв'язки PHP-Ajax-потрібна СУБД-трохи HTML, іноді ще менше. Зрозуміло, як і оплата праці, і вимоги до досвіду також різні.

Традиційно на «Хабр Кар'єрі» ми знайшли 444 вакансії бекенд-розробника, що майже вдвічі більше, ніж у фронтенді. На hh.ru – близько 1800. Загалом, на робочих місцях на вас вже чекають фронтендери, у яких пошук по сайту відпрацьовує дві години 🙂 А якщо серйозно, у компанії може бути 2-3 бекенд-розробника на одного фронтенда, особливо якщо мова йде про програми зі складною внутрішньою логікою та бізнес-логікою (інтернет-магазин, CRM-ERP, корпоративний портал тощо).

Середня заробітна плата

Заробітну плату дивитимемося також на «Хабр Кар'єрі». Візьмемо дані за друге півріччя 2019 року, незалежно від володіння тим чи іншим стеком.

Рівень спеціаліста Середня заробітна плата
Стажер (Intern) 35345 руб.
Молодший (Junior) 55241 руб.
Середній (Middle) 105048 руб.
Старший (Senior) 168350 руб.
Ведучий (Lead) 185335 руб.

Якщо порівняти із заробітною платою фронтендерів, то зростання незначне, від кількох сотень рублів до 6000 руб. (У Мідл). Але це реально дуже середні значення, багато що залежить саме від стека програмування, додаткових навичок, досвіду та основної мови розробки. До речі, для всіх рівнів бекенд-розробника на першому місці стоїть PHP, і ми про нього поговоримо.

Базові вимоги до професіонала

Вимоги до бекендер ще більш чутливі до особливостей компанії та її бізнес-процесів, ніж у фронтендера. Іноді це можуть бути дуже дивні на перший погляд такі речі як «розуміння принципів роботи рибного холодильника як підприємства», «знання основ продажів або досвід у продажах», «блискуче знання JavaScript, CSS та HTML». Але це виглядає шалено і відразливо тільки при першому підході.Насправді, бекенд-розробник справді більше занурений у бізнес-процеси, повинен не тільки розробляти код у відповідність до них, але й підлаштовувати якісь речі під конкретні завдання, розуміти, як воно працює зсередини. Якщо ви ніколи не бачили вирву продажів і не розумієте, що це за фігня, ви ніколи не зможете розробити її логіку разом з фільтрами, зрізами та переходами (навіть якщо у вас буде відмінне ТЗ, розібратися складно). Ну а в прикладі з «блискуче знання JavaScript, CSS і HTML» все просто: ймовірно, керівник не дуже довіряє свого іншого розробника і готовий переглянути підхід до розробки. Таке нерідко трапляється у невеликих компаніях.

Але є і базовий набір вимог, які бекенд-розробник побачить практично в будь-якій вакансії.

  • Знання хоча б однієї "серверної" мови програмування: PHP, Go, ASP.NET, C/C++, Python, Ruby, Java. У деяких випадках достатньо знання JavaScript для бекенда (Node.js), але це швидше як плюс, ніж як пункт.
  • Знання API (REST, SOAP – все рідше).
  • Розуміння принципів роботи серверів Apache, NGINX, IIS та ін.
  • Навички написання юніт-тестів та покриття коду тестами.
  • Основи мережевої безпеки та знання інструментів її забезпечення.
  • Знання популярних веб-фрейморків, які здатні вирішувати завдання розробки конкретної програми.
  • Навички написання запитів до БД та проектування баз даних.
  • Знання основ фронтенду – і це не плюс, а обов'язковий пункт, інакше вам доведеться вкрай непросто проектувати та писати додаток.
  • Адміністрування UNIX або знання Linux (можна будь-якого одного дистрибутива).
  • Знання принципів роботи HTTP (кешування, авторизація, структура повідомлень, заголовки, коди відповідей та ін.)
  • Модель OSI.
  • Навички складання та оцінки технічного завдання (ТЗ) – дуже важлива навичка, яка необхідна для збору найточнішої інформації про вимоги до ПЗ.

До речі сказати, серед бекендерів багато хороших, міцних математиків, тому що бекенд-розробка — наука точна, і якість результату сильно залежить від того, наскільки вивірені будуть обрані вами та застосовані алгоритми, патерни, цикли, функції тощо.

Топ-5 затребуваних технологій у фахівців за даними Хабр Кар'єра, 2 півріччя 2019 року, нижній рядок — додаткові скіли.

Принцип формування списку: користувачі, вносячи дані про заробітну плату, вказують скіли, які мають пріоритет (що вони вміють робити!). Тобто це не вимоги роботодавця, а навички спеціалістів кожної категорії.

Як бачите, компанії готові брати стажерів з базовими вузівськими C, C++ і C#, але надалі віддають перевагу спеціалістам з «робочим набором» бекендера. Зверніть увагу на інтерес до контейнеризації та високонавантажених систем.

До речі, ось вам черговий роадмап, але вже для бекенду розробника (решта теж є на сайті — на мою думку, це одне з кращих і системних, що мені доводилося бачити на цю тему). Розглядайте, роздруковуйте і вперед до вершин бекенда.

Важливі особисті якості

Бекендер добре, він може бути інтровертом 🙂 Його зона роботи з користувачами зведена до мінімуму, в основному, всі робочі контакти з менеджерами або колегами. Ці хлопці нерідко працюють по ТЗ і роблять усе так, як це прописано в документі або так, щоб отримати стан, максимально близький до цільового (ТЗ, знаєте, теж бувають недосконалі, а то й зовсім не…).

Однак є набір якостей, без яких про направлення бекенду думати не варто.Вони вам можуть здатися чимось на зразок якостей співробітника, який потрібен «молодій команді, що динамічно розвивається», але ні, мова саме про внутрішні імперативи, які допоможуть не просто добре виконувати роботу, а й робити це з внутрішнім комфортом (а не на «відв'яжися» »).

  • Відповідальність. Дійсно, на бекендері лежить відповідальність буквально за все: щоб дані збереглися, щоб реляційні таблиці працювали як треба, щоб часові пояси враховувалися, щоб сайт був спритним і т.д. І якщо крива навігація від фронтендера призведе до пари злісних вигуків користувачів, то помилка бекендера може коштувати дуже дорого — у прямому розумінні (наприклад, якщо бізнес-дані з якоїсь причини перестануть зберігатися або не спрацює поділ прав доступу до якогось CRM- системі).
  • Уважність та увага до дрібниць. Знову ж таки, дрібниць у бекенді не буває, тому необхідно ретельно проектувати зв'язність роботи всіх компонентів і не упустити нічого.
  • Працездатність. Прокрастинація — небезпечний ворог бекендера, він має вміти зосереджено працювати, іноді в украй стислий термін, тому «пиляти код із лінню» це, будь ласка, у пет-проект чи вже в стані тимліду (там інших завдань вистачає).
  • Логічне мислення та аналітичний склад розуму. Воно й зрозуміло.
  • Вміння доводити справу до кінця, націленість на результат. У бекенді важливий результат – коректно і очікуваний додаток.
  • Здатність перемикатися на макрозавданнях. Нерідко буває, що потрібно залишити код однієї частини проекту та реалізувати досить велику функцію. Це непросто, тому що програміста вже занурено в архітектуру та логіку. Здатність перемикатися без особливих проблем для завдань практично джедайська.
  • Навички планування та виконання плану.Бекенд будь-якого проекту – це збірка різнопланових завдань. І якщо ви єдиний бекендер проекту або у вас із колегами слабо реалізовано поділ праці, тільки планування та врятує від авралів, факапів та зриву дедлайнів. Жорстке до себе і часу планування – запорука спокійної роботи практично без переробок (які у бекендерів трапляються частіше за інших).
  • Вміння працювати в команді. Вам потрібно буде взаємодіяти з єдиною командою розробки єдиного додатку, а значить, дискусії, але не конфлікти, рефакторинг, але не образи, відстоювання своєї позиції, але не бойкоти. Якщо злий інтровертний бекендер чудово зробить свою роботу, закоммітить і вмиє руки, його працю користувачі ще довго не зможуть оцінити — тому що потрібно «збирати» проект у складі всієї команди, а не відгороджуватися за принципом «до фронтенду ні ногою».

Необхідність знання іноземних мов

Ось що було написано для фронтенд-розробника.

Для будь-якого програміста вкрай бажана англійська мова не нижче за upper-intermediate з ухилом у технічну англійську. Так ви зможете читати в оригіналі численні рекомендації Google та інших компаній для оптимальної розробки (дуже багато корисної документації!), самонавчати за допомогою зарубіжних лекцій, спілкуватися з колегами на форумах, ставити запитання, а також читати книги з юзабіліті та дизайну, серед яких дуже багато крутих англомовних і поки що не перекладених видань.

Це ж справедливо і для бекендера, навіть більшою мірою. У коментарях до попередньої статті помітили, що рівень upper-intermediate завеликий для айтішника, достатньо і нижче. Я суджу по собі та за рівнем підручників. Скажімо, від intermediate до upper-intermediate крок не виглядає прірвою і рівень «на побалакати» береться легко.А ось від upper до advanced – прірва і за складністю, і за лексикою. Втім, якщо вам норм читати і розуміти, що читаєте за іншого рівня, ніхто вас іспит складати не змусить, користуйтеся.

Де вчитись

В принципі, ті ж технічні виші, курси, самоосвіта та корпоративні університети. Але є важливі нюанси.

  • Якщо фронтент-розробником можна стати і після непрофільного вузу (будівництво, дизайн, економіка та ін.), то бекендер набагато складніше. Ідеальна освітня основа для бекенд-розробника — математична, фізична та власне ІТ освіта. Саме вони дають відмінну базу для розуміння алгоритмів, функцій, патернів, обчислювальних процесів тощо.
  • З курсами справа теж сумніша — ви можете почати вивчати якусь мову (наприклад, PHP або Java) і навіть зробити якийсь фулстековий міні-проект, але тільки досвід реальної роботи дасть повне розуміння функціонування та взаємодії всіх компонентів, тому що у бекенда занадто багато деталей та підводних каменів (навіть незважаючи на круті інструменти розробки).
  • Саме для бекенда найкращим освітнім шляхом мені бачиться вивчення основ серверної мови та шлях від стажера в компанії, де є наставник/ментор за фахом. На реальному проекті та вузьких завданнях ви швидше зрозумієте, що до чого.
  • Ніхто не скасовує невеликі Open Source проекти, в які можна комітити.
  • І, звичайно, має бути свій сайт (пет-проект), який стане головним тренувальним плацдармом. Шлях має бути не найпростішим, тому обирайте ту тематику, яку, окрім самої розробки, вам буде цікаво розвивати. Наприклад, якщо ви захоплюєтеся спортом і здоровим способом життя, розробте додаток-щоденник із лічильниками, конекторами до яких-небудь датчиків, ачивками тощо.Це буде корисно та захоплююче (а іноді з таких сайд/пет проектів виростають комерційно успішні стартапи).

Кращі книги та засоби навчання

Вибирати засоби навчання необхідно виходячи з обраної мови програмування та актуального в конкретний момент стеку. Загальні поради такі.

  • Базова книга з вашої мови програмування — мені подобаються видання O'Reilly, багато хто перекладений видавництвом «Пітер».
  • Аналогічно базові книги за вашим стеком.
  • Кукбуки (cookbook) з мов та рекомендації корпорацій, статті в блогах і т.д.
  • Бек Кент, Екстремальне програмування. Розробка через тестування – відмінна книга для будь-якого розробника в принципі, але особливо для бекендера. Перейнятися філософією TDD дорого варто.
  • Джоел Х. Спольски – можна читати його блог, можна ще на просторах Рунета знайти електронну книгу "Джоел про програмування" – збірка постів з блогу російською.
  • Роберт Мартін "Ідеальний програміст", "Чистий код" – перекладна книга від "Пітера" гарна, але в оригіналі стиль і жарти взагалі незрівнянні.
  • Мартін Фаулер та колектив авторів «Шаблони корпоративних додатків» — «доросла» книга для джавістів, але не завадить жодній серверній мові як збірка інсайтів та крутих знахідок.
  • Безкоштовні курси та відео, яких нескінченно багато на Youtube російською та англійською мовами. Просто слухайте, повторюйте, систематизуйте знання. Для початку підійдуть будь-які, дуже скоро ви навчитеся відрізняти круті речі від дилетантських.
  • webref.ru – дуже класний сайт для розробників Інтернету, розбирайтеся, навчайтеся.
  • codecademy.com — інтерактивний сайт для навчання розробці різними мовами програмування англійською, з найнижчого, нульового рівня.
  • ITc | співтовариство програмістів — вагон організованої інформації з курсами, лекціями та чим завгодно. Читайте коментарі, легко визначайте найкраще для навчання.
  • Бібліотека програміста — купа книг з будь-якої тематики.

Майбутнє бекендера

Майбутнє бекендера промальовується досить чітко та перспективно.

  • Стандартний шлях усередині свого стека: junior з односкладовими завданнями та запитами, middle з глибокими навичками програмування та відмінним володінням стеком, senior з проектуванням, архітектурами, високими навантаженнями та іншим кубернетесом, team lead з управлінськими навичками тощо. Це хороший корпоративний шлях, всередині якого можна змінювати компанії, проекти, галузі, рости та бути затребуваним.
  • Перехід на інший стек і вихід з Інтернету: часто саме бекенд-розробники освоюють Java, С/С++ і йдуть в «кривавий ентерпрайз», десктопні програми, розробку засобів розробки, нейромережі, комп'ютерний зір і т.д. Справді, бекендер простіше освоювати ці важкі технології та ЯП.
  • Перехід у фуллстек-розробку: бекендер ближче до фуллстека і зробити таку трансформацію можна непомітно.
  • Перехід у DevOps, DevSecOps, інформаційну безпеку — коли знаєш веб-програми зсередини як свої п'ять пальців, цей шлях виявляється логічним і прибутковим.
  • Перехід на менеджерські позиції, якщо є бажання та схильність до управлінських завдань.
  • Фріланс і своє програмне агентство для сміливих і в міру азартних хлопців. Можна непогано заробляти на аутсорс-розробці (особливо якщо йти у бік фуллстек-розробки).

Головне, що у вас не вийде – це бути поганим розробником та при цьому розраховувати на щось цікаве.Справа в тому, що кожна компанія чекає від бекендера відповідальності (уявіть собі помилки в коді банківської програми, якоїсь критично важливої ​​ГІС або системи онлайн-моніторингу — одразу посидіти можна) та здорового підходу до роботи. Філонити чи говорити «так задумано» навряд чи вийде — за всієї зовнішньої непомітності роботи бекенда збій у ній найпомітніше.

Міфи професії

▍Бекенд — це дуже складно

Спірне питання. Частина розробників стверджують, що він простіше завдяки засобам розробки, незліченним бібліотекам та низькому рівню динамічності, інша частина боїться підійти до бекенду в принципі. Правда, як завжди, посередині: швидше, стек бекенд-розробника різноманітний і має різноманітні компоненти, але, по-перше, не все потрібно в проекті, по-друге, варто зрозуміти щось одне, і ось уже всі взаємозв'язки очевидні, знання нанизуються на єдиний стрижень. У будь-якому випадку спробувати себе в бекенді потрібно – навіть якщо ви розгорнетесь і виберете інший тип розробки, отримані знання допоможуть вам у роботі.

▍Бекенд-розробник отримує мільйони

Це загальний міф про програмування. Найбільша реальна заробітна плата у російського розробника, яку мені доводилося бачити на власні очі – це 540 тис. руб. на місяць (С/С++, зарубіжний проект, системи комп'ютерного зору, кандидат наук, віддалення), друга від нього – 400 тис. руб. (Delphi, віддалення, зарубіжний ентерпрайз, німецька мова як нативна). Інші дуже схожі на ті цифри, які я взяв із «Хабр Кар'єри» для своїх табличок. Мільйони отримувати ви будете тільки в тому випадку, якщо зійдеться: блискуче знання мови + талант + досвід та унікальні навички у вузькій сфері + проект, який готовий стільки платити.Таких хлопців одиниці і я не скажу, що їхня доля прекрасна: 99% їхнього життя робота, 1% — сон. Тому важливо усвідомити іншу тезу: бекенд-розробники затребувані і добре заробляють, краще за багатьох фахівців. Виходить, варто постаратися.

▍PHP — г@вно, PHP мертвий, PHP must die

Люблю цей холівар! Але при цьому знаю, як його лякаються новачки і прагнуть обійти цю потужну і багато в чому зручну мову та її фреймворки. Справа в тому, що на початку 2000-х-2010-х PHP був вкрай популярною мовою програмування у фрілансерів та інших джентльменів удачі від ІТ. На ньому написано море поганих дилетантських сайтів і додатків — але не тому, що мова погана, а тому що ці хлопці не були здатні використовувати її витончено та грамотно. Звідти й пішли ці міфи про поганість.

Звичайно ж, PHP простий у вивченні, живіший за всіх живих, на ньому написані і підтримуються сотні тисяч проектів, проектищ і проектиків і жити йому ще досить довго. Згідно з Stackoverflow PHP вибирають 25.8% професійних розробників. Та й по Octoverse GitHub мова досить стабільна за кількістю проектів:

До речі, по-справжньому добрі програмісти PHP високо цінуються у всіх сенсах цього слова.

Головна порада

Немає кращої мови для бекенда, навіть я вам скажу, що немає кращої мови програмування для ні для чого. Вивчайте ту мову, яка необхідна вам чи вашому майбутньому можливому роботодавцю (це можна дізнатися заздалегідь), тоді ви зможете швидко та елегантно вирішувати поставлені перед вами завдання. Не варто вивчати якусь технологію з принципу «усі побігли і я побіг». Який диктуватиме свої умови, звичайно, найкращі.

Ну що, є серед читачів досвідчені бекендери? Як воно? Чому вибрали саме цей бік розробки?

Related Post

Хто йде за роком Тигра: традиції та символікаХто йде за роком Тигра: традиції та символіка

Східний календар, заснований на 12-річному циклі, присвячений кожному із своїх тварин зодіаку. Рік Тигра вважається одним із найпотужніших і найвпливовіших років за китайським гороскопом. Це час змін, динамічності та рішучості.

Як садити квіти алісумЯк садити квіти алісум

Як посадити алісум Ямки повинні бути трохи більшого розміру, ніж кореневище з земляною грудкою, при посадці рослини сильно не заглиблюють, а відразу після посадки рясно поливають. При висаджуванні на клумбу