main-post-cover

    Azərbaycanda bir dənə də olsun 'Fullstack' developer yoxdurmu?!

    02.04.2018
    Farid Pardashunas
        Ölkədə İT sahəsində tez-tez bir çoxlarına yad olan peşə adları eşidirik. Söhbət qrafik dizayner” və ya “SMMşik” kimi peşələrdən getmir. Onlar artıq demək olar ki, bütün gənc nəslin anlaya biləcəyi qədər məşhurlaşıblar. Məqalə, qruplarda, səhifələrdə, iş elanları saytlarında tez-tez rastlaşdığımız “frontend”, “backend” “sisadmin” kimi terminlərə aydınlıq gətirəcək. Və təbii ki, elə məqalənin başlığında qeyd etdiyimiz “Fullstack” peşəsi də məqalənin kuliminasiya hissəsində yer alacaqdır.
        Məqalənin yazılmasının əsas səbəblərindən biri tez-tez rastlaşdığımız məyusedici halla bağlıdır. Hələ maksimum üç ay öncə ilk “Hello world” elanını yaza bilmiş proqramçı bugün artıq özünü "fullstack" və hətta mütəxəssis adlandırır. Söhbət həmçinin, günümüzdə heç yerdə istifadə olunmayan proqramlaşdırma dillərini öyrənərək universitetdə 4 ilini boşuna itirmiş və facebook qruplarında maksimal dərəcədə termin yazaraq kömək etmək adı ilə öz biliklərinə əsas tapmaq axtarışına düşmüş lazımsız savadlılardan da gedir.
    Proqramlaşdırma və IT kursu axtarırsan? Bura bax (reklam xarakterli məlumat)
        Ümumilikdə, məqalə bizim İT sahəmizin hazırki üzvləri və bu sahəyə maraq salmış şəxslər üçündür. Həmçinin məqalədə terminləri aydınlaşdıraraq işçi axtaran sahibkarlara da belə bir qısa “təlimat kitabçası” təqdim etmiş oluruq. Məqalə sırf Veb altsahəsinə yönümlüdür və IT -nin digər altsahələri ilə görəcəyiniz bənzərliklər (bu məqalə çərçivəsində) təsadüfidir.
    Webmaster
        Bu peşə 2000-ci illərin əvvəllərində mövcud idi. Bu insan hər işi bacarırdı. Yeri gələndə dizayn edirdi, yeri gələndə məlumatlar bazasını idarə edirdi və s. Saytın ilk başlığından tutmuş axtarış şəbəkələrində qeydiyyatına kimi bütün işi görürdü. Lakin sadalanan bütün işlər o qədər genişləndi ki, hər biri ayrıca bir sahəyə çevrildi. Vebdizayner, Kontent Menecer, Frontend tərtibatçı, Backend tərtibatçı, DB administrator (Data-Base), sisadmin və s. Hətta məsələ o qədər böyüdü ki, saytları Google kimi axtarış sistemlərində inkişaf etdirən şəxs üçün də ayrıca SEO sahəsi yarandı. Bütün bunlar ona gətirib çıxardı ki, biz bu hər işi bacaran vunderkind qaqaşla vidalaşmalı olduq. Bu işi görənlər isə özlərinə daha sevimli altsahə olan tərəfə yönələrək dar ixtisaslı mütəxəssis oldular.
    Frontend
         "Frontend", sistemlərin və ya saytların görünən tərəfinə deyilir. İstifadəçinin vizual olaraq gördüklərini öncədən təyin edən proqramçı "Frontend developer'' və ya bizim dildə "Frontend tərtibatçı'' adlandırılır. Frontendçilər sistemlərin dərinliyində nələrin baş verdiyini bilmirlər. Və belə bir öhdəlikləri də yoxdur. Bu sahənin adamları dizayn xırdalıqlarını da bilməli deyillər. Onlar dizaynerdən şəkil və ya psd alıb, onun eynisini kod formasında yazaraq görüntünün brauzer-də açılmasını reallaşdırırlar. Bəzən səhvən frontenderdən saytın kompüter versiyasına baxaraq mobile versiyasını hazırlamağı da tələb edirlər. Bu da səhv yanaşmadır. Frontendçiyə öncədən üç dizayn verilməlidir: desktop, planşet və mobile. Və proqramçı bu üç dizaynı reallaşdıraraq aralarında keçid ölçülərini də maksimal dərəcədə bütün cihazlara uyğun formada tərtib etməlidir. Hazırki dövrdə frontend tərtibatçı başlanğıc üçün bunları bilməlidir: HTML, CSS, Javascript. Peşəkar və ya mütəxəssis adına layiq görülməsi üçün isə frontend mütləq bu biliklərə sahib olmalıdır: ES6, Typescript, npm,webpack, Responsive, Bootstrap, Sass. Bu siyahını uzadaraq proqramçının öz seçimindən asılı olan bilikləri də əlavə edə bilərdik. Lakin hələ heç bu sadalananları bilmədən də özünü peşəkar "frontend" adlandıranlar az deyil. Ona görə hələ ki, yalnız zəruri bilikləri qeyd edirik.
    Backend
        Bu sahənin adamı sistemlərin arxa hissəsi üzərində işləyir. Məsələn, "Frontend" ayrı-ayrı html səhifələr yaradanda "Backend tərtibatçı'' onları bir sayt halında cəmləşdirir, sonra bu üzərində işlənilən sistemə məlumat bazası qoşur. Nəticədə mahsulda göstərilən kontent birbaşa bazadan götürülür. Hazırda bəzən şirkətlərdə məlumatlar bazası üçün ayrıca işçi də olur - Database Administrator. Lakin bu işi bilmək "backender"in peşə borcudur. Əslində bu izah "backender" üçün çox kiçik və zəifdir. Çünki, "Backender" istifadəçinin görmədiyi bütün arxa işləri planlaşdırıb tərtib edəndir. Və əgər development bir aysberq olsa idi "frontend" bu aysberqin yalnız görünən tərəfi - 20%-i olardı. Bütün hesablama mexanizmləri, əlaqələndirilmələr, optimizasiya və sürət, həmçinin təhlükəsizlik. Bütün bunlar barədə saatlarla danışa bilərik. Əsas olan odur ki, sadalananlar "backend" tərtibatçının işidir. "Backend"də proqramçının istifadə elədiyi dildən asılı olaraq şaxələnmə mövcuddur. Ruby, Python, node.js, C# şaxələrini kənarda qoyub, ölkəmizdə daha geniş yayılmış PHP dili üzərində işləyən proqramçıların bilməli olduğu aspektləri sadalayacağıq. Onu demək lazımdır ki, ölkəmizdə təəssüf ki, əksər proqramçılar hələdə PHP-nin 5-ci versiyasında ilişib qalıblar. Çoxları heç obyekt yönümlü proqramlaşdırmanı belə bilmir və bu həmin “proqramçıyam” deyənlər üçün əslində utanc səbəbi olmalıdır. PHP proqramçı mütləq OOP (Obyekt Yönümlü Proqramlaşdırma) bilməlidir. Öz MVC sisteminin olması məsləhətdi, amma hər hansı məşhur freymvorklardan birini də bilməsi zəruridir. Məsələn "Laravel" ən geniş yayılmışlardandır. Composer bilməlidir. Üzərində işlədiyi sistemi test etmək üçün PHPUnit bilməlidir. Yerli "backender"lərin əksəriyyəti hələ "profiling" barədə xəbərsizdirlər, bunun üçün "xdebug" üzərində işləməyi öyrənməlidirlər. Serverdaxili keş üçün "memcached" kimi alətlərdən istifadə etməlidirlər. Digər zəruri bilikləri bir cümlə ilə sadalayırıq: Nginx, Json, Mysql, Nosql, docker. Və təbii ki, təhlükəsizlik baxımından da bilikli olmalıdır.
    Sisadmin
        Bu sahənin işçisi əvvəllər serverə aid bütün işləri öz öhtəsinə götürürdü. Serverin yaradılmasından tutmuş bütün giriş və çıxışlara nəzarətə qədər. Hətta bu işin adamları cihazlara gedən naqillərə belə nəzarət edirdilər. Amma, bugün artıq bu sahə ilə yavaş-yavaş sağollaşırıq. AmazonGoogle kimi cloud serverlər təklif edən şirkətlər bu sahəni yox edib, yerinə tamamilə yeni bir peşə yaratdılar - DevOps.
    DevOps
    Bu sahə hələ bizim ölkəyə gəlib çıxmayıb. Bəlkə də, publik şəkildə bu peşə barədə ölkəmizdə ilk dəfə məhz Technote yazacaqdır. DevOps - buludda yaradılmış serverləri idarə edən mütəxəssisə deyilir. “Əcdadı” sisadmin olsa da əslində bilik tələbləri çox genişlənmişdir və fərq göz qabağındadır. DevOps mütləq Linux bilməlidir, docker konteynerlerləri ilə məharətlə işləməyi bacarmalıdır. AWS, GCP və ya Digitalocean xidmətlərindən istifadə etməlidir. Nginx və Apache-ni bütün xırdalıqları ilə bilməlidir. Monitoring sistemlərinə bələd olmalı, terminalda əmrləri səlist yazmağı bacarmalıdır. Firewall, balanslaşdırma, protokollar, proksi və keşləmə kimi biliklərə sahib olmalıdır.
    Fullstack
        Hə, gəldik çatdıq kulminasiyaya. İzaha ehtiyac yoxdur. "Fullstack" elə adından göründüyü kimi bütün bu sahələrin biliklərinə sahib olmalıdır. Təəssüf ki, ölkəmizdə bunların hamısını bilən yoxdur, varsa da onlar artıq ölkədə deyil. "Backend"dən bir-iki baza məlumatı olan naşı, internetdən hazır html şablon köçürür, arxasına spagetti kod (qeyri səlist - qarışıq, səliqəsiz, OOP-siz kod) yazıb “mən fullstackam” deyir. Biz onlar üçün yeni bir termin təklif edirik. “Halfstack” - yarımçıq stakerlər. Onları yarımçıq adlandırmaq çox ədalətli olardı. Çünki hər sadaladığımız sahədən yarımçıq-yarımçıq bilirlər. Və onlara tam qərəzsiz, müəyyən bir sahəni seçib o sahə üzrə peşəkarlaşmağı və o sahənin mütəxəssisi olmağı məsləhət edirik. Nizami Gəncəvinin “Kamil bir palançı olsa da insan, yaxşıdır yarımçıq papaqçılıqdan” cümləsini yada salıb bu məqalədən bir bələdçi kimi istifadə edib, biliklərinizi artıraraq mütəxəssis olsanız həm sizin üçün, həm sahə üçün, həm də ümumiyyətlə ölkəmiz üçün müsbət olar.
        Təsadüfi deyil ki, Azərbaycanda yeni yaranan developerlər kütləsinin əksəriyyəti informasiya qıtlığından əziyyət çəkir. Tərtibatçıların doğru yönləndirilməməsi, lazımi resursların olmaması problem yaradır. Nəticədə, 3 aylıq kurs keçmiş bir şəxs özünü professional proqramçı hesab edir. Yuxarıda sadalananlardan da belə qənaətə gəlmək olar ki, professional proqramçı olmaq üçün ən az 2-3 il vaxt tələb olunur.
    Bəs yaxşı, sual oluna bilər ki, bütün bunları Azərbaycanda necə öyrənə bilərik?
        STEP IT Akademiyası qlobal təcrübəsi ilə, ölkəmizdə peşəkar proqramlaşdırma kursları təqdim edir. İxtisaslaşmaq istədiyiniz sahəni seçməklə, ən təməl biliklərdən tutmuş sizi mütəxəssis səviyyəsində yetişdirəcək praktiki bilikləri STEP IT Akademiyasından əldə edə biləcəksiniz. Kurslar haqqında ətraflı məlumat ilə buradan tanış ola bilrsiniz.

    Linki kopyala