Có một cái vòng lặp mình cứ dính mãi với AI coding tools: dính bug, paste code vào, nhận fix đầy tự tin, apply, next task. Năm phút. Thấy mình hiệu quả ghê. Hôm sau bug quay lại, mới ngớ ra — cả mình lẫn AI chưa từng hiểu gốc vấn đề là gì.
Một con bug React state gần đây đúng kiểu đó. State update sai, UI render loạn. Claude Code trả về giải thích rất tự tin kèm fix. Apply, chạy, ổn. Đóng tab, xong.
Hôm sau, bug quay lại. Lần này mình tắt AI, trace từng bước state transition bằng tay, đọc lại mấy cái useEffect cleanup. Mất gần một tiếng. Gốc thật là một giả định sai về timing — cái mà Claude Code không có cách nào biết, vì nó đâu có hiểu codebase của mình. Nó chỉ trả lời câu hỏi được đặt ra. Mà mình đặt ra câu hỏi sai.
Cái đó mới là điểm mình hay bỏ qua. AI không trả lời sai. Nó trả lời đúng câu hỏi mà mình chưa suy nghĩ cho kỹ.
Cái từ từ mất đi
Dùng AI coding tools đủ lâu, có thứ gì đó thay đổi. Mình biết nhiều hơn thật. Còn có hiểu sâu hơn không thì mình không chắc.
Câu trả lời không chỉ nhanh — nó đủ hợp lý để mình lười phản biện, mỗi ngày một tí. Não quen dần với một thói mới: thấy bài toán, muốn có đáp án ngay, bỏ qua cái đoạn mình phải ngồi với vấn đề. Không còn kiên nhẫn với phần mơ hồ, phần khó. Cái đáng lo không phải vài giờ research mình tiết kiệm được — mà là cái cơ khả năng tự mình dựng lập luận từ đầu âm thầm yếu đi, đến lúc cần mới phát hiện.
Có lần mình pair với một bạn junior. Gặp bài toán tối ưu query, tay bạn ấy đưa ngay tới Cursor. Mình bảo: “Khoan. Tắt đi. Không có AI thì cậu sẽ làm gì?” Bạn ấy ngồi im năm phút rồi: “Em không biết bắt đầu từ đâu.” Bài toán có khó đâu. Chỉ là “hỏi AI trước, nghĩ sau” đã thành phản xạ mất rồi. Đó là cái thói mà khá nhiều dev mới đang hình thành lúc này.
Tại sao nó không thể nghĩ thay mình?
Có vài giới hạn kỹ thuật giải thích tại sao cái kiểu “để AI lo” hay đổ vỡ.
LLM API hiện tại đều stateless. Mỗi request, model chỉ thấy đúng tokens trong request đó. Muốn nó nhớ đoạn chat trước? Phải gửi lại toàn bộ. Thiếu gì là nó đoán, mà đoán là sai chồng sai.
Context window hữu hạn. Vấn đề đủ phức tạp là phần context cần thiết vượt quá giới hạn, model bắt đầu âm thầm bỏ sót và suy luận từ những mảnh còn lại. Nhiều nghiên cứu đã chỉ ra: context càng dài, chất lượng suy luận càng giảm.
Rồi còn ngộ độc thông tin. Cùng một vấn đề, trong context có năm cách giải, model phải suy luận thêm để chọn. Mỗi bước suy luận là một lần xác suất sai tăng lên.
Tóm lại: mình không nghĩ cho đến nơi thì AI cũng không có cách nào nghĩ đúng thay mình được.
First Brain và Second Brain
Người ta hay nói về “Second Brain” cho AI agent — memory, knowledge graph, prompt library, rule engine. Công cụ mạnh thật, mình cũng dùng.
Nhưng mấy cái đó chỉ có ích khi First Brain của mình còn đủ khỏe để kiểm tra, để nghi ngờ, để phát hiện mâu thuẫn, để giữ quyền quyết định cuối. Mình từng thấy người ta nhồi đủ thứ vào Second Brain mà để First Brain teo đi. Kết quả không phải giỏi hơn — chỉ là nhầm lẫn đến nhanh hơn thôi.
Hồi mới dùng AI, cảm giác như có cậu học sinh ngồi cạnh mình. Đọc nhanh, viết nhanh, nhớ nhiều. Ba mươi giây đề xuất mười cách. Nhưng cậu ta không hiểu codebase của mình, không biết context dự án, production sập lúc hai giờ sáng cũng không phải việc của cậu ta. Cậu ta giỏi. Câu hỏi quan trọng hơn luôn là mình có đủ tỉnh để kiểm tra bài của cậu ta không. Những hôm mệt, giao hết cho cậu ta mà không check — cũng là những hôm bug lọt nhiều nhất.
Bây giờ mình dùng nó thế nào
Mở AI lên là bước cuối cùng, không phải bước đầu tiên. Trước đó mình tự nghĩ ít nhất mười phút, kể cả hôm mệt. Mười phút đó giúp mình biết chính xác mình đang không biết cái gì — chứ không phải “éo biết gì hết” — và cái prompt sau đó chất lượng hơn hẳn.
Hỏi “tại sao”, không chỉ “làm thế nào”. Nó suggest solution, mình vặn: sao chọn cách này, còn cách khác không, trade-off là gì? Không giải thích được thuyết phục là không merge.
Đọc từng dòng code nó generate. Bước dễ bỏ nhất, và cũng là nơi phần lớn mấy con bug production đáng ra tránh được lọt ra từ đó. Code “trông ổn đấy” khi lướt nhanh có cách trở thành root cause sau này.
Mỗi tuần một buổi code không AI. Tắt hết Copilot, tắt Claude Code, chỉ còn editor với docs. Buổi đầu khó chịu kinh khủng. Nhưng qua vài tuần thì thấy khác biệt rõ: debug từ first principle nhanh hơn hẳn, suy nghĩ của mình sắc hơn. Coi như bảo trì cho phần quan trọng nhất của hệ thống.