Forwarded from RandRng
تو زندگیم یادگرفتم همیشه دستم رو زانوی خودم باشه، فقط به خودم تکیه کنم و فقط روی خودم حساب کنم.
با همهی اینها، وقتی پدرم فوت کرد، فهمیدم دیگه زورم به دنیا نمیرسه؛ چون قدرت مشتم از احساس امنیتی بود که بخاطر وجود پدرم داشتم، ولی بازم جنگیدم.
من آدم حرف زدن نیستم؛ دردام مال خودم بوده و هست.
خیلی جاها خیلی خیلی کم آوردم ولی بازم خندیدم و ادامه دادم.
هرجای زندگیم کم میآوردم دوتا دلیل داشتم که بازم ادامه بدم؛
اول اینکه نمیخواستم ببینم مادرم بخاطر من غم تو صورتش هست.
دوم اینکه پشتم به مادر گرم بود، فقط کافی بود دست بذاره رو سرم و باهام حرف بزنه؛ کل دنیا هم حریفم نبود.
اما حالا دیگه نه پشت دارم نه مشت.
دیگه حالی برای جنگیدن نیست، امیدم به تموم شدن این جنگه.
---------------------
این چندروز کلی پیام تسلیت دریافت کردم، این حرفها رو گفتم که بدونید چقدر پیامهاتون برام ارزش داشت و البته عذرخواه و شرمندم که نتونستم پاسخ بدم.
برای همهی شما و عزیزانتون آرزوی سلامتی دارم.
با همهی اینها، وقتی پدرم فوت کرد، فهمیدم دیگه زورم به دنیا نمیرسه؛ چون قدرت مشتم از احساس امنیتی بود که بخاطر وجود پدرم داشتم، ولی بازم جنگیدم.
من آدم حرف زدن نیستم؛ دردام مال خودم بوده و هست.
خیلی جاها خیلی خیلی کم آوردم ولی بازم خندیدم و ادامه دادم.
هرجای زندگیم کم میآوردم دوتا دلیل داشتم که بازم ادامه بدم؛
اول اینکه نمیخواستم ببینم مادرم بخاطر من غم تو صورتش هست.
دوم اینکه پشتم به مادر گرم بود، فقط کافی بود دست بذاره رو سرم و باهام حرف بزنه؛ کل دنیا هم حریفم نبود.
اما حالا دیگه نه پشت دارم نه مشت.
دیگه حالی برای جنگیدن نیست، امیدم به تموم شدن این جنگه.
---------------------
این چندروز کلی پیام تسلیت دریافت کردم، این حرفها رو گفتم که بدونید چقدر پیامهاتون برام ارزش داشت و البته عذرخواه و شرمندم که نتونستم پاسخ بدم.
برای همهی شما و عزیزانتون آرزوی سلامتی دارم.
❤452
Forwarded from RandRng
#Backend_RoadMap_2025
قبل از اینکه بخواید این
یک نکتهای که اضافه کنم؛ توی جلسات و ... که بحث شد من اصلا قرار نیست هیچ چیزی رو آموزش بدم (اشتباهات رو کمک میکنم حل بشه و ...) اما اینکه آموزش بدم
چیزایی که توقع دارم یک
بازم توجه کنید
فریمورک مورد نظرتون رو کمی بشناسید (من روی
1. Middleware: Starlette interface for how to write middleware.
Must know: auth, request ID, timing, gzip, validators, rate-limit, logging.
Important to know the order of execution.
2. CORS (and headers in general).
3. Authentication / Authorization: What is JWT + RS256.
Nice to know: Auth0, Cognito.
4. SQL and SQLAlchemy 2.0 (async style).
5. Tests:
* Unit tests for business logic.
* Integration tests for database, Redis, etc. interactions.
* Contract tests (very important) for endpoints and services you use.
6. Benchmarking: k6, load testing, CI smoke tests for performance-sensitive endpoints; wrk, hyperfine (or alternatives).
7. Docker / Docker Compose: multi-stage builds.
8. Profiling: Scalene or Perf — flamegraph interpretation.
9. Caching (Redis): cache invalidation; GET/SET strategies (Cache-Aside vs Write-Through).
10. Background tasks:
FastAPI background tasks & Dramatiq (or other alternatives).
Don't bring Celery or its equivalent into projects — it's heavy and overkill in most cases.
Use/understand: idempotency, retries, dead-lettering.
11. Observability: Logging, tracing, metrics.
Logs must be structured (JSON is a good option).
Distributed tracing is a must-have.
Metrics (Prometheus) are important — at minimum: response_time_ms, active_connections, etc.
12. Configuration management: Pydantic Settings; no hard-coded settings or configs.
13. Migrations: Alembic — each migration should have both UP and DOWN so it is safe to revert.
14. API documentation: FastAPI provides it automatically, but don't forget to use the Pydantic model
BTW: Pydantic v2 is the only accepted version.
15. Error handling + correct HTTP codes.
16. Graceful shutdown:
App must stop accepting new HTTP connections,
finish processing current requests,
drain the database connection pool,
then exit.
17. Idempotency and retries:
For network/database failures — learn exponential backoff, circuit breakers, bulkheads.
18. Health checks and readiness probes: The app must provide them (Docker health check alone is not accepted).
19. Connection pooling tuning: Postgres, Redis, etc.
You must be able to explain tuning decisions based on your benchmarks/profiling results.
20. Security basics: Input sanitization/validation, rate limiting, secrets management, secure defaults (CSP, HSTS), threat modeling for endpoints.
21. Scalability patterns: Focus on connection pooling and indexing first.
Too many or unnecessary indexes = Fail.
Nice to learn: horizontal scaling, load balancing, sharding, replication.
22. Feature flagging (dynamic configuration): All projects should have it — very important.
23. API versioning strategy: Header versioning / URL versioning.
24. Architecture Decision Records
From day 1 you must have this document in the project with at least 3 entries per decision:
What you decided.
Why you did that.
What the consequences are.
--————————————-
Future / next steps
1. Design system architecture.
2. Integrate message queues (when and why to use them) — Kafka, RabbitMQ.
3. Event-driven patterns.
4. Optimize for latency.
5. GraphQL / gRPC — when and why to use them.
پینوشت: اگر جایی کپی کردید؛ لطفا پیام قبلی و بعدی رو هم بذارید 🌱
توضیحات مهم هست.
قبل از اینکه بخواید این
roadmap رو دنبال کنید باید پست قبلی رو بخونید.یک نکتهای که اضافه کنم؛ توی جلسات و ... که بحث شد من اصلا قرار نیست هیچ چیزی رو آموزش بدم (اشتباهات رو کمک میکنم حل بشه و ...) اما اینکه آموزش بدم
FastAPI چیست و جطوری CRUD بنویسیم و ازین موارد با اوضاع الانم اصلا نمیخونه پس دلیل ساده بودنش همین پست قبلی هست.چیزایی که توقع دارم یک
Senior توی جنبهی فنی بکند بلد باشه (اعداد هیچ ربطی به ترتیب یادگیری نداره؛ فقط برای این هست که تهش بدونم چندتا مورد رو گفتم) از دوستان Senior هم میخوام اگر نکته یا موردی جا افتاده بهم یادآوری کنند.بازم توجه کنید
Senior شدن کلی جنبههای مختلف داره ولی برای بخش فنی مربوط به بکند این لیست کافی و قوی هست؛ برای بحثهای دیگر هم از منابع خودش میتونید دنبال کنید.فریمورک مورد نظرتون رو کمی بشناسید (من روی
FastAPI پیش میرم ولی خیلی فرقی نیست)1. Middleware: Starlette interface for how to write middleware.
Must know: auth, request ID, timing, gzip, validators, rate-limit, logging.
Important to know the order of execution.
2. CORS (and headers in general).
3. Authentication / Authorization: What is JWT + RS256.
Nice to know: Auth0, Cognito.
4. SQL and SQLAlchemy 2.0 (async style).
5. Tests:
* Unit tests for business logic.
* Integration tests for database, Redis, etc. interactions.
* Contract tests (very important) for endpoints and services you use.
6. Benchmarking: k6, load testing, CI smoke tests for performance-sensitive endpoints; wrk, hyperfine (or alternatives).
7. Docker / Docker Compose: multi-stage builds.
8. Profiling: Scalene or Perf — flamegraph interpretation.
9. Caching (Redis): cache invalidation; GET/SET strategies (Cache-Aside vs Write-Through).
10. Background tasks:
FastAPI background tasks & Dramatiq (or other alternatives).
Don't bring Celery or its equivalent into projects — it's heavy and overkill in most cases.
Use/understand: idempotency, retries, dead-lettering.
11. Observability: Logging, tracing, metrics.
Logs must be structured (JSON is a good option).
Distributed tracing is a must-have.
Metrics (Prometheus) are important — at minimum: response_time_ms, active_connections, etc.
12. Configuration management: Pydantic Settings; no hard-coded settings or configs.
13. Migrations: Alembic — each migration should have both UP and DOWN so it is safe to revert.
14. API documentation: FastAPI provides it automatically, but don't forget to use the Pydantic model
example field.BTW: Pydantic v2 is the only accepted version.
15. Error handling + correct HTTP codes.
16. Graceful shutdown:
App must stop accepting new HTTP connections,
finish processing current requests,
drain the database connection pool,
then exit.
17. Idempotency and retries:
For network/database failures — learn exponential backoff, circuit breakers, bulkheads.
18. Health checks and readiness probes: The app must provide them (Docker health check alone is not accepted).
19. Connection pooling tuning: Postgres, Redis, etc.
You must be able to explain tuning decisions based on your benchmarks/profiling results.
20. Security basics: Input sanitization/validation, rate limiting, secrets management, secure defaults (CSP, HSTS), threat modeling for endpoints.
21. Scalability patterns: Focus on connection pooling and indexing first.
Too many or unnecessary indexes = Fail.
Nice to learn: horizontal scaling, load balancing, sharding, replication.
22. Feature flagging (dynamic configuration): All projects should have it — very important.
23. API versioning strategy: Header versioning / URL versioning.
24. Architecture Decision Records
From day 1 you must have this document in the project with at least 3 entries per decision:
What you decided.
Why you did that.
What the consequences are.
--————————————-
Future / next steps
1. Design system architecture.
2. Integrate message queues (when and why to use them) — Kafka, RabbitMQ.
3. Event-driven patterns.
4. Optimize for latency.
5. GraphQL / gRPC — when and why to use them.
پینوشت: اگر جایی کپی کردید؛ لطفا پیام قبلی و بعدی رو هم بذارید 🌱
توضیحات مهم هست.
❤26👍1
RandRng
#Backend_RoadMap_2025 قبل از اینکه بخواید این roadmap رو دنبال کنید باید پست قبلی رو بخونید. یک نکتهای که اضافه کنم؛ توی جلسات و ... که بحث شد من اصلا قرار نیست هیچ چیزی رو آموزش بدم (اشتباهات رو کمک میکنم حل بشه و ...) اما اینکه آموزش بدم FastAPI چیست و…
نمیدونم چرا ولی از هفته قبل تعداد پیامهای یادگیری بکند برام خیلی خیلی زیاد شده.
تا قبل از این همگی هوش مصنوعی بود.
توقع دارم بعد از این مرحله
حتماً پیام قبل و بعد این
شرایط رو درک کنید و
پینوشت:
مواردی مثل
زمانبندی برای کسی که روزی ۴ ساعت بتونه وقت بذاره توقع دارم توی ۶ ماه این موضوعات رو تموم کنه!
حداکثر ۲ ساعت مطالعه،
حداقل ۲ ساعت توسعه کد.
در طول هفته (شنبه تا ۵ شنبه)
جمعه هم ۱ ساعت، برای
تا قبل از این همگی هوش مصنوعی بود.
توقع دارم بعد از این مرحله
Rust باشه و System Programming (خدا کنه خودم به اندازه کافی تجربه کنم تا اون موقع)حتماً پیام قبل و بعد این
roadmap رو توی اون کانال بخونید.شرایط رو درک کنید و
context توی ذهنتون باشه و بعد شروع به دنبال کردن این roadmap کنید.پینوشت:
مواردی مثل
SSO, Event driven, ... هستند که یک سنیور باید بلد باشه اما ازونجا که مفاهیم نقشهراه بالا باعث میشه هرکسی هر زمان که لازم داشت بتونه به راحتی اونها رو یاد بگیره دیگه اینجا گفته نشده زمانبندی برای کسی که روزی ۴ ساعت بتونه وقت بذاره توقع دارم توی ۶ ماه این موضوعات رو تموم کنه!
حداکثر ۲ ساعت مطالعه،
حداقل ۲ ساعت توسعه کد.
در طول هفته (شنبه تا ۵ شنبه)
جمعه هم ۱ ساعت، برای
code review (بخشهایی که قبلتر کد زدید)❤41👍8
ی جملهی معروفی هست:
در اعتراض به دزدی، اختلاس، ناکارآمدی و فساد و ... هم
«در جنگها، این سربازاناند که کشته میشوند، نه رهبران.»
در اعتراض به دزدی، اختلاس، ناکارآمدی و فساد و ... هم
دزد و مختلس و مسئولِ ناکارآمد در آرامشاند،
اما
این معترض و محافظاند که روبهروی هم وایساده و همدیگر را میکشند.
معترض میدونه برای چی اعتراض میکند.
اما آقای محافظ…
تو هم میدانی از چی داری دفاع میکنی؟
❤111👍28