6.1 Karyera pillələri
Proqramçılar da təcrübəyə görə pillələrə bölünür. Vaxtilə belə anlayışlar istifadə olunurdu: «koder», «proqramçı» və «haker», amma indi hər kəs Amerikan IT-dən gələn İngilis terminlərinə keçib.
Bir developer üçün 6 əsas pillə mövcuddur:
- 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 dəyişə bilər, amma əsas məğz eynidir:
Intern Software Engineer — bunlar təcrübəçilərdir. Onlar proqramlaşdırma öyrənmənin prosesindədirlər, heç bir kommersiya təcrübələri yoxdur, nə də böyük layihələrdə iştirak təcrübələri. Adətən daha təcrübəli həmkarlarının nəzarəti altında çalışırlar. Onların əsas işi proqram təminatı inkişafının əsaslarını və kod bazasını öyrənməkdir, sadə kod yazma tapşırıqları yerinə yetirmək və testlərdə iştirak etməkdir.
Junior Software Engineer — artıq proqramçılardır, amma ciddi kommersiya təcrübələri yoxdur və ya bir ildən az təcrübəyə malikdirlər. Daha təcrübəli developerlərin rəhbərliyi altında işləyir, layihələrin parçalarını həyata keçirirlər və kod-review sikllarında iştirak edirlər. Karyeranın bu mərhələsi texniki bacarıqların və layihə məsələlərinin dərindən öyrənilməsinə fokuslanıb.
Middle Software Engineer (və ya sadəcə Software Engineer): texniki qərarların qəbulunda daha çox müstəqilliyə malikdirlər, layihənin əhəmiyyətli hissələrinə cavabdehdirlər, daha az təcrübəli həmkarlarına mentorluq etməyə başlayır və arxitektura müzakirələrində daha fəal iştirak edirlər. Adətən 2–5 illik praktik təcrübəyə malikdirlər.
Senior Software Engineer: mürəkkəb sistemlərin layihələndirilməsi və reallaşdırılmasına cavabdehdirlər, komandada mentorluq və rəhbərliyi təmin edir, layihələrin strateji planlaşdırılmasında iştirak edir və tez-tez komandanı müştərilər və digər maraqlı tərəflərlə ünsiyyətdə təmsil edirlər. Adətən 5–10 illik təcrübəyə malikdirlər.
TechLead: layihənin son texniki nəticəsinə cavabdehdir, inkişafı idarə edir, ən mürəkkəb problemləri həll edir, texniki standartlara riayət olunmasını təmin edir və proqramçıların fəaliyyətlərini koordinasiya edir.
Principal Software Engineer: ən yüksək texniki səviyyədə işləyir, tez-tez şirkətin texniki strategiyasının formalaşdırılmasına, innovativ həllərin hazırlanmasına və texniki standartların müəyyən edilməsinə qatılır, texniki liderlər üçün baş mentor rolunu oynayır və mürəkkəb texniki məsələlərdə əsas ekspert olur.
Bu 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ə ciddi təsir göstərir.
- Senior Staff Software Engineer (L7): geniş və mürəkkəb layihələr üzərində işləyir, şirkətin texnoloji inkişafında strategiyanın istiqamətini müəyyən edir.
6.2 Lego-məhsullar
Çoxdan (1975-ci ildə), Pascal dilinin yaradıcısı Niklaus Wirth, «Algoritmlər + Məlumat strukturları = Proqramlar» adlı kitab yazmışdı. O zamandan bəri çox şey dəyişib.
Müasir proqram məhsulu — 10 il əvvəlki kimi deyil və əlbəttə ki, 20 il əvvəlki kimi də deyil. 1975-ci il barədə danışmağa belə dəyməz — o vaxtdan 50 il keçib.
Müasir proqramçı artıq proqramları əl ilə yazmır. Daha çox hazır hissələrdən (kitabxanalardan) yığıb, bu hissələr arasında qarşılıqlı əlaqə qurmağı təmin edən kod yazır.
Müasir proqram məhsulları onlarla və yüzlərlə proqramdan ibarət ola bilər. Onlardan bəziləri istifadəçinin kompüterində, onun mobil cihazlarında işə düşür, əksəriyyəti isə — info-mərkəzdəki serverlərdə çalışır.
Bu proqramların çoxu, məsələn, veb-server və ya məlumatlar bazası, artıq yazılıb. Onları sadəcə düzgün konfiqurasiya etmək lazımdır, ki düzgün işləsinlər. Amma bəzən konfiqurasiya prosesi elə mürəkkəbləşir ki, sanki artıq bu da inkişafdır. (*facepalm*)
Proqramçılar özləri ilə daim mübarizə aparırlar. Eyni kodu müxtəlif proqramlarda yenə və yenə yazmaq əvəzinə, öz tələblərinə uyğun olaraq konfiqurasiya edilə bilən kitabxanalar yaradırlar və sonra sadəcə onları lazım olan yerlərə qoşurlar.
Son 20 il ərzində proqramçılar çoxlu kitabxanalar, frameworklər və açıq repositorylər yaratdılar. Onlar həqiqətən milyonlarla var. İndi isə bütün kodu sıfırdan yazmaq xoş olmayan bir şey sayılır. Bunun yerinə, proqram keyfiyyətli və sübut olunmuş həllərdən — kitabxanalar, frameworklər, paketlər və modullardan yığılmalıdır.
Amma bu yanaşma da artıq köhnəlir. Son 10 ilin trendi — buludlara keçid, sizin proqramlarınıza lazım olan hər şeyi təmin edən böyük data-mərkəzlərdir. Məlumat bazası istəyirsiniz? Seçim üçün yüzlərlə var. Nadir, unikal veb-server istəyirsiniz — elələri də var! Pulunuz olan kimi hər istəyiniz təmin olunacaq.
6.3 «Mən mühəndisəm» © Elon Musk

Artıq çətin və maraqsız şeylər yazmağa ehtiyac yoxdur. Əgər sənə hansısa maraqlı çətin bir funkisonallıq lazımdırsa, bunun üçün artıq bir kitabxana mövcuddur. Sənə sadəcə: a) onun mövcud olduğunu bilmək, b) lazım olanını tapmaq (fərqli keyfiyyətdə onlarla analoqu ola bilər), c) onu layihənə necə inteqrasiya edəcəyini başa düşmək lazımdır.
Bu yanaşmadan iş daha maraqlı oldu. İndi sən məhsula yeni bir funkisonallıq əlavə etməkdə 10 dəfə daha sürətlisən. 30 il əvvəl, əgər sənə web-server lazım idisə, onu özün yazmalıydın. 20 il əvvəl — almalı, qurmalı və konfiqurasiya etməli idin. İndi isə sadəcə "cloud" admin panelinə daxil olub onu işə salırsan.
Bu, böyük ehtimalla Python dilinin populyarlıq səbəblərindən biridir. Bu dil böyük və çətin həllər yazmaq üçün yox, məhz müxtəlif hissələri bir-birinə "birləşdirmək" üçün çox yararlıdır. Onun populyarlığına baxsaq, o, bu işi mükəmməl yerinə yetirir.
Və Python proqramçısı peşəsi artıq Python Fullstack Software Engineer adlanır. Müasir bir Python proqramçısı verilənlər bazasının necə işlədiyini başa düşməlidir ki, onunla peşəkar səviyyədə işləyə bilsin. HTML & JavaScript-i anlamaq vacibdir ki, frontend-i python-backend ilə düzgün işləyə bilmək üçün quraşdıra biləsən. Docker isə mütləq lazımdır — bu artıq sənayenin standartıdır.
Müasir proqramlaşdırma ümumiyyətlə 20 il öncəki ilə müqayisədə çox fərqlidir. Müasir bir proqramçı vaxtının 50%-dən çoxunu kod yazaraq keçirmir. Qalan zamanı sən doklar oxumaqla, yeni texnologiyaları öyrənməklə və görüşlərdə (mitinqlərdə) keçirirsən. Təklikdə işləyən proqramçılar keçmişdə qalıb.
GO TO FULL VERSION