Все статьи Новости Поиск работы Истории Карьера Развитие Happy HR

Хто такий Back-end розробник і як ним стати? Короткий гайд професією

17.10.22 Карьера Увійти в ІТ 6 min reading

Цікавить сфера ІТ? Продовжуємо розповідати, які професії тут існують та як їх опанувати. Богдан Нижник, Back-end Developer в IT-компанії Brights, розповідає про роботу бекенд-розробника: плюси й мінуси, завдання, необхідні навички. А також дає поради початківцям, які хочуть розвиватися в цій професії.

Back-end Developer Богдан Нижник
Богдан Нижник


Про власний шлях у професію


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

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

Першу «справжню» роботу я знайшов на третьому курсі: почав із Trainee і виріс до Strong Junior. То була робота в команді, де був розробник, до якого я міг звертатися по допомогу, і це, як на мене, найкраще прокачує навички. Після цього змінив роботу лише раз і вже 3,5 роки я в Brights. Працюю в злагодженій команді, в якій почуваюся комфортно. Розробляв цікаві проєкти, наприклад для YASNO, PUMB, NAVI, ARX та інших компаній (не всі з них можу називати через NDA). 


Про те, чим займається Back-end Developer


Уявіть собі ресторан, у якого все добре: багато замовлень, відкриваються нові заклади, на черзі — франшиза та власний сервіс доставки. Але облік усе ще ведеться в блокнотах і електронних таблицях, складові бізнесу не узгоджені між собою, ентропія зростає. Стає зрозумілим, що все треба об’єднати в одну екосистему: персонал, фінанси, аудит, технологічні карти й навіть список алергенів. Як Back-end розробник ви якраз і займатиметесь проєктуванням і реалізацією такої системи з урахуванням усіх нюансів бізнесу. Звісно, має значення ваш досвід і рівень: наприклад, початківці рідко займаються саме проєктуванням, вони переважно виконують невеликі, чітко описані задачі.

Мені можна дорікнути, сказавши, що проєктуванням має займатись інший спеціаліст — наприклад бізнес-аналітик. Але якщо тільки відразу не потрапити в компанію з ідеально налагодженими процесами, реальність буде прозаїчнішою і займатися цим, швидше за все, доведеться вам. Також можна сказати, що на ринку вже є готові рішення описаної мною системи (Enterprise Resource Planning System). Це так, але зазвичай великий бізнес хоче мати власну систему обліку й керування з можливістю тонко підлаштувати її під свої потреби. 

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

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


Про плюси й мінуси професії


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

➕➖ Відповідальність. Робити великі й складні штуки — круто. Пропонувати рішення, обстоювати його, а потім дивитись, як воно втілюється в реальність — теж круто. Але все може зламатися. Існує багато методологій підтримки рівня якості. QA-інженери (тестувальники) будуть сумлінно намагатись зламати продукт перед тим, як це спробують зробити користувачі, в ідеалі ви покриєте кодову базу тестами, але ймовірність, що щось усе одно проскочить, завжди існує. І що важливіший і більший ваш внесок у роботу, то вища ціна помилки.

➕➖ Відсутність візуальної естетики. Якщо любите похизуватися своєю роботою, з цим можуть бути проблеми. Усе, що робить бекенд-розробник, заховане під верхніми шарами продукту, тож йому важко продемонструвати результат, видимий звичайній людині. Хіба що сказати: «Дивись, скільки даних я обробляю і віддаю, а час відповіді не перевищує ста мілісекунд». Для декого, зокрема для мене, — це плюс. Свого часу я перемкнувся на бекенд, бо тут не треба думати про те, який усе має вигляд, ідеально підганяти розміри й переживати, що на планшеті все попливе. Натомість у нас є своя естетика: коли в проєкті все чітко структуровано й швидко працює. 

➕➖ Предметна область. Коли я працював над проєктом для NAVI (Natus Vincere, українська кіберспортивна організація — прим. ред.), довелося заглиблюватись у предметну область кіберспорту. Щоб рахувати статистику, будувати графіки, показувати турнірні сітки, потрібно розуміти, за якими правилами все це працює. Предметна область може бути дуже різною: від криптовалюти чи, скажімо, інтернет-аукціону до страхування життя. Усе це може вам як подобатись, так і не дуже.  

➖ Пастка комунікації. На щастя в неї потрапляють не всі, це залежить від компанії та того, як у ній налагоджені процеси. Але може виявитись так: вам треба спочатку поговорити з клієнтом, потім з командою, а ще, можливо, з проєктним менеджером, з фронтендом обговорити структуру наданих вами даних, QA знайшов складний баг —  це теж потрібно проговорити. Не знаю жодного бекенда, якому б таке подобалось. Бо коли ж тоді писати код?


Про навички, необхідні Back-end розробнику


Дорожня карта з опанування потрібних бекенду технічних знань і hard skills має такий вигляд: 

  • насамперед потрібно дізнатись, як працює інтернет — вивчити алгоритми роботи HTTP, браузерів, DNS, розібратися, що таке домен і хостинг; 
  • обрати одну з операційних систем, спробувати працювати в терміналі, почитати про керування пам’яттю, концепції побудови мережі, керування I/O та POSIX; 
  • визначитися з мовою програмування та фреймворком (у мене це C# та ASP.NET Core, зараз також набирають популярність Node.js та Go); 
  • опанувати системи контролю версій та їхні хостинги (можете сміливо обирати GIT та GitHub);.
  • вивчити реляційні та NoSql бази даних, SQL та ORM;
  • опанувати API — REST, GraphQL, json, gRPC, OpenAPI, способи автентифікації; 
  • вивчити кешування — Redis, CDN;
  • опанувати написання тестів;
  • розібратися з СІ/CD та Docker;
  • вивчити вебсервери, наприклад Nginx;
  • також не слід забувати про безпеку даних, тому почитайте про CORS, CSP, хеш-алгоритми, HTTPS, SSL/TLS.

Чи потрібно знати математику? Якщо коротко, то так. Але все залежить від проєкту, вашого рівня й амбіцій. Може скластися так, що все обмежиться рівнем дев’ятого класу або навіть арифметикою, а формули для розрахунку статистики вам дістануть з Excel, залишиться тільки підставити змінні. Втім, зі зростанням вашого рівня вам може знадобитися щось складніше: наприклад, вектори для простої рекомендаційної системи, основи комбінаторики для того, щоб знати, скільки можна скласти комбінацій з набору символів, або теорія ймовірності, щоб робити ротацію контенту і показувати конкретний рекламний пост тільки для 12% переходів на певну сторінку. Загалом, якщо у вас є логічне мислення, а в школі математика не давалась вам крізь біль і сльози, то все добре. Вища математика не обов’язкова, на типових проєктах не знадобиться. Але якщо у вас великі плани й амбіції, треба мати про неї уявлення, аби бодай знати, який розділ повторити за потреби. 

Із soft skills усе складніше, але суть їх застосування зводиться до одного: потрібно працювати з великою кількістю людей — колегами, менеджерами, клієнтами, і всі вони різні. Та й у кожного фахівця свої звички та темперамент, тож треба виробити свій підхід, щоб ефективно з усіма комунікувати. Також важливо вміти розуміти людей, які не мають технічних навичок і не володіють тими ж знаннями, що й ви. Якщо вас долучать до вже сформованої команди, зверніть увагу, щоб цій команді було з вами комфортно. 


Про кар’єрний розвиток для бекенда


Класичні етапи росту розробника — Trainee, Junior, Middle, Senior і Lead. Медіани зарплат для цих позицій можна дізнатися, переглянувши актуальні вакансії або дослідження на спеціалізованих ресурсах, наприклад на DOU.

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

Якщо прокачувати хард скіли й розширювати свою експертність в різних областях, можна вирости до Software Architect. Прокачавши софт скіли, можна стати менеджером продукту. А опанувавши все разом — Chief Technical Officer (CTO). В усіх цих випадках стелю зарплати важче назвати, ніж середні значення, вона може бути непристойно високою. Зрештою, можна відкрити власну компанію або за наявності геніальної ідеї започаткувати стартап, і тут ваш дохід взагалі важко спрогнозувати.  


Про те, як стати бекенд-розробником


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

Що стосується практичних порад, то все дуже індивідуально. Поділюся порадами, які б дав молодшому собі, якби міг. 

  • Якщо хочеш в універ, то, звісно йди. Але тільки якщо він в іншому місті, тому що кардинальна зміна середовища —  найкраща профілактика стагнації. Життя і так змінилося, тож на цьому тлі нові знайомства, співбесіди й маленькі невдачі не здаються такими великими кроками і їх легше робити. Не обов’язково вступати на спеціальність, напряму пов’язану з програмуванням, але на щось технічне. Так буде легше: друзі за інтересами, нові знайомства, атмосфера інженерії — все це допоможе в майбутньому.   
  • Починай з відеоуроків. Для початківців їх якраз найбільше. Коли уявлення і практики нуль, дуже корисно спостерігати за тим, як хтось працює, і просто повторювати. Навіть якщо урок трирічної давності, не бійся, що повторюєш щось не актуальне, все не настільки змінилося. Головне — відчути тверду поверхню під ногами та ввійти в смак.  
  • Замість курсів краще знайди ментора — когось, кого можна задовбувати будь-якими питаннями (навіть тупими). Іноді під час навчання бачиш якусь прогалину в знаннях. Або не можеш розв’язати проблему, яка блокує просування вперед: усе вказує на те, що для неї існує підхід, інструмент чи технологія, але як це заґуґлити чи з якого боку підступитися — незрозуміло. Ментор вже проходив цей шлях, він підкаже правильний напрям і допоможе уникнути марного блукання ресурсами й публікаціями в пошуках відповіді. 
  • Краще бути Trainee, ніж сидіти вдома. Ходи по співбесідах, поки не візьмуть, хоч кудись. Ріст прискориться. Неможливо підготуватись до всього, нерви й невпевненість будуть неодмінно. Але краще почати рано за мізерну плату та з меншими очікуваннями, зате отримати плавний вхід у професію. 
  • Готуйся до співбесід. Іноді там питають про те, що тобі не знадобиться, тому це окрема навичка. Знайди перелік популярних питань і готуйся за ним. Після відмови обов’язково проси фідбек. Інакше як іще зрозуміти, де треба прокачатися?

У пошуку роботи я не спеціаліст: усі пропозиції отримував випадково. Але якщо є компанія мрії, а досвіду співбесід не так багато, можна податись на інші вакансії, походити на інтерв’ю, набратись досвіду, а потім уже самому написати в ту компанію, куди так хочеться. У разі відмови (але не надто розгромної) можна буде повторно податися через пів року, пропрацювавши свої слабкі сторони. 


Три книжки для розвитку в професії

На початку шляху я б рекомендував «Досконалий код» Стіва Макконнелла. Не звертайте увагу на рік видання — книжка буде актуальною, доки програмування не зміниться докорінно. У книжці немає води, непотрібної на початку теорії та прив’язки до конкретної мови програмування чи напряму розробки. Вона навчить вас писати код так, щоб іншим не було потім боляче з ним працювати. У ній є все що треба: від конвенцій найменування змінних до самодокументованого коду і впливу вашого характеру й ліні на цей код.   

Наступною раджу «Грокаємо алгоритми. Ілюстрований посібник для програмістів і перехожих», автор — Адітья Бхаргава. Можливо, дещо попсова книга, але це не робить її анітрохи гіршою. Структури даних та алгоритми вам таки потрібні, і якщо ви втомилися від професорів, які бояться пояснити щось просто, ніби це нівелює їхню статусність, ця книжка точно для вас. 

Коли ви станете досвідченим, можна буде трішки розслабитись і не поглиблювати свої знання, а розширювати їх. Для цього раджу почитати «Книгу шифрів» Саймона Сингха. З неї ви дізнаєтесь, хто придумав RSA (криптографічний алгоритм — прим. ред.) і як він працює, чому загрожені мови індіанців не гірше «Енігми» та як квантові комп’ютери зроблять сучасне шифрування неактуальним.

Наостанок скажу, що з попитом на професію все є і буде добре: вакансій для бекенд-розробників не менше, ніж для інших ІТ-спеціальностей. Це зрозуміло: сучасна людина щодня використовує сервіси, над якими працює бекенд — застосунки для замовлення доставки чи таксі, платформи для вивчення мов і бронювання житла, месенджери, соцмережі, стримінги тощо. Скрізь треба працювати з даними, доставляти контент, реалізовувати складну логіку. Якщо оберете бекенд-розробку, зможете працювати в тій сфері, яка цікавить саме вас, і влаштуватися в компанію, послугами якої самі користуєтеся.

Шукаєте роботу в ІТ?

Маємо багато вакансій для різних спеціалістів, зокрема і в ІТ-сфері 👉

Вакансії

Читайте також

Про IT-професії з перших вуст: хто створює цифрові продукти

Які напрями є в ІТ? Вибираємо підхожу професію

В ІТ з будь-якою освітою: чому сьогодні навички важливіші за диплом

Newsletter that develops your career

Subscribe to Happy Monday's weekly newsletter, prepared by our editor-in-chief, with a selection of the most exciting content, news, and career opportunities.

Больше
Feedback

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: