- Lúc mới dùng các công cụ viết mã AI, tôi đã kinh ngạc trước sự hiệu quả và cảm giác mới lạ mà chúng mang lại
- Đặc biệt, chúng giúp phân tích lỗi biên dịch C++ rất tốt, đến mức gần như có cảm giác như phép màu
- Khi dùng GitHub Copilot và nhiều công cụ tích hợp trình soạn thảo dựa trên LLM khác nhau, chúng dần trở thành một phần trong quy trình phát triển của tôi
- Nhưng đến cuối năm 2024, tôi đã gỡ bỏ mọi tính năng tích hợp LLM khỏi trình chỉnh sửa mã
- Tôi vẫn thỉnh thoảng dùng AI, nhưng không còn đưa nó vào quy trình làm việc chính
Trải nghiệm tương tự với Tesla FSD
- Trong giai đoạn 2019~2021, tôi thường xuyên dùng FSD khi lái xe Tesla
- Khi dùng FSD trên đường cao tốc, mức độ tập trung vào việc lái xe của tôi dần giảm đi
- Việc phụ thuộc vào FSD khiến khả năng tự lái xe của tôi bị suy yếu
- Khi quay lại lái một chiếc xe thông thường, tôi mất khá nhiều thời gian mới lấy lại được sự tập trung
Trải nghiệm dùng trình chỉnh sửa mã AI
- Càng dùng công cụ AI, tốc độ làm việc càng nhanh nhưng năng lực nền tảng của tôi lại yếu đi
- Trong các dự án phụ, khi không thể dùng công cụ AI, tôi cảm thấy rất bất tiện và mất tự tin
- Tôi thấy khó khăn ngay cả với những việc cơ bản như định nghĩa hàm hay viết mã kiểm thử
- Khi phụ thuộc vào AI, tôi dần mất tự tin trong việc tự mình đưa ra các quyết định triển khai
- Cuối cùng, tôi nhận ra rằng năng lực của mình đã yếu đi trong các công việc phức tạp
Sự mất mát của cảm giác trực giác
- Từ tiếng Đức
Fingerspitzengefühl chỉ năng lực phán đoán trực giác mà người có kinh nghiệm sở hữu
- Trong việc viết mã, đây cũng là thứ hình thành khi ta ngày càng quen với ngôn ngữ và framework
- Cảm giác này rất quan trọng trong những lựa chọn kỹ thuật chi tiết như dùng con trỏ, chọn thư viện chuẩn hay dùng
assert
- Các công cụ AI làm suy yếu cảm giác đó
- Khi xét đến chất lượng mã và khả năng bảo trì, trực giác của con người là vô cùng quan trọng
Phát triển phần mềm vẫn có thể làm được nếu không có công cụ AI
- Nỗi sợ rằng không có công cụ AI thì sẽ không làm việc được là điều bị phóng đại
- Trên thực tế, AI không hữu ích đến vậy trong các dự án quy mô lớn hoặc hệ thống legacy
- Với các dự án dùng công cụ nội bộ, framework và DSL nội bộ, LLM hầu như không giúp được gì
- Không nên giao mã liên quan đến bảo mật như JWT, RBAC cho AI
- Bảo mật là lĩnh vực mà bạn phải tự hiểu và tự chịu trách nhiệm
- Nếu để AI đảm nhiệm từ viết mã, review PR đến triển khai, các vấn đề bảo mật sẽ tăng mạnh
Thiết lập điểm chuẩn cho việc dùng AI
- AI hữu ích, nhưng tôi tránh cách dùng tích hợp trực tiếp vào trình soạn thảo
- Tôi tự nhập ngữ cảnh và chỉ nhận phần mã cần thiết rồi áp dụng thủ công
- Ví dụ: chuyển đổi test, chuyển đổi phép tính SIMD, giải mã dữ liệu nén
- Cách này khiến tôi cảm thấy có trách nhiệm hơn với mã, đồng thời cũng tiết kiệm chi phí
- Dùng AI cho mục đích học tập thì rất có ích: đặc biệt hữu dụng khi yêu cầu giải thích về mã assembly, shader, mã mạng, v.v.
- Trên blog cá nhân, tôi không dùng nội dung do AI tạo ra và vẫn ưu tiên sáng tạo của con người
Tiếp tục làm điều mình yêu thích
- Ngoài hiệu quả và năng suất, việc tiếp tục làm điều mình yêu thích cũng rất quan trọng
- Giống như cờ vua, dù AI có thể chiến thắng, con người vẫn tiếp tục tận hưởng hoạt động đó; lập trình cũng có thể được duy trì như một niềm vui
- Điều quan trọng không chỉ là làm tốt hơn, mà là tiếp tục lập trình vì bản thân bạn thật sự thích nó
Lời khuyên dành cho lập trình viên mới vào nghề
- Đừng trở thành một “junior vĩnh viễn” chỉ vì phụ thuộc vào AI
- Hãy rèn luyện năng lực tự viết mã và hiểu sâu nguyên lý vận hành của hệ thống
- Điều quan trọng là nâng cao năng lực bằng cách học cấu trúc vận hành ở tầng bên dưới
- AI chỉ là công cụ, không phải một giải pháp hoàn chỉnh tự thân
- Đôi khi cũng cần luyện tập làm việc mà không có AI
- Chỉ “vibe coding” thì không thể trở thành một lập trình viên giỏi
- Nếu bạn không thể viết code khi không có AI, thì đó không phải là viết code thật sự
Kết luận
- AI là sự đánh đổi kiến thức để lấy tốc độ
- Đôi khi sự đánh đổi này đáng giá, nhưng việc rèn luyện nền tảng cơ bản là điều bắt buộc
- Những lập trình viên giỏi luôn lặp đi lặp lại việc luyện tập các kỹ năng nền tảng
- AI vẫn còn rất xa mới có thể thay thế nghề nghiệp, và các công ty phần lớn đang tạo ra FOMO để thu hút đầu tư
- AI chỉ là công cụ, không phải vật thay thế cho tư duy
- Điều quan trọng là luôn giữ sự tò mò và tiếp tục học hỏi
16 bình luận
Cái được gọi là nền tảng cơ bản của một lập trình viên giỏi chẳng phải vẫn không thay đổi kể từ khi máy tính được phát minh ra sao?
Tôi cũng lúc chuẩn bị cho bài test coding cứ theo thói quen mở Cursor, đến mức bấm Tab còn nhiều hơn gõ phím... haha. Cuối cùng với một tâm thế nhẹ nhõm, tôi quay lại
vscode.Có lẽ ngay cả những người làm ra các công cụ AI cũng đều biết vấn đề này. Chỉ là họ đang im lặng về nó thôi
Nếu phụ thuộc vào AI một cách vô thức, có khi bạn sẽ trở nên về mặt khái niệm y hệt một người quản lý bất tài: không hiểu cả kiến trúc lẫn không tự viết nổi một dòng code, chỉ biết giao việc cho cấp dưới, không nhận ra những rủi ro tiềm ẩn trong code, và đến khi có vấn đề cũng không tìm ra cách giải quyết. Chỉ là công cụ được dùng đổi từ trí thông minh của con người sang trí tuệ nhân tạo mà thôi.
Mấy việc code tay cực kỳ lặp đi lặp lại thì đúng là không gì bằng cái này...
Tôi nhìn chung khá đồng cảm. Tôi nghĩ hiện tại vẫn có những lĩnh vực cần đến kiểu cảm giác như vậy, và tôi cho rằng sự khác biệt giữa việc nhận thức được và không nhận thức được là khá lớn. Nên dùng như một công cụ, nhưng cũng cần phải nhận thức đầy đủ về điều đó.
Trải nghiệm sử dụng trình soạn thảo mã AI, sự mất đi cảm giác trực quan, và lời khuyên dành cho lập trình viên mới là 3 nội dung khiến tôi đồng cảm rất nhiều.
Thế thì khỏi dùng cả máy tính luôn cho rồi..
Haha, hoàn toàn đồng ý.
Hahahahahahahahahaha
Bản năm 2025 của anh Kim, đừng dùng Pangsion... có lẽ vậy chăng h
Xem bài viết thì có vẻ không phải là nói đừng dùng vào việc tay chân lặp lại, mà là đừng phó mặc việc suy nghĩ cho AI.
Haha +1 luôn.
Càng ngày... lại xuất hiện những tình huống cần sự rèn luyện có chủ đích nhỉ... :)
???: "cứ tiếp tục dùng putty và vi"
Ý kiến trên Hacker News
Tin rằng có hai loại kỹ năng: kỹ năng độc lập và kỹ năng nền tảng
Giờ không còn dùng các công cụ AI ở cấp độ trình soạn thảo như Cursor, mà giải quyết vấn đề bằng hoàn thành văn bản nội tuyến và chat
Vẫn viết phần lớn mã bằng tay, nhưng dùng LLM cho tìm kiếm ngữ nghĩa để làm phong phú quá trình nghiên cứu
Đã tắt tính năng hoàn thành mã, vì việc đọc các gợi ý tạo ra gánh nặng tinh thần lớn
Sách của Nicholas Carr giải thích về cơ chế khiến kỹ năng bị mai một khi càng phụ thuộc vào tự động hóa
Tương tự như các bài kiểu "Vì sao mọi lập trình viên nên học Assembly"
Chỉ dùng AI hoàn thành dòng đi kèm với Rider
Công cụ AI làm cuộc sống trở nên tiện lợi hơn
Việc mất kỹ năng diễn ra theo cả hai chiều
Dùng nó thay cho tìm kiếm Google khi cần tìm một vấn đề cụ thể