62 điểm bởi bboydart91 3 ngày trước | 18 bình luận | Chia sẻ qua WhatsApp

TL;DR;

  • Năng lực cốt lõi để dùng AI hiệu quả là khả năng đánh giá và chỉnh sửa chất lượng đầu ra, nhưng năng lực này lại suy yếu khi càng phụ thuộc vào AI
  • Theo lý thuyết "khó khăn đáng mong muốn" của Bjork, thông tin được xử lý quá dễ dàng sẽ không lưu lại trong trí nhớ dài hạn
  • Trong nghiên cứu của Roediger & Karpicke (2006), tỷ lệ duy trì ghi nhớ sau một tuần của nhóm luyện tập truy hồi cao hơn khoảng 50% so với nhóm đọc lặp lại
  • Khi AI viết code thay, ngay cả tải nhận thức mang tính kiến tạo (germane load) cũng bị loại bỏ, khiến cơ hội hình thành schema gần như biến mất
  • Lập trình viên càng thành thạo thì do hiệu suất thần kinh, việc chỉ đọc đầu ra của AI gần như không tạo ra gánh nặng nào đáng kể cho não bộ
  • Ngay cả trước thời AI cũng đã tồn tại con đường dẫn đến việc ngừng phát triển, nhưng AI đã loại bỏ ma sát trên con đường đó một cách mạnh mẽ

Tóm tắt chi tiết

Nghịch lý: muốn dùng AI giỏi thì vẫn phải hiểu code

  • Có rất nhiều người có thể nói "hãy làm cái này cho tôi", nhưng số người có thể nhìn vào kết quả AI tạo ra và sửa cụ thể rằng "cấu trúc này dễ vỡ khi thay đổi", "interface này đang gánh hai trách nhiệm" thì ít hơn rất nhiều
  • Năng lực đó gần như là một trực giác được hình thành từ vô số lần thất bại, debug và refactor
  • Việc học cách dùng AI và học các pattern code không phải quan hệ chọn một trong hai, mà cái sau chính là nền tảng của cái trước
  • "Lập trình viên tận dụng AI tốt nhất là người vẫn có thể đánh giá code ngay cả khi không có AI"

Não bộ không ghi nhớ khi mọi thứ quá dễ dàng

  • "Khó khăn đáng mong muốn" của Bjork: khi quá trình học có mức độ khó và lực cản phù hợp, hiệu suất ngắn hạn có thể chậm hơn nhưng khả năng lưu giữ dài hạn và chuyển giao sẽ tốt hơn
  • Roediger & Karpicke (2006): thí nghiệm đọc lặp lại vs luyện tập truy hồi
    • Bài kiểm tra sau 5 phút: nhóm đọc lặp lại có điểm cao hơn
    • Kiểm tra lại sau một tuần: tỷ lệ duy trì ghi nhớ của nhóm luyện tập truy hồi cao hơn khoảng 50%
  • Ở nhóm truy hồi chủ động, kết nối giữa hippocampus và vỏ não trước trán được tăng cường, đồng thời hoạt động của mạng cảm giác-vận động cũng tăng lên
  • Não bộ ở trạng thái học thụ động chỉ kích hoạt kết nối hippocampus–hồi hình thoi — gần với việc "chỉ đang nhìn thông tin chứ không thực sự xử lý"
  • Hiệu ứng tạo sinh (Slamecka & Graf, 1978): nhóm tự hoàn thành như "nóng-lạ___" có tỷ lệ duy trì ghi nhớ cao hơn có ý nghĩa so với nhóm chỉ đọc các cặp đã hoàn chỉnh
  • Ảo giác về sự trôi chảy: cảm giác rằng thông tin được xử lý dễ dàng dẫn đến ảo tưởng rằng mình sẽ nhớ tốt

Kỹ năng lập trình là trí nhớ thủ tục

  • Phần lớn năng lực lập trình là trí nhớ thủ tục — giống như đi xe đạp, một khi đã thấm vào người thì có thể thực hiện tự động mà không cần ý thức
  • Mô hình ACT (Adaptive Control of Thought) của Anderson: 3 giai đoạn hình thành trí nhớ thủ tục
    • Giai đoạn nhận thức: mọi thứ được thực hiện từng bước một cách có ý thức, tiêu tốn phần lớn bộ nhớ làm việc
    • Giai đoạn liên kết: các thủ tục riêng lẻ được tích hợp để có thể vận hành thành một dòng chảy thống nhất
    • Giai đoạn tự động hóa: thực hiện tự động mà gần như không chiếm bộ nhớ làm việc — phần tài nguyên còn lại có thể dùng cho các phán đoán thiết kế
  • Việc chuyển giai đoạn chỉ xảy ra thông qua lặp đi lặp lại quá trình tự mình thực hiện
  • Chunking (nghiên cứu cờ vua của Chase & Simon): khác biệt giữa chuyên gia và người mới không nằm ở số lượng slot của bộ nhớ làm việc, mà ở lượng thông tin có thể chứa trong một chunk
    • Kỳ thủ giỏi không nhìn từng vị trí quân cờ riêng lẻ mà nhận ra một pattern có ý nghĩa như "thế trận trung cuộc điển hình của Sicilian Defense" như một chunk duy nhất
    • Điều này được chứng minh khi trong thí nghiệm sắp xếp ngẫu nhiên, khác biệt giữa cao thủ và người mới biến mất

AI cản trở quá trình này

  • Khi giao phần triển khai cho AI, ngay cả tải nhận thức mang tính kiến tạo (germane load) cũng bị AI xử lý thay — cơ hội xây dựng schema gần như không còn
  • Xét theo góc độ trí nhớ thủ tục: thời gian vật lộn ở giai đoạn nhận thức giảm đi, khiến việc chuyển sang giai đoạn liên kết bị trì hoãn và khó đạt tới giai đoạn tự động hóa hơn
  • Việc đọc code do AI sinh ra tương ứng với "đọc cặp từ đã hoàn chỉnh" trong thí nghiệm hiệu ứng tạo sinh — có cảm giác như đã hiểu nhưng không được khắc sâu
  • Lập trình viên càng thành thạo thì do hiệu suất thần kinh, họ xử lý code với ít tài nguyên hơn → việc đọc đầu ra AI thực ra gần như không tạo tải cho não như ta tưởng
  • Khi tự viết code, synapse được điều chỉnh qua vòng lặp dự đoán–phản hồi; còn đọc code AI đã hoàn chỉnh chỉ là diễn giải sau khi sự việc đã xong, vì quá trình dự đoán đã bị lược bỏ
  • Đặc biệt nghiêm trọng với junior: khi còn nhiều pattern đang ở giai đoạn nhận thức mà AI khiến họ bỏ qua giai đoạn đó, họ sẽ chỉ tích lũy số năm kinh nghiệm mà không hình thành trí nhớ thủ tục

Cách tạo tải cho não bộ

  • Trước khi giao cho AI, hãy tự viết ra phương án thiết kế của mình trước: chủ động tận dụng hiệu ứng tạo sinh — trong quá trình so sánh và đánh giá với đầu ra của AI, vùng xử lý ngữ nghĩa và vùng điều khiển thực thi của não sẽ cùng được kích hoạt
  • Code review một cách nghiêm túc: có ý thức tự hỏi "vì sao lại chọn cấu trúc này", "nếu sửa sau 6 tháng thì chỗ nào sẽ thành vấn đề" — chính sự phiền phức đó là một dạng khó khăn đáng mong muốn
  • Dành thời gian để tự viết code: điều này không thể bị thay thế trong việc hình thành trí nhớ thủ tục — khi bị mắc lại, hãy chỉ nhờ AI gợi ý tối thiểu thay vì xin luôn toàn bộ đáp án
  • Chiến lược tối ưu cho sản xuất và cho học tập là khác nhau: AI là công cụ xuất sắc cho sản xuất, nhưng có giới hạn khi là công cụ học tập
  • Cuối cùng, những gì còn đọng lại trong não sẽ quyết định chất lượng code review, độ chính xác của phán đoán thiết kế, và nghịch lý thay, cả năng lực tận dụng AI

18 bình luận

 

Không biết có phải chỉ là cảm giác của tôi không, nhưng dường như ở đây cũng có khá nhiều bình luận được AI viết nhỉ

 

Cảm giác như đã đến một thế giới phản địa đàng vậy.

 

Cá nhân tôi cảm nhận rất sâu sắc rằng AI rất tệ trong đúng lĩnh vực chuyên môn của tôi. Tôi đoán có lẽ các chuyên gia ở những lĩnh vực khác cũng vậy. Tất nhiên nó vẫn giúp được rất nhiều. Dù phải viết cả đống tài liệu lải nhải suốt cả ngày, nhưng năng suất thì tuyệt đối không thể so với trước đây.

Sự chú ý được hình thành theo đa số.
Tác nhân kiểm chứng chỉ cần vượt qua hàm đánh giá.
Phần lớn mã công nghiệp xuất sắc đều không được công khai.
Mã nguồn mở là thứ mã được viết ra để trình diễn.

Phải luôn ghi nhớ điều này khi sử dụng.

 
koreacglee 2 ngày trước

Đồng cảm. Dữ liệu cốt lõi của các miền chuyên sâu như hàng không vũ trụ, y tế, điều khiển chính xác... được đặt trong mạng nội bộ đóng kín nghiêm ngặt; muốn tiếp cận thì либо phải là người nội bộ then chốt, còn nếu là bên ngoài thì cũng chỉ có thể được mở ra sau khi bỏ ra chi phí đáng kể và ký NDA. Phần lớn dữ liệu mà AI học là những thứ được công khai trên Internet, và nếu là dịch vụ web/app dựa trên Python, JavaScript thì Full Automation ở mức độ nào đó là khả thi.
Còn các thuật toán đồ họa 3D, CAD được dùng trong những miền chuyên sâu thì либо chỉ nằm rải rác manh mún trên Internet, либо hoàn toàn không có, nên ngay cả AI cũng chỉ có thể tạo ra kết quả hời hợt nếu dùng vibe coding. Tôi nghĩ cách tiếp cận an toàn và thực tế là đặt một tác tử chính, liên tục bơm ngữ cảnh miền ở mức micro-managing, rồi phát triển theo phương thức khuếch đại liên tục chứ không phải tự động hóa hoàn toàn do AI tự chủ, với chu trình Planning → Redirection → Review do chính lập trình viên trực tiếp dẫn dắt.

 

Bản thân tôi cũng vẫn cảm thấy mình còn thiếu sót trong lĩnh vực chuyên môn của mình, nên tôi luôn cẩn trọng và cho rằng ở những lĩnh vực mà tôi nhận hỗ trợ, mức độ đó cũng chỉ ở chừng ấy. Thay vào đó, vì tốc độ phát triển là rất đáng kể, nên tôi vẫn định thử dùng nó cho những công việc mà chỉ cần chất lượng ở mức đó là đủ.

 

Đây chỉ là một suy nghĩ ngắn, nhưng dạo này tôi hay nghĩ như thế này. Nghe nói ngày trước các chuyên gia Assembly khi nhìn các lập trình viên C đã từng nói những câu như “không biết quý bộ nhớ”, “không hiểu phần cứng”, v.v., và bây giờ nhìn lại thì tôi thấy chẳng phải cũng là những lời chỉ trích tương tự trong cùng một mạch hay sao. Rốt cuộc, từ góc độ phát triển phần mềm, chẳng phải chúng ta chỉ đang chuyển sang phát triển bằng một ngôn ngữ trừu tượng hơn (AI) so với các ngôn ngữ lập trình trước đây hay sao. Vì vậy, việc mức độ chuyên môn đối với các ngôn ngữ đã dùng trước đó đương nhiên giảm đi cũng là điều tự nhiên. Tuy vậy, giống như cho đến cách đây không lâu, trong số những người làm phát triển, những ai xử lý các ngôn ngữ low-level hơn hiện tại thường được gọi là “quái vật”, thì có lẽ từ nay những người phát triển theo vibe nhưng vẫn hiểu nguyên lý của các ngôn ngữ cũ vẫn có thể được xem là những người khác biệt.

 
indigoray 3 ngày trước

Nội dung như vậy có vẻ là sự chấp niệm với cách làm việc trong quá khứ. Dù sao thì những phần đó rồi AI cũng sẽ làm tốt hơn. Điều quan trọng lúc này là trải nghiệm cải thiện những phần chưa vận hành tốt khi sử dụng AI. Nhưng tôi cũng cho rằng điều này chỉ mang tính tạm thời.

 

Việc học thuộc bảng cửu chương khi đã có máy tính có vẻ là sự níu kéo một cách làm việc của quá khứ. Dù sao thì những phần như thế máy tính rồi sẽ làm tốt hơn. Điều quan trọng lúc này là vừa dùng máy tính vừa tích lũy kinh nghiệm cải thiện những chỗ nó làm chưa tốt. Nhưng tôi cũng cho rằng điều này chỉ mang tính tạm thời.

 

Có vẻ lúc nào cũng phản biện lại bằng kiểu lập luận tương tự thế này.. Máy tính bỏ túi thì không tính sai. Nó làm đúng vai trò của mình.

 

Đôi khi tôi cũng lo rằng một ngày nào đó máy tính bỏ túi bị hỏng và cho ra kết quả 3 X 3 = 10, nhưng sẽ chẳng ai nhận ra điều đó là sai... Nếu chuyện đó xảy ra trên máy tính của lập trình viên đang xử lý tài khoản ngân hàng của tôi thì... Có lẽ cẩn thận vẫn hơn.

 
ohmybreaktime 3 ngày trước

Câu nói rằng "phần đáng kể của kỹ năng lập trình là trí nhớ thủ tục" thực sự khiến tôi thấy rất thấm. Việc giải bài toán cũng là hành vi ghi nhớ quy trình và luyện tập để có thể tạo ra cùng một kết quả. Dùng AI để lập trình thì cũng không sao, nhưng có vẻ vẫn cần tạo áp lực cho não để có thể lặp đi lặp lại việc tạo ra kết quả ở cùng mức độ trở lên.

 
calculus9006 2 ngày trước

Nhìn mấy lập trình viên code kiểu vibe mà không dùng não là thấy bực thật sự. Sản phẩm do chính mình làm ra có chất lượng tệ hại mà thử lấy lý do là AI viết xem. Người phải chịu trách nhiệm vẫn là bản thân mình.

 
dongho42 3 ngày trước

“Nếu bạn chẳng là gì nếu không có bộ giáp đó, thì bạn không nên sở hữu nó.” - Tony Stark

 
awbrg789 3 ngày trước

Có lẽ mình cũng cần chủ động tạo ra một quá trình phải trải qua sự phiền toái, dù là cố ý.

 
runableapp 3 ngày trước

AI mang lại cảm giác như đang dùng máy khoan điện, cưa máy và máy xúc --. Sau khi dùng điện thoại di động, có rất nhiều người thậm chí không còn nhớ nổi số điện thoại của chính mình.

...Có thể xem những điều này là sự mai một, nhưng với tôi đó là hiệu quả. Từ kinh nghiệm từng làm nhà phát triển và đảm nhiệm nhiều vị trí khác nhau, tôi thấy công cụ AI là công cụ không chỉ dành riêng cho thế giới của lập trình viên mà còn là cơ hội và sự hỗ trợ để có được góc nhìn rộng hơn. Có thể ở một khía cạnh nào đó sẽ bị mai một, nhưng khoảng trống đó sẽ được lấp đầy bằng những thứ khác.

 

Tôi cũng đồng ý với ý kiến này.
Cuối cùng, tôi xem đây là một công cụ có sự đánh đổi rất rõ ràng.
Tôi cũng lo rằng càng dùng AI thì kỹ năng lập trình sẽ càng giảm đi, nhưng rõ ràng là mình sẽ suy nghĩ về những vấn đề khác mà trước đây chưa từng làm (hoặc không thể làm).

 

Ít nhất khi chỉ dẫn cho AI, đừng chỉ ném ra vài câu ngắn gọn mà hãy diễn giải cụ thể nhất có thể suy nghĩ và tiến trình lập luận của mình; sau đó, trước khi bắt đầu công việc, nếu còn điều gì cần kiểm tra thêm thì hãy nhất định hỏi lại rồi mới tiến hành, như vậy có vẻ sẽ hữu ích.

 

Đây là một bài viết khiến tôi liên tưởng đến cụm từ chứng mất trí nhớ kỹ thuật số.