Ngày xửa ngày xưa khi "niềm tự hào" rành rẽ đường xá bị Google Maps thay thế, nhiều bác tài xế lớn tuổi lo mất lợi thế "thổ địa". Xa xưa hơn nữa, sự ra đời của máy dệt cơ khí do Edmund Cartwright phát minh năm 1785 khiến thợ thủ công lo sợ thất nghiệp đến mức đập phá máy móc. Ngày nay, sự bùng nổ của trí tuệ nhân tạo (AI) cũng làm dấy lên làn sóng lo lắng tương tự...khắp các "hang cùng ngõ hẻm"...
Có một câu hỏi mấy năm gần đây xuất hiện ngày càng nhiều:
"AI giờ viết code được rồi, vậy học lập trình làm gì?"
Hoặc đáng ngại hơn:
"Sau này AI làm hết thì programmer có thất nghiệp không?"
Nghe xong, người đang học Python mở laptop.
Nhìn sang ChatGPT.
Nhìn lại đống code của mình.
Rồi "nản Chí Phèo" và tự hỏi:
"Hay là mình nghỉ luôn từ bài Hello World cho đỡ tốn thời gian?" 😭
Nhưng câu chuyện thực tế "hình như" không đơn giản như vậy.
AI đang thay đổi nghề lập trình thật.
AI có thể viết code thật.
AI có thể sửa lỗi thật.
AI có thể giải thích code, tạo SQL, viết API, tạo giao diện, sinh test...
Nhưng từ đó nhảy thẳng đến kết luận:
"AI = programmer bị thay thế hoàn toàn"
thì "hơi bị sai".
Điều đáng quan tâm hơn với một người đang học lập trình là:
Nếu AI ngày càng viết code giỏi hơn, thì programmer còn phải giỏi cái gì?
Đây mới là câu hỏi đáng "suy ngẫm" và cần chúng ta "ngâm cứu".
AI thực sự làm được gì?
Nếu vài năm trước bạn muốn làm một chức năng đơn giản, có thể phải:
- Google tìm ví dụ
- đọc Stack Overflow
- xem documentation
- copy một đoạn code
- sửa
- chạy thử
- lỗi
- sửa tiếp
- chạy lại
- lỗi tiếp
- rồi bắt đầu nghi ngờ nhân sinh.
Bây giờ bạn có thể mô tả yêu cầu cho AI:
Viết cho tôi một chương trình Python
đọc file customers.csv,
lọc những khách hàng ở Đà Nẵng
và xuất kết quả ra file danang.csvAI có thể tạo ra một phiên bản code rất nhanh.
Ví dụ:
import csv
with open("customers.csv", "r", encoding="utf-8") as f:
reader = csv.DictReader(f)
with open("danang.csv", "w", newline="", encoding="utf-8") as out:
writer = csv.DictWriter(out, fieldnames=reader.fieldnames)
writer.writeheader()
for row in reader:
if row["city"] == "Đà Nẵng":
writer.writerow(row)Với một người mới học, đây là chuyện khá thú vị.
Ngày trước:
"Làm sao đọc CSV bằng Python?"
Có thể mất cả buổi.
Bây giờ:
"AI, làm giúp tôi cái này."
Vài giây sau có code.
Vậy AI có đang thay đổi cách chúng ta lập trình không?
Có.
Rất rõ là đằng khác. Quá nhanh, quá...."không nguy hiểm"!
Nhưng khoan...
AI viết được code không có nghĩa là AI hiểu toàn bộ vấn đề của bạn.
Đây là chỗ rất quan trọng.
Giả sử bạn nói:
"Viết cho tôi chương trình xóa các file không cần thiết trong thư mục Downloads."
AI hoàn toàn có thể viết.
Nhưng...
File nào là "không cần thiết"?
.tmp?
.log?
Ảnh cũ?
File tải xuống hơn 30 ngày?
File có tên important_final_final_2_REAL.pdf?
Hay cái file tên:
do_not_delete_this_please.pdfnhưng chẳng ai biết tại sao nó nằm trong Downloads? 😭
Code có thể chạy hoàn hảo.
Nhưng nếu yêu cầu ban đầu không rõ thì:
AI có thể tự động hóa một quyết định sai rất nhanh.
Đó mới là vấn đề, mà là vấn đề rất nghiêm trọng. Ú ớ sự tiện lợi sẽ biến công sức của bạn "một đi không trở lại" trong nháy mắt.
Programmer không chỉ là người gõ code
Đây là một hiểu lầm khá phổ biến khi mới học lập trình.
Nhiều người nghĩ:
Programmer = người ngồi gõ code.
Thực tế, gõ code chỉ là một phần của công việc.
Một programmer còn phải:
- hiểu bài toán
- xác định input
- xác định output
- thiết kế cách giải quyết
- chọn công nghệ
- hiểu dữ liệu
- xử lý lỗi
- kiểm tra kết quả
- bảo mật
- tối ưu
- đọc code cũ
- sửa bug
- bảo trì
- trao đổi với người dùng hoặc team
- hiểu giới hạn của hệ thống
Nói đơn giản:
Code là cách chúng ta nói cho máy tính biết phải làm gì.
Nhưng trước khi viết code, phải biết:
"Rốt cuộc mình muốn máy tính làm cái gì?"
AI có thể giúp bạn viết câu lệnh.
Nhưng nếu đề bài sai ngay từ đầu...
thì AI có thể giúp bạn đi sai nhanh hơn. 😭
Một ví dụ rất đời thường
Bạn nói với AI:
"Viết chương trình tính tiền cho cửa hàng."
AI hỏi:
"Bạn muốn tính như thế nào?"
Bạn:
"Cứ tính tổng giá sản phẩm."
AI viết:
total = price * quantityChạy ngon.
Nhưng sau đó chủ cửa hàng nói:
- khách VIP giảm 10%
- mua trên 1 triệu giảm thêm 5%
- sản phẩm A không được giảm
- phí vận chuyển tính riêng
- đơn trên 2 triệu miễn phí ship
- mã giảm giá không được cộng dồn
- thuế tính ở bước cuối
Lúc này bài toán không còn là:
total = price * quantitynữa.
Nó trở thành:
"Luật kinh doanh của cửa hàng là gì?"
Đây chính là phần mà người làm phần mềm phải hiểu.
AI có thể viết 100 dòng code.
Nhưng ai chịu trách nhiệm nếu 100 dòng đó sai?
Đây là một câu hỏi rất đáng nhớ.
Giả sử AI tạo cho bạn:
if user.is_admin:
delete_database()Bạn copy.
Chạy.
Database bay màu.
Bạn quay sang AI:
"Tại sao database của tôi mất rồi?"
AI có thể trả lời rất lịch sự:
"Có vẻ đoạn code trên đã xóa database..."
😭
Lúc đó câu hỏi không còn là:
"AI viết code nhanh không?"
Mà là:
"Có người đủ hiểu để kiểm tra code AI viết không?"
AI có thể viết code rất nhanh.
Nhưng code chạy được chưa chắc là code đúng.
Đây là một trong những điều người mới cần nhớ.
Có ít nhất vài tầng:
Code không chạy
↓
Code chạy
↓
Code chạy đúng với ví dụ
↓
Code đúng với nhiều trường hợp
↓
Code an toàn
↓
Code dễ bảo trì
↓
Code phù hợp với hệ thống thậtAI có thể giúp bạn đi qua nhiều bước trong số này.
Nhưng bạn vẫn cần biết mình đang kiểm tra cái gì.
"Nhưng AI bây giờ thông minh lắm mà?"
Đúng.
Và đây chính là điều làm câu chuyện trở nên thú vị.
AI ngày càng có khả năng:
- viết code
- đọc code
- giải thích code
- sửa lỗi
- tạo test
- chuyển code giữa các ngôn ngữ
- tạo SQL
- tạo API
- tạo HTML/CSS/JavaScript
- hỗ trợ debug
- đọc tài liệu
- hỗ trợ tìm nguyên nhân lỗi
- tự thực hiện nhiều bước trong một workflow
Vì vậy, nói:
"AI chẳng làm được gì đâu."
cũng không đúng.
Người học lập trình nên nhìn thẳng vào thực tế:
AI là một công cụ ngày càng mạnh.
Và cách làm phần mềm đang thay đổi.
Vậy programmer tương lai phải làm gì?
Có một điều khá thú vị:
Khi máy móc làm phần việc cơ học tốt hơn, giá trị của con người thường chuyển sang những phần khó tự động hóa hơn.
Trong lập trình cũng vậy.
Thay vì chỉ tập trung vào:
"Tôi gõ code nhanh thế nào?"
hãy dần chuyển sang:
"Tôi giải quyết vấn đề tốt thế nào?"
1. Biết đọc code
Đây có thể là kỹ năng cực kỳ quan trọng trong thời đại AI.
AI viết cho bạn:
data = [10, 20, 30, 40]
result = [x * 2 for x in data if x > 20]
print(result)Nếu bạn hiểu:
[x * 2 for x in data if x > 20]thì rất tốt.
Nếu bạn nhìn nó và nghĩ:
"Ờ... AI bảo vậy thì chắc vậy." 😭
thì hơi nguy hiểm.
Bạn không nhất thiết phải tự gõ từng dòng từ đầu.
Nhưng nên đủ hiểu để đọc:
"Đoạn này đang làm gì?"
2. Biết debug
Đây là lý do chuỗi bài trước của chúng ta vẫn rất quan trọng.
AI có thể nói:
"Bạn hãy kiểm tra biến này."
Nhưng bạn cần biết kiểm tra ở đâu và kiểm tra cái gì.
Ví dụ:
print(user)
print(user_id)
print(total)Hoặc:
try:
...
except Exception as e:
print(e)Hoặc kiểm tra:
- input
- output
- database
- API response
- file
- đường dẫn
- quyền truy cập
- dữ liệu thực tế
Một programmer giỏi không phải lúc nào cũng viết code nhanh.
Nhiều khi họ chỉ rất giỏi trả lời câu:
"Nó sai ở đâu?"
3. Biết đặt câu hỏi
Đây chính là lúc AI trở nên rất hữu ích.
Một yêu cầu kiểu:
Viết code loginquá chung.
Một yêu cầu tốt hơn:
Tôi đang dùng PHP + MySQL.
Tôi có bảng users gồm:
id, email, password_hash.
Tôi muốn tạo chức năng đăng nhập.
Yêu cầu:
- dùng password_hash/password_verify
- dùng prepared statement
- không lưu password dạng plain text
- nếu đăng nhập sai thì báo lỗi
- nếu đúng thì tạo sessionAI sẽ có nhiều thông tin hơn để hỗ trợ.
Và điều thú vị là:
Muốn hỏi AI tốt, bạn phải hiểu bài toán tốt.
4. Biết kiểm tra câu trả lời của AI
Đây là kỹ năng cực kỳ quan trọng.
Đừng biến AI thành:
"thầy giáo nói gì em cũng chép."
Hãy biến AI thành:
"anh đồng nghiệp hỗ trợ tôi."
AI đưa code?
Bạn đọc.
AI giải thích?
Bạn kiểm tra.
AI đề xuất cách sửa?
Bạn thử.
AI nói:
"Lỗi này chắc chắn do X."
Bạn vẫn hỏi:
"Làm sao chứng minh nó là X?"
Đó mới là tư duy debug.
5. Hiểu nền tảng thay vì chỉ nhớ cú pháp
Ví dụ bạn dùng AI tạo API.
Nếu bạn hiểu:
HTTP
↓
Request
↓
Server
↓
Authentication
↓
Database
↓
Responsethì khi API lỗi:
401
403
404
500
429bạn có cơ sở để điều tra.
Còn nếu không hiểu HTTP mà chỉ copy code...
thì mỗi lần lỗi lại:
"AI ơi cứu em." 😭
AI có thể cứu.
Nhưng lần sau lỗi lại gọi tiếp.
Cứ như vậy thì bạn đang thuê AI làm programmer thay mình.
AI có thể thay thế một số công việc lập trình không?
Có thể.
Đây là phần không nên né tránh.
Một số công việc mang tính lặp lại, có quy tắc rõ ràng hoặc dễ mô tả có thể được tự động hóa nhiều hơn.
Ví dụ:
- tạo code mẫu
- chuyển đổi định dạng
- tạo CRUD cơ bản
- viết test cơ bản
- tạo SQL đơn giản
- xử lý file
- tạo script automation
- tạo tài liệu kỹ thuật ban đầu
- refactor một số đoạn code
- hỗ trợ tìm bug
Những việc trước đây có thể cần con người làm thủ công nhiều hơn.
Bây giờ AI có thể giúp làm nhanh hơn.
Điều đó có nghĩa là công việc của programmer có thể thay đổi.
Nhưng "một số tác vụ bị tự động hóa" và "toàn bộ nghề programmer biến mất" là hai chuyện rất khác nhau.
Hãy thử nhìn theo cách khác
Ngày xưa:
Programmer
↓
Tự viết code
↓
Tự debug
↓
Tự tìm tài liệu
↓
Tự viết testBây giờ có thể trở thành:
Programmer
↓
Mô tả vấn đề
↓
AI hỗ trợ tạo code
↓
Programmer kiểm tra
↓
Test
↓
Debug
↓
Điều chỉnh
↓
Đưa vào hệ thống thậtVà tương lai có thể còn tự động hóa nhiều hơn.
Nhưng càng nhiều thứ được tự động hóa thì một vấn đề lại càng quan trọng:
Ai chịu trách nhiệm về kết quả cuối cùng?
Người mới học lập trình có nên lo không?
Nếu bạn đang học lập trình và đọc đến đây rồi thấy:
"Chết rồi..."
Khoan. 😄
Đừng vội đóng VS Code.
Bạn vẫn nên học.
Nhưng có thể học theo cách khác.
Đừng đặt mục tiêu:
"Tôi phải nhớ 5.000 câu lệnh."
Hãy đặt mục tiêu:
"Tôi phải hiểu máy tính đang làm gì."
Ví dụ rất đơn giản
Bạn học Python.
Đừng chỉ nhớ:
for i in range(10):
print(i)Hãy hiểu:
fordùng để lặpilà biếnrange(10)tạo ra một dãy giá trịprint()xuất dữ liệu- chương trình chạy theo thứ tự nào
Sau này AI có thể viết vòng lặp cho bạn.
Không sao.
Bạn vẫn đọc được nó.
AI giống một chiếc máy khoan
Một người thợ có máy khoan sẽ làm việc nhanh hơn người phải dùng tay đục từng lỗ.
Nhưng...
Đưa máy khoan cho người không biết mình đang khoan vào đâu thì:
tường nhà có thể có thêm một cái lỗ rất đẹp. 😭
AI cũng vậy.
AI là công cụ.
Công cụ càng mạnh thì người sử dụng càng cần biết mình đang làm gì.
Có một nghịch lý khá thú vị
AI càng giỏi code...
việc biết code cơ bản có thể càng quan trọng.
Nghe hơi ngược đời đúng không?
Nhưng hãy tưởng tượng:
AI tạo cho bạn 300 dòng code.
Nếu bạn không biết code:
"Wow! Tuyệt vời!"
Nếu bạn biết code:
"Khoan... tại sao đoạn này query database hai lần?"
Hoặc:
"Chỗ này có thể bị SQL Injection."
Hoặc:
"API trả 401 chứ không phải 403."
Hoặc:
"Đoạn này đang đọc file bằng encoding sai."
Lúc đó AI trở thành trợ lý.
Chứ không phải người lái xe.
Một programmer thời AI có thể sẽ giống thế này
Không nhất thiết là người:
gõ code nhanh nhất.
Mà có thể là người:
- hiểu bài toán
- mô tả yêu cầu rõ
- biết chia nhỏ vấn đề
- đọc code tốt
- debug tốt
- biết kiểm tra kết quả
- hiểu hệ thống
- biết khi nào tin AI
- biết khi nào không nên tin AI
- biết cách kết hợp nhiều công cụ
- chịu trách nhiệm cho sản phẩm cuối cùng
Nói ngắn gọn:
AI có thể giúp bạn viết code nhanh hơn. Nhưng bạn vẫn cần biết mình đang xây cái gì.
"Vậy học lập trình bây giờ có còn đáng không?"
Câu trả lời thực tế là:
Nếu bạn muốn làm việc với phần mềm, hiểu lập trình vẫn là một nền tảng rất hữu ích.
Nhưng cách học có thể thay đổi.
Thay vì:
Học cú pháp
↓
Nhớ cú pháp
↓
Viết code
↓
Thicó thể chuyển dần sang:
Hiểu vấn đề
↓
Chia nhỏ vấn đề
↓
Viết hoặc yêu cầu AI hỗ trợ code
↓
Đọc code
↓
Test
↓
Debug
↓
Cải thiện
↓
Đưa vào sản phẩm thậtVà đây cũng chính là tinh thần của DatVietLapTrinh:
Học lập trình từ lỗi thật đến sản phẩm thật.
Không phải học để thuộc lòng mọi dòng code.
Mà học để biết chuyện gì đang xảy ra khi code chạy.
Chua thêm một chút 😭
Có một viễn cảnh mà mình nghĩ sẽ ngày càng phổ biến. Thật ra nó đang xảy ra hàng ngày:
Bạn:
"AI, viết giúp tôi chương trình này."
AI:
"Được."
5 giây sau:
500 dòng codeBạn:
"Ồ..."
Copy.
Run.
ERRORBạn:
"AI ơi sửa giúp."
AI:
"Bạn hãy thay dòng 37."
Copy.
Run.
ERRORBạn:
"..."
AI:
"À, tôi xin lỗi. Nguyên nhân nằm ở dòng 42."
Copy.
Run.
ERRORLúc này bạn bắt đầu hiểu một chân lý:
Biết copy code không đồng nghĩa với biết lập trình. 😂
Và đây là điều chúng tôi muốn người mới học nhớ nhất
Đừng cạnh tranh với AI ở việc:
"Ai gõ code nhanh hơn?"
Bạn gần như không thắng.
Hãy dùng AI.
Nhưng đồng thời học để hiểu:
"Tại sao đoạn code này chạy?"
"Nếu nó lỗi thì lỗi ở đâu?"
"Nếu dữ liệu thay đổi thì chuyện gì xảy ra?"
"Nếu có 1 triệu người dùng thì sao?"
"Nếu hacker cố tình gửi dữ liệu xấu thì sao?"
"Nếu AI viết sai thì tôi phát hiện bằng cách nào?"
Đó mới là những câu hỏi đáng học.
Checklist: Học lập trình thời AI nên có gì?
Nếu bạn đang bắt đầu, hãy thử kiểm tra:
Hiểu biến, điều kiện, vòng lặp
Hiểu function
Biết đọc code
Biết debug
Biết đọc error message
Biết làm việc với file
Biết database cơ bản
Hiểu HTTP/API cơ bản
Biết Git ở mức cơ bản
Biết test kết quả
Biết đặt câu hỏi rõ ràng cho AI
Không copy code AI một cách mù quáng
Biết kiểm tra code trước khi đưa vào project thật
Biết khi nào nên hỏi AI
Biết khi nào nên tự suy nghĩ trước
Không cần giỏi hết ngay.
Quan trọng là đi từng bước.
FAQ nhanh
AI có viết được code không?
Có. Và khả năng hỗ trợ lập trình của AI đã rất mạnh.
AI có thể tự xây cả một website không?
AI có thể hỗ trợ tạo rất nhiều phần của một website, từ giao diện đến backend và database. Nhưng một sản phẩm thật vẫn cần yêu cầu rõ ràng, kiểm tra, test, bảo mật, triển khai và bảo trì.
Tôi có cần học syntax nữa không?
Có, nhưng không nhất thiết phải cố nhớ mọi thứ như học thuộc bài.
Bạn cần đủ hiểu syntax để đọc, sửa và kiểm tra code.
Có nên dùng AI khi học lập trình?
Có thể dùng.
Nhưng đừng biến việc học thành:
Lỗi → hỏi AI → copy → xongHãy thử:
Lỗi
↓
Tự đoán nguyên nhân
↓
Tự kiểm tra
↓
Hỏi AI nếu cần
↓
So sánh
↓
Hiểu nguyên nhânBạn sẽ học được nhiều hơn.
Programmer tương lai có cần biết mọi thứ không?
Không.
Không ai biết mọi thứ. Đứng cố trở nên "hoàn hảo"!
Điều quan trọng hơn là biết cách tìm hiểu, kiểm tra và giải quyết vấn đề.
Bạn có thể cũng đang gặp...
Nếu bạn đang học lập trình từ đầu, có thể bạn cũng từng gặp:
- "Pip không hoạt động"
- "Virtual Environment là gì?"
- "requirements.txt là gì?"
- "Tại sao chương trình đọc CSV bị lỗi?"
- "Web Scraping là gì?"
- "Python có thể tự động làm những việc gì?"
Những bài trước sẽ giúp bạn xây nền tảng để bước vào phần AI mà không bị kiểu:
"AI viết gì thì mình tin nấy." 😄