Initial setup

This commit is contained in:
Chuck Ard
2026-03-14 16:37:03 -05:00
commit 06d6eeaad6
4 changed files with 648 additions and 0 deletions

499
README.md Normal file
View File

@@ -0,0 +1,499 @@
# 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! 🚀**