Şübhəsiz ki, siz front-end və back-end proqramçılarının kim olduğunu bilirsiniz. Front-end proqramçısı proqramın üz qabığına cavabdehdir. Məsələn, saytın əsas səhifəsinə və ya proqram tətbiqinin interfeysinə. Back-end proqramçısı isə server və məlumat təhlükəsizliyi sistemi üçün kod yazır, frontendin sayta və ya proqram tətbiqinə yüklənməsini tənzimləyir.
Bu işin hər ikisini görməyi bacaran bir tərtibatçı Full-Stack proqramçısı adlanır. Bu məqalədə biz sizə fullstack proqramçısı, onun məşğul olduğu iş, onun məvacibi və onun karyera imkanları haqqında məlumat veririk.
Peşənin xüsusiyyətləri yalnız front-end və back-end biliklərində deyil
Bir misala baxaq. Tutaq ki, siz bir terapevtin qəbuluna yazılmısınız. O, hər şeydən bir az bilən həkimdir. O, ilkin diaqnoz qoya və ya soyuqdəymə və allergiyadan müalicə edə, vitaminlər təyin edə bilər. O, problemlərə ümumi yanaşır:
- Cavan oğlan, sizin ürək döyüntünüzün ritmi bir qədər pozulub. Kardioloqun qəbuluna gedin. O, problemi daha ətraflı araşdırıb müalicəsini təyin edər.
- İndi sizə dediklərimi eşitdinizmi? Yox? O zaman, otolarinqoloqun qəbuluna gedin.
Terapevt anlayır ki, o, bütün problemləri həll edə bilməz. Onun kardioloq və ya otolarinqoloq əvəzinə qərar vermək hüququ yoxdur.
Başqa bir misal:
- Cavan oğlan, siz xəstələnmisiniz. Boğazınız qızarıb, gözləriniz sulanır. Sizə vitaminlər və virus əleyhinə dərmanlar kursu yazıram.
Misalda adi bir soyuqdəymədən söhbət gedir. Diaqnoz qoymaq və müalicə təyin etmək üçün terapevtin kifayət qədər bilik və səlahiyyəti var. Tibb dünyasında belə sadə bir iş üçün kardioloq və ya digər xüsusi ixtisaslaşmış həkim olmaq vacib deyil.
Full-stack proqramçısı IT sahəsində bir terapevtdir. O, bir çox layihəni təkbaşına icra edib sona çatdıra biləcək proqramçıdır. O, server üçün kod yaza, frontend yığa, struktur üzərində düşünə və müştərilərlə danışıqlar apara bilər.
Lakin o yüksək ixtisaslaşmış frontend proqramçısı deyil. Adətən o, mürəkkəb işlər üçün uyğun deyil. Səbəbini aşağıda açıqlayırıq.
Bu tərtibatçının işi verilmiş tapmacanın açmasını təkbaşına tapmaq və ya pazlı təkbaşına yığmaqdır
Bəziləri full-stack proqramçının yalnız front-end və back-end texnologiyaları biliklərinə malik olduğunu düşünür. Bəli, bəzi hallarda bu, doğru olur. Məsələn, müştəri şablonuna uyğun Wordpreess-də bir internet saytın yaradılması zamanı. Bu işdə Full-stack Wordpress Developer qədər bilikli olmaq kifayətdir.
Lakin yaxşı fullstack proqramçısı olmaq üçün bu kifayət olmaya bilər. Ona daha nə lazım ola bilər? Gəlin baxaq:
DevOps. Layihənin təhvil verilməsidən sonra proqramçı onun üzərində işi davam etdirə bilər: kodu sadələşdirər, səhvlər axtarar, vaxtaşırı monitorinq edər, yeniləmələr buraxar. Buna kodun sazlanması deyilir. Bu işdə həm proqramçı, həm də sistem administratorunun bacarıqları faydalı olur.
Proqramların arxitekturası. İri layihələrdə proqramçı arxitektoru əvəz edə bilər. Məsələn, müştərinin ideyasına uyğun mobil proqram tətbiqi üçün bir çərçivə yığmaq. Razılaşdırdıqdan sonra isə kod yazmaq və layihəni işə salmaq.
Danışıq aparmaq bacarığı. Maaşın nə qədər olacağı məhz bundan asılıdır. Aşağıdakı iki misalı müqayisə edin:
- Proqramçı texniki tapşırığa əsasən kod yazır. İşi təhvil verir və konveyer kəmərindəki kimi yeni bir layihənin icrasına başlayır.
- Proqramçı kod yazır, öz işini müştəri və digər şöbələrlə razılaşdırır. Lazım gəldikdə, işi proqramlaşdırmadan anlayışı olmayan insanlara təqdim edir. Sorğulara uyğun düzəliş aparır. Düzəliş etmək zəruri deyilsə, səbəbini izah edir.
Sizcə, hansı mütəxəssisin maaşı daha çox olar?
Dizaynın əsasları, UX\UI. Tutaq ki, proqramçı hazır bir dizaynı sayta köçürməlidir. Veb-dizayner təcrübəsizdir, buna görə də çoxlu səhv edib:
- Düymələrin forması və rəngi qarışıb.
- Saytın başlığı qaydalara uyğun yerləşdirilməyib.
- Veb-dizayner istifadəçiləri düşünməyib. Məsələn, hər hansı məhsul sifariş etmək üçün saytın sonuna keçmək lazımdır. İştifadəçilərin çoxu isə bunu etmir.
Dizaynı şablona uyğun problemsiz köçürmək mümkün olmur. Bu problemləri dizayner deyil, proqramçı həll etməli olur. Dizayner artıq pulunu alıb. O digər işlərlə məşğuldur.
Proqramçı problemləri müştəriyə vaxtlı-vaxtında göstərməklə layihəni daha yaxşı hala gətirməyə kömək edə bilər: köçürmə mərhələsində dizayna düzəliş verər və ya müştəriyə yaxşı bir veb-dizayner tapar.
Fullstack proqramçısının istifadə etdiyi iş alətləri
Front-end. Veb-saytların yığılması üçün HTML və CSS proqramlaşdırma dillərində işləyə bilmək vacibdir. Keçidlər, formalar və digər interaktiv elementlər üçün daha bir proqramlaşdırma dilini bilmək zəruridir. JavaScript-ə üstünlük verilir.
Bundan əlavə, freymvorklardan ən azı biri (kod şablonu) ilə işləyə bilmək lazımdır. Bu, Angular, Vue.js və React ola bilər. Əvvəl-əvvəl onlardan birini bilmək kifayətdir, çünki fullstack proqramçının onların hamısını öyrənməyə vaxtı olmur.
Back-end. Bu, proqramçının öhdəliklərindən asılıdır:
- Saytlar və digər web-layihələr üçün PHP proqramlaşdırma dili;
- Biznes proqramlarının tərtib edilməsi üçün Java proqramlaşdırma dili;
- Son vaxtlar populyarlaşmış Node.js, Ruby, Python və digər proqramlaşdırma dilləri.
Verilənlər bazası. Serverin hazırlanmasından sonra layihəyə verilənlər bazası, yəni daxilində kod faylları olan qovluqları saxlamağa bir yer lazımdır.
Verilənlər bazasının faylların nizam səviyyəsinə görə ayrılan iki növü var: strukturlaşdırılmış (SQL) və strukturlaşdırılmamış (NoSQL). Birinci növ üçün PostgreSQL, MySQL, MicroSoft SQL Server, Oracle Database lazımdır. İkinci növə məşhur MongoDB bazası uyğundur.
Git versiyalara nəzarət sistemi. Proqram və ya mobil proqram tətbiqi daim yenilənir. Bir versiya digərinin ardınca gəlir. Keçmiş versiyalardakı məlumatları itirməmək üçün tərtibatçılar nəzarət sistemindən istifadə edir. Məsələn, GitHub-dakı git-dən.
Siz, həmçinin versiyalara nəzarət sisteminə kod yükləyə bilərsiniz. Layihə üzərində bir neçə tərtibatçı işlədikdə bu, faydalı olur.
Peşənin üstünlükləri
Fullstack çoxfunksiyalı bir insandır. O, server üçün kod yaza və ya dizaynı frontendə köçürə bilər. O, xəstəxanadakı terapevt kimi ümumi işləri görür.
Fullstack proqramçısının iş tapması daha asandır. Yaxşı bilik səviyyəsinə malik fullstack proqramçısı həm öz ixtisası, həm də digər oxşar ixtisaslar üzrə işləyə bilər. Məsələn, front-end biliyi olan back-end-developer kimi. Və ya əksinə.
Fullstack proqramçılardan yaxşı timlid, yəni işçi komandası rəhbəri olur. Bu proqramçıların strategiyadan tutmuş səhvlərin düzəldilməsinə və yeniləmələrin buraxılmasınadək layihənin işə salınması üçün zəruri olan bütün proseslərdən anlayışı olur. Onlar üçün işçi qrupu ilə ünsiyyət qurmaq, tapşırıqlar vermək və onların icrasına nəzarət etmək asandır.
Fullstack-dən başlayıb, sonra isə hər hansı bir sahənin dərinliklərinə baş vurmaq olar. Front-end, back-end və verilənlər bazası arasında seçim etmək asan olur. Yaxşı fullstack proqramçısı olmaq çox vaxt aparır. Lakin bu sahələrin birini daha mükəmməl öyrənmək xeyli daha asandır. Bu proqramçının seçimi geniş olur.
Müştəri vəsaitinə qənaət edilir. Bu, kiçik layihələrdə faydalı olur. Müştəri bir ideya test etmək və ya startap işə salmaq istəyir. Onun frontender və bəckender kimi iki mütəxəssisə verməyə pulu yoxdur. Müştəri üçün tək bir fullstack proqramçısının maaşını ödəmək daha əlverişlidir.
Layihənin tərtib edilməsi üçün daha az vaxt lazım olur. Fullstack proqramçısı tək işləyir. O, front-end üçün düzəliş sorğuları göndərmək və onları verilənlər bazasına daxil etmək məcburiyyətində olmur. Bəzən bu sorğular çox olur və düzəlişlər uzun müddət müzakirə olunur. Bu hallarda bu düzəlişlər bir neçə ay çəkir. Fullstack proqramçısı isə gözləmir, bütün işləri özü görür.
Peşənin çatışmazlıqları
Fullstack proqramçısının hər şeydən bir az bilir. Təcrübə göstərir ki, fullstack proqramçısı hər ixtisasdan bir az bilir. Ona görə də onun biliyi hər hansı bir sahədə yüksək ixtisaslaşmış proqramçıların biliyindən azdır.
Gəlin terapevt və kardioloq misalını xatırlayaq. Terapevt ürək xəstəsini müayinəyə göndərə bilər, lakin ona dəqiq bir diaqnoz qoya bilməz və ona müalicə kursu təyin edə bilməz, çünki terapevt xüsusi olaraq kardioloq təhsili almayıb.
Fullstack proqramçının bütün ixtisasları hərtərəfli öyrənmək üçün kifayət qədər vaxtı yoxdur. Frontendi də, backendi də, verilənlər bazalarını da, freymvorkları da bilmək lazımdır. Sadə işlər üçün onun bilikləri kifayətdir, böyük layihələr üzərində isə adətən o, ixtisaslaşmış proqramçı ilə birgə işləyir.
Stereotiplər. Fullstack proqramçısına bəzək aşağıdakı kimi müraciət edirlər: "Bizim bir layihəmiz var. Siz axı fullstack proqramçısınız, hər işi bilirsiniz, özünüz anlayarsınız". Artıq çoxlarında bu proqramçıların hər şeyi bacarması təəssüratı yaranıb. Əslində isə, onlar hər şeydən bir az bilir: javascript, wordpress, web. Bəzən müştərilərə bunu izah etmək asan olmur.
Məsuliyyət sahəsi yoxdur. Şirkətlərdə çox zaman proqramçı üçün xüsusi vəzifə ayrılmır. Məsələn, o, JavaScript və MongoDB tutmuş hər şeyə cavabdeh olur. “Bəs hər şey” dedikdə nə başa düşülür? Bunu dəqiq bilmək bir qədər mürəkkəbdir. Müəyyən bir layihə üzərində işləyən bir proqramçını digəri ilə əvəz etmək lazım olduqda, bütün layihəni sıfırdan icra etmək zərurəti yaranır. Bu əlavə çətinlik yaradır.
Həddən artıq çox işləmək. Fullstack proqramçısı öz üzərinə iri bir layihə götürərsə, o, öz bacarığını yanlış qiymətləndirə bilər. Həddindən artıq çox işləməsi və az yatması onun aşırı yorğunluğuna və zəifliyinə səbəb olar. Həyat ritmi pozular. Nəticədə yalnız onun sağlamlığı deyil, həm də yazdığı kodun keyfiyyəti pisləşər.
Hər zaman öyrənmək zəruri olur. Yeni freymvorklar, proqramlaşdırma dillərinin yeniləmələri, dəb meylləri dəyişir. Fullstack proqramçısı bunları bir deyil, bütün sahələrdə öyrənməlidir. Yaxşı fullstack proqramçıları öyrənməkdən, təlim almaqdan zövq alan insanlardır.
Fullstack proqramçısı nə qədər qazanır
Fullstack proqramçısının maaşı bir neçə amildən asılıdır. Məsələn, PHP proqramlaşdırma dilində işləmək indi daha az qazanc verir. Bank sektorundakı proqramçı əyləncə sektorundakı proqramçıdan təxminən iki dəfə çox maaş alır. Gəlin kiçik bir statistika ilə tanış olaq.
Ukraynada "fullstack proqramçısı" vakansiyası üzrə orta əmək haqqı ayda 2-3 min dollardır (work.ua saytının 2022-ci ildə verdiyi məlumatlarına əsasən).
Bir il iş təcrübəsi olan bir fullstack proqramçısı Amerika şirkətində işlədikdə ayda 6000 dollardan çox pul alır (indeed saytının verdiyi məlumatlara əsasən).
Hal-hazırda JavaScript proqramlaşdırma dilinə Avropa IT bazarında üstünlük verilir. Qeyd etdiyimiz kimi, PHP proqramlaşdırma dilinin verdiyi qazanc daha az olur.
Frilans proqramçısının qazancı isə bir layihə üçün 130-8000 dollar təşkil edir (UpWork saytının məlumatına əsasən).
Fullstack proqramçısı olmaq üçün nədən başlamaq lazımdır
Yeni başlayanlara. İki yolla başlamaq olar:
- Hər hansı bir ixtisası hərtərəfli, digərlərini isə işləyərkən mənimsəmək. Məsələn, «Front-end» kursunda təlim almaqla. Diplom almaq və tədricən bu ixtisasa bağlı digər ixtisasların işini öyrənmək.
- Kompleks şəkildə təhsil almaq: Akademiyada «Proqram təminatının yaradılması» proqramı fəaliyyət göstərir. Proqramlar, mobil proqram tətbiqləri, web, təhlükəsizlik sistemləri üçün texnologiyaları öyrənmək. Ancaq bu, bir qədər daha uzun çəkir: bütün ixtisasların təlimi 2,5 il davam edir.
Dərhal yeni texnologiyalara baş vurmaq və 10 proqramlaşdırma dilini birdən öyrənmək lazım deyil. Eyni zamanda hər şeydən yapışmaq istəyəndə işə və şəxsi həyata vaxt qalmır. İşlərin çox və mürəkkəb olduğu üçün motivasiya zəifləyir, insan ruhdan düşür.
Video və ya kitablardan başlayın. Sosial şəbəkələrdə və konfranslarda digər sahələrin mütəxəssisləri ilə ünsiyyət qurun. Front-end sahəsini öyrənmisinizə, o zaman fullstack proqramçıları və ya backend tərtibatçıları ilə ünsiyyət qurun. Onlardan nədən başladığını və ilk əvvəl nəyi öyrəndiyini soruşun. Bu, kontekstə baş vurmağa, ilk təcrübəni əldə etməyə kömək edər.
Bu peşə sizin marağınızı oyatdısa, təlim kurslarına müraciət edə bilərsiniz. Məsələn, front-end biliyi olan bir insan server proqramlaşdırmasını, baza analitikasını öyrənməlidir. Ona « Python» və «DevOps (əsasları)» təlim kursları uyğundur.
Back-end biliyi olan bir insana isə «Front-end» təlim kursu tövsiyə olunur. Sonrakı bilikləri siz "işləməklə öyrənirik" (learning by doing) prinsipinə uyğun ala bilərsiniz.
Fullstack proqramçısı biliklərinin yaddaşda möhkəmlənməsi üçün hər hansı bir layihəni sıfırdan hazırlamaq lazımdır: strategiyanın düşünülməsindən tutmuş kodun yazılması və layihənin həmkarlara, auditoriyaya təqdim edilməsinədək. Bir neçə layihədən sonra istənilən şəxs bütün konsepsiyanı mənimsəyəcək və ya bu işlə məşğul olmaq istəmədiyini anlayacaq.