Thứ Hai, 21 tháng 9, 2026

Dùng ChatGPT để code hiệu quả (Đừng biến ChatGPT thành cái máy "copy → paste → sau đó cầu nguyện là sẽ ổn thôi"! )

Tạm "hạ cấp" với giả sử bạn lười nghĩ thực đơn tối, bèn "dõng dạc" hỏi một ứng dụng trí tuệ nhân tạo để xin công thức "nấu canh gì vừa ngon, vừa mát, vừa độc lạ". "Giáo sư AI" ngay lập tức hào hứng phán một câu xanh rờn: "Hãy thử kết hợp rau dền đỏ thanh mát cùng một múi sầu riêng béo ngậy để tạo ra vị ngọt bùi bùng nổ vị giác!". Thay vì dùng tư duy phản biện để nhận ra sự vô lý của món ăn, bạn cắm cổ làm theo vì tin tưởng tuyệt đối vào "siêu trí tuệ".  Kết quả:..."ai cũng hiểu chỉ một người không hiểu"!!

Nếu bạn đã đi cùng DatVietLapTrinh đến bài này thì có lẽ bạn đã trải qua một hành trình khá dài.

Từ những dòng code đầu tiên...

Đến:

  • biến
  • vòng lặp
  • function
  • file
  • CSV
  • Python
  • pip
  • Virtual Environment
  • requirements.txt
  • Web Scraping
  • Automation

Và ở bài trước, chúng ta vừa nói về một câu hỏi rất "thời thượng":

AI có thay thế programmer không?

Còn hôm nay, thay vì ngồi tranh luận tiếp...

Chúng ta sé làm một việc thực tế hơn.

Mở trình duyệt.

Mở một IDE online.

Hỏi ChatGPT.

Lấy code.

Chạy.

Cho nó lỗi.

Sửa.

Chạy lại.

Và quan trọng nhất:

Hiểu mình vừa làm gì.

Đây mới là cách dùng AI để học lập trình "tương đối đúng" chứ không phải "nhắm mắt" tin tưởng "giáo sư AI"


ChatGPT không phải "máy bán code"

Có một cách dùng AI rất phổ biến:

Mình:
"Viết cho tôi chương trình Python đọc file CSV."

AI:
"Đây là code."

Mình:
Copy.

Paste.

Run.

Works.

Xong.

Nghe rất sướng.

Nhưng có một vấn đề:

Bạn vừa hoàn thành một bài tập mà có thể chẳng học được gì. 😭

Lần sau gặp lỗi khác:

"AI ơi làm tiếp."

Rồi lại copy.

Rồi paste.

Rồi chạy.

Rồi lỗi.

Rồi hỏi tiếp.

Đến một ngày bạn có 10.000 dòng code nhưng không biết:

"Dòng này để làm gì?"

Đó không phải cách mình muốn bạn dùng AI.

AI nên giúp bạn học nhanh hơn, không phải giúp bạn khỏi học.


Vậy dùng ChatGPT thế nào cho hiệu quả?

Một cách đơn giản là hãy coi ChatGPT giống như một người đồng nghiệp ngồi cạnh bạn.

Bạn không nói với đồng nghiệp:

"Làm hết project cho tôi."

Rồi bỏ đi uống cà phê. 😂

Bạn thường sẽ nói:

"Tôi đang làm phần này."

"Tôi bị lỗi ở đây."

"Tôi thử cách này rồi."

"Tại sao nó không chạy?"

"Có cách nào đơn giản hơn không?"

"Giải thích đoạn này cho tôi."

Đó cũng là cách rất tốt để làm việc với AI.


Thử ngay một ví dụ

Chúng ta sẽ làm một chương trình cực kỳ đơn giản.

Bài toán:

Nhập một số nguyên n, sau đó tính tổng từ 1 đến n.

Ví dụ:

Input:
5

Output:
15

Vì:

1 + 2 + 3 + 4 + 5 = 15

Nếu bạn đã học Python thì bài này khá nhẹ.

Nhưng đây chính là điều hay.

Bài càng nhỏ, chúng ta càng dễ nhìn thấy quá trình AI hỗ trợ như thế nào.


Bước 1: Đừng hỏi AI quá mơ hồ

Bạn có thể hỏi:

Viết chương trình Python tính tổng từ 1 đến n.

AI có thể đưa cho bạn:

n = int(input("Nhập n: "))

total = 0

for i in range(1, n + 1):
    total += i

print("Tổng =", total)

Nhìn khá dễ.

Nhưng đừng copy ngay rồi bỏ chạy.

Hãy đọc.


Bước 2: Hỏi AI giải thích

Bạn có thể hỏi tiếp:

Giải thích từng dòng code trên cho người mới học Python.
Đừng chỉ giải thích kết quả.
Hãy nói rõ vì sao range dùng n + 1.

Đây là một câu hỏi tốt hơn rất nhiều so với:

Cho tôi code.

Vì bây giờ AI không chỉ tạo code.

Nó đang giúp bạn đọc code.


Nhìn thử đoạn này

for i in range(1, n + 1):
    total += i

Nếu n = 5, range(1, n + 1) tương đương:

1, 2, 3, 4, 5

Chứ không phải:

1, 2, 3, 4

Vì Python không lấy giá trị cuối của range().

Đây là một chi tiết nhỏ.

Nhưng nếu không hiểu nó...

Bạn sẽ nhìn code AI viết và kiểu:

"Sao tự nhiên cộng n + 1?"

😅


Bước 3: Mang code ra chạy thật

Đây là phần mình rất thích.

Bạn không cần phải cài Python ngay trên máy chỉ để thử một đoạn code vài dòng.

OnlineGDB cung cấp môi trường IDE online cho phép viết, chạy và debug code trực tiếp trên trình duyệt; nền tảng này hỗ trợ nhiều ngôn ngữ, trong đó có Python, C/C++ và PHP.

Bạn có thể mở:

OnlineGDB 

Sau đó chọn ngôn ngữ phù hợp bằng cách bấm vào select language góc trên bên phải

Ví dụ hôm nay là chọn:

Python 3

Dán code vào.

Bấm Run.

Nhập:

5

Nếu mọi thứ ổn, bạn sẽ nhận:

Tổng = 15



Vậy là:

AI → code → IDE → chạy thật.

Không còn là lý thuyết nữa.


Và bây giờ...

Hãy cố tình làm cho nó lỗi.

😈

Đúng.

Cố tình làm lỗi.

Vì chúng ta đang học lập trình.

Mà lập trình không có lỗi thì hơi giống đi câu cá mà cá tự nhảy vào rổ. 😭


Bước 4: Tạo một lỗi

Ví dụ sửa:

n = int(input("Nhập n: "))

thành:

n = int(input("Nhập n: "))

total = 0

for i in range(1, n):
    total += i

print("Tổng =", total)

Chạy với:

5

Kết quả:

Tổng = 10

Ủa?

Đáng lẽ phải là:

15

AI có viết code sai không?

Không hẳn.

Chính chúng ta vừa sửa code thành sai. 😂


Đây mới là lúc dùng AI hay

Đừng lập tức hỏi:

Sửa code cho tôi.

Hãy thử hỏi:

Tôi muốn tính tổng từ 1 đến n.

Với n = 5, tôi mong đợi kết quả là 15
nhưng chương trình trả về 10.

Đây là code:

[code]

Hãy giúp tôi tìm nguyên nhân.
Đừng sửa ngay.
Hãy giải thích lỗi nằm ở đâu trước.

Đây là một prompt rất đáng học.

Tại sao?

Vì bạn đang yêu cầu AI:

phân tích → giải thích → rồi mới sửa.


Đây là "AI + Debug" ❤️

AI có thể nhìn đoạn:

range(1, n)

và chỉ ra:

range() không bao gồm giá trị cuối.

Nếu n = 5, nó tạo:

1, 2, 3, 4

nên tổng là:

10

Muốn có 5, phải dùng:

range(1, n + 1)

Đây là một ví dụ rất nhỏ.

Nhưng tư duy này có thể áp dụng cho rất nhiều lỗi khác.


Một nguyên tắc rất hay

Khi gặp lỗi, đừng chỉ hỏi:

"Sửa giúp tôi."

Hãy thử:

"Giải thích tại sao nó sai."

Sau đó:

"Cho tôi cách sửa."

Sau đó:

"Giải thích vì sao cách sửa này đúng."

Ba câu hỏi.

Ba mức hiểu.

Sai ở đâu?
     ↓
Sửa thế nào?
     ↓
Tại sao sửa như vậy?

Đây mới là lúc AI trở thành trợ lý học lập trình.


Thử với C cũng vui không kém

Bây giờ chúng ta đổi ngôn ngữ.

Cùng bài toán:

Tính tổng từ 1 đến n.

Bạn có thể hỏi ChatGPT:

Viết chương trình C tính tổng từ 1 đến n.

Yêu cầu:
- dùng scanf
- dùng vòng lặp for
- giải thích từng dòng cho người mới
- không dùng công thức toán học

AI có thể tạo:

#include <stdio.h>

int main() {
    int n;
    int total = 0;

    printf("Nhap n: ");
    scanf("%d", &n);

    for (int i = 1; i <= n; i++) {
        total += i;
    }

    printf("Tong = %d\n", total);

    return 0;
}

Bây giờ mang nó sang OnlineGDB.

Chọn:

C

Paste.

Run.

Nhập:

5

Kết quả:

Tong = 15

OnlineGDB hiện cung cấp cả khu vực input, stdout, stderr và chế độ debug; với C/C++ còn có breakpoint, call stack và local variables.

Vậy là bạn vừa có một phòng thí nghiệm nhỏ ngay trong trình duyệt.

Không cần setup cả thế giới chỉ để thử 15 dòng code.


Và đây là chỗ rất đáng chú ý

Hãy hỏi ChatGPT:

Trong đoạn code C trên,
tại sao scanf lại có &n?

Nếu bỏ & thì chuyện gì xảy ra?
Giải thích như cho người mới học C.

Bây giờ bạn không còn hỏi:

"Cho tôi code."

Bạn đang hỏi:

"Tại sao code phải viết như vậy?"

Đó là một cấp độ học khác.


Còn PHP thì sao?

Cũng được.

OnlineGDB hiện liệt kê PHP trong các ngôn ngữ được hỗ trợ trên nền tảng.

Ví dụ:

<?php

$name = "DatVietLapTrinh";

echo "Xin chao " . $name;

Bạn có thể hỏi ChatGPT:

Giải thích đoạn PHP này cho người mới.
Tại sao PHP dùng dấu chấm để nối chuỗi?
Cho tôi thêm 3 ví dụ đơn giản.

Rồi chạy thử.

Sau đó cố tình sửa:

echo "Xin chao " + $name;

Chạy.

Lỗi.

😂

Đừng sợ.

Đây chính là bài học.

Hỏi AI:

Tôi đang học PHP.

Đoạn này bị lỗi:

echo "Xin chao " + $name;

Tại sao?
Hãy giải thích sự khác nhau giữa
. và + trong trường hợp này.

Bạn sẽ bắt đầu thấy:

AI không chỉ viết code.

Nó có thể giúp bạn biến một lỗi thành một bài học.


Đừng hỏi AI kiểu "làm hết"

Đây là một số cách hỏi khác nhau.

Cách 1: Hỏi lấy code

Viết chương trình đọc CSV bằng Python.

Không sai.

Nhưng khá chung.

Cách 2: Cho context

Tôi có file customers.csv gồm:
name,email,city

Tôi muốn đọc file bằng Python,
tìm tất cả khách hàng ở Da Nang
và in tên + email ra màn hình.

Tôi đang dùng Python 3.
Hãy dùng csv.DictReader.

Tốt hơn.

Cách 3: Yêu cầu giải thích

Viết code và giải thích từng phần.
Tôi là người mới học Python.

Tốt hơn nữa.

Cách 4: Học bằng debug

Đây là code tôi đang có.

Đây là lỗi tôi nhận được.

Hãy:
1. xác định nguyên nhân
2. giải thích nguyên nhân
3. chỉ ra dòng gây vấn đề
4. đề xuất cách sửa
5. cho tôi phiên bản đã sửa

Đây là cách mình thích nhất.


Một công thức prompt rất dễ nhớ

Bạn có thể dùng:

BỐI CẢNH
↓
MỤC TIÊU
↓
CODE
↓
LỖI / KẾT QUẢ THỰC TẾ
↓
KẾT QUẢ MONG MUỐN
↓
YÊU CẦU AI GIẢI THÍCH

Ví dụ:

Tôi đang học Python.

Tôi có chương trình tính tổng từ 1 đến n.

Code:
[code]

Khi nhập n = 5,
chương trình trả về 10.

Tôi mong đợi 15.

Hãy:
- xác định nguyên nhân
- giải thích dễ hiểu
- chỉ ra dòng sai
- đưa code sửa
- giải thích tại sao code sửa đúng

AI lúc này có rất nhiều thông tin để làm việc.


Đừng giấu lỗi của bạn

Đây là một lỗi khá phổ biến khi hỏi AI.

Người mới thấy:

Traceback...
ValueError...
TypeError...

rồi chỉ hỏi:

"Python bị lỗi, sửa giúp."

AI:

"Bạn vui lòng cung cấp thêm thông tin..."

😂

Thay vì vậy, hãy copy error message thật.

Ví dụ:

ValueError: invalid literal for int() with base 10

rồi gửi cả đoạn code liên quan.

Lỗi càng cụ thể...

AI càng có cơ hội giúp bạn tốt hơn.

Và quan trọng hơn:

Bạn cũng học được cách đọc error message.


AI không nhìn thấy máy tính của bạn như bạn nghĩ

Đây cũng là điều người mới cần nhớ.

Bạn nói:

"Code của tôi không chạy."

AI không tự nhiên biết:

  • Python phiên bản nào
  • đường dẫn nào
  • file có tồn tại không
  • database thật đang chứa gì
  • server đang cấu hình thế nào
  • biến môi trường ra sao
  • quyền file thế nào
  • code thực tế có giống đoạn bạn gửi không

Vì vậy, hãy cung cấp context.

Ví dụ:

Python 3.12
Windows 11
VS Code

Lỗi:
FileNotFoundError

Code:
...

File nằm ở:
C:\Users\Me\Documents\project\data.csv

Câu trả lời thường sẽ hữu ích hơn rất nhiều.


Một nguyên tắc quan trọng: AI không phải máy đo sự thật

AI có thể trả lời rất tự tin.

Nhưng:

Tự tin không đồng nghĩa với đúng.

Đặc biệt khi bạn hỏi về:

  • thư viện
  • phiên bản
  • API
  • framework
  • cấu hình
  • lỗi phức tạp
  • code lớn
  • bảo mật

Hãy kiểm tra.

Chạy code.

Đọc documentation khi cần.

Test.

So sánh kết quả.

Và nếu AI nói:

"Chắc chắn..."

thì bạn có thể bình tĩnh nghĩ:

"Ừ... để tôi chạy thử đã." 😏


Một bài tập rất vui

Bạn có thể thử ngay.

Bài tập: AI có sửa được bug không?

Đưa cho ChatGPT đoạn Python này:

numbers = [10, 20, 30, 40, 50]

total = 0

for i in range(len(numbers) + 1):
    total += numbers[i]

print(total)

Yêu cầu:

Tìm lỗi trong đoạn code trên.

Đừng sửa ngay.

Hãy:
1. giải thích lỗi
2. cho biết chương trình sẽ gặp lỗi gì
3. giải thích vì sao
4. sau đó mới đưa code sửa

Sau đó đem code vào IDE online.

Chạy.

Quan sát.

Sửa.

Chạy lại.

Đây chính là một mini workflow:

AI
↓
Code
↓
Run
↓
Error
↓
Debug
↓
AI
↓
Fix
↓
Run again

Đây mới là thứ chúng ta muốn học.


Và hãy thử một trò nữa 😈

Sau khi AI sửa xong, hỏi:

Có cách nào viết đoạn code này
đơn giản hơn không?

Có cách nào Pythonic hơn không?

Hãy đưa ra 2 cách,
nhưng giải thích ưu nhược điểm của từng cách.

Bây giờ AI không chỉ là người sửa bài.

Nó trở thành người để bạn so sánh cách giải quyết vấn đề.


Nhưng đừng để AI làm mất khả năng tự suy nghĩ

Một thói quen rất tốt:

Trước khi hỏi AI, hãy thử đoán.

Ví dụ:

Code lỗi.

Bạn nghĩ:
Có thể biến sai.

Có thể file sai.

Có thể index sai.

Có thể kiểu dữ liệu sai.

Sau đó mới hỏi AI.

Nếu AI nói:

"Lỗi do index."

Bạn có thể kiểm tra.

Nếu đúng:

"À!"

Bạn vừa học thêm một thứ.

Nếu AI nói khác:

"Khoan, để tôi kiểm tra."

Bạn cũng học thêm.


Một workflow mình rất khuyến khích

1. Tự đọc đề
       ↓
2. Tự nghĩ cách làm
       ↓
3. Tự code một chút nếu có thể
       ↓
4. Gặp khó → hỏi AI
       ↓
5. Đọc câu trả lời
       ↓
6. Chạy thử
       ↓
7. Debug
       ↓
8. Kiểm tra kết quả
       ↓
9. Hiểu code
       ↓
10. Tự viết lại một phần

Đừng bỏ qua bước số 9.

Hiểu code.

Nó là phần giúp bạn trở thành programmer.


"Nhưng nếu AI viết nhanh hơn tôi rất nhiều thì sao?"

Thì tốt.

Thật.

Bạn không cần buồn vì AI viết code nhanh.

Nếu AI có thể giúp bạn làm một phần việc trong 10 phút thay vì 2 tiếng...

hãy tận dụng nó.

Giống như Python giúp bạn đổi tên 500 file thay vì ngồi F2 từng file trong bài trước.

AI cũng là một dạng đòn bẩy.

Vấn đề không phải:

"AI làm nhanh hơn tôi."

Mà là:

"Tôi có đủ hiểu để sử dụng thứ AI làm ra không?"


AI + IDE online = một phòng thí nghiệm rất vui

Đây là điều mình đặc biệt muốn người mới thử.

Bạn không nhất thiết phải chờ đến khi:

  • cài Python
  • cài compiler C
  • cấu hình PHP
  • cài extension
  • sửa PATH
  • chỉnh environment
  • rồi mới học.

Với những đoạn code nhỏ, IDE online có thể giúp bạn thử nghiệm nhanh ngay trong trình duyệt.

OnlineGDB hiện cho phép code, compile/run và debug trên nền tảng web; với C/C++ có các công cụ debug như breakpoint, call stack và local variables.

Ví dụ:

ChatGPT
   ↓
"Viết cho tôi ví dụ C"
   ↓
Copy
   ↓
OnlineGDB
   ↓
Run
   ↓
Lỗi
   ↓
Đọc lỗi
   ↓
Hỏi ChatGPT
   ↓
Sửa
   ↓
Run

Đây là một vòng lặp học rất tự nhiên.


Nhưng nhớ một chuyện

IDE online rất tiện để:

  • học
  • thử code
  • test đoạn nhỏ
  • debug cơ bản
  • chia sẻ ví dụ
  • kiểm tra ý tưởng

không có nghĩa bạn có thể bỏ qua môi trường phát triển thật.

Khi project lớn lên, bạn vẫn sẽ cần:

  • IDE/editor
  • Git
  • môi trường Python
  • package
  • database
  • server
  • environment variables
  • testing
  • deployment

IDE online là sân tập.

Không nhất thiết là ngôi nhà cuối cùng.


Một lưu ý nhỏ với code thật

Đừng dán bừa vào AI:

password
API key
secret key
private key
database password
token
thông tin khách hàng
dữ liệu nội bộ

Ví dụ đừng gửi:

DB_PASSWORD = "123456789"

rồi hỏi:

"Tại sao database không kết nối?" 😭

Hãy thay bằng:

DB_PASSWORD = "YOUR_PASSWORD"

và mô tả vấn đề.

Code có thể chia sẻ. Bí mật thì không nên.


Chua thêm 😭

Có một kiểu programmer thời AI rất dễ xuất hiện:

AI:
"Đây là code."

Programmer:
"OK."

AI:
"Đây là cách sửa."

Programmer:
"OK."

AI:
"Đây là architecture."

Programmer:
"OK."

AI:
"Đây là database schema."

Programmer:
"OK."

AI:
"Bạn muốn tôi deploy luôn không?"

Programmer:
"OK."

Server:
💀

😂

Đừng cố trở thành kiểu người đó.

Hãy là người hỏi:

"Khoan."

"Tại sao?"

"Đoạn này làm gì?"

"Nếu input rỗng thì sao?"

"Nếu user không có quyền thì sao?"

"Nếu database chết thì sao?"

"Nếu có 1 triệu record thì sao?"

Đó là tư duy programmer.


Checklist: Dùng ChatGPT để code hiệu quả

  • Mô tả rõ bài toán

  • Cho AI biết ngôn ngữ và phiên bản nếu cần

  • Cung cấp context

  • Gửi error message thật

  • Gửi đoạn code liên quan

  • Nói rõ kết quả mong muốn

  • Yêu cầu AI giải thích trước khi sửa

  • Chạy code thật

  • Tự kiểm tra kết quả

  • Không copy mù quáng

  • Không đưa password/API key/secret vào prompt

  • Hỏi "tại sao?" thay vì chỉ hỏi "sửa giúp"

  • Thử tự đoán nguyên nhân trước khi hỏi

  • Dùng AI để học, không chỉ để lấy đáp án


FAQ nhanh

Tôi không giỏi tiếng Anh thì có dùng ChatGPT để code được không?

Có.

Bạn có thể mô tả bằng tiếng Việt.

Ví dụ:

Tôi là người mới học Python.
Hãy giải thích thật đơn giản.

Bạn thậm chí có thể yêu cầu AI giữ nguyên thuật ngữ code tiếng Anh nhưng giải thích bằng tiếng Việt.

Có nên yêu cầu AI viết toàn bộ project không?

Có thể dùng AI hỗ trợ project lớn, nhưng nếu bạn đang học thì nên chia project thành từng phần nhỏ.

Đừng biến:

"Viết cho tôi cả website."

thành phương pháp học duy nhất.

Hãy chia:

database
↓
login
↓
CRUD
↓
API
↓
authentication
↓
frontend

rồi hiểu từng phần.

AI viết code sai thì sao?

Debug.

Đó chính là lý do chúng ta chạy code thật.

AI không thay thế bước kiểm tra.

Có cần biết C/Python/PHP nếu AI đã viết được không?

Nếu mục tiêu của bạn là hiểu và xây dựng phần mềm, kiến thức nền tảng của ngôn ngữ vẫn rất hữu ích.

AI có thể giúp bạn viết nhanh hơn.

Nhưng bạn vẫn cần đọc và đánh giá code.

Có cần cài Python để học không?

Không nhất thiết cho những ví dụ nhỏ.

Bạn có thể dùng IDE online để thử nghiệm nhanh.

Khi project lớn hơn, hãy học cách thiết lập môi trường thật.


Bạn có thể cũng đang gặp...

Chúng ta hãy nhìn lại một chút...

Bạn có thấy không?

Từ đầu phần Python đến đây, chúng ta không cố biến thành người "hoàn hảo" thuộc lòng mọi cú pháp.

Chúng ta đi theo một con đường khác:

Code
↓
Lỗi
↓
Debug
↓
Hiểu
↓
Automation
↓
AI