Bài luận của Carson Gross, giáo sư khoa Kỹ thuật Máy tính tại Montana State University đồng thời là người tạo ra htmx, trả lời cho câu hỏi "Có nên theo đuổi lập trình như một sự nghiệp ngay cả trong thời đại AI?" bằng "Yes, and…(Có, và…)", như sau.
"Yes" — Có
- Bản chất của lập trình là giải quyết vấn đề bằng máy tính + kiểm soát độ phức tạp. Thật khó hình dung một tương lai nơi năng lực này trở nên kém giá trị hơn
- Nhưng AI là một rủi ro với người mới. Nếu không tự tay viết mã, bạn cũng sẽ không thể đọc mã
- Nếu không đọc được mã, bạn sẽ rơi vào "cái bẫy của người học việc phù thủy" — tạo ra những hệ thống mà bản thân không hiểu cũng không kiểm soát được
Từ coding→prompting không giống với từ assembly→ngôn ngữ bậc cao
- Trình biên dịch là deterministic, nhưng LLM thì không
- Ngôn ngữ bậc cao đã loại bỏ accidental complexity, nhưng mã do LLM tạo ra lại thường thêm vào chính loại độ phức tạp ngẫu sinh này
AI không phải là máy sinh mã mà là một trợ giảng (TA) tuyệt vời
- Nếu dùng như một đối tác hỗ trợ hiểu khái niệm và kỹ thuật, nó rất hiệu quả cho sự phát triển trí tuệ
- Đặc biệt hữu ích để vượt qua các rào cản khi bị mắc kẹt vì accidental complexity
- Chia sẻ tệp AGENTS.md để thiết lập cho AI đóng vai trò trợ giảng thay vì máy sinh mã
"and…" — Và
Kỹ năng coding thuần túy có thể sẽ bớt quan trọng hơn
- Thay vào đó, những kỹ năng sẽ quan trọng hơn gồm:
- Năng lực giao tiếp — khả năng viết và giao tiếp rõ ràng, cả với LLM lẫn với con người. Đọc sách và viết bài luận sẽ giúp ích
- Hiểu biết kinh doanh — cả góc nhìn từ phía kinh doanh rằng "không cần lập trình viên" lẫn góc nhìn từ phía lập trình viên rằng "không cần người làm kinh doanh" đều là thiển cận. AI mở ra cơ hội để hiểu vấn đề thực tế sâu sắc hơn
- Thiết kế kiến trúc hệ thống — năng lực kiểm soát độ phức tạp của các hệ thống quy mô lớn. Tuy nhiên, phần lớn kiến trúc sư tệ đều thiếu kinh nghiệm coding
Cách dùng LLM của senior vs junior
- Senior: dùng cho phân tích mã, sắp xếp suy nghĩ, tạo các đoạn mã nhỏ, sinh những phần mã không thích (regex, CSS), mã phục vụ khám phá, gợi ý test, v.v. Không yêu cầu nó tạo ra giải pháp hoàn chỉnh. Tuyệt đối không giao thiết kế API cho nó
- Junior: phải chống lại sự cám dỗ của vibe coding. Về dài hạn, ưu tiên sự hiểu biết hơn tốc độ mới là cách chiến thắng. Chẳng bao lâu nữa các công ty cũng sẽ nhận ra vấn đề bùng nổ độ phức tạp của vibe coding
Lời khuyên tìm việc — chiến lược 4F
- Các trang tuyển dụng trực tuyến gần như chẳng khác gì xổ số
- 4F: Family(gia đình), Friends(bạn bè), Family of Friends(gia đình của bạn bè)
- Không nhất thiết phải vào các công ty công nghệ lớn. Với công ty từ 100 người trở lên thì đa phần đều có tổ chức phát triển phần mềm
- Trường hợp trụ sở chính Costco: vào nhờ quan hệ gia đình, bắt đầu ở vị trí analyst, rồi nếu cộng thêm năng lực lập trình thì sẽ trở nên rất có giá trị
Kết luận
Nền tảng của lập trình, đặc biệt là năng lực viết mã tốt và kiểm soát độ phức tạp, sẽ mãi mãi quan trọng. Sự suy giảm của thị trường việc làm chỉ là tạm thời. Và gửi tới các công ty: hãy để các junior được trực tiếp viết mã.
30 bình luận
Nếu không hiểu kiến trúc thì vibe coding cũng vô nghĩa..
Ai cũng có thể làm mì pasta rưới ketchup
Nhưng pasta kiểu Ý thì không phải ai cũng làm được
Nếu pasta kiểu Ý giá $20 còn pasta phết ketchup giá $2 thì tôi sẽ chọn món sau, nhưng...
Người dùng không trả tiền cho món trị giá 2 đô la.
Có vẻ như bạn đã không hiểu được ý chính của câu chuyện.
Vâng, tôi xin thú nhận là mình đã bình luận mà còn chưa đọc cả bài viết ;;
Ở khách sạn hay nhà hàng chuyên nghiệp thì pasta trộn ketchup về cơ bản là thứ khó có thể tồn tại.
Nhưng nếu chỉ là làm tạm ở nhà cho qua bữa thì pasta trộn ketchup vẫn có ý nghĩa của nó...
Vào những ngày đặc biệt, tôi muốn ăn pasta Ý do đầu bếp làm.
Vấn đề không phải là pasta; khi rượu vang hạng thấp chỉ có giá 2 USD thì rượu vang hạng cao vẫn có giá lên tới hàng chục triệu won, và nhu cầu vẫn luôn ổn định.
Nếu là ngày đặc biệt thì tôi cũng sẽ ăn pasta Ý, nhưng nếu là ngày thường(?) thì...
Một câu nhận xét rất hay. Chỉ trong 3 dòng là đã tóm tắt gọn gàng.
Chúng ta là kỹ sư. Kỹ sư là người hiểu và chịu trách nhiệm với những gì mình xử lý và đề xuất. Việc cho rằng điều đó là không cần thiết chỉ đơn giản là vì bản thân bạn đang làm việc trong một môi trường như vậy. AI không thay đổi bản chất đó, mà trái lại còn phơi bày nó đến mức cực đoan hơn. Nếu việc không hiểu PR mà vẫn hoàn toàn không thành vấn đề, thì đó không còn là PR nữa.
Ở công ty, nếu cấp trên không hiểu công việc của cấp dưới thì có thể giao việc được không?
Dù không hiểu mà vẫn làm được? Liệu có thể gánh vác được mình đang làm gì không
Sản phẩm do con người tạo ra từ trước đến nay nhìn chung luôn coi trọng "ý đồ của con người". Không phải bản thân việc hiện thực hóa
Cũng giống như không phải vì có máy tính mà chúng ta không học toán...
Thay vì hy vọng lĩnh vực của tôi không thể bị thay thế, tôi cho rằng thực tế hơn là mong tất cả chúng ta đều bị thay thế càng nhanh càng tốt trong phạm vi có thể. Có lẽ ai cũng đang mơ hồ cảm nhận được điều đó.
Cũng như vẫn có thể viết code dù không biết assembly,
có vẻ như rồi đây vẫn sẽ có thể viết code dù không biết Rust.
Dù sao thì ngay cả khi con người code, mã nguồn cũng khác nhau mỗi lần viết.
Mỗi người cũng khác nhau nữa.
Nhưng tất cả đều là lập trình viên Rust.
Tôi nghĩ vấn đề về độ phức tạp của AI rốt cuộc rồi cũng sẽ do AI giải quyết. Chúng ta phải từ bỏ ảo tưởng và lòng tự tôn rằng chỉ con người mới có thể làm được.
Với cấu trúc LLM như hiện nay thì điều đó là không thể. Cần một mô hình hoàn toàn khác.
Mong mọi người đều có thể vượt qua giai đoạn chuyển tiếp này thật tốt.
Sự phát triển của AI đang thực sự cắt giảm nhân sự ngay cả trong các dự án. Khi giảm đi một người, có vẻ như nếu người quản lý không thể sử dụng tốt AI cùng với công việc kinh doanh thì cũng sẽ trở thành đối tượng bị cắt giảm.
Thay vì cứ khăng khăng cắt giảm bằng được, tốt hơn là điều chuyển số nhân lực đó sang hướng khác để giao những công việc mới hoặc những việc trước giờ chưa làm được. Cắt giảm đột ngột như vậy thì quá thiển cận.
Hiện tại, LLM/Agentic Coding vẫn là một công cụ xuất sắc chứ chưa phải là một kỹ sư xuất sắc. Cũng như một kế hoạch tốt là yếu tố quan trọng trong Agentic Coding, rốt cuộc người dùng vẫn phải có năng lực hiểu và đánh giá mã nguồn. Ví dụ,
fastrender,CCCđã cho thấy tiềm năng của Agentic Coding, nhưng đồng thời cũng bộc lộ những giới hạn rõ ràng.Tôi muốn hỏi theo một cách khác.... "Liệu chúng ta có khuyên con mình theo nghề này không?"
Xung quanh tôi, trước đây rất nhiều người coi việc cho con học ngành khoa học máy tính là xu hướng chủ đạo. Giờ thì có vẻ đã thay đổi khá nhiều.
Có lẽ với mọi người sau thời kỳ vibe coding thì việc học phát triển phần mềm sẽ không còn dễ nữa. Việc học trở nên quá kém hiệu quả.... và cũng quá dễ để chỉ thỏa mãn với kiểu bấm một cái là xong.
Vibe coding chỉ đơn thuần là tạo ra thành phẩm, và mình nghĩ sự khác biệt giữa việc có hay không có hiểu biết về thành quả triển khai đó sẽ là rất lớn. Mình cũng cho rằng sự hiểu biết đó đến từ việc “học phát triển” như bạn đã nói.
Ngược lại, nhờ sự phát triển của AI mà chi phí để học một điều gì đó đã giảm đi rất nhiều, nên có lẽ đây là thời điểm tốt để học được nhiều thứ hơn.
Có thể tạo ra mã đang chạy được bằng vibe coding, nhưng cuối cùng con người vẫn là người phải thẩm định nó, và chỉ với vibe coding thì không dễ tạo ra mã có khả năng bảo trì tốt và tính mở rộng cao.
Và rốt cuộc còn có cả những kết quả nghiên cứu cho thấy vì con người vẫn phải kiểm tra lại nên tốn thêm thời gian, khiến năng suất rốt cuộc cũng chỉ vậy mà thôi.
Những nỗ lực như vậy của mỗi cá nhân cũng quan trọng, nhưng cần có sự hỗ trợ cho hệ thống xã hội thông qua thảo luận giữa các thành viên ở cấp độ quốc gia.
Tôi cũng hoàn toàn đồng ý với nội dung này. Tôi thường nói điều này với các đàn em, nhưng nhiều lúc cũng băn khoăn không biết họ có cảm thấy đó chỉ là những lời nói kiểu người già dạy đời hay không.
Nội dung này quá đồng cảm.