Clean Code, Testing & Engineering Excellence
Vibe coding vui đấy, nhưng production thì không đùa được
Vibe coding với AI cực kỳ năng suất - nhưng 53% code AI sinh ra không qua nổi security review. Bài này tôi phân tích những lỗ hổng phổ biến nhất trong AI-generated code và checklist thực tế để vừa vibe vừa không mất ngủ vì production. Anh bạn tôi - một solo founder đang build SaaS app với Cursor - gọi điện lúc 11 giờ đêm tuần trước. "Ông ơi, tôi vừa nhận email từ khách hàng. Họ nói thấy data của người khác trong account của họ." Anh ấy đã dùng Cursor để build toàn bộ cái app trong 3 tuần. AI viết hết - backend, frontend, database schema, authentication. Năng suất khủng khiếp. Anh ấy tự hào lắm. Ra production mới phát hiện: AI đã generate thiếu Row Level Security (RLS) cho Supabase. Mọi user đều đọc được data của nhau. Đây không phải câu chuyện cá biệt. Vibe coding - cái trend "để AI viết hết, mình chỉ describe" - đang thay đổi hoàn toàn cách developer làm việc. Cursor, GitHub Copilot, Claude, v0.dev... Tôi dùng hàng ngày. Năng suất tăng 3-5x là thật. Thời gian từ idea đến MVP giảm từ tuần xuống ngày là thật. Nhưng có một thứ AI rất kém: security sense.
TDD trong dự án thực - tôi đã thử và đây là kết quả
TDD (Test-Driven Development) thường được khen ngợi như silver bullet. Tôi áp dụng thực sự trong 6 tháng trên một production project và có kết quả... mixed. Đây là honest assessment từ người đã làm.
Test coverage 80% - con số có ý nghĩa gì và không có ý nghĩa gì
80% test coverage có thể là tuyệt vời hoặc hoàn toàn vô nghĩa - tùy vào cái 80% đó cover cái gì. Tôi đã thấy team có 95% coverage vẫn bị production bug nghiêm trọng, và team có 60% coverage gần như không bao giờ có regression.
Clean code trong deadline gấp - thỏa hiệp thế nào cho đúng
Nói "không bao giờ compromise clean code" là dễ. Thực tế khó hơn nhiều. Bài này là framework tôi dùng sau 20 năm để quyết định: thỏa hiệp cái gì, không thỏa hiệp cái gì - và làm thế nào để không bị debt giết sau này.