3 bài học quý giá từ Hackathon PIONE DREAM 2025
🏆 Context
Vào tháng 1/2025, tôi cùng 2 bạn trong lớp tham gia PIONE DREAM HACKATHON do HUTECH tổ chức. Theme của năm nay là "Smart City Solutions".
Team của chúng tôi:
- Tôi: Backend Developer (Go + PostgreSQL)
- Bạn A: Frontend Developer (React + TailwindCSS)
- Bạn B: UI/UX Designer + PM
Ý tưởng: Web app giúp người dân báo cáo các vấn đề về hạ tầng đô thị (ổ gà, đèn đường hỏng, rác thải...) với geolocation và status tracking real-time.
⏰ Timeline 48 giờ
Giờ 0-6: Brainstorming & Setup
- Tranh luận nảy lửa về tech stack
- Tôi nhất quyết dùng Go thay vì Node.js (vì tự tin hơn)
- Setup Dockerized dev environment
- Thiết kế database schema
Giờ 6-24: Coding Marathon
- Tôi code API endpoints liên tục
- Mắc bug lớn: Forgot to handle CORS properly
- Frontend không gọi được API → mất 2 giờ debug
Giờ 24-36: Integration Hell
- Merge code từ 2 branches → conflict ở mọi file
- Database migration failed → rollback → panic
- Team gần như bỏ cuộc lúc 3h sáng
Giờ 36-48: The Final Push
- Deploy lên Railway (thay vì Heroku vì free tier tốt hơn)
- Viết pitch deck vội vàng
- Rehearse presentation 5 lần
📚 3 BÀI HỌC QUAN TRỌNG
Bài học #1: Communication > Coding Skills
Vấn đề: Tôi code xong API endpoint / reports nhưng quên thông báo cho Frontend.
Hậu quả: Frontend dev viết mock data, lãng phí 3 giờ.
Giải pháp học được:
- Dùng Notion để track tasks real-time
- Mỗi 2 giờ có 1 sync meeting ngắn (5 phút)
- Document API endpoints trong Postman Collection ngay khi code xong
Bài học #2: Perfect is the enemy of done
Vấn đề: Tôi muốn implement JWT refresh token + Redis caching.
Thực tế: Hackathon chỉ cần MVP chạy được, không cần production-ready.
Giải pháp:
- Dùng simple JWT, không có refresh token
- Cache in-memory thay vì Redis
- Focus on features that judges will see: UI demo, pitch deck
Bài học #3: Technical debt is OK in hackathons
Code tôi viết trong hackathon:
// TODO: Refactor this later
if err != nil {
log.Println(err) // Just log, no proper error handling
return
}
// Hardcoded config (should use env vars)
db, _ := sql.Open("postgres", "postgresql://user:pass@localhost/db")
Suy nghĩ ban đầu: "Code này quá tệ, phải refactor!"
Bài học: Hackathon không phải production. Ship first, refactor never (trong context này).
🎯 Kết quả
- Giải Ba (trong 15 teams)
- Feedback từ judges: "Ý tưởng hay, demo mượt, nhưng thiếu business model"
- Prize: 3,000,000 VNĐ + Certificate
💭 Reflection
Điều tôi làm đúng:
- Chọn tech stack mình thành thạo
- Không spend time vào features không quan trọng
- Team chemistry tốt (quan trọng nhất)
Điều tôi làm sai:
- Không ngủ → Làm việc inefficient vào giờ 30-40
- Quá focus vào backend → Pitch deck yếu
Lời khuyên cho lần sau:
- Sleep at least 4 hours
- Spend 50% time on pitch, not just coding
- Use simpler tech stack (even if less "cool")
🚀 Tổng kết
Hackathon dạy tôi những thứ mà không một môn học nào dạy được:
- Làm việc dưới pressure
- Prioritization khi resources limited
- Team collaboration in chaos
Worth it? Absolutely. Sẽ tham gia lần nữa năm sau!
