Learning Guide
Structured approach to learning new technologies through hands-on practice.
Learning Philosophy
- •Start with why - Understand the problem before the solution
- •Learn by doing - Hands-on projects over passive reading
- •Build incrementally - Small steps, gradual complexity
- •Connect to existing knowledge - Relate new concepts to familiar ones
- •Experiment safely - Use sandboxes and local environments
Learning Path Template
When learning a new technology:
1. Orientation (30 min)
- •What problem does this solve?
- •When should I use it vs alternatives?
- •What are the key concepts?
2. Hello World (1-2 hours)
- •Minimal working example
- •Understand the basic workflow
- •Get something running
3. Guided Project (2-4 hours)
- •Build something small but useful
- •Follow a tutorial with modifications
- •Document what you learn
4. Independent Project (4-8 hours)
- •Apply to a real problem
- •Make mistakes and debug
- •Build muscle memory
5. Deep Dive (ongoing)
- •Explore advanced features
- •Read source code
- •Contribute or share knowledge
Technology Learning Paths
Go Programming
Week 1: Foundations
code
Day 1-2: Syntax and Types - Variables, functions, control flow - Project: CLI calculator Day 3-4: Data Structures - Slices, maps, structs - Project: Contact book CLI Day 5-7: Packages and Testing - Creating modules - Writing tests - Project: URL shortener library
Week 2: Concurrency
code
Day 1-2: Goroutines and Channels - Project: Concurrent web scraper Day 3-4: Sync Package - Mutexes, WaitGroups - Project: Rate-limited API client Day 5-7: Real Application - Project: Simple HTTP server with graceful shutdown
Terraform / IaC
Week 1: Core Concepts
code
Day 1-2: HCL Basics - Resources, variables, outputs - Project: Create S3 bucket + IAM policy Day 3-4: State Management - Remote state, locking - Project: Multi-file infrastructure Day 5-7: Modules - Creating reusable modules - Project: VPC module with subnets
Week 2: Real Infrastructure
code
Day 1-3: Complete Application - Project: Deploy containerized app to ECS Day 4-5: Environments - Workspaces or directory structure - Project: Dev/Staging/Prod setup Day 6-7: CI/CD Integration - Project: GitHub Actions for terraform plan/apply
Kubernetes
Week 1: Local Development
code
Day 1-2: Concepts - Pods, Services, Deployments - Project: Deploy nginx with minikube Day 3-4: Configuration - ConfigMaps, Secrets, Volumes - Project: Stateful application with persistence Day 5-7: Networking - Services, Ingress - Project: Multi-service application
Week 2: Production Patterns
code
Day 1-2: Scaling - HPA, Resource limits - Project: Auto-scaling deployment Day 3-4: Observability - Logs, metrics, health checks - Project: Add monitoring to application Day 5-7: Helm - Charts and values - Project: Create Helm chart for your app
Project Ideas by Skill Level
Beginner Projects
| Project | Technologies | Time |
|---|---|---|
| Personal CLI tool | Go or Python | 2-4 hrs |
| Static site generator | Any language | 4-6 hrs |
| API wrapper library | TypeScript | 3-5 hrs |
| Docker dev environment | Docker Compose | 2-3 hrs |
Intermediate Projects
| Project | Technologies | Time |
|---|---|---|
| REST API with DB | Go/Python + PostgreSQL | 8-12 hrs |
| CI/CD pipeline | GitHub Actions | 4-6 hrs |
| Infrastructure module | Terraform + AWS | 6-8 hrs |
| Monitoring stack | Prometheus + Grafana | 4-6 hrs |
Advanced Projects
| Project | Technologies | Time |
|---|---|---|
| Microservices app | K8s + multiple services | 20+ hrs |
| Custom Terraform provider | Go + Terraform SDK | 15+ hrs |
| Full GitOps setup | ArgoCD + Helm | 10-15 hrs |
| Observability platform | OTEL + various backends | 15+ hrs |
Learning Resources Strategy
Official Documentation First
- •Most accurate and up-to-date
- •Often has tutorials and examples
- •Understand the source of truth
Interactive Learning
- •Go: Go by Example, Tour of Go
- •Terraform: HashiCorp Learn
- •Kubernetes: Kubernetes.io tutorials
- •AWS: AWS Skill Builder
When to Use Tutorials
- •Getting started with new concepts
- •Understanding common patterns
- •Seeing best practices in action
When to Read Source Code
- •Understanding implementation details
- •Debugging unexpected behavior
- •Learning advanced patterns
Effective Practice Techniques
Deliberate Practice
- •Set specific goals for each session
- •Focus on weak areas
- •Get immediate feedback
- •Reflect on what worked
Spaced Repetition
- •Review concepts at increasing intervals
- •Build projects that reinforce learning
- •Revisit old projects with new knowledge
Teaching to Learn
- •Write blog posts explaining concepts
- •Create documentation for your projects
- •Help others in communities
Homelab as Learning Lab
Your homelab is perfect for practicing:
| Technology | Homelab Application |
|---|---|
| Docker | Deploy new services |
| Terraform | Manage cloud resources |
| Kubernetes | Run k3s cluster |
| Go | Build automation tools |
| Monitoring | Set up observability |
Safe Experimentation
- •Use separate VLANs for testing
- •Snapshot VMs before changes
- •Keep backups of working configs
- •Document what you try
Progress Tracking
Learning Journal Format
markdown
# [Date] - [Technology] - [Topic] ## What I Learned - Key concept 1 - Key concept 2 ## What I Built - Description of project/exercise ## Challenges - Problem I encountered - How I solved it ## Next Steps - [ ] What to learn next - [ ] Project to try
Skill Assessment
Rate yourself 1-5 on each technology:
- •Aware - Know it exists
- •Familiar - Understand basics
- •Competent - Can build simple things
- •Proficient - Can build complex things
- •Expert - Can teach others
Track progress monthly to see growth.