Junior → Middle Akseleratoru
İşləyən junior Java developer-lər üçün 12 həftəlik instructor-led proqram: mövcud kod bazasını oxumaq və dəyişmək, Spring Boot-u dərindən bilmək, JPA və PostgreSQL tələlərindən qaçmaq, düzgün test yazmaq, təhlükəsizlik və CI əsasları və biletdən başlayaraq feature-i müstəqil çatdırmaq. Proqram plan edilmiş sillabusdur, qrupun səviyyəsinə görə tənzimlənə bilər; iş təminatı vədi yoxdur.
Bu proqram planlaşdırılır və hələ cədvələ salınmayıb. Tarix, qrup və qəbul açıq elan olunmayıb; müraciət qəbul etmirik. Maraq bildirin və ya konsultasiya istəyin: proqram planlaşdırıldıqda sizinlə əlaqə saxlayarıq.
- Müddət
- 12 həftə
- Canlı dərslər
- həftədə 2 dərs, hər biri 90 dəqiqə
- Mərhələ
- 4 mərhələ
12 həftə
Həftə-həftə tədris planı
Planlaşdırılan tədris planıdır: sıra və dərinlik qrupa uyğun dəyişə bilər. İş təminatı və ya vəzifə vədi deyil.
01 · 1–3-cü həftələr
Mövcud kodla işləmək və Spring Boot
Mərhələnin məqsədi: Tanımadığı Spring Boot layihəsini oxuyub anlamaq, təhlükəsiz dəyişiklik etmək, Git/Pull Request axınında işləmək və qatlı arxitekturanı düzgün qurmaq.
Həftə 1
Mövcud kod bazasını oxumaq və təhlükəsiz dəyişmək
- Tanımadığı layihəni xəritələmək: modullar, giriş nöqtələri, konfiqurasiya
- Request-in izlənməsi: controller → service → repository → DB
- Testləri sənəd kimi oxumaq və characterization test
- Debugger, stack trace və log ilə səbəb axtarışı
- Kiçik, geri qaytarıla bilən dəyişiklik prinsipi
Laboratoriya: Instructor-un verdiyi bilet izləmə (ticket tracker) layihəsini ilk dəfə işə salıb bir sorğunun yolunu debugger ilə addım-addım izləmək, sonra characterization test yazıb səhifələmə (pagination) bug-ını təkrarlayıb düzəltmək.
Tapşırıq: CODEBASE_MAP.md hazırlamaq (modullar, request axını diaqramı), pagination bug-ını testlə təkrarlayıb düzəltmək və kiçik filter əlavə etmək; Pull Request ilə təqdim etmək.
Həftə 2
Git axını, Pull Request və code review mədəniyyəti
- Branching, rebase vs merge, interaktiv rebase ilə tarixçənin təmizlənməsi
- Kiçik və oxunaqlı Pull Request: təsvir, ölçü, commit mesajları
- Review verən kimi: nəyə baxmaq, rəyi necə yazmaq
- Review alan kimi: rəyə cavab vermək, mübahisəni həll etmək
- Merge conflict-lərin həlli və git bisect
Laboratoriya: Qəsdən qurulmuş merge conflict-i həll etmək, git bisect ilə bug gətirən commit-i tapmaq və həmkarın verilmiş Pull Request-ini yazılı review etmək.
Tapşırıq: Öz feature branch-ınızda 3 kiçik, mənalı commit ilə dəyişiklik edib Pull Request açmaq və qrup yoldaşının Pull Request-inə ən azı 5 əsaslandırılmış rəy yazmaq.
Həftə 3
Spring Boot dərindən: qatlar, validation, xəta idarəsi
- Controller / service / repository məsuliyyətləri və DTO ilə entity ayrılması
- Bean Validation, custom validator və validation qrupları
- @RestControllerAdvice və RFC 9457 ProblemDetail
- Konfiqurasiya: @ConfigurationProperties, profillər
- Bean lifecycle və dependency injection tələləri
Laboratoriya: Entity-ni birbaşa qaytaran endpoint-i DTO, validation və vahid ProblemDetail xəta cavabı ilə yenidən yazmaq.
Tapşırıq: Ticket tracker-ə 'yeni bilet yarat' və 'statusu dəyiş' endpoint-lərini validation, business-rule xətaları və testlərlə əlavə etmək; Pull Request.
Yoxlama nöqtəsi: Verilmiş kod bazasına validation və vahid xəta formatı ilə yeni endpoint əlavə edən, review-dan keçmiş Pull Request.
02 · 4–6-cü həftələr
Data qatı və test strategiyası
Mərhələnin məqsədi: Transaction-ları, JPA tələlərini (N+1, lazy loading) və PostgreSQL sorğu planlarını anlamaq; unit, slice və Testcontainers testlərini düzgün qatlarda yazmaq.
Həftə 4
Transaction-lar və JPA tələləri: N+1, lazy loading
- @Transactional: sərhəd, propagation, rollback qaydaları və self-invocation tələsi
- Persistence context, dirty checking, flush
- N+1 problemi və fetch join / EntityGraph / batch fetching
- LazyInitializationException və open-in-view-un qiyməti
- Optimistic locking (@Version) ilə itirilmiş yeniləmələrin qarşısı
Laboratoriya: SQL log-ları və Hibernate statistics ilə N+1 olan endpoint-i ölçmək, üç üsulla düzəldib sorğu sayını müqayisə etmək.
Tapşırıq: Bilet siyahısı endpoint-indəki N+1-i düzəltmək, sorğu sayını yoxlayan test əlavə etmək və @Version ilə eyni vaxtlı redaktəni qorumaq; Pull Request.
Həftə 5
PostgreSQL: index-lər və sorğu planları
- EXPLAIN (ANALYZE, BUFFERS): planı oxumaq
- B-tree index, composite index və sütun sırası, partial index
- Seq Scan nə vaxt düzgündür; statistika və selektivlik
- Pagination: OFFSET vs keyset
- Flyway ilə təhlükəsiz migration və index-i online yaratmaq
Laboratoriya: 1 milyon sətirlik cədvəldə yavaş sorğunu planla analiz edib index əlavə etmək və əvvəl/sonra nəticəni ölçmək.
Tapşırıq: Axtarış endpoint-i üçün index dizayn edib Flyway migration yazmaq, OFFSET-i keyset pagination ilə əvəz etmək, planları qısa qeyddə müqayisə etmək; Pull Request.
Həftə 6
Test strategiyası: unit, slice, Testcontainers
- Test piramidası və hər qatda nəyi test etmək
- Mockito ilə unit test və həddən artıq mock tələsi
- @WebMvcTest və @DataJpaTest slice testləri
- Testcontainers ilə real PostgreSQL integration test
- Flaky testlərin səbəbləri və test data builder-lər
Laboratoriya: Layihə üçün test strategiyası sənədi yazmaq və kritik axın üçün Testcontainers integration testi əlavə etmək.
Tapşırıq: Ticket tracker üçün: 5 unit, 2 slice və 2 Testcontainers testi yazmaq, flaky riskləri qeyd etmək; Pull Request.
Yoxlama nöqtəsi: Yavaş endpoint-in ölçülmüş diaqnozu, düzəlişi (fetch strategiyası + index) və Testcontainers ilə qorunan test dəsti.
03 · 7–9-cü həftələr
Keyfiyyət, müşahidə və təhlükəsizlik
Mərhələnin məqsədi: Testlərlə qorunan refactoring etmək, structured logging və metriklərlə problemi diaqnoz etmək, authn/authz və OWASP əsas zəifliklərini bağlamaq.
Həftə 7
Clean code və refactoring
- Code smell-lər: uzun metod, feature envy, primitive obsession
- Testlərlə qorunan refactoring addımları
- Sealed type, record və Optional-ın düzgün istifadəsi
- Naming, funksiya ölçüsü və kommentin 'niyə'si
- Legacy koda təhlükəsiz giriş: seam-lər və strangler yanaşması
Laboratoriya: 300 sətirlik servis sinfini characterization testlərlə qoruyub kiçik, aydın məsuliyyətli hissələrə bölmək.
Tapşırıq: Verilmiş legacy modulu 4–6 kiçik commit ilə refactor etmək; hər commit-də testlər yaşıl qalmalıdır; Pull Request.
Həftə 8
Logging və observability əsasları
- Structured logging, log səviyyələri və correlation id (MDC)
- Nəyi loglamamalı: şəxsi məlumat və sirlər
- Micrometer metrikləri və Spring Boot Actuator
- Health check, readiness və liveness
- Log + metrik ilə problemi diaqnoz etmək
Laboratoriya: Qəsdən pozulmuş servisi (yavaş sorğu, pool tükənməsi) yalnız log və metriklə diaqnoz edib qısa postmortem yazmaq.
Tapşırıq: Tracker-ə correlation-id filter-i, 3 business metriki və /actuator/health qruplarını əlavə etmək; sirlərin loglanmadığını testlə göstərmək; Pull Request.
Həftə 9
Təhlükəsizlik əsasları: authn/authz və OWASP
- Authentication vs authorization; session və JWT fərqləri
- Spring Security: filter chain, method security, CSRF
- OWASP Top 10: injection, broken access control, sensitive data exposure
- IDOR və resurs səviyyəli icazə yoxlaması
- Parolların saxlanması, asılılıq zəiflikləri, secret idarəsi
Laboratoriya: Verilmiş layihədə SQL injection və IDOR zəifliyini testlə sübut edib bağlamaq.
Tapşırıq: Tracker-də rol və sahiblik əsaslı icazələr (başqasının biletini görməmək → 404) və authorization testləri; təhlükəsizlik review qeydi; Pull Request.
Yoxlama nöqtəsi: Legacy modulun refactoring Pull Request-i, log/metrik əlavələri və təhlükəsizlik review qeydi (tapılan və bağlanan zəifliklər).
04 · 10–12-cü həftələr
Çatdırılma: Docker, CI və müstəqil feature
Mərhələnin məqsədi: Tətbiqi konteynerləşdirmək, CI pipeline qurmaq, biletdən tapşırıqları qiymətləndirib bölmək və feature-i əvvəldən sona müstəqil çatdırmaq.
Həftə 10
Docker və CI pipeline
- Multi-stage Dockerfile, layer cache və kiçik image
- docker compose ilə lokal mühit (app + PostgreSQL)
- GitHub Actions: build, test, cache, artifact
- Pipeline-da Testcontainers və keyfiyyət qapıları
- 12-factor konfiqurasiya və sirlərin CI-da idarəsi
Laboratoriya: Tətbiq üçün multi-stage Dockerfile yazıb image ölçüsünü azaltmaq və CI-da testləri işə salan workflow qurmaq.
Tapşırıq: Tracker üçün Dockerfile, compose.yaml və yaşıl CI workflow-u; README-də 'bir əmrlə işə sal' təlimatı; Pull Request.
Həftə 11
Biletdən feature-ə: qiymətləndirmə və planlama
- Biletin aydınlaşdırılması: acceptance criteria və suallar
- Tapşırıqların bölünməsi və vertikal dilimlər
- Qiymətləndirmə: qeyri-müəyyənlik, aralıq və risk
- Feature flag və tədricən çatdırılma
- Statusu paylaşmaq: bloker, risk, asılılıq
Laboratoriya: Qeyri-müəyyən bir biletdən sual siyahısı, tapşırıq bölgüsü və aralıqlı qiymətləndirmə çıxarıb instructor ilə 'product owner' rolunda müzakirə etmək.
Tapşırıq: Capstone biletini götürüb plan sənədi yazmaq (suallar, dilimlər, qiymətləndirmə, risklər) və ilk dilimi Pull Request kimi göndərmək.
Həftə 12
Capstone: müstəqil feature çatdırılması və demo
- Feature-in qalan dilimlərinin çatdırılması
- Öz-özünə review və Pull Request-in hazırlanması
- Review rəylərinə cavab və düzəliş
- Demo: nəyi, necə, hansı kompromisləri göstərmək
- Retrospektiv və növbəti inkişaf planı
Laboratoriya: Feature-i tamamlamaq, instructor və həmyaşıd review-dan keçirmək, CI yaşıl vəziyyətdə 10 dəqiqəlik demo etmək.
Tapşırıq: Tam feature Pull Request-i (kod, testlər, migration, sənəd), review-ya cavablar və demo qeydləri; təqdimat və retrospektiv.
Yoxlama nöqtəsi: Real koda yaxın kod bazasında müstəqil çatdırılmış, review-dan keçmiş və demo edilmiş feature (kod, testlər, CI yaşıl, qısa sənəd).