500 lines
15 KiB
Markdown
500 lines
15 KiB
Markdown
# Career Progression Repository Schema
|
|
|
|
## Overview
|
|
|
|
This repository contains an 8-week intensive program focused on Python, MariaDB, and Distributed Systems mastery. The structure is designed to track daily progress, build a portfolio, and prepare for senior-level technical interviews.
|
|
|
|
---
|
|
|
|
## Repository Structure
|
|
|
|
```
|
|
career-progression-2026/
|
|
│
|
|
├── README.md # Overview, goals, and progress tracking
|
|
├── .gitignore # Python, IDE, secrets, etc.
|
|
├── LICENSE # MIT or your choice
|
|
│
|
|
├── docs/
|
|
│ ├── syllabus.md # Markdown version of the syllabus
|
|
│ ├── 8_week_career_progression_syllabus.pdf
|
|
│ ├── progress-tracker.md # Weekly checkboxes and reflections
|
|
│ ├── interview-prep/
|
|
│ │ ├── behavioral-stories.md # STAR method stories
|
|
│ │ ├── system-design-notes.md # Common patterns and solutions
|
|
│ │ └── technical-questions.md # LeetCode-style prep
|
|
│ └── resources/
|
|
│ ├── reading-list.md # Articles, books, videos
|
|
│ └── architecture-diagrams/ # Draw.io or Excalidraw files
|
|
│
|
|
├── week-01-python-internals/
|
|
│ ├── README.md # Week overview and daily goals
|
|
│ ├── day-01-gil/
|
|
│ │ ├── notes.md # Learning notes
|
|
│ │ ├── gil_demo.py # CPU-bound comparison
|
|
│ │ └── interview-questions.md # Practice Q&A
|
|
│ ├── day-02-asyncio/
|
|
│ │ ├── notes.md
|
|
│ │ ├── async_scraper.py
|
|
│ │ └── requirements.txt
|
|
│ ├── day-03-profiling/
|
|
│ │ ├── notes.md
|
|
│ │ ├── profiled_scraper.py
|
|
│ │ └── profiling_results/ # cProfile, viztracer outputs
|
|
│ ├── day-04-type-hints/
|
|
│ │ ├── notes.md
|
|
│ │ ├── typed_scraper.py
|
|
│ │ └── mypy.ini
|
|
│ ├── day-05-design-patterns/
|
|
│ │ ├── notes.md
|
|
│ │ ├── scraper_final.py # With context managers, decorators
|
|
│ │ └── tests/
|
|
│ └── weekly-retrospective.md # What worked, what didn't
|
|
│
|
|
├── week-02-mariadb-mastery/
|
|
│ ├── README.md
|
|
│ ├── day-01-innodb/
|
|
│ │ ├── notes.md
|
|
│ │ ├── docker-compose.yml # MariaDB setup
|
|
│ │ ├── init.sql # Sample schema
|
|
│ │ └── transaction_experiments.sql
|
|
│ ├── day-02-indexing/
|
|
│ │ ├── notes.md
|
|
│ │ ├── slow_queries.sql
|
|
│ │ ├── optimized_queries.sql
|
|
│ │ └── explain_analysis.md # EXPLAIN output analysis
|
|
│ ├── day-03-composite-indexes/
|
|
│ │ ├── notes.md
|
|
│ │ ├── composite_index_demo.sql
|
|
│ │ └── performance_comparison.md
|
|
│ ├── day-04-mariadb-features/
|
|
│ │ ├── notes.md
|
|
│ │ ├── json_columns.sql
|
|
│ │ ├── virtual_columns.sql
|
|
│ │ └── window_functions.sql
|
|
│ ├── day-05-schema-design/
|
|
│ │ ├── notes.md
|
|
│ │ ├── twitter_schema.sql
|
|
│ │ ├── ecommerce_schema.sql
|
|
│ │ └── design-decisions.md
|
|
│ └── weekly-retrospective.md
|
|
│
|
|
├── week-03-distributed-systems/
|
|
│ ├── README.md
|
|
│ ├── day-01-message-queues/
|
|
│ │ ├── notes.md
|
|
│ │ ├── docker-compose.yml # RabbitMQ
|
|
│ │ ├── producer.py
|
|
│ │ └── consumer.py
|
|
│ ├── day-02-celery/
|
|
│ │ ├── notes.md
|
|
│ │ ├── celery_app/
|
|
│ │ │ ├── __init__.py
|
|
│ │ │ ├── tasks.py
|
|
│ │ │ └── config.py
|
|
│ │ └── docker-compose.yml
|
|
│ ├── day-03-idempotency/
|
|
│ │ ├── notes.md
|
|
│ │ ├── outbox_pattern/
|
|
│ │ │ ├── models.py
|
|
│ │ │ ├── worker.py
|
|
│ │ │ └── schema.sql
|
|
│ │ └── failure-scenarios.md
|
|
│ ├── day-04-cap-theorem/
|
|
│ │ ├── notes.md
|
|
│ │ ├── cap_examples.md
|
|
│ │ └── pacelc_analysis.md
|
|
│ ├── day-05-rate-limiter/
|
|
│ │ ├── notes.md
|
|
│ │ ├── rate_limiter.py # Redis-based
|
|
│ │ ├── tests/
|
|
│ │ └── system-design.md # Interview answer
|
|
│ └── weekly-retrospective.md
|
|
│
|
|
├── week-04-infrastructure/
|
|
│ ├── README.md
|
|
│ ├── day-01-docker/
|
|
│ │ ├── notes.md
|
|
│ │ ├── Dockerfile
|
|
│ │ ├── .dockerignore
|
|
│ │ └── multi-stage-build.md
|
|
│ ├── day-02-replication/
|
|
│ │ ├── notes.md
|
|
│ │ ├── docker-compose.yml # Primary-Replica
|
|
│ │ └── replication-setup.md
|
|
│ ├── day-03-read-write-split/
|
|
│ │ ├── notes.md
|
|
│ │ ├── app/
|
|
│ │ │ ├── db_router.py
|
|
│ │ │ └── config.py
|
|
│ │ └── proxysql-config.cnf
|
|
│ ├── day-04-scaling-strategies/
|
|
│ │ ├── notes.md
|
|
│ │ ├── partitioning_demo.sql
|
|
│ │ └── scaling-interview-answers.md
|
|
│ ├── day-05-docker-compose/
|
|
│ │ ├── notes.md
|
|
│ │ ├── docker-compose.yml # Full stack
|
|
│ │ └── architecture-diagram.png
|
|
│ └── weekly-retrospective.md
|
|
│
|
|
├── week-05-observability/
|
|
│ ├── README.md
|
|
│ ├── day-01-structured-logging/
|
|
│ │ ├── notes.md
|
|
│ │ ├── logging_config.py
|
|
│ │ └── sample_logs.json
|
|
│ ├── day-02-prometheus/
|
|
│ │ ├── notes.md
|
|
│ │ ├── instrumented_app/
|
|
│ │ │ ├── main.py
|
|
│ │ │ └── metrics.py
|
|
│ │ └── prometheus.yml
|
|
│ ├── day-03-grafana/
|
|
│ │ ├── notes.md
|
|
│ │ ├── dashboards/ # JSON exports
|
|
│ │ └── dashboard-screenshots/
|
|
│ ├── day-04-sentry/
|
|
│ │ ├── notes.md
|
|
│ │ ├── sentry_integration.py
|
|
│ │ └── error-scenarios.md
|
|
│ ├── day-05-outage-simulation/
|
|
│ │ ├── notes.md
|
|
│ │ ├── postmortem.md # STAR format
|
|
│ │ └── incident-timeline.md
|
|
│ └── weekly-retrospective.md
|
|
│
|
|
├── week-06-security/
|
|
│ ├── README.md
|
|
│ ├── day-01-oauth-jwt/
|
|
│ │ ├── notes.md
|
|
│ │ ├── auth_service/
|
|
│ │ │ ├── main.py
|
|
│ │ │ ├── jwt_handler.py
|
|
│ │ │ └── models.py
|
|
│ │ └── oauth-flows.md
|
|
│ ├── day-02-password-hashing/
|
|
│ │ ├── notes.md
|
|
│ │ ├── auth.py
|
|
│ │ └── password-comparison.md # bcrypt vs argon2
|
|
│ ├── day-03-refresh-tokens/
|
|
│ │ ├── notes.md
|
|
│ │ ├── token_rotation.py
|
|
│ │ └── security-tests.md
|
|
│ ├── day-04-sql-injection-secrets/
|
|
│ │ ├── notes.md
|
|
│ │ ├── sql_injection_examples.md
|
|
│ │ ├── vault_integration.py
|
|
│ │ └── .env.example
|
|
│ ├── day-05-owasp/
|
|
│ │ ├── notes.md
|
|
│ │ ├── security-audit.md
|
|
│ │ └── owasp-checklist.md
|
|
│ └── weekly-retrospective.md
|
|
│
|
|
├── week-07-system-design/
|
|
│ ├── README.md
|
|
│ ├── day-01-microservices/
|
|
│ │ ├── notes.md
|
|
│ │ ├── ecommerce-design.md
|
|
│ │ └── service-boundaries.png
|
|
│ ├── day-02-grpc/
|
|
│ │ ├── notes.md
|
|
│ │ ├── protos/
|
|
│ │ │ └── user_service.proto
|
|
│ │ ├── server.py
|
|
│ │ └── client.py
|
|
│ ├── day-03-refactoring/
|
|
│ │ ├── notes.md
|
|
│ │ ├── monolith/ # Before
|
|
│ │ ├── microservices/ # After
|
|
│ │ │ ├── user-service/
|
|
│ │ │ └── order-service/
|
|
│ │ └── migration-strategy.md
|
|
│ ├── day-04-api-gateway/
|
|
│ │ ├── notes.md
|
|
│ │ ├── gateway/
|
|
│ │ │ ├── main.py
|
|
│ │ │ ├── routing.py
|
|
│ │ │ └── middleware/
|
|
│ │ └── architecture.png
|
|
│ ├── day-05-mock-interviews/
|
|
│ │ ├── notes.md
|
|
│ │ ├── design-instagram.md
|
|
│ │ ├── design-uber.md
|
|
│ │ ├── design-netflix.md
|
|
│ │ └── interview-recording-notes.md
|
|
│ └── weekly-retrospective.md
|
|
│
|
|
├── week-08-final-project/
|
|
│ ├── README.md # Project overview
|
|
│ ├── architecture/
|
|
│ │ ├── system-diagram.png
|
|
│ │ ├── database-schema.sql
|
|
│ │ └── api-specification.yaml # OpenAPI
|
|
│ ├── src/
|
|
│ │ ├── api/
|
|
│ │ │ ├── main.py
|
|
│ │ │ ├── routes/
|
|
│ │ │ ├── models/
|
|
│ │ │ └── middleware/
|
|
│ │ ├── workers/
|
|
│ │ │ ├── celery_app.py
|
|
│ │ │ └── tasks/
|
|
│ │ ├── database/
|
|
│ │ │ ├── migrations/
|
|
│ │ │ └── seeds/
|
|
│ │ └── config/
|
|
│ │ ├── settings.py
|
|
│ │ └── logging.py
|
|
│ ├── infrastructure/
|
|
│ │ ├── docker-compose.yml
|
|
│ │ ├── Dockerfile
|
|
│ │ ├── prometheus/
|
|
│ │ ├── grafana/
|
|
│ │ └── nginx/
|
|
│ ├── tests/
|
|
│ │ ├── unit/
|
|
│ │ ├── integration/
|
|
│ │ └── load/
|
|
│ ├── monitoring/
|
|
│ │ ├── dashboards/
|
|
│ │ └── alerts/
|
|
│ ├── docs/
|
|
│ │ ├── setup.md
|
|
│ │ ├── deployment.md
|
|
│ │ └── troubleshooting.md
|
|
│ ├── requirements.txt
|
|
│ ├── pyproject.toml
|
|
│ └── weekly-retrospective.md
|
|
│
|
|
├── portfolio/
|
|
│ ├── README.md # Portfolio overview for recruiters
|
|
│ ├── project-showcase.md # Best projects with screenshots
|
|
│ ├── technical-blog-posts/ # Write-ups of key learnings
|
|
│ │ ├── gil-deep-dive.md
|
|
│ │ ├── database-scaling.md
|
|
│ │ └── microservices-migration.md
|
|
│ └── resume-bullets.md # Achievement-focused bullets
|
|
│
|
|
└── scripts/
|
|
├── setup.sh # Initial environment setup
|
|
├── daily-commit.sh # Automated daily commit template
|
|
└── week-summary.py # Generate weekly progress report
|
|
```
|
|
|
|
---
|
|
|
|
## Key Features
|
|
|
|
### 📁 Week-Based Structure
|
|
Each week is self-contained with daily subdirectories for focused learning and implementation.
|
|
|
|
### 📝 Documentation-First
|
|
Every directory includes:
|
|
- `README.md` for overview and goals
|
|
- `notes.md` for learning retention
|
|
- Interview preparation materials
|
|
|
|
### 🔄 Retrospectives
|
|
Weekly reflection documents to:
|
|
- Track progress
|
|
- Identify challenges
|
|
- Adjust learning strategies
|
|
|
|
### 💼 Portfolio Section
|
|
Ready-to-share materials including:
|
|
- Project showcases with screenshots
|
|
- Technical blog posts
|
|
- Resume-ready achievement bullets
|
|
|
|
### 🧪 Tests Included
|
|
Demonstrates production-ready code practices with unit, integration, and load tests.
|
|
|
|
### 🐳 Infrastructure as Code
|
|
All Docker configurations versioned for reproducibility and easy environment setup.
|
|
|
|
### 📊 Interview Prep
|
|
Dedicated sections for:
|
|
- Behavioral interviews (STAR method)
|
|
- Technical interviews (LeetCode-style)
|
|
- System design practice
|
|
|
|
---
|
|
|
|
## Suggested `.gitignore`
|
|
|
|
```gitignore
|
|
# Python
|
|
__pycache__/
|
|
*.py[cod]
|
|
*$py.class
|
|
*.so
|
|
.Python
|
|
venv/
|
|
env/
|
|
.venv
|
|
|
|
# IDE
|
|
.vscode/
|
|
.idea/
|
|
*.swp
|
|
*.swo
|
|
|
|
# Secrets
|
|
.env
|
|
*.pem
|
|
*.key
|
|
secrets/
|
|
|
|
# Database
|
|
*.db
|
|
*.sqlite3
|
|
|
|
# Logs
|
|
*.log
|
|
logs/
|
|
|
|
# Profiling
|
|
*.prof
|
|
*.trace
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Docker
|
|
.docker/
|
|
```
|
|
|
|
---
|
|
|
|
## Daily Workflow
|
|
|
|
### 1. Start of Day
|
|
```bash
|
|
# Create daily branch
|
|
git checkout -b week-01/day-01
|
|
|
|
# Navigate to daily directory
|
|
cd week-01-python-internals/day-01-gil/
|
|
```
|
|
|
|
### 2. During Learning
|
|
- Take notes in `notes.md`
|
|
- Write code with meaningful commits
|
|
- Document interview questions and answers
|
|
|
|
### 3. End of Day
|
|
```bash
|
|
# Commit daily work
|
|
git add .
|
|
git commit -m "Week 1 Day 1: GIL deep dive and CPU-bound comparison"
|
|
|
|
# Merge to main
|
|
git checkout main
|
|
git merge week-01/day-01
|
|
git push origin main
|
|
```
|
|
|
|
### 4. End of Week
|
|
- Complete `weekly-retrospective.md`
|
|
- Update `docs/progress-tracker.md`
|
|
- Review and refactor code
|
|
|
|
---
|
|
|
|
## Portfolio Building
|
|
|
|
### During the Program
|
|
- Document key learnings in `technical-blog-posts/`
|
|
- Take screenshots of working projects
|
|
- Write achievement-focused bullets for resume
|
|
|
|
### After Completion
|
|
- Make repository public on GitHub
|
|
- Add comprehensive README with project highlights
|
|
- Link to portfolio in resume and LinkedIn
|
|
|
|
---
|
|
|
|
## Benefits of This Structure
|
|
|
|
✅ **Granular Progress Tracking** — Daily commits show consistent effort
|
|
✅ **Interview-Ready** — Easy to reference specific projects during interviews
|
|
✅ **Portfolio-Friendly** — Clean structure for sharing with recruiters
|
|
✅ **Reproducible** — Anyone can clone and follow along
|
|
✅ **Scalable** — Easy to add more weeks or topics
|
|
✅ **Professional** — Demonstrates software engineering best practices
|
|
|
|
---
|
|
|
|
## Getting Started
|
|
|
|
1. **Initialize Repository**
|
|
```bash
|
|
git init career-progression-2026
|
|
cd career-progression-2026
|
|
```
|
|
|
|
2. **Create Directory Structure**
|
|
```bash
|
|
# Use the provided setup script
|
|
bash scripts/setup.sh
|
|
```
|
|
|
|
3. **Start Week 1**
|
|
```bash
|
|
cd week-01-python-internals/day-01-gil/
|
|
# Begin learning and coding!
|
|
```
|
|
|
|
4. **Track Progress**
|
|
- Update `docs/progress-tracker.md` daily
|
|
- Commit frequently with descriptive messages
|
|
- Review weekly retrospectives
|
|
|
|
---
|
|
|
|
## Success Metrics
|
|
|
|
By the end of 8 weeks, you should have:
|
|
|
|
- ✅ **40+ days** of documented learning and code
|
|
- ✅ **8 major projects** demonstrating different skills
|
|
- ✅ **Portfolio-ready** GitHub repository
|
|
- ✅ **Interview stories** using STAR method
|
|
- ✅ **System design** practice for senior roles
|
|
- ✅ **Technical blog posts** showcasing expertise
|
|
|
|
---
|
|
|
|
## Next Steps
|
|
|
|
After completing the 8-week program:
|
|
|
|
1. **Apply to positions** with your portfolio repository
|
|
2. **Continue contributing** to open-source projects
|
|
3. **Publish blog posts** on Medium or Dev.to
|
|
4. **Practice interviews** on Pramp or interviewing.io
|
|
5. **Network** by sharing your learnings on LinkedIn
|
|
|
|
---
|
|
|
|
## License
|
|
|
|
Choose an appropriate license (MIT recommended for portfolio projects).
|
|
|
|
---
|
|
|
|
## Contact
|
|
|
|
Add your contact information and links:
|
|
- GitHub: [your-username]
|
|
- LinkedIn: [your-profile]
|
|
- Email: [your-email]
|
|
|
|
---
|
|
|
|
**Good luck with your career progression journey! 🚀**
|