Khi AI viết được mã trong vài giây, kỹ năng đáng luyện nhất của người học lập trình chuyển từ gõ mã sang đọc mã: nhìn một đoạn và biết chính xác nó làm gì, sai ở đâu. Kỹ năng này luyện được, và chính AI là người ra bài luyện rất tốt nếu bạn giao đúng việc: AI ra đề, bạn đọc và đoán, rồi mới chạy thử để đối chiếu.
Bài này đưa năm dạng bài luyện theo thứ tự từ dễ đến khó: đoán kết quả của đoạn mã ngắn, dò biến bằng bảng, tìm lỗi được cài sẵn, giải thích lại bằng lời mình, và đọc mã của một dự án mã nguồn mở nhỏ. Ví dụ dùng Python vì cú pháp gọn, nhưng cách luyện áp được cho mọi ngôn ngữ.
Vì sao đọc mã phải luyện riêng, không tự đến
Nhiều người học nghĩ rằng viết nhiều thì tự đọc giỏi. Thực tế hai kỹ năng này liên quan nhưng khác nhau. Khi viết, bạn biết ý định của mình nên lấp được chỗ trống trong đầu. Khi đọc mã của người khác, hay của AI, bạn chỉ có những gì nằm trên màn hình, và phải tự dựng lại ý định từ đó. Người viết giỏi mà đọc kém thường nhận ra lỗi chậm, vì họ đọc theo cái mình nghĩ mã làm thay vì cái mã thật sự làm.
Ở chỗ làm, phần lớn thời gian của lập trình viên dành cho việc đọc: đọc mã cũ để sửa, đọc mã đồng nghiệp để rà, và bây giờ là đọc mã AI đề xuất để quyết định nhận hay bỏ. Một đề xuất ba mươi dòng của trợ lý AI chỉ có giá trị khi bạn đọc nó nhanh và chính xác hơn tốc độ tự viết.
Tin tốt là đọc mã có thể luyện bằng bài tập ngắn, mỗi bài vài phút, và AI ra loại bài này rất nhanh. Điều kiện duy nhất: bạn phải đoán trước, ghi ra, rồi mới chạy. Chạy trước rồi nhìn kết quả thì não chỉ gật gù, không luyện được gì.
Bài luyện 1: đoán kết quả đoạn mã ngắn
Dạng bài cơ bản nhất, mỗi ngày mười câu là đủ. Cách làm với chatbot:
- Gửi câu lệnh: "Ra năm đoạn mã Python, mỗi đoạn không quá sáu dòng, về chủ đề danh sách và vòng lặp. Mỗi đoạn có một câu print. Chỉ đưa mã, chưa đưa kết quả. Có ít nhất hai đoạn có bẫy mà người mới hay đoán sai."
- Với mỗi đoạn, viết dự đoán ra giấy hoặc tệp ghi chú trước. Ví dụ đoạn: x = [3, 1, 2]; y = x; y.append(4); print(len(x)). Người mới hay đoán 3, vì nghĩ y là bản sao; đáp án là 4 vì x và y cùng trỏ tới một danh sách.
- Dán từng đoạn vào trình thông dịch và chạy thật. Đừng hỏi AI kết quả; AI có thể tính nhầm, còn máy thì không.
- Với mỗi câu đoán sai, hỏi AI: "Mình đoán X nhưng kết quả là Y. Giải thích vì sao, chỉ ra khái niệm mình đang hiểu sai."
- Ghi khái niệm vừa sai vào danh sách ôn, và yêu cầu AI ra thêm ba đoạn xoáy vào đúng khái niệm đó.
Các bẫy kinh điển đáng luyện kỹ: gán danh sách là chia sẻ chứ không sao chép, hàm range không bao gồm số cuối (range(1, 10, 3) cho 1, 4, 7), phép chia nguyên với số âm, chuỗi không sửa được tại chỗ, giá trị mặc định là danh sách trong định nghĩa hàm. Mỗi bẫy là một khái niệm thật, không phải mẹo đố.
Bài luyện 2: dò biến bằng bảng
Với đoạn mã có vòng lặp, kẻ một bảng, mỗi cột là một biến, mỗi dòng là một lượt lặp, rồi điền giá trị bằng tay. Ví dụ hàm tính tổng chữ số với n = 314, thân vòng lặp là: s += n % 10, rồi n //= 10, lặp khi n còn lớn hơn 0.
| Lượt | n trước | n % 10 | s sau | n sau |
|---|---|---|---|---|
| 1 | 314 | 4 | 4 | 31 |
| 2 | 31 | 1 | 5 | 3 |
| 3 | 3 | 3 | 8 | 0 |
| Dừng | 0 | — | 8 | — |
Bảng dò trông có vẻ chậm, nhưng nó là công cụ gỡ lỗi mạnh nhất của người mới, và cũng là thứ bạn sẽ làm trong đầu khi đọc mã của AI. Nhờ AI ra đoạn mã có vòng lặp và yêu cầu nó cũng tự lập bảng dò, nhưng chỉ mở bảng của AI sau khi đã điền xong bảng của mình. Khi hai bảng lệch nhau, chạy mã có thêm lệnh in từng lượt để xem ai đúng; không ít lần người sai là AI.
Khi đã quen, chuyển sang vòng lặp lồng nhau, đệ quy (mỗi dòng là một lời gọi, thêm cột độ sâu), và đoạn mã có từ điển. Đến lúc dò bằng bảng thấy chán vì quá dễ, đó là lúc bạn đã dò được trong đầu.
Bài luyện 3: tìm lỗi được cài sẵn
Đặt đề. Câu lệnh mẫu: "Viết một hàm Python khoảng mười lăm dòng kiểm tra một chuỗi có phải mật khẩu đủ mạnh theo ba điều kiện. Cài vào đúng một lỗi logic khó thấy, không phải lỗi cú pháp. Chưa nói lỗi ở đâu."
Đọc trước, chạy sau. Đọc mã và ghi dự đoán lỗi nằm ở dòng nào, xảy ra với đầu vào nào. Sau đó mới viết vài lệnh thử để xác nhận. Đây là chu trình y hệt khi rà mã thật: giả thuyết trước, bằng chứng sau.
Tăng độ khó. Khi đã tìm ra nhanh, yêu cầu hai lỗi trong một hàm, hoặc lỗi chỉ xuất hiện ở ca biên như chuỗi rỗng, danh sách một phần tử, số âm. Loại lỗi này chính là loại mã AI thật hay mắc.
Đổi vai. Bạn tự cài lỗi vào hàm của mình rồi đưa AI tìm. Để cài được lỗi khó thấy, bạn phải hiểu rất rõ mã đó làm gì; đây là bài luyện ngược rất hiệu quả.
Ghi lại kiểu lỗi. Lập danh sách các kiểu lỗi đã gặp: lệch một đơn vị, điều kiện dừng sai, so sánh nhầm kiểu, quên trả về. Danh sách này sau này là bảng kiểm khi bạn đọc rà mã AI viết cho mình.
Bài luyện 4: giải thích lại bằng lời mình rồi so với AI
Chọn một đoạn mã dài hơn, khoảng hai mươi dòng, có thể là bài mẫu trong giáo trình. Viết ra ba thứ: hàm này nhận gì và trả gì, các bước chính bằng ba đến năm câu tiếng Việt, và một đầu vào khiến nó hỏng hoặc chạy chậm. Chỉ sau đó mới nhờ AI giải thích cùng đoạn mã và so hai bản.
Phần so sánh là phần học. Nếu AI nêu một bước bạn bỏ qua, quay lại đọc dòng đó. Nếu bạn nêu điều AI không nói, kiểm xem bạn đúng hay AI thiếu. Đặc biệt chú ý chỗ hai bên mô tả khác nhau về cùng một dòng; đó thường là chỗ có khái niệm tinh vi.
Có một biến thể hữu ích: viết lời giải thích cho một người không biết lập trình, chẳng hạn người bạn làm kế toán. Bạn phải bỏ hết thuật ngữ và nói đúng bản chất. Sau đó nhờ AI đóng vai người đó và hỏi lại chỗ khó hiểu. Kiểu luyện này còn giúp bạn sau này viết chú thích, tài liệu và thông điệp lưu thay đổi rõ ràng hơn. Giữ các bản giải thích của mình trong một thư mục riêng; vài tháng sau đọc lại, bạn sẽ thấy chỗ ngày trước mình hiểu chưa tới và đó là bằng chứng tiến bộ rõ nhất.
Bài luyện 5: đọc mã của một dự án mã nguồn mở nhỏ
Khi đã quen đọc đoạn ngắn, chuyển sang mã thật do người viết cho người dùng thật. Cách chọn và đọc:
- Chọn dự án nhỏ, vài nghìn dòng trở xuống, viết bằng ngôn ngữ bạn đang học, làm một việc bạn hiểu: công cụ dòng lệnh đổi định dạng tệp, thư viện xử lý ngày tháng, trò chơi đơn giản.
- Đọc tệp hướng dẫn và chạy được dự án trên máy trước. Không chạy được thì chưa đọc mã.
- Chọn một tính năng cụ thể, ví dụ một lệnh của công cụ, và lần theo từ điểm vào tới chỗ in kết quả. Ghi lại các tệp và hàm đi qua.
- Chỉ hỏi AI khi kẹt ở một chỗ cụ thể, dán đúng đoạn đó kèm câu hỏi hẹp. Mã nguồn mở thì dán được, nhưng vẫn không dán khoá hay cấu hình của riêng bạn nếu có.
- Thử sửa một chi tiết nhỏ, như đổi câu thông báo hay thêm một tuỳ chọn, rồi chạy lại để xác nhận mình hiểu đúng luồng.
Cách lần theo luồng chạy trong một dự án lớn và cũ được bàn kỹ ở danh mục đọc hiểu mã cũ của trang; ở đây mục tiêu nhỏ hơn: làm quen với việc mã thật trông lộn xộn hơn mã sách vở, và vẫn đọc được nó.
Lịch luyện bốn tuần, mỗi ngày 20 phút
Một khung để bắt đầu, phù hợp người đã qua phần nhập môn. Chỉnh độ dài theo thời gian của bạn.
| Tuần | Bài luyện chính | Dấu hiệu sẵn sàng sang tuần sau |
|---|---|---|
| 1 | Đoán kết quả, 10 đoạn mỗi ngày | Đoán đúng phần lớn, các bẫy cũ không còn lừa được |
| 2 | Bảng dò biến cho vòng lặp và đệ quy | Dò đúng mà không cần chạy để kiểm |
| 3 | Tìm lỗi cài sẵn, rồi tự cài lỗi cho AI tìm | Tìm ra lỗi trước khi viết lệnh thử |
| 4 | Giải thích lại và đọc một tính năng của dự án mở | Giải thích được luồng chạy cho người khác |
Sau bốn tuần, hãy giữ một bài nhỏ mỗi ngày như thói quen, và áp kỹ năng vào việc thật: mỗi lần trợ lý AI đề xuất mã, đọc hết và đoán nó làm gì trước khi bấm nhận.
Nếu học cùng bạn bè, các bài luyện này biến thành trò chơi nhóm rất dễ: mỗi người nhờ AI ra một đoạn mã có bẫy, cả nhóm đoán, rồi người ra đề chạy thật và giải thích. Người ra đề phải hiểu bẫy của mình đủ rõ để giảng lại, nên ai cũng được luyện. Giữ một tệp chung ghi các đoạn mã từng làm cả nhóm đoán sai; trước kỳ thi hay buổi phỏng vấn, đọc lại tệp đó hiệu quả hơn đọc lại cả giáo trình.
Câu hỏi thường gặp
Đọc mã nên bắt đầu từ ngôn ngữ nào?
Từ chính ngôn ngữ bạn đang học. Nếu chưa học ngôn ngữ nào, Python hay được chọn vì cú pháp ít ký hiệu, dễ tập trung vào logic. Kỹ năng đọc chuyển sang ngôn ngữ khác khá tốt khi nền đã vững.
AI ra đề đoán kết quả có khi nào sai không?
Có. AI có thể ra đoạn mã lỗi cú pháp hoặc nói sai kết quả nếu bạn hỏi. Vì vậy luôn chạy thật trên máy để lấy đáp án, coi AI chỉ là người ra đề và người giải thích.
Có nên dùng công cụ trực quan hoá chạy từng bước không?
Nên, sau khi đã tự dò bằng bảng. Trình gỡ lỗi chạy từng dòng và các trang trực quan hoá cho thấy biến thay đổi thế nào, rất tốt để kiểm bảng dò của bạn. Nhưng đừng để nó thay việc tự nghĩ.
Mỗi ngày 20 phút có đủ không?
Đủ để tạo khác biệt rõ sau vài tuần, nếu đều đặn. Đọc mã giống luyện nghe ngoại ngữ: lượng nhỏ mỗi ngày hiệu quả hơn một buổi dài mỗi tuần. Thêm thời gian thì dành cho đọc mã dự án thật.
Đọc mã AI viết khác gì đọc mã người viết?
Mã AI thường gọn, đặt tên đẹp, có chú thích, nên dễ tạo cảm giác đúng. Lỗi của nó hay nằm ở ca biên và giả định ngầm về dữ liệu. Khi đọc mã AI, dành thêm thời gian hỏi: đầu vào lạ thì sao?