Golang Software Engineer Preparation Projects
Foundational Projects
- CLI Tools:
- Build a To-Do List manager
- Create a file organizer
- JSON/YAML/CSV parser and converter
- Web Crawler:
- Crawl a website and collect metadata or links
- Use goroutines to fetch multiple pages concurrently
- REST API with CRUD:
- Example: Bookstore or task manager
- Use net/http and gorilla/mux or chi
- Add tests and logging
Intermediate Projects
- Authentication System:
- JWT-based login/logout
- Role-based access
- Optional: OAuth integration
- Concurrent File Processor:
- Read large logs and extract info
- Use channels and worker pools
- URL Shortener:
- REST API + Redis
- Analytics tracking
- Blog Platform or CMS:
- REST or gRPC API
- Markdown rendering
- Admin interface
Advanced Projects
- gRPC Microservices:
- Services like user, product, order
- Use gRPC
- Add tracing, logging, service discovery
- Distributed Task Queue:
- Similar to Celery
- Use RabbitMQ, NATS, or Redis Streams
- Load Balancer or Proxy:
- Accept HTTP requests and forward
- Round-robin or IP-hash
- Metrics and health checks
- Kubernetes Operator:
- Custom controller/operator
- Deploy and manage custom resources
Bonus: Testing and Tooling
- Write unit tests with testing package
- Use benchmarks for performance testing
- Explore pprof and go tool trace for profiling
- Build a custom linter with go/ast or as a golangci-lint plugin
Tools and Ecosystem Familiarity
- Frameworks: Gin, Fiber, Echo
- ORM/DB: GORM, sqlx, pgx
- Messaging: NATS, Kafka, RabbitMQ
- CI/CD: Docker + GitHub Actions or CircleCI
- Deployment: Kubernetes, Helm, Terraform basics
- Cloud: AWS SDK for Go (S3, DynamoDB, etc.)
Tips
- Push everything to GitHub with good README and tests
- Use Go modules properly
- Include CI badges and Docker support
- Keep code idiomatic (go fmt, golint, etc.)