Я думав, що було б легко писати backend, якби я знав JavaScript. В моїй уяві це просто, тому що Node - це JavaScript і не потрібно вивчати нову мову програмування. Але як я помилявся. Вивчити backend не так і легко. В мене пішли роки на освоєння і я навіть скажу більше, я ще досі постійно вчусь. Раніше думав, що frontend і backend однакові, бо це ж просто код. Проте як виявилось, мої уявлення були великою помилкою. Frontend та backend - це взагалі різні звірі. Мені довелося зрозуміти та прийняти їх відмінності, для того щоб добре опанувати backend. Якщо пояснювати різницю між frontend та backend з точки зору реалізації, то можна сказати, що frontend - це сприйняття, а backend - це спілкування.
Frontend - це сприйняття
Коли ми розробляємо щось на стороні frontend, ми дбаємо про те, як користувачі сприйматимуть те, що ми створили. У нас постійно в голові питання: “ Це добре виглядає? Чи має сенс? Це зручно для користувачів? Це доступно? Це швидко?” Ми дбаємо про користувачів та витрачаємо велику кількість часу в пошуках відповіді на ці запитання. Постійно відбувається покращення того, що бачить користувач. З цією метою додаються такі речі як: відео / зображення / GIF; анімації; різноманітні кольорові теми. Але з кожною додатковою функцією ми також повинні враховувати і їх можливі наслідки: “Чи не занадто великі відео / зображення / gif-файли? Що робити, якщо хтось не підтримує наших анімацій? Користувач віддає перевагу світлій або темній темі?” Ми враховуємо багато речей з точки зору користувача.
Тому я кажу, що frontend - це сприйняття. Ми думаємо про наших користувачів. І ми будуємо для них. На жаль, деякі розробники обманюють себе думкою, що користувачі догадаються самі як має працювати той чи інший елемент. Вони створюють сайти для себе замість того, щоб створювати сайти для людей.
Backend - це спілкування
Дозвольте мені бути конкретним. Коли я кажу backend, я маю на увазі етап між frontend та базою даних. Також можна сказати шо це етап між frontend та будь-яким API, з яким потрібно зв’язатись.
В роботі над backend помітно, що тут ми не створюємо інтерфейси. Не потрібно заповнювати форми або натискати на кнопки. Backend - це не сприйняття. Ніхто нічого не повинен бачити. Просто потрібно зробити так, щоб все працювало. Як же реалізувати це завдання? Як описано вище backend існує для того, щоб дозволяти та створювати зв'язок між frontend та базою даних (або будь-яким зовнішнім API).
Уявіть собі телефонного оператора в перші дні. Якщо ви телефонували комусь по телефону, ці оператори повинні були вручну підключити ваш дзвінок до людини, якій ви телефонуєте. Якщо вони помилялись, то ви телефонували за невірним номером.
Коли ви створюєте backend, ви свого роду телефонний оператор. Ви з'єднуєте речі, щоб вони працювали. При розробці backend розробники часто задаються такими питаннями: “Яка інформація нам потрібна з frontend? Яку інформацію нам слід надіслати до бази даних / API? Чи правильно було збережено операцію в базі даних / API? Яку інформацію повернути від бази даних / API? Яку інформацію нам слід відправити назад до frontend? Чи рендеруємо веб-сайт? Якщо так, то яку сторінку ми повинні відображати? Що робити, коли інформація неправильна або відсутня?” Плюс до цього всього потрібно подбати про швидкість і надійність.
Висновки
Коли я почав вивчати backend, то впродовж перших днів уроків я виділив певну загальну закономірність. Я припускав, що речі працюють певним чином. Потім шукав в Google, як реалізувати речі таким чином, як я думав (результати Google були порожніми). Потім ламав це і сторював власну структуру. І все це для того, щоб дізнатися (набагато пізніше), що мій шлях неправильний. Майже завжди я помилявся, тому що підсвідомо покладався на свій досвід роботи з frontend, коли вивчав backend. Мені довелося переробити своє мислення. Ось що я порадив би вам. Не припускайте, що ви нічого не знаєте про те, що ви дізнаєтесь. Ви майже завжди помиляєтесь. Дійте повільно, щоб у вас був час та простір для навчання. Завжди перевіряйте, коли ви навчаєтесь, тренуйте мозок та пам’ять.
Посилання на джерело : https://zellwk.com/blog/frontend-vs-backend/