6 điểm bởi baeba 5 giờ trước | Chưa có bình luận nào. | Chia sẻ qua WhatsApp

Tóm tắt tổng quan

  • Luận điểm cốt lõi

    • Khi AI đã đạt tới mức có thể trực tiếp viết, sửa và kiểm thử mã, vai trò của lập trình viên đang dịch chuyển từ trọng tâm là viết mã đơn thuần sang định nghĩa vấn đề, thiết kế công việc, kiểm chứng, quản lý ngữ cảnh và hỗ trợ sản phẩm hóa.
  • Nguyên nhân mang tính cấu trúc

    • AI đã làm tăng mạnh tốc độ tạo ra mã, nhưng mã không tự động trở thành một sản phẩm tốt ngay lập tức.
    • Tầm quan trọng của các lĩnh vực ngoài việc viết mã như yêu cầu, tài liệu, kiểm thử, cấu trúc hóa, đánh giá UX và khả năng bảo trì ngày càng lớn hơn.
  • Các ví dụ chính

    • Trải nghiệm khiến AI thực hiện cả kiểm thử trình duyệt thông qua Playwright.
    • Trải nghiệm đặc tả các công việc lặp lại thành command, skill và workflow.
    • Trường hợp một prototype frontend làm bằng AI nhìn bề ngoài rất tốt nhưng cấu trúc bên trong lại mong manh.
  • Hướng giải quyết

    • Không nên chỉ giao mỗi phần mã cho AI, mà phải cùng thiết kế cả quy trình và tiêu chuẩn của toàn bộ vòng đời phát triển.
    • Lập trình viên cần rà soát đầu ra của AI, lưu lại ngữ cảnh và tổ chức lại cấu trúc để có thể dẫn tới một sản phẩm bền vững.

Mở đầu

Sự chuyển dịch trong thời đại AI coding

  • Bài viết bắt đầu từ câu hỏi: “Trong thời đại con người không còn trực tiếp viết mã thì lập trình viên phải làm gì?”
  • Tác giả trước đây cho rằng vì AI gây ảo giác và mắc lỗi nên quyết định cuối cùng vẫn phải do con người đưa ra.
  • Tuy nhiên, với sự cải thiện hiệu năng của các mô hình AI gần đây, tác giả đánh giá rằng AI đã đạt tới mức có thể nắm bắt issue, khám phá file, sửa mã và thậm chí đưa kiểm thử qua được.
  • Sự thay đổi này khiến lập trình viên không còn chỉ dùng AI như một công cụ hỗ trợ, mà bắt đầu nghĩ tới hướng để AI thực hiện chính quy trình phát triển.

Vấn đề cốt lõi

  • Việc AI đã viết mã tốt hơn không có nghĩa là vai trò của lập trình viên biến mất.
  • Ngược lại, càng tự động hóa việc viết mã thì những yếu tố khác của phát triển phần mềm càng lộ rõ hơn.
  • Việc sắp xếp yêu cầu, ghi lại quyết định, thiết kế kiểm thử, quản lý cấu trúc mã và rà soát trải nghiệm sản phẩm nổi lên như các nhiệm vụ cốt lõi của lập trình viên.

Nội dung chính

1. AI đã chuyển từ công cụ viết mã sang chủ thể thực hiện công việc

  • Tác giả cho rằng AI đã vượt khỏi mức chỉ tạo ra các đoạn mã đơn lẻ và nay có thể xử lý luồng công việc phát triển thực tế.
  • Trước đây con người phải liên tục giám sát và chỉnh sửa đầu ra của AI, nhưng giờ đây đã có thể giao việc cho AI rồi kiểm tra kết quả.
  • Sự cải thiện hiệu năng trên các benchmark như SWE Bench được nhắc đến như chỉ dấu cho thay đổi này.
  • Thay đổi cốt lõi không còn là “AI có thể viết mã không?”, mà là “Có thể giao cho AI phạm vi công việc tới đâu?”.

2. Khi AI thất bại, vấn đề không chỉ là ‘thiếu năng lực’

  • AI vẫn không phải lúc nào cũng thành công.
  • Có những trường hợp lỗi lặp lại, hoặc AI nói đã sửa nhưng trên màn hình thực tế vấn đề vẫn còn.
  • Ban đầu tác giả xử lý bằng cách con người sao chép lỗi rồi chuyển cho AI.
  • Sau đó, bằng cách dùng Playwright để AI trực tiếp mở trình duyệt và kiểm thử, tác giả nhận ra cả quy trình xác minh vốn do con người làm cũng có thể giao cho AI.
  • Trường hợp này cho thấy một phần trong những gì từng bị xem là giới hạn của AI thực ra lại là giới hạn phát sinh vì người dùng chưa chỉ dẫn cho nó.

3. Tư duy AI Native là ủy quyền toàn bộ quy trình

  • Tác giả rời khỏi góc nhìn dùng AI như công cụ hỗ trợ đơn thuần và chuyển sang hướng để AI thực hiện toàn bộ quy trình mà mình từng làm.
  • Tác giả cố gắng biến các công việc lặp lại thành command, skill và workflow, đồng thời đặc tả hóa tri thức ngầm của bản thân.
  • Ví dụ là tạo ra luồng lệnh như /plan, /prd, /debug, /refactor, /verify, /retrospect.
  • Điều quan trọng không phải là chỉ bảo AI “hãy viết mã”, mà là quy tắc hóa cả việc khi nào phải hỏi, khi nào dừng và khi nào kiểm chứng.
  • Qua đó, lập trình viên chuyển cách làm việc và tiêu chuẩn phán đoán của mình thành một cấu trúc để AI có thể tái sử dụng.

4. Bí quyết cá nhân nhanh chóng bị hấp thụ thành tính năng công cụ

  • Những command và workflow mà tác giả tự tạo ra về sau dần xuất hiện dưới dạng các tính năng và khái niệm chính thức như skill, memory, hooks và orchestration.
  • Phương pháp tận dụng AI do cá nhân phát hiện ra, càng hiệu quả thì càng nhanh bị hấp thụ thành tính năng sản phẩm hoặc phương pháp luận chung.
  • Vì vậy, chỉ dựa vào một vài prompt hay mẹo dùng AI là khó tạo ra khác biệt dài hạn.
  • Điều quan trọng không nằm ở bản thân phương pháp luận, mà ở chỗ đã áp dụng nó vào vấn đề thực tế tới mức nào và đã trải nghiệm những giới hạn gì.

5. AI làm tăng quy mô vấn đề mà lập trình viên có thể xử lý

  • AI khiến tác giả có thể thực sự thử nghiệm những ý tưởng lớn mà trước đây không thể thử vì chi phí và thời gian.
  • Chẳng hạn, tác giả nhanh chóng tạo thử các công cụ như công cụ trải mã và tài liệu như một canvas, MD viewer, công cụ phân tích mã và công cụ hỗ trợ phát triển.
  • Điểm cốt lõi không phải là AI lập tức tạo ra thành phẩm hoàn chỉnh, mà là nó hạ thấp rào cản để bắt đầu.
  • Tư duy của lập trình viên chuyển từ “Liệu có thể làm cái này không?” sang “Trước mắt có thể làm tới đâu?”.

6. Khi xử lý vấn đề lớn hơn, các công việc phát triển ngoài việc viết mã lộ rõ

  • Khi lượng mã do AI tạo ra tăng lên, lập trình viên khó có thể tự đọc hết mọi mã và lưu toàn bộ ngữ cảnh trong đầu.
  • Khi tự viết mã, ngữ cảnh, phán đoán và hiểu biết về cấu trúc được tích lũy một cách tự nhiên, nhưng khi giao việc viết mã cho AI thì những thứ đó không tự động được lưu lại.
  • Vì vậy, tài liệu, kiểm thử, issue, báo cáo công việc và ghi lại lý do thay đổi trở nên quan trọng.
  • Đây không phải là công việc quản trị đơn thuần, mà là cơ chế cốt lõi để duy trì ngữ cảnh phát triển trong thời đại AI.
  • Bài viết nhấn mạnh rằng năng lực bảo tồn ngữ cảnh và phán đoán trở nên quan trọng không kém năng lực viết mã.

7. Số lượng commit và kiểm thử tăng không đồng nghĩa sản phẩm được cải thiện

  • Khi tận dụng AI, số lượng commit, file, kiểm thử và tài liệu tăng rất nhanh.
  • Nhưng việc các con số tăng lên không có nghĩa là sản phẩm thực sự tốt hơn.
  • Có thể chức năng được thêm vào nhưng UX lại gượng gạo, hoặc kiểm thử thì qua nhưng luồng màn hình thực tế vẫn bất ổn.
  • Ban đầu tác giả định xem đây chỉ là vấn đề chất lượng mã và cấu trúc.
  • Tuy nhiên, tác giả trải nghiệm rằng dù cải thiện cấu trúc mã thì trải nghiệm sản phẩm cũng không tự động tốt lên.
  • Cuối cùng, việc tạo ra mã và việc cải thiện sản phẩm là hai vấn đề khác nhau, và cần có sự đánh giá riêng về tính sản phẩm.

8. Frontend là lĩnh vực mà AI đặc biệt dễ chao đảo

  • AI có thể nhanh chóng tạo ra UI ban đầu trông khá thuyết phục cho dashboard, landing page hay màn hình quản trị.
  • Nhưng frontend ở cấp độ sản phẩm thực tế đòi hỏi các tiêu chuẩn phức tạp như design system, state management, accessibility, thao tác bàn phím, trạng thái ngoại lệ và luồng người dùng.
  • Nhiều yêu cầu của frontend được diễn đạt bằng ngôn ngữ mơ hồ như “tự nhiên hơn”, “bớt gượng hơn”, “có cảm giác được chọn”.
  • Trong quá trình biến các yêu cầu mơ hồ đó thành mã, đầu ra của AI rất dễ phân tán.
  • Vì vậy, để dùng AI tốt trong frontend, cần có tiêu chuẩn và khả năng phán đoán để cố định những phần đã làm tốt và chỉ sửa lại những phần còn thiếu.

9. Kết quả tốt không xuất hiện trong một lần mà được tạo ra qua quá trình hội tụ

  • Tác giả thay đổi nhận thức sau khi nhìn thấy một prototype hoàn thiện cao do một người làm kế hoạch tạo bằng AI.
  • Kết quả đó không được tạo ra từ một prompt đặc biệt duy nhất, mà là thành quả của việc sửa đi sửa lại lặp đi lặp lại “cho tới khi được”.
  • Trường hợp này cho thấy cốt lõi của việc tận dụng AI không phải là tạo tự động đơn thuần, mà là quá trình hội tụ bằng cách liên tục nhìn ra điểm thiếu và yêu cầu lại.
  • Người tạo ra kết quả tốt là người có thể đánh giá đầu ra của AI đang thiếu điều gì và kiên trì điều chỉnh cho tới khi đạt mức mong muốn.
  • Ngay cả trong thời đại AI, tiêu chuẩn, cảm quan và sự kiểm tra liên tục của con người vẫn tạo nên khác biệt trong kết quả.

10. Lập trình viên đảm nhiệm vai trò đưa kết quả tiềm năng thành sản phẩm

  • Kết quả do AI tạo ra có thể trông tốt ở bề ngoài nhưng cấu trúc mã bên trong lại yếu.
  • Có thể phát sinh các vấn đề như state management bất ổn, trách nhiệm component mơ hồ hoặc kiểm thử không bảo đảm được luồng thực tế.
  • Vai trò của lập trình viên không phải là mặc định đánh giá thấp hay loại bỏ những kết quả như vậy.
  • Đồng thời cũng không thể cứ thế đem sản phẩm hóa nguyên trạng.
  • Lập trình viên cần sắp xếp lại cấu trúc, đánh dấu rủi ro, tạo các đơn vị có thể kiểm thử và lưu lại ngữ cảnh để những kết quả tiềm năng đó có thể đi xa hơn.
  • Nói cách khác, vai trò của lập trình viên được mở rộng từ “người tự làm một mình tới cuối cùng” thành “người đưa kết quả do AI và con người cùng tạo ra tới một sản phẩm bền vững”.

11. Vai trò phát triển trong thời đại AI không hội tụ về một hình mẫu duy nhất

  • Khi rào cản của việc viết mã hạ xuống, kiểu người tham gia vào phát triển cũng trở nên đa dạng hơn.
  • Người làm kế hoạch, designer, PM và cả người phụ trách nghiệp vụ cũng có thể tạo prototype hoạt động hoặc công cụ nội bộ thông qua AI.
  • Điều đó không có nghĩa là nhu cầu về lập trình viên biến mất, mà là các vai trò liên quan đến phát triển sẽ được phân hóa chi tiết hơn.
  • Tác giả ví điều này với hệ sinh thái YouTube.
  • Cũng như YouTube không xóa sổ các chuyên gia video mà làm đa dạng hóa vai trò như người xuất hiện trước ống kính, editor, planner, người vận hành kênh và người xây nền tảng, AI cũng có thể làm đa dạng hóa các vai trò phát triển.
  • Trong tương lai, rất có thể sẽ cùng tồn tại những người xây hệ thống sâu, người mài giũa prototype thành sản phẩm, người tạo ra lớp để AI có thể làm việc tốt và người trực tiếp giải quyết vấn đề.

Kết luận

Lập trình viên phải thiết kế phần phát triển sau việc viết mã

  • Kết luận của bài viết không phải là một thế lưỡng phân kiểu “có nên tiếp tục viết mã hay nên buông bỏ nó”.

  • Khi AI đã có thể thực hiện việc viết mã, lập trình viên cần học bằng trải nghiệm thực tế xem nên giao gì cho AI và nên tự mình phán đoán điều gì.

  • Đặc biệt, những năng lực sau trở nên quan trọng hơn.

    • Năng lực đặt vấn đề ở quy mô lớn hơn
    • Năng lực biến các quy trình lặp lại thành skill và workflow
    • Năng lực cấu trúc hóa yêu cầu, tài liệu, kiểm thử và issue
    • Năng lực rà soát đầu ra của AI và tái chỉ dẫn các phần còn thiếu
    • Năng lực gọt giũa các kết quả thô thành sản phẩm bền vững
    • Năng lực kết nối AI với cả công cụ và luồng công việc ngoài mã

Thông điệp cốt lõi

  • AI không hoàn hảo như kỳ vọng của lập trình viên, nhưng nó có thể làm được nhiều việc hơn rất nhiều so với tưởng tượng.
  • Trước khi kết luận rằng AI không làm được, cần thử nghiệm thực tế xem có thể giao cho nó tới đâu.
  • Ngược lại, chỉ vì AI giúp làm dễ hơn cũng không nên tin tưởng nguyên trạng vào kết quả mà nó tạo ra.
  • Lập trình viên cần đảm nhiệm vai trò đánh giá, hội tụ, bảo toàn ngữ cảnh và dẫn dắt kết quả do AI tạo ra tới sản phẩm.
  • Cuối cùng, lập trình viên trong thời đại AI đang tiến gần hơn tới hình ảnh người thiết kế vấn đề, quy trình, tiêu chuẩn và ngữ cảnh để các đầu ra do AI và con người tạo ra có thể dẫn tới kết quả tốt hơn, hơn là người trực tiếp viết thật nhiều mã.

Chưa có bình luận nào.

Chưa có bình luận nào.