Materials for getting an ML Engineer offer.
flowchart TD
A[π Start] --> B[1οΈβ£ Foundations<br/>Python Β· Math Β· CS]
B --> C[2οΈβ£ Data<br/>SQL Β· Pandas Β· Spark]
C --> D[3οΈβ£ Classical ML<br/>sklearn Β· CatBoost Β· XGBoost]
D --> E[4οΈβ£ Deep Learning<br/>PyTorch Β· CV Β· NLP]
E --> F[5οΈβ£ Modern AI<br/>Transformers Β· LLM Β· RAG]
D --> G[6οΈβ£ MLOps<br/>Docker Β· K8s Β· MLflow Β· CI/CD]
F --> G
G --> H[7οΈβ£ System Design<br/>for ML systems]
H --> I[πΌ Junior ML Engineer<br/>120β200k β½]
I --> J[πΌ Middle ML Engineer<br/>200β350k β½]
J --> K[πΌ Senior / Lead<br/>350β800k+ β½]
style A fill:#4A90E2,stroke:#fff,color:#fff
style I fill:#27AE60,stroke:#fff,color:#fff
style J fill:#16A085,stroke:#fff,color:#fff
style K fill:#8E44AD,stroke:#fff,color:#fff
| # | Section | Duration | EN | RU |
|---|---|---|---|---|
| 1 | π Foundations β Python, algorithms, CS | 1β2 months | en | ru |
| 2 | π Math for ML | in parallel | en | ru |
| 3 | ποΈ Data Engineering for ML | 1β2 months | en | ru |
| 4 | π€ Classical ML | 2β3 months | en | ru |
| 5 | π§ Deep Learning | 2β3 months | en | ru |
| 6 | π¬ NLP, CV, LLM | 2β3 months | en | ru |
| 7 | βοΈ MLOps & Production | 2 months | en | ru |
| 8 | ποΈ ML System Design | 1 month | en | ru |
| 9 | πΌ Career in the Russian market | continuous | en | ru |
| 10 | π― Pet projects and portfolio | continuous | en | ru |
| 11 | π Resources | β | en | ru |
gantt
title Approximate 12-month plan
dateFormat YYYY-MM-DD
axisFormat %m.%y
section Foundations
Python advanced + algorithms :a1, 2026-05-01, 45d
Math review + statistics :a2, 2026-05-01, 60d
section Data
Advanced SQL + Pandas :b1, after a1, 30d
Spark / Airflow basics :b2, after b1, 30d
section ML
Classical ML + Kaggle competition :c1, after b1, 75d
Deep Learning with PyTorch :c2, after c1, 75d
NLP / LLM / RAG :c3, after c2, 60d
section MLOps
Docker, FastAPI, MLflow, CI/CD :d1, after c2, 45d
K8s + serving, Triton/vLLM :d2, after d1, 30d
section Career
Pet projects + GitHub :e1, 2026-06-01, 300d
Internship / offer :e2, 2026-11-01, 180d
| Grade | Experience | Moscow, gross / month | Regions |
|---|---|---|---|
| πΆ Intern / Trainee | 0 | 60β120k β½ | 40β80k β½ |
| π Junior | 0β1 year | 120β200k β½ | 90β150k β½ |
| β‘ Middle | 2β3 years | 200β350k β½ | 150β280k β½ |
| π₯ Senior | 4β6 years | 350β600k β½ | 250β450k β½ |
| π Lead / Staff | 6+ years | 600kβ1M+ β½ | 400β700k β½ |
Sources: hh.ru, getmatch, Habr Career, Habr salary reports, ODS chats. Numbers depend on company, grade, and stack; LLM/CV roles usually pay above average.
| π₯ Tier-1 | π₯ Tier-2 | π₯ Tier-3 |
|---|---|---|
| Yandex (Search, Alice, Shedevrum) | Avito | Wildberries |
| Sber / SberAI (GigaChat, Kandinsky) | Ozon | X5 Tech |
| T-Bank | MTS AI / MWS | Alfa-Bank |
| VK (VK Tech, Marusia) | Kaspersky | Gazprombank Tech |
| Skoltech / AIRI | VTB, Sovcombank |
- Python: OOP, async, typing, tests (
pytest) - Algorithms: ~150 LeetCode Easy/Medium problems
- SQL: window functions, optimization, EXPLAIN
- Math: linear algebra, calculus, probability, statistics
- Classical ML: explain bias/variance, regularization, boosting internals
- Deep Learning: implemented backprop, CNN, Transformer by hand
- PyTorch: can write a train loop without copy-paste
- LLM: attention, KV-cache, RAG, fine-tuning (LoRA)
- MLOps: deployed a model with Docker + FastAPI + monitoring
- System Design: studied 3+ cases: recommendations, search, fraud, NLP service
- Portfolio: 2β3 strong pet projects on GitHub
- Kaggle: 1+ competition with a Bronze+ medal
- Resume on hh + getmatch + Habr Career
- Go through sections in order, but study math and algorithms in parallel.
- Reinforce every topic with a project; see 10_projects.md.
- Every 2 weeks, review progress and update PROGRESS.md.
- Most resources are Russian-language and practical for the Russian market.