Sự thấu hiểu là nút thắt cổ chai mới
(geoffreylitt.com)- Trong bối cảnh mã do agent viết ra liên tục chất đống quanh con người, yếu tố giới hạn tốc độ phát triển đang dịch chuyển từ năng lực tạo mã sang tốc độ thấu hiểu của con người: khả năng theo kịp hệ thống và hình dung thay đổi tiếp theo
- Mục đích của việc hiểu mã không chỉ dừng ở xác minh để phê duyệt hay bác bỏ kết quả, mà còn là đề xuất ý tưởng tiếp theo và tham gia vào quá trình sáng tạo trong nhiều vòng làm việc liên tiếp với agent
- Nếu đọc trước tài liệu giải thích mã gồm kiến thức nền/ mục tiêu thay đổi/ sơ đồ tương tác/ diff dạng diễn giải thay vì diff mã thô, ta có thể nắm bắt cấu trúc và ý đồ của thay đổi nhanh hơn
- Các câu đố trong tài liệu giải thích và microworld cho phép trực tiếp thao tác quá trình thực thi không để agent phán đoán thay, mà khiến con người trải nghiệm sự thay đổi trạng thái và cơ chế bên trong của hệ thống
- Nếu không chỉ dùng AI như phương tiện tự động hóa để loại con người khỏi vòng lặp, mà tận dụng nó để tạo công cụ và mô phỏng phục vụ sự thấu hiểu, con người và đội nhóm có thể tham gia sâu hơn vào vòng lặp
Con người không theo kịp tốc độ tạo mã
- Giống như hình ảnh đống mã do agent viết cứ cao dần quanh một người, lượng mã được tạo ra tăng lên, nhưng tốc độ con người hiểu nó không tăng theo cùng tỷ lệ
- Chỉ đọc từng dòng của mọi diff mã thì khó theo kịp tốc độ làm việc của agent
- Ngoài diff mã thô, có nhiều cách khác nhau để hiểu mã
- Tài liệu giải thích mã dạy về hệ thống và các thay đổi
- Câu đố kiểm tra xem có thực sự hiểu hay không
- Microworld để trực tiếp thao tác và học cơ chế bên trong
- Không gian chung giúp cả đội hình thành cùng một mô hình tinh thần
Thấu hiểu không phải để xác minh, mà để tham gia
- Câu trả lời thường gặp cho câu hỏi vì sao con người phải hiểu mã là để xác minh công việc của agent
- Kiểm tra có đúng đặc tả hay không
- Đánh giá cấu trúc có phù hợp hay không
- Cuối cùng quyết định phê duyệt/bác bỏ
- Trong phần trình bày, điều này được diễn tả như một phán đoán nhị phân kiểu giơ ngón cái lên hoặc hạ xuống
- Nếu xem xác minh là vai trò duy nhất của con người, sự thấu hiểu bị thu hẹp thành quá trình đánh giá đạt hay không đạt đối với kết quả
- Nhưng agent cũng đang liên tục cải thiện năng lực tự xác minh: tự chạy kết quả mình tạo ra, kiểm tra và tìm lỗi
- Khi agent làm việc xác minh ngày càng tốt hơn, câu hỏi đặt ra là con người còn ở đâu
- Phương án thay thế là tham gia thông qua sự thấu hiểu
- Con người cần biết agent đang làm gì để vẫn là thành viên chủ động của quá trình sáng tạo
- Khi hiểu hệ thống, con người không chỉ dừng ở việc đánh giá kết quả hiện tại mà còn có thể nghĩ xem nên thay đổi gì ở bước tiếp theo
Dự án không phải một vòng lặp, mà là vô số vòng lặp
- Dự án thực tế không phải là một vòng lặp đơn nơi ta ra lệnh cho agent một lần rồi nhận kết quả
- Vô số vòng lặp lặp lại gồm đặt mục tiêu/triển khai/kiểm tra/sửa đổi/mở rộng được nối với nhau
- Ở mỗi lần lặp, mức độ hiểu hệ thống của con người quyết định chất lượng và phạm vi của ý tưởng tiếp theo
- Cần có đủ khái niệm và cấu trúc trong đầu để xử lý trôi chảy các câu hỏi như
- Nên thêm hoặc loại bỏ gì
- Cần thay đổi cấu trúc nào
- Từ triển khai hiện tại xuất hiện khả năng mới nào
- Nếu thiếu hiểu biết, ta có thể phản ứng với kết quả agent tạo ra rằng “trông có vẻ đúng đại khái”, nhưng sẽ khó dẫn dắt dự án nên đi về đâu
Nợ nhận thức tích tụ khi trì hoãn sự thấu hiểu
- Nếu cứ tiếp tục chấp nhận kết quả của agent mà không hiểu hệ thống, ngắn hạn có thể tiến rất nhanh
- Tuy nhiên, giống như nợ kỹ thuật làm tăng chi phí thay đổi về sau, công việc bỏ qua sự thấu hiểu sẽ để lại nợ nhận thức (cognitive debt)
- Khi nợ nhận thức tích tụ, người tham gia dự án sẽ đánh mất mạch tổng thể
- Khó nắm được vì sao mã có cấu trúc như hiện tại
- Khó phán đoán nên gắn yêu cầu mới vào đâu
- Khó thảo luận tính hợp lý của thay đổi tiếp theo do agent đề xuất
- Vấn đề trong kỷ nguyên AI không phải là mã không được tạo ra, mà là con người không có đủ khái niệm về hệ thống đã được tạo ra
Áp dụng phương pháp giáo dục vào việc hiểu mã
- Trong môi trường làm việc với AI thay đổi nhanh, bài toán xây dựng sự thấu hiểu của con người giống với bài toán giáo dục đã xử lý từ lâu
- Thay vì chỉ truyền đạt sự kiện mới, cần cung cấp cùng lúc kiến thức nền/trực giác/luyện tập/phản hồi thì sự hiểu biết thực sự mới hình thành
- Việc hiểu mã cũng có thể áp dụng các phương pháp đã phát triển trong giáo dục
- Cung cấp bối cảnh và trực giác trước chi tiết triển khai
- Sau khi đọc, yêu cầu nhớ lại và trả lời
- Cung cấp môi trường để trực tiếp thao tác các quy tắc trừu tượng
- Giúp mọi người chia sẻ cùng khái niệm và từ vựng
/explain-diff dạy về các thay đổi
- /explain-diff là một kỹ năng biến những thay đổi do agent thực hiện thành tài liệu giải thích có cấu trúc
- Có thể xuất ra dưới dạng trang HTML/Markdown/Notion; tài liệu Notion có thể dùng như sản phẩm cộng tác để thành viên trong đội bình luận và thảo luận cùng nhau
- Nó không tạo ra một danh sách thay đổi mã đơn thuần, mà tạo tài liệu giải thích được thiết kế để con người học các thay đổi
- Trong ví dụ thay đổi phối cảnh của màn hình game, nó không cho xem mã ngay mà tiếp cận theo thứ tự sau
- Trước hết giải thích cách render của game engine hiện có
- Trình bày mục tiêu thay đổi: “làm khu vườn trông có chiều sâu bằng kỹ thuật vẽ 2D”
- Giải thích phép chiếu đẳng cự là gì để giúp hiểu nguyên lý thị giác của thay đổi
- Sau đó mới chuyển sang mã triển khai thực tế
Dạy kiến thức nền trước
- Một lời giải thích tốt bắt đầu không phải từ “đã thay đổi gì”, mà từ “trước khi thay đổi đã có gì”
- Nếu không biết hệ tọa độ và cấu trúc render của game engine hiện có, chỉ đọc mã phối cảnh mới cũng khó hiểu lý do của thay đổi
- Tài liệu giải thích trước hết bổ sung cấu trúc của hệ thống hiện có để người không có cùng bối cảnh với agent vẫn có thể tham gia cuộc đối thoại
- Đây không chỉ là tóm tắt, mà là quá trình đưa con người trở lại ngữ cảnh hiện tại của dự án
Tạo trực giác trước chi tiết triển khai
- Nếu giải thích bản chất của thay đổi bằng một câu trước khi đi vào mã, ta có thể biết chi tiết triển khai đang hướng đến mục tiêu nào
- Trong ví dụ làm khu vườn trông có chiều sâu, thay vì giải thích công thức phép chiếu đẳng cự trước, tài liệu truyền đạt mục tiêu thị giác là làm hình ảnh phẳng trông như 3D
- Sau khi hiểu bối cảnh và mục tiêu, khi nhìn vào các đoạn mã, ta dễ liên kết vai trò của từng phép tính và phép biến đổi trong kết quả tổng thể
- Mục tiêu là biến con người từ độc giả thụ động của mã chi tiết thành người tham gia ngang hàng hiểu được ý đồ thay đổi
Trải nghiệm biến đổi tọa độ bằng sơ đồ tương tác
- Thay vì chỉ cho xem hình tĩnh, tài liệu dùng sơ đồ tương tác cho phép kéo trực tiếp tảng đá trong khu vườn
- Khi di chuyển tảng đá, vị trí trên màn hình và tọa độ bên trong cùng thay đổi, giúp kiểm tra phép biến đổi tọa độ của phép chiếu đẳng cự
- So với chỉ đọc công thức hoặc mã, ta có thể trực tiếp thao tác quan hệ giữa đầu vào và đầu ra để hình thành trực giác
- Có thể nhúng HTML tương tác vào trong trang Notion để biến chính tài liệu giải thích mã thành một môi trường thực thi nhỏ
- AI không chỉ viết phần giải thích, mà còn có thể tạo cả công cụ trực quan hóa và thao tác cần thiết cho việc thấu hiểu
Biến diff mã thô thành diff mã dạng diễn giải
- Diff mã thông thường liệt kê các tệp đã thay đổi theo thứ tự tên tệp
- Không giải thích quan hệ giữa các tệp
- Không cho biết mục đích của thay đổi
- Không hướng dẫn nên đọc theo thứ tự nào
- Diff mã dạng diễn giải (literate diff) tái cấu trúc các thay đổi như một mạch văn
- Trình bày mục đích của thay đổi trước
- Giải thích tệp và hàm theo thứ tự phù hợp để hiểu
- Chỉ chèn những đoạn mã cần thiết giữa các phần giải thích
- Cho thấy cả bối cảnh xung quanh và mối quan hệ với lựa chọn triển khai
- Nếu diff mã thô giống như chất đống nguyên liệu, thì diff mã dạng diễn giải gần với việc biên tập quá trình thay đổi thành một câu chuyện
- Đọc phần giải thích trước rồi mới xem diff mã thô giúp biết vì sao từng đoạn mã tồn tại, nhờ đó tăng tốc độ review
Đọc tài liệu do AI tạo ra trên giấy
- Tài liệu giải thích hoàn chỉnh có thể được dùng như một gói giải thích mã
- Diff mã thô vẫn được đọc tiếp, nhưng luôn đọc tài liệu giải thích trước
- Khi cần tập trung, cũng có thể in tài liệu ra và đọc trên giấy ở quán cà phê
- Nảy sinh nghịch lý: hoạt động tương tác là lập trình với AI lại biến thành báo cáo giấy tĩnh cho phép tập trung sâu
- Điều cốt lõi không phải là dùng giao diện mới nhất, mà là chuyển đổi thông tin sang hình thức dễ hiểu nhất đối với con người
Khác biệt giữa cảm giác đã đọc và hiểu thật sự
- Dù tài liệu giải thích được cấu trúc tốt, hành vi đọc tự thân không bảo đảm sự thấu hiểu
- Con người dễ ảo tưởng rằng mình đã ghi nhớ hoặc hiểu nội dung chỉ vì mắt đã lướt qua câu chữ
- Ý tưởng được lấy từ “books don't work” của Andy Matuschak và Quantum Country của Andy Matuschak/Michael Nielsen
- Quantum Country chèn câu đố lặp lại ngắt quãng vào trong bài viết để buộc độc giả tự nhớ lại nội dung
- Áp dụng cách tương tự cho tài liệu giải thích mã bằng cách đặt năm câu hỏi tương tác về các thay đổi ở cuối tài liệu
Câu đố là bộ điều tiết tốc độ của vòng lặp AI
- Áp dụng quy tắc phải vượt qua câu đố trong tài liệu giải thích trước khi gửi mã cho người khác
- Khi review mã do người khác viết cũng áp dụng cùng tiêu chuẩn
- Câu đố không phải tính năng phụ để đánh giá kiến thức, mà là bộ điều tiết tốc độ
- Khi làm việc với AI, các vòng lặp triển khai/sửa đổi/tái tạo dễ diễn ra nhanh hơn sự thấu hiểu của con người
- Câu đố buộc ta đặt các câu hỏi sau một cách có hệ thống ở mỗi vòng lặp
- Có thể giải thích thực tế đã thay đổi gì không
- Có hiểu vì sao dùng cấu trúc này không
- Có biết các ràng buộc ảnh hưởng đến thay đổi tiếp theo không
- Nếu không vượt qua, phải làm chậm tốc độ làm việc và bổ sung hiểu biết, nhờ đó con người vẫn có thể là người tham gia sáng tạo
Microworld lấy từ Mathland của Seymour Papert
- Phương pháp thứ hai, microworld, bắt nguồn từ ý tưởng của nhà giáo dục Seymour Papert
- Papert cho rằng cũng như muốn học tiếng Pháp thì sống ở Pháp, muốn học toán thì cần sống trong Mathland, nơi toán học vận hành một cách tự nhiên
- Đây là cách trẻ em không thụ động nghe giải thích, mà khám phá môi trường theo sự tò mò và tự nhiên tiếp thu các khái niệm toán học
- Áp dụng vào mã, thay vì chỉ cung cấp tài liệu giải thích hệ thống, ta có thể tạo một môi trường để con người bước vào và trực tiếp trải nghiệm cách nó vận hành
- Microworld là một thế giới nhỏ được cấu trúc để dễ quan sát một nguyên lý và sự thay đổi trạng thái cụ thể, thay vì phơi bày nguyên vẹn toàn bộ hệ thống production thực tế
Khám phá trình thông dịch Prolog theo trục thời gian
- Khi phát triển trình thông dịch Prolog, rất khó nắm bắt trực giác về những gì diễn ra bên trong
- Cùng với agent, tác giả đã tạo một trình gỡ lỗi chuyên dụng để khám phá quá trình thực thi theo từng bước
- Trong trình gỡ lỗi này, có thể trực tiếp kiểm tra các việc sau
- Di chuyển tiến lùi theo thời gian thực thi
- Xem xét giá trị nào đang có trong stack hiện tại
- Kiểm tra quy tắc nào được đánh giá ở mỗi bước
- Ghi chú tại thời điểm một quy tắc cụ thể được áp dụng đúng
- Thay vì chỉ nhìn kết quả hoàn chỉnh, ta có thể trực tiếp theo dõi cách quá trình thực thi của ngôn ngữ logic diễn tiến theo thời gian
- Nếu giao việc gỡ lỗi cho agent, vấn đề có thể được giải quyết, nhưng con người phải trực tiếp thao tác trình gỡ lỗi thì mới hình thành hiểu biết về cấu trúc thực thi
Khác biệt giữa việc agent gỡ lỗi thay và việc tạo công cụ để hiểu
- “Agent tìm và sửa vấn đề” và “agent tạo công cụ để con người khám phá vấn đề” tạo ra những kết quả khác nhau
- Trường hợp đầu nhanh chóng có kết quả công việc, nhưng sự hiểu biết của con người về quá trình bên trong có thể hầu như không tăng
- Trường hợp sau cung cấp quá trình khám phá để con người quan sát trạng thái thực thi, lập giả thuyết và kiểm tra kết quả
- Dù giao một phần việc viết mã cho agent, con người vẫn có thể trực tiếp thực hiện tư duy và khám phá cốt lõi
- Đây là cách mở rộng vai trò của agent từ người cung cấp đáp án sang người tạo môi trường thấu hiểu
Thực hiện di chuyển website như một trò chơi
- Khi di chuyển website cá nhân từ một framework sang framework khác, Claude đã viết script tự động hóa
- Vì chưa quen với framework mới, ngay cả khi đọc script cũng khó đánh giá quá mức “trông có vẻ đúng đại khái”
- Để giải quyết, tác giả yêu cầu Claude tạo một trung tâm chỉ huy dạng trò chơi điện tử để trực tiếp thực hiện việc di chuyển
- Trong trung tâm chỉ huy, có thể quan sát trực quan quá trình sau
- Nhấn nút để chạy từng bước migration
- Hiển thị website cũ và website mới song song ở hai bên màn hình
- Kiểm tra diện mạo website mới thay đổi ra sao ở từng bước
- Quan sát cây tệp thay đổi theo thứ tự nào
- Thay vì chạy toàn bộ quá trình chuyển đổi một lần, con người trực tiếp trải nghiệm quá trình website mới dần hình thành qua từng bước
- Có được sự hiểu biết tương tự như khi tự tay chuyển từng tệp, nhưng vì công việc cần làm và môi trường quan sát đã được chuẩn bị sẵn nên có thể tiến hành nhanh hơn nhiều
Tạo mã để hiểu mã
- Mã mà agent có thể viết không giới hạn ở tính năng sản phẩm hay script tự động hóa
- Nó cũng có thể tạo những công cụ tạm thời giúp con người hiểu mã khác, chẳng hạn
- Công cụ trực quan hóa quá trình thực thi
- Trình gỡ lỗi từng bước
- Màn hình so sánh hai bên
- Bộ hiển thị thay đổi cây tệp
- Giải thích khái niệm tương tác
- Trung tâm chỉ huy chia công việc thành các bước nhỏ
- Những công cụ này có đủ giá trị ngay cả khi không phải mã sản phẩm được duy trì dài hạn
- Khi chi phí tạo mã bằng AI giảm xuống, việc tạo môi trường học tập dùng một lần cho một người cụ thể và một tác vụ cụ thể cũng trở nên thực tế
Trong đội nhóm, cần cùng nhau thấu hiểu
- Chỉ một cá nhân hiểu hệ thống là chưa đủ cho làm việc nhóm
- Các thành viên trong đội cần có cùng mô hình tinh thần để chỉ với cách diễn đạt ngắn gọn cũng hình dung cùng một cấu trúc và hành vi
- Khi có từ vựng và hình ảnh chung, mọi người dễ trao đổi ý tưởng tức thời và cùng phát triển hướng đi mới
- Ngược lại, nếu mỗi người làm việc cô lập với agent riêng, sẽ phát sinh các vấn đề sau
- Dùng cùng thuật ngữ với ý nghĩa khác nhau
- Không chia sẻ được tiền đề của kế hoạch kỹ thuật
- Dù hợp nhất sản phẩm đầu ra, sự thấu hiểu không được hợp nhất
- Việc dùng AI trong đội nhóm không chỉ là vấn đề tăng năng suất của từng cá nhân, mà còn là vấn đề xây dựng hiểu biết chung của cả đội
Để công việc của agent và con người lại trong cùng một không gian chung
- Trong Notion, có thể chạy Claude và agent Cursor ngay bên trong trang
- Kế hoạch kỹ thuật do agent viết mặc định được tạo trên trang có thể cộng tác
- Thành viên trong đội có thể review kế hoạch do agent tạo ngay tại cùng một chỗ, không cần sao chép sang kênh riêng
- Bình luận vào câu cụ thể
- Đặt câu hỏi về lựa chọn triển khai
- Cùng nhau chỉnh sửa kế hoạch
- Để lại thảo luận của đội và kết quả của agent trong cùng một ngữ cảnh
- Thay vì agent làm việc trong silo của từng cá nhân, con người và agent suy nghĩ xoay quanh tài liệu chung
- Không gian chung không phải kho lưu tài liệu kết quả, mà là nơi đội nhóm cùng tạo mô hình tinh thần
Mục đích của máy tính ngay từ đầu đã là khuếch đại năng lực
- Vấn đề về giải thích/câu đố/microworld để hiểu mã không chỉ giới hạn trong lập trình
- Con người cần tri thức không chỉ để xác minh kết quả, mà còn để hiểu cách thế giới vận hành và tham gia vào sự thay đổi
- Khoảng 50 năm trước, Alan Kay đã hình dung máy tính như một phương tiện giáo dục mới tốt hơn sách
- Trong những hình vẽ thời đó có cảnh trẻ em nhìn vào thiết bị giống máy tính bảng, nhưng đó không phải là việc xem video thụ động
- Thao tác mô phỏng vật lý tương tác
- Vừa chơi game vừa trực tiếp sửa mã
- Kiểm tra mã đã sửa làm thay đổi chuyển động vật lý như thế nào
- Máy tính có thể trở thành phương tiện động giúp con người hiểu các khái niệm phức tạp bằng cách di chuyển và thay đổi chúng, chứ không phải cỗ máy truyền tải thông tin tĩnh
Không chỉ tự động hóa, mà là tham gia sâu hơn
- Ý chính được diễn tả bằng một meme: một phi hành gia nhìn Trái Đất và hỏi “mục đích của máy tính có phải là tạo mô phỏng động để hiểu các khái niệm phức tạp không”, phi hành gia phía sau đáp “luôn luôn là vậy”
- Nếu đặt mục đích của máy tính và AI chỉ ở việc loại bỏ công việc của con người, con người có thể bị đẩy ra bên ngoài hệ thống
- Ngược lại, nếu dùng AI để tạo giải thích/mô phỏng/microworld/không gian chung, con người có thể hiểu nhiều khái niệm hơn ở mức sâu hơn
- Khi AI làm giảm chi phí tạo mô phỏng, ta có thể tạo môi trường tùy chỉnh để học một khái niệm cụ thể bất cứ khi nào cần
- Mục tiêu không chỉ là đưa con người ra khỏi vòng lặp, mà là giúp con người đi sâu hơn vào vòng lặp so với trước đây
Bài viết liên quan
- Enough AI copilots! We need AI HUDs - giao diện AI vượt khỏi copilot, mở rộng trực tiếp hơn năng lực tinh thần của con người
- AI-generated tools can make programming more fun - trường hợp dùng AI tạo UI trình gỡ lỗi tùy chỉnh để cải thiện quá trình con người trực tiếp lập trình
- Code like a surgeon - cách ủy thác các công việc lặp lại phụ trợ và để con người tập trung vào công việc cốt lõi
2 bình luận
Để loại bỏ hoàn toàn nút thắt,
Vì cấu trúc nhận thức và trí nhớ của con người được chia thành trí nhớ ngắn hạn và trí nhớ dài hạn, nên tôi muốn nói rằng dù có cố nâng tốc độ coding của AI theo cách này đến đâu, việc con người thỉnh thoảng kiểm tra và tích lũy trí nhớ ngắn hạn vẫn là cách hiệu quả nhất đối với nợ nhận thức.