Tại sao tôi dành 3 tháng "đi ẩn" để viết code thủ công mà không cần AI?

17 tháng 4, 2026·12 phút đọc

Miguel Conner, một kỹ sư AI, đã dành 3 tháng tại Recurse Center để tập trung lập trình thủ công, đào tạo LLM từ con số không và cải thiện kỹ năng Python. Bài viết chia sẻ về sự đánh đổi giữa tốc độ nhờ AI và sự thấu hiểu sâu sắc về cốt lõi của lập trình.

Tại sao tôi dành 3 tháng "đi ẩn" để viết code thủ công mà không cần AI?

Tại sao tôi dành 3 tháng "đi ẩn" để viết code thủ công mà không cần AI?

Brooklyn, New York. Tháng 3 năm 2026. Tôi quyết định chuyển đến Brooklyn cho một kỳ nghỉ lập trình (coding retreat). Có một số lý do cá nhân đưa tôi quay lại Mỹ. Nhưng thay vì quay lại làm việc ngay lập tức, tôi muốn dành thời gian để tập trung viết code — chủ yếu là không sử dụng AI — đúng vào thời điểm mà nhiều lập trình viên thành công đang tuyên bố rằng lập trình là một vấn đề đã được giải quyết. Vì tôi đã đi được sáu tuần trong kỳ nghỉ này, tôi sẽ dành thời gian để giải thích những gì tôi đã làm trong khoảng thời gian đó.

Môi trường làm việc tại Recurse CenterMôi trường làm việc tại Recurse Center

Bối cảnh từ Aily Labs

Trong hai năm qua, tôi đã xây dựng các tác nhân AI (AI agents) tại Aily Labs ở Barcelona cùng với những kỹ sư tài năng. Một trong những dự án đầu tiên của tôi là xây dựng một tác nhân tìm kiếm web để sử dụng nội bộ vào đầu năm 2024 — gần 6 tháng trước khi bài viết "Building Effective AI Agents" của Anthropic ra mắt và một năm trước khi DeepResearch của OpenAI xuất hiện. Chúng tôi cũng là những người đi đầu trong việc sử dụng Cursor, sử dụng LLM để tạo đồ thị tri thức (knowledge graphs), và liên tục thử nghiệm các cách tiếp cận mới cho các trường hợp sử dụng của mình.

Một trong những phần tôi thích nhất khi làm việc tại Aily là dẫn dắt một câu lạc bộ tạp chí hàng tuần. Tôi đã chọn trình bày các bài báo mô tả cách xây dựng các mô hình LLM mã nguồn mở, bao gồm DeepSeek R1, Olmo 3 của Ai2 và bài báo Llama 3 của Meta. Tất cả những điều này đã giúp chúng tôi hiểu được sự đánh đổi đang thay đổi giữa việc đào tạo mô hình nội bộ hay xây dựng quy trình làm việc xung quanh các mô hình đóng (SOTA) hiện có. Tôi đã bị cuốn hút bởi LLM kể từ lần đầu tiên thử chúng vào năm 2023, nhưng tôi nhận thấy sự tò mò của mình luôn kéo tôi trở lại việc tìm hiểu cách chúng hoạt động và cách áp dụng chúng.

Một yếu tố then chốt của nghề nghiệp

Trong khi tôi đang tìm hiểu về LLM và các tác nhân, tôi cũng sử dụng chúng để viết code. Tôi nhận ra rằng khi viết code "thủ công" (bằng tay), tôi thực sự đang làm hai việc: viết những gì tôi muốn và học về cơ sở mã (codebase). Tuy nhiên, khi sử dụng một tác nhân viết code, tôi sẽ nhận được chính xác những gì tôi đã chỉ định trong prompt, dù tốt hay xấu. Ý tôi là, nếu tôi không biết chính xác mình muốn gì, các tác nhân viết code sẽ rất vui vẻ khi đưa ra nhiều giả định thay cho tôi. Điều này gần như luôn có nghĩa là tôi không học được nhiều, và tôi sẽ không nắm vững cơ sở mã.

Đúng vào thời điểm đó, các tác nhân viết code giúp tôi lặp lại nhanh chóng và triển khai phần mềm hoạt động tốt (sau một số thử nghiệm nghiêm túc, tất nhiên). Chúng cũng là những gia sư tuyệt vời. Cal Newport, giáo sư khoa học máy tính và tác giả của cuốn sách "Deep Work" và các sách khác về năng suất, gần đây đã viết về sự đánh đổi này theo một cách đã cộng hưởng với tôi. Trong bài viết đó, ông ấy so sánh mối quan hệ giữa tập thể dục và sức khỏe, với mối quan hệ giữa tư duy và nghề nghiệp:

Viết lách phải là của chính bạn. Sự căng thẳng cần thiết để soạn thảo một bản ghi nhớ hay báo cáo rõ ràng tương đương về mặt tinh thần với buổi tập gym của một vận động viên; nó không phải là một phiền toái cần loại bỏ mà là một yếu tố then chốt của nghề nghiệp của bạn.

Tôi nghĩ điều tương tự cũng áp dụng cho việc viết code. Tại Aily, những người tôi làm việc cùng là những lập trình viên tuyệt vời và trong hầu hết các trường hợp, họ cũng là những người dùng AI xuất sắc. Kiến thức sâu sắc của họ đơn giản là mang lại cho họ nhiều đòn bẩy hơn đối với công cụ này. Trong công việc hàng ngày để đưa các tác nhân vào sản xuất, tôi không ngừng học hỏi. Nhưng tôi có một danh sách ngày càng dài các khái niệm về code và máy tính mà tôi luôn quá bận rộn để không tìm hiểu. Vì vậy, khi tôi cần quay lại Mỹ, tôi nhận ra đây là thời điểm hoàn hảo để tập trung vào điều này tại Recurse Center.

Kỳ nghỉ lập trình là gì?

Recurse Center (RC) là một kỳ nghỉ lập trình toàn thời gian, tự định hướng tại Brooklyn. Sau khi nộp đơn và phỏng vấn lập trình, các Recursers đến với những ý tưởng về những gì họ muốn lập trình, sau đó dành 6 hoặc 12 tuần để viết code. Một trong những điểm nổi bật của RC là tính hợp tác: bạn đến với một nhóm các lập trình viên khác, nhiều người có hàng thập kỷ kinh nghiệm và có chuyên môn hoàn toàn khác nhau. Một điểm nổi bật khác: nó hoàn toàn miễn phí!

Khi bước vào RC, mục tiêu của tôi như sau:

  1. Đào tạo một LLM từ con số không. Điều này bao gồm tiền huấn luyện và hậu huấn luyện, và tôi muốn làm điều này chủ yếu từ đầu; không chỉ fork một cơ sở mã có sẵn mà tự viết một Transformer.
  2. Viết Python tốt hơn bằng tay. Tôi đã làm việc với Python được vài năm nay nhưng tôi biết vẫn còn rất nhiều điều để học. Tôi muốn đạt đến mức tôi cần tham khảo tài liệu hoặc hỏi LLM càng ít càng tốt, và có trực giác tốt về cách thiết lập các dự án khác nhau.
  3. Hiểu rõ hơn về máy tính. Tôi thừa nhận đây là một mục tiêu rộng, tôi biết máy tính là những cỗ máy cực kỳ phức tạp hoạt động ở nhiều mức độ trừu tượng. Vì tôi chưa từng được đào tạo chính thức về Khoa học Máy tính, tôi muốn xây dựng một mô hình tinh thần tốt hơn về các lớp này và cách chúng hoạt động cùng nhau. Tôi không có một kế hoạch cụ thể siêu chi tiết ở đây, nhưng tôi nghĩ RC sẽ là nơi hoàn hảo cho việc này.

Vậy mọi việc diễn ra thế nào?

1. Đào tạo LLM từ đầu

Tôi đã hoàn thành bài tập đầu tiên từ khóa học CS336 của Stanford: Language Modeling from Scratch mà không có sự trợ giúp viết code từ LLM. Để bạn dễ hình dung, đó là một bài tập dài 50 trang, nhưng làm việc cùng một Recurser khác, chúng tôi đã viết một bộ mã hóa (tokenizer) được tối ưu hóa trong Python, sau đó xây dựng một kiến trúc kiểu GPT-2 nâng cấp trong PyTorch. Chúng tôi đã chạy nhiều phép thử loại bỏ (ablations) để tinh chỉnh các siêu tham số trên tập dữ liệu Tiny Stories, sau đó sử dụng các siêu tham số đó trên tập dữ liệu OpenWebText khoảng 9 tỷ token.

Biểu đồ tinh chỉnh siêu tham số cho mô hìnhBiểu đồ tinh chỉnh siêu tham số cho mô hình

Kế hoạch của tôi là làm các bài tập còn lại trong CS336: tối ưu hóa mô hình ngôn ngữ, ước tính và tính toán các quy luật mở rộng (scaling laws), chuyển đổi dữ liệu văn bản thô thành dữ liệu tiền huấn luyện, và cuối cùng là hậu huấn luyện một mô hình. Tôi đã bắt đầu bài tập thứ hai liên quan đến việc phân tích hồ sơ (profiling) GPU và triển khai FlashAttention2 trong Triton. Có rất nhiều việc phải làm, nhưng lý tưởng là tôi có thể chạy qua phần cốt lõi của các bài tập này và sau đó hậu huấn luyện mô hình của riêng mình.

2. Trở nên giỏi hơn trong việc viết Python từ đầu

Tôi đã viết nhiều tác nhân nhỏ và mạng nơ-ron trong Python hoặc PyTorch để thực hành. Nhưng điều hữu ích nhất cho đến nay là lập trình cặp (pair programming) với những người đã làm việc với Python hơn 10 năm, và chỉ xem họ làm việc hoặc để họ xem tôi làm việc. Ví dụ, một điều hay tôi học được từ người tôi lập trình cặp cùng: khi người này viết code và không nhớ rõ cú pháp hoặc các thao tác, anh ấy thường chỉ mở nhanh một terminal và gõ một ví dụ siêu đơn giản để lặp lại nhanh chóng. Anh ấy thường có thể tìm ra và xác minh xem nó có hoạt động chính xác không trong vòng chưa đầy một phút, và anh ấy không phải google bất cứ thứ gì hay lục lọi kết quả tìm kiếm hay hỏi LLM. Kỹ thuật này có thể có vẻ rõ ràng với một số người, nhưng việc biến quy trình này thành phản xạ cơ bắp đã giúp tôi thoát khỏi tình trạng bí ý tưởng nhanh hơn nhiều. Tôi muốn tiếp tục phát triển theo hướng này, làm các dự án nhỏ hoặc thậm chí chỉ các vấn đề như Advent of Code trong khi lập trình cặp. Làm việc trực tiếp với người khác ban đầu hơi hồi hộp, nhưng chính vì vậy tôi đã nhận thấy rất nhiều tiến bộ.

3. Hiểu rõ hơn về máy tính

Dưới đây là một vài ví dụ về những việc tôi đã làm mà tôi phân loại là giúp tôi hiểu rõ hơn về máy tính:

  • Tôi đã viết hàm lập trình kinh điển fizzbuzz bằng ngôn ngữ BASIC trên một máy tính Apple IIe năm 1983. Thật thú vị khi thấy máy tính hoạt động khác nhau như thế nào ngày xưa, ví dụ như quy trình chỉnh sửa và thực thi code thủ công như thế nào, nhưng cũng thấy rằng về cơ bản nó vẫn giống nhau.
  • Một điều tôi luôn cảm thấy hơi tự ti là kỹ năng Unix/terminal của mình. Vì vậy, tôi đã tham gia CTF Fridays, một phiên hàng tuần dành riêng để giải quyết các thử thách "war game" như Bandit. Đây là các thử thách liên quan đến Unix và bảo mật máy tính được chơi qua terminal, với mục tiêu thu thập mật khẩu và thăng cấp. Bây giờ tôi có cảm giác khá tốt về những gì Claude Code đang cố gắng chạy trên máy tính của mình!
  • Một ngày nọ, tôi đã viết code thủ công một perceptron một lớp mà tôi thấy khi lật qua một sách giáo khoa AI... hoàn toàn bằng Vim. Ban đầu nó cực kỳ tẻ nhạt, nhưng tôi đã nhận được một số mẹo chuyên nghiệp từ một Recurser khác và học được một vài phím tắt. Điều này thực sự vô cùng hữu ích bây giờ khi tôi chạy các công việc đào tạo trên GPU đám mây và cần chỉnh sửa tệp vào phút chót.
  • Tôi tham gia một hội thảo Clojure do một người có hơn 15 năm kinh nghiệm sử dụng Clojure tổ chức. Chủ đề本身 thú vị vì Clojure là một ngôn ngữ lập trình hàm và tôi không có nhiều kinh nghiệm với các ngôn ngữ hàm. Phương pháp giảng dạy cũng tuyệt vời: sau một giới thiệu ngắn, chúng tôi đã thực hiện một vòng lập trình nhóm (mob programming), nơi chúng tôi cùng giải quyết một vấn đề, đi quanh bàn với mỗi người có một hoặc hai phút để thúc đẩy giải pháp.

Các bài thuyết trình kỹ thuật hàng tuần là cơ hội tuyệt vời để tiếp xúc với một loạt chủ đề đáng kinh ngạc. Đây là một loạt bài nói chuyện 5 phút, nên chúng đủ ngắn để bạn không bị chán nhưng đủ nhanh để bạn có thể học được điều gì đó có ý nghĩa. Một số tiêu đề mẫu: "Running Rust Code", "GPUs for Dummies", "Typesafe APIs for Type B Personalities", "Some Useless Agents" (cái này là của tôi!), và nhiều hơn nữa. Tôi đã thực hiện hai bài cho đến nay: một bài về kiến trúc tác nhân đơn giản, một bài về mở rộng quy trình công cụ MCP một cách hiệu quả; và sẽ thực hiện thêm một bài nữa vào tuần này về các cách khác nhau để tối ưu hóa GPU. Ngay cả việc chỉ lắng nghe mọi người nói về các dự án và sự nghiệp của họ cũng vô cùng giá trị trong việc giúp tôi hiểu không gian các vấn đề mà máy tính có thể giải quyết.

6 tuần nữa

Sớm thôi, tôi sẽ đưa các tác nhân vào sản xuất và chạy các bài đánh giá với một kho thủ thuật và kỹ năng hoàn toàn mới. Nhưng hiện tại, tôi còn 6 tuần nữa tại RC, và tôi bắt đầu lo lắng rằng không đủ thời gian để hoàn thành mọi thứ trong danh sách của mình. Và sẽ không đủ đâu. Nhưng đó chính là điều khiến RC trở nên tuyệt vời: nó không quá nhiều là đánh dấu mọi thứ trong danh sách của tôi mà là dành thời gian để viết code.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗