1. Karyera pillələri
Proqramçılar da ixtisas səviyyəsinə görə mərhələlərə bölünür. Bir vaxtlar «koder», «proqramçı» və «haker» kimi anlayışlar işlədilirdi, amma indi hamı Amerika IT-sindən gələn ingiliscə adlardan istifadə edir.
Tərtibatçı üçün 6 əsas mərhələ var:
- Intern Software Engineer
- Junior Software Engineer
- Middle Software Engineer
- Senior Software Engineer
- TechLead
- Principal Software Engineer
Ölkədən ölkəyə və hətta şirkətdən şirkətə bəzi parametrlər fərqlənə bilər, amma mahiyyət təxminən belədir:
- 🌱 Intern Software Engineer — bunlar təcrübəçilərdir. Onlar proqramlaşdırmanı öyrənmə prosesindədirlər, nə kommersiya təcrübəsi, nə də iri layihələrdə iştirak təcrübəsi var. Adətən daha təcrübəli həmkarların nəzarəti altında işləyirlər. Onların əsas işi — kod bazasını və proqram təminatı inkişafının əsaslarını öyrənmək, sadə kodlaşdırma tapşırıqlarını yerinə yetirmək və testləşdirmədə iştirak etməkdir.
- 🐣 Junior Software Engineer — artıq proqramçılardır, lakin ciddi kommersiya təcrübəsi yoxdur və ya təcrübələri bir ildən azdır. Daha təcrübəli tərtibatçıların rəhbərliyi altında işləyir, layihələrin hissələrini reallaşdırır və code review dövrlərində iştirak edirlər. Karyeranın bu mərhələsi texniki bacarıqların dərinləşdirilməsinə və layihə tapşırıqlarının anlaşılmasına yönəlib.
- 🦾 Middle Software Engineer (və ya sadəcə Software Engineer): texniki qərarların qəbulu sahəsində daha çox müstəqilliyə malikdirlər, layihənin əhəmiyyətli hissələrinə cavabdeh olurlar, az təcrübəli həmkarlarına mentorluğa başlayırlar və arxitektura müzakirələrində daha fəal iştirak edirlər. Adətən 2–5 il praktik təcrübəyə malik olurlar.
- 🧑🔬 Senior Software Engineer: mürəkkəb sistemlərin layihələndirilməsi və həyata keçirilməsinə cavabdehdirlər, komandada mentorluq və rəhbərliyi təmin edirlər, layihələrin strateji planlaşdırılmasında iştirak edir və çox vaxt komandakıları müştərilər və digər maraqlı tərəflərlə ünsiyyətdə təmsil edirlər. Adətən 5–10 il təcrübəyə malik olurlar.
- 🧠 TechLead: layihənin yekun texniki nəticəsinə cavabdehdir, inkişafı idarə edir, ən çətin tapşırıqları həll edir, texniki standartlara riayət olunmasını təmin edir və tərtibatçıların fəaliyyətini koordinasiya edir.
- 🏆 Principal Software Engineer: ən yüksək texniki səviyyədə işləyir, çox vaxt şirkətin texniki strategiyasının formalaşdırılmasında iştirak edir, innovativ həllər hazırlayır və texniki standartlar müəyyənləşdirir, texniki liderlər üçün baş mentor rolunu oynayır və mürəkkəb texniki məsələlərdə əsas ekspert olur.
Maraqlıdır. Böyük şirkətlərdə əlavə rollar və alt-rollar ola bilər. Məsələn, Google-da belə rollar var:
- Staff Software Engineer (L6): öz şöbəsinin texniki siyasətinə əhəmiyyətli təsir göstərir.
- Senior Staff Software Engineer (L7): genişmiqyaslı və mürəkkəb layihələr üzərində işləyir, şirkətdə texnoloji inkişafın strateji istiqamətini müəyyənləşdirir.
2. Lego məhsulları
Vaxtilə (1975-ci ildə) Niklaus Wirth, Pascal dilinin yaradıcısı, «Alqoritmlər + Məlumat strukturları = Proqramlar» adlı kitab yazdı. O vaxtdan çox şey dəyişib. Müasir proqram məhsulu — 10 il əvvəlki kimi deyil və 20 il əvvəllə isə ümumiyyətlə müqayisə olunmur. 1975-ci ildən danışmağa dəyməz — o vaxtdan 50 il keçib ⏳
Müasir proqramçı artıq proqramları əllə yazmır. O, daha çox onları hazır hissələrdən (kitabxanalardan) yığır və bu hissələrin qarşılıqlı əlaqəsini təmin edən kod yazır 🧩. Müasir proqram məhsulları onlarla və yüzlərlə proqramdan ibarət ola bilər. Bəziləri istifadəçinin kompüterində, mobil qurğularında işləyir, böyük hissəsi isə data mərkəzlərində serverlərdə çalışır.
Bu proqramların çoxu, məsələn, veb-server və ya məlumat bazası, artıq yazılıb. Onları sadəcə düzgün konfiqurasiya etmək lazımdır ki, necə lazımdırsa elə də işləsinlər. Ancaq zamanla konfiqurasiya prosesi o qədər mürəkkəbləşə bilər ki, faktiki olaraq inkişafın özünə çevrilir. 🤦♂️
Proqramçılar daim özləri ilə mübarizə aparırlar. Müxtəlif proqramlarda oxşar kodu yenidən yazmaq əvəzinə, konfiqurasiya oluna bilən (tələblərə görə sazlanan) kitabxanalar yaradır və sonra onları lazım olan bütün yerlərə sadəcə qoşurlar.
Son 20 ildə proqramçılar çoxlu kitabxanalar, framework-lər və açıq repozitoriyalar yazıblar. Onların sayı həqiqətən milyonladır. İndi bütün kodu sıfırdan yazmaq pis ton sayılır. Bunun əvəzinə proqramı keyfiyyətli və sınaqdan keçmiş həllərdən — kitabxanalardan, framework-lərdən, paketlərdən və modullardan — yığmaq lazımdır 🧱
Amma bu yanaşma da artıq köhnəlir. Son 10 ilin tendensiyası — buludlara köçməkdir, proqramlarınıza lazım olan hər şeyi təqdim edən böyük data mərkəzləri. Məlumat bazası istəyirsiniz? Seçmək üçün yüzlərlə var. Nadir, unikallıqda veb-server istəyirsiniz — elələri də var! Pulunuza uyğun hər cür istəyiniz mümkün.
3. «Mən mühəndisəm» © İlon Mask

Artıq mürəkkəb və darıxdırıcı şeyləri özünüz yazmağa ehtiyac yoxdur. Əgər hansısa funksionallıq lazımdırsa — bunun üçün artıq hazır kitabxanalar və framework-lər var. Sizin vəzifəniz: a) onların mövcudluğunu bilmək, b) uyğun variantı tapmaq (adətən bir neçə analog olur, keyfiyyət və nüanslar fərqlənir), c) onu layihənizə necə inteqrasiya etməyi anlamaq 🎓
Bu, işin daha da maraqlı olmasına səbəb olub. İndi məhsula yeni funksionallığı 10 dəfə sürətli əlavə edə bilərsiniz. 30 il əvvəl veb-server lazım idisə, onu sıfırdan yazırdınız. 20 il əvvəl — alır, quraşdırır və sazlayırdınız. İndi isə sadəcə Azure və ya AWS bulud portalına daxil olub lazım olan xidməti aktivləşdirirsiniz 🌐
Bu, yeri gəlmişkən, Java dilinin populyarlığının səbəblərindən biridir. O, təkcə böyük korporativ həllərin hazırlanmasına deyil, həm də müxtəlif komponentlərin «yapışdırılmasına» çox uyğundur — zəngin JVM ekosistemi vasitəsilə demək olar ki, hər nə ilə istəsəniz inteqrasiya var: məlumat bazaları, mikroservislər, REST API, mesajlaşma sistemləri, bulud xidmətləri, analitik platformalar.
Buna uyğun olaraq, Java Software Engineer peşəsi də çoxdan Fullstack Java Developer-a çevrilib. Müasir tərtibatçı üçün məlumat bazasının (PostgreSQL, MySQL/MariaDB, MongoDB və s.) necə işlədiyini başa düşmək vacibdir ki, qarşılıqlı əlaqəni düzgün qursun. Frontend-in (HTML, CSS, JavaScript/TypeScript, React, Angular) necə qurulduğunu anlamaq lazımdır ki, Java-da backend hissəsi ilə (Spring Boot, Micronaut, Quarkus) mübadilə düzgün sazlansın. Və əlbəttə, Docker-siz indi mümkün deyil — bu artıq sənaye standartıdır 🐳.
Müasir inkişaf ümumiyyətlə 20 il əvvəlkindən xeyli fərqlənir. Proqramçı vaxtının 50%-dən çoxunu kod yazmağa sərf etmir — qalanı sənədləri oxumağa, yeni texnologiyaları öyrənməyə, layihələndirməyə və komanda daxilində görüşlərdə işləməyə gedir. Tək işləyən proqramçılar artıq daha çox nadir istisnadır.
GO TO FULL VERSION