Tính đến thời điểm viết bài này vào năm 2025, AI là thứ nóng hổi mới nhất42. Ai cũng dùng nó, và không ai ngừng nói về nó.
Câu hỏi mà không ai có vẻ có câu trả lời là điều gì sẽ xảy ra. Sam Altman43 và những người khác sẽ nói với bạn rằng AI chỉ trong giây lát sẽ thống trị thế giới và giải quyết mọi thứ, và con người sẽ trở nên lỗi thời.
Tôi muốn nghĩ rằng điều đó sẽ không xảy ra, và ngay cả khi AI bắt đầu giải quyết mọi thứ, người ta vẫn sẽ muốn dùng óc sáng tạo của mình để đẩy ranh giới xa hơn mức AI có thể.
Điều đó có nghĩa gì với bạn với tư cách là sinh viên khoa học máy tính (tính đến thời điểm viết bài này)?
Hãy nói về cách bạn nên dùng AI với tư cách sinh viên và trong công việc, vì đó là hai điều khác nhau.
Nhưng trước đó, hãy nói về những gì bạn không nên làm.
Tôi đã đề cập ở chỗ khác rằng tôi thích nghiên cứu cuốn sách SICP44 để cải thiện kỹ năng. Và cách tôi tự đặt giới hạn thời gian sáu giờ để giải các bài toán được đưa ra.
Bây giờ, những bài toán này hoàn toàn không phải bài toán thực tế. Đây là các bài toán luyện tập được thiết kế sẵn. Và — hãy nhớ điều này — câu trả lời đều có sẵn trên Internet ở nhiều nơi.
Vậy tại sao tôi dành đến sáu giờ? Thật lãng phí, phải không? Tại sao không chỉ clone repo của ai đó và tuyên bố đã triển khai xong?
Hay nếu không vậy, tại sao không chỉ sao chép những gì bạn bè tôi làm?
Hay nếu không vậy, tại sao không thuê người viết câu trả lời cho tôi?
Dĩ nhiên, bạn biết câu trả lời. Tôi không làm vậy vì nếu tôi làm, tôi chưa học được gì. Cụ thể hơn, tôi chưa vật lộn với bài toán nên sự học hỏi từ đó sẽ bị mất.
Tôi nghĩ bạn thấy điều này đang dẫn đến đâu: chỉ nhờ AI giải bài toán sẽ không tăng kỹ năng của bạn chút nào. Đó chỉ là nhờ người khác làm công việc khó.
Giống như tôi đến phòng tập và nhờ robot nâng tạ cho tôi. Đúng là tôi có thể bước ra nói tạ đã được nâng thành công, nhưng tôi không thu được gì từ trải nghiệm đó.
Tôi muốn bạn kể tên một hoạt động, ngoài việc ở phòng tập, bao gồm nâng tạ cả ngày. Câu trả lời: không có cái nào (nói chung cho phần lớn dân số). Vậy tại sao chúng ta dành thời gian nâng tạ ở phòng tập nếu không có hoạt động nào khác liên quan đến điều đó?
Tất nhiên, những quả tạ chỉ là công cụ chúng ta dùng hướng đến mục tiêu lớn hơn là trở nên mạnh mẽ hơn nói chung.
Trường học cũng y như vậy. Các bài toán lập trình bạn có trong trường là những quả tạ. Chúng không thực. Chúng được thiết kế để cho bạn luyện tập để khi bạn ra làm việc, bạn có đủ sức mạnh để làm việc.
Và vì các bài toán không thực, AI có thể giải tất cả chúng rất dễ dàng. Có rất nhiều tài liệu đào tạo cho chúng để học.
Nhưng đừng bị lừa. Chỉ vì AI có thể giải các bài toán trường học của bạn không có nghĩa là nó có thể giải các bài toán thực tế bạn sẽ gặp trong công việc. (Tính đến thời điểm này, nó không thể.)
(Và nếu nó có thể giải tất cả những bài toán đó, bạn nghĩ các lập trình viên sẽ kiếm được bao nhiêu? Có lý do tại sao làm lập trình viên được trả cao, và đó là vì công việc khó. Nếu nó dễ như gõ prompt AI, nó sẽ trả lương tối thiểu. Điều đó nên gợi ý cho bạn rằng nếu tất cả những gì bạn có thể làm là prompt AI, bạn sẽ không nhận được gig lương cao.)
Nhưng điều đó không có nghĩa là bạn không nên giỏi dùng AI; chỉ là khi bạn còn là sinh viên, bạn phải dùng nó đúng cách để tối đa hóa phát triển kỹ năng.
TLDR của phần này là: đừng bao giờ nhờ AI giải toàn bộ dự án lập trình của bạn. Có lẽ nó có thể làm được, nhưng bạn sẽ không học được gì. Mục tiêu của dự án không phải là hoàn thành bài toán; mà là rèn luyện trong khi bạn hoàn thành nó.
Trước tiên: nếu trường hay giảng viên của bạn cấm AI, đó là quy tắc. Và bạn phải bỏ qua những gì tôi đã viết ở đây. Xin lỗi. Tôi sẽ giả định họ chưa làm điều ngốc nghếch đó, và tiếp tục.
Vậy bạn nên dùng nó thế nào? Hãy dùng nó như bạn đang làm việc với một gia sư tốt biết nhiều thứ khá tốt. Gia sư AI chắc chắn mắc lỗi và đưa ra lời khuyên kém thỉnh thoảng, vì vậy bạn nên nhìn mọi thứ bạn học từ nó bằng con mắt phê phán.
Khi bạn bị mắc kẹt ở một phần nhỏ của dự án, hãy hỏi về điều đó. Khi bạn không nhớ cú pháp, hãy hỏi về điều đó. Hỏi về cách thành ngữ để viết vòng lặp xóa phần tử khỏi mảng đang lặp. Hỏi về một toán tử cụ thể làm gì hoặc cách dùng nó. Khi bạn có câu hỏi về ngôn ngữ hoặc thư viện, hãy hỏi. Những miếng nhỏ vừa miệng như vậy hoàn toàn có thể hỏi. Nó có thể nhanh hơn nhiều so với tìm kiếm Internet thông thường.
Một nơi khác tôi thấy AI làm tốt là với gợi ý. Bạn có thể đưa vào lượng code bằng một hàm và nói với AI, “Có gì đó sai với đây [mô tả vấn đề]. Nhưng đừng cho tôi câu trả lời và đừng cho tôi code đã sửa. Chỉ cho tôi gợi ý về cách tôi cần suy nghĩ về bài toán để tự tìm ra giải pháp.”
Và khi bạn đã hoàn thành dự án (và nó hoạt động hoàn toàn), thì bạn có thể thoải mái nhờ AI một giải pháp để so sánh. Hay tốt hơn nữa, đưa giải pháp của bạn vào AI và nhờ cải tiến.
Hãy nhớ rằng một số “cải tiến” sẽ không phải cải tiến gì cả, và bạn sẽ muốn bỏ qua chúng. Hãy nhìn bằng con mắt phê phán. Hãy có chính kiến và có lý do cho lời khuyên nào bạn chấp nhận và lời khuyên nào bạn từ chối.
Cuối cùng, còn có một lúc khác ổn để dùng AI giải toàn bộ dự án: khi giảng viên của bạn nói bạn có thể. Điều này xảy ra khi họ đang cho bạn luyện tập thực tế hơn so với nâng tạ. Cả hai đều là cách sử dụng thời gian học tập có giá trị.
Trước tiên, một lưu ý: lần cuối tôi làm việc trong production (và tôi đã làm 20 năm), AI như chúng ta biết ngày nay không tồn tại. Điều đó nói rằng, tôi dùng nó để hoàn thành công việc nhanh hơn ngày nay. Đó là mức độ “chuyên môn” của tôi.
Tôi đã đề cập trước đây rằng lập trình viên mới giải bài toán bằng lý luận logic, nhưng những chuyên gia, ngoài ra, còn nhận ra các mẫu. Là lập trình viên có kinh nghiệm hơn, bạn hiểu rõ hơn về các khối xây dựng nào cấu thành bài toán. Bạn nhận ra những mảnh bạn cần, và lý luận logic về cách lắp ghép chúng.
Nói cách khác, các lập trình viên có kinh nghiệm giỏi hơn ở Hiểu và Lên kế hoạch. (Họ giỏi hơn ở tất cả các giai đoạn, nhưng hãy nhớ rằng Hiểu và Lên kế hoạch là nơi trận chiến diễn ra.)
Do đó, họ có thể tận dụng AI để giúp viết code cho những khối xây dựng đó. Họ có thể nói những thứ như, “Tôi cần lọc những kết quả đó cho bất cứ thứ gì khớp với biểu thức chính quy này” — và sau đó họ nhờ AI code khối xây dựng đó, họ thành thạo kiểm tra xem code có đúng không và điều chỉnh để phù hợp với nhu cầu, rồi tiếp tục.
Ngay cả với các công nghệ họ không quen, điều này có thể giúp họ hoàn thành công việc. Nhưng họ vẫn cần dựa vào chuyên môn để biết khi nào cần học thêm. Tức là, các lập trình viên có kinh nghiệm có mũi để ngửi code nguy hiểm và biết khi nào họ cần tiến cẩn thận và thu thập thêm kiến thức.
Ở khía cạnh này, AI có thể thực sự hữu ích cho công việc proof-of-concept và tạo prototype nhanh nơi code thường dùng xong bỏ.
“Nào hãy nhanh lên! Không có gì đáng sợ ở đây!”
“Đó chính xác là điều khiến tôi sợ.”— Satipo và Indiana Jones, Raiders of the Lost Ark
Lại nói, với tư cách sinh viên, bạn không thể mang kinh nghiệm đó (mà bạn chưa có được) vào cuộc, và nếu bạn chỉ cố dùng AI như một lập trình viên dày dạn, bạn sẽ có code đầy bug, mong manh mà bạn không biết cách sửa. Và tệ nhất là bạn sẽ không phát triển được kỹ năng cần thiết.
Nhưng khi bạn tích lũy thêm kinh nghiệm, bạn hoàn toàn có thể dựa vào AI để viết một lượng lớn boilerplate code cho bạn mà bạn đã biết logic đằng sau, dù sao.
Khi bạn đọc cái này, tôi muốn bạn biết rằng tôi, tác giả, đã nghĩ Yahoo!45 là ý tưởng ngớ ngẩn khi nó mới ra mắt. Tôi vẫn hơi nghĩ vậy, nhưng nó đã kiếm được hàng tỷ đô từ đó, nên tôi đã sai. Ít nhất là về mặt tư bản.
Một điều mà các lập trình viên lớn tuổi đã nghe trong suốt sự nghiệp là chúng ta đang trên bờ vực của cuộc cách mạng “không code”, và công cụ này hay công cụ kia rốt cuộc sẽ đặt các lập trình viên ra ngoài vì mọi người ở khắp nơi có thể tạo ra phần mềm.
Mỗi dự đoán như vậy đều có điểm chung là tất cả đều sai một cách đáng kinh ngạc.
Nhưng mọi thứ chỉ sai cho đến khi chúng không còn sai nữa, và LLM như ChatGPT chắc chắn là những con thú mới lạ không chơi theo quy tắc cũ.
Tôi nhận ra chiêu pump cổ phiếu, dù vậy. Tất cả các công ty “không code” đó đang nói khoác để nhận được lợi nhuận lớn cho nhà đầu tư. OpenAI và các tay chơi AI khác cũng nói khoác như vậy.
Điều đó không có nghĩa là họ sẽ không đạt được những lợi nhuận đó; nhưng có nghĩa là nó có mùi quen thuộc.
Và LLM đang thể hiện chuyên môn coding đáng kinh ngạc. Tôi liên tục ngạc nhiên với những gì chúng có thể làm. Nhưng liệu chúng có làm được hết không?
Tôi có một thí nghiệm tư duy cho bạn. Giả sử có một AI giỏi đến mức tôi có thể nói với nó, “AI, hãy thiết kế và triển khai một tập đoàn sẽ nghiền nát tất cả đối thủ và làm tôi trở thành người giàu nhất trên Trái Đất,” và nó sẽ thực sự làm được điều đó thành công.
Nhưng vấn đề là mọi người đều có thể truy cập cùng một AI và họ đều có thể đưa ra cùng yêu cầu đó. Điều đó đưa chúng ta đến đâu? Chúng ta trở lại điểm xuất phát khi tất cả đều bình đẳng.
Là một người theo chủ nghĩa tư bản, tôi không thích bình đẳng. Tôi muốn có lợi thế so với đối thủ. Vậy tôi bắt đầu nghĩ, “Chúng ta có thể làm gì hơi khác so với những gì AI đang nói với đối thủ của tôi?”
Và chỉ như vậy, con người lại tham gia vào cuộc chơi!
Tôi nghĩ xu hướng đó sẽ tiếp tục, có thể mãi mãi.
Điều sẽ xảy ra, tôi dự đoán, là các công việc boilerplate đơn giản tồn tại hiện nay sẽ bị thu hẹp đáng kể. AI có thể giải nhiều bài toán đơn giản đó, và bạn không cần một đội ngũ kỹ sư lớn đằng sau chúng. Các bài toán mới lạ hơn vẫn sẽ cần nhiều công việc của con người.
Nhưng có lẽ không nhiều công việc như trước. AI có thể giúp đỡ theo nhiều cách, như đã nêu ở trên, vì vậy nó giúp đẩy nhanh mọi việc.
Quay ngược thời gian, hãy xem xét khi hầu hết các chương trình được viết bằng ngôn ngữ assembly46 và cần nhiều kiến thức chuyên môn để viết những chương trình dễ lỗi này. Rồi trình biên dịch trở nên phổ biến và bây giờ không ai47 viết bằng assembly nữa; những công việc đó đã bị xóa sổ, bị phá hủy bởi cách code nhanh hơn, dễ hơn mà trình biên dịch mang lại.
Tóm lại, tôi nghĩ chúng ta sẽ tiếp tục đẩy tiến, và AI sẽ trở thành công cụ rất hữu ích, nhưng chỉ khi có con người ở vị trí lái. Tôi nghĩ vậy. Chúng ta sẽ thấy.
“Và… Luôn nhìn vào mặt sáng của cuộc sống…”
— Người hát chính Crucifee, Monty Python’s Life of Brian
So sánh những cách hữu ích và không hữu ích mà sinh viên có thể dùng AI.
Điều gì xảy ra nếu bạn dùng AI sai cách với tư cách sinh viên?
Mọi thứ khác nhau thế nào với AI trong công việc so với ở trường?
Một số nguy hiểm của việc dùng AI trong công việc là gì?
mailto:beej@beej.us↩︎
https://en.wikipedia.org/wiki/Boids↩︎
https://beej.us/guide/bglcs/↩︎
mailto:beej@beej.us↩︎
https://github.com/beejjorgensen/bglcs/issues↩︎
https://github.com/beejjorgensen/bglcs↩︎
https://en.wikipedia.org/wiki/COBOL↩︎
Thật ra trò đùa quay lại hại tôi. Vẫn còn rất nhiều công việc liên quan đến COBOL ngoài kia.↩︎
https://en.wikipedia.org/wiki/List_of_programming_languages↩︎
https://en.wikipedia.org/wiki/Mindset#Fixed_and_growth_mindset↩︎
Vâng, tôi là fan của Galaxy Quest.↩︎
https://en.wikipedia.org/wiki/Go_(game)↩︎
https://www.youtube.com/watch?v=cJsgM-3L38U↩︎
https://en.wikipedia.org/wiki/How_to_Solve_It↩︎
Đôi khi thực ra có thể, nhưng chỉ để viết các chương trình nhỏ, dùng một lần, khám phá mang tính bằng chứng khái niệm.↩︎
Tôi không nghĩ AI có thể giải quyết tất cả các vấn đề được đặt ra cho nó, nghĩa là bạn vẫn sẽ có việc làm, nhưng chúng có thể giải quyết các bài toán tương đối cơ bản thường được dùng trong chương trình khoa học máy tính. Đây là năm 2025 và chúng ta sẽ xem ghi chú chú thích này “già” đến mức nào.↩︎
Tôi cũng cần phải khôn ngoan hơn.↩︎
Một lần trên một trang web thử thách lập trình tôi đã viết code cho giải pháp hoàn hảo của hai bài toán không phải bài tôi cần giải. Tôi đã hiểu sai đến hai lần. Mất gấp ba lần thời gian cần thiết để đưa ra giải pháp thực sự.↩︎
Đây thực ra là một phần trong mô tả công việc của bạn với tư cách là lập trình viên. Mọi người sẽ mong đợi và dựa vào bạn làm điều này tại nơi làm việc. Vì vậy đừng ngại làm; hãy ngại không làm.↩︎
Bạn chưa nói cách chọn ai đi trước, liệu có thể chơi với ba người không, hay là “X” của tôi không thể chiếm nhiều hơn một ô. Ví dụ vậy.↩︎
Tính đến năm 2025, tôi làm việc tại Đại học Bang Oregon. Hãy tiến lên, Beavs!↩︎
Rubber ducking là việc chia sẻ ý tưởng với một con vịt cao su thực sự hoặc đại diện thay thế, có thể thực ra là một người. Nó giúp bạn làm rõ suy nghĩ và đạt được đột phá trong giải quyết vấn đề. Ngoài ra, Ducks là đội bóng bầu dục của Đại học Oregon, đối thủ lâu năm của Bang Oregon. Boo Ducks!↩︎
Điều này rất hiếm khi xảy ra với tôi. Khi xảy ra, tôi nhanh chóng nhìn ra cửa sổ để đảm bảo bầu trời trong xanh và tôi sắp không bị sét đánh. Và tôi mua vé số. Đó chắc chắn là lúc vận may của tôi cạn kiệt.↩︎
https://en.wikipedia.org/wiki/Pair_programming↩︎
Đảm bảo giảng viên và/hoặc người sử dụng lao động của bạn cho phép điều này.↩︎
Một lần nữa, nếu được phép trong môi trường làm việc hoặc trường học của bạn.↩︎
https://en.wikipedia.org/wiki/Shell_script↩︎
https://en.wikipedia.org/wiki/Doing_It_Right_(scuba_diving)↩︎
https://en.wikipedia.org/wiki/Turing_machine↩︎
https://en.wikipedia.org/wiki/Flow_(psychology)↩︎
https://stackoverflow.com/↩︎
https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs↩︎
https://en.wikipedia.org/wiki/Grok#In_computer_programmer_culture↩︎
https://en.wikipedia.org/wiki/Fisher–Yates_shuffle↩︎
https://en.wikipedia.org/wiki/Integrated_development_environment↩︎
https://en.wikipedia.org/wiki/Sentence_diagram↩︎
https://docs.python.org/3/library/index.html↩︎
https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol↩︎
https://en.wikipedia.org/wiki/Health_(game_terminology)#Hit_points↩︎
https://en.wikipedia.org/wiki/Programming_paradigm↩︎
https://www.erlang.org/↩︎
Không giống như cách diễn đạt “new hotness” (cái mới nóng hổi), hiện đã trở nên nhàm. “Nhàm” cũng đã nhàm, nhưng nó tự tham chiếu nên tôi nghĩ nó đã chạm đáy.↩︎
https://en.wikipedia.org/wiki/Sam_Altman↩︎
https://en.wikipedia.org/wiki/Structure_and_Interpretation_of_Computer_Programs↩︎
https://www.yahoo.com/↩︎
https://en.wikipedia.org/wiki/Assembly_language↩︎
À, một số ít người có. Bạn nên thử cho vui. Đó là điều gì khác.↩︎