20 điểm bởi GN⁺ 3 ngày trước | 5 bình luận | Chia sẻ qua WhatsApp
  • Ghi chép của một lập trình viên tham gia kỳ retreat 3 tháng tự tay viết code không dùng LLM ngay vào thời điểm các AI coding agent đã trở nên phổ biến
  • Trong tuần thứ 6 tại Recurse Center ở Brooklyn, tác giả đang tự xây dựng LLM từ đầu, đồng thời rèn kỹ năng Python và củng cố hiểu biết về nhiều tầng trừu tượng của máy tính
  • Coding agent cho phép lặp nhanh và triển khai nhanh, nhưng khi trực tiếp tự tay viết code thì hai việc diễn ra đồng thời: biểu đạt điều mình muốn và học codebase
  • Tác giả chia sẻ góc nhìn rằng, giống như phép so sánh "viết lách giống như tập thể dục" của Cal Newport, nỗ lực tinh thần để tạo ra code là một yếu tố cốt lõi của kỹ năng
  • Dựa trên quan sát rằng những kỹ sư dùng AI tốt nhất thường cũng là người có kiến thức sâu, bài viết nhấn mạnh rằng ngay trong thời đại AI, năng lực nền tảng vẫn tạo ra đòn bẩy

LLM và trải nghiệm lập trình

  • Trong 2 năm qua, tác giả đã xây dựng AI agent tại Aily Labs ở Barcelona
    • Đầu năm 2024, tác giả đã làm một web search agent nội bộ, sớm hơn khoảng 6 tháng so với bài viết "Building Effective AI Agents" của Anthropic và sớm hơn khoảng 1 năm so với DeepResearch của OpenAI
    • Tác giả là người dùng sớm của Cursor, đồng thời cũng sớm tham gia vào việc xây dựng knowledge graph bằng LLM
  • Tác giả dẫn dắt journal club hằng tuần và trình bày các paper về xây dựng LLM mã nguồn mở
    • Có đề cập đến các paper như DeepSeek R1, Olmo 3 của Ai2, Llama 3 của Meta
    • Điều này giúp hiểu các trade-off giữa việc tự huấn luyện mô hình nội bộ và xây dựng workflow dựa trên các mô hình đóng SOTA
  • Kể từ lần đầu dùng LLM vào năm 2023, tác giả liên tục quan tâm đến cách chúng hoạt động và được ứng dụng ra sao

Tự tay viết code như một yếu tố cốt lõi của kỹ năng

  • Điều tác giả nhận ra khi vừa học về LLM vừa dùng chúng để lập trình
    • Khi viết code "bằng tay", ta đồng thời làm hai việc: viết ra điều mình muốn và học codebase
    • Khi dùng coding agent, ta chỉ nhận được chính xác những gì đã nêu trong prompt; nếu mong muốn chưa rõ ràng, agent sẽ thay ta đưa ra rất nhiều giả định (assumption)
    • Trong trường hợp đó, lượng học được giảm đi và mức độ hiểu codebase cũng thấp hơn
  • Đồng thời, coding agent vẫn cho phép lặp nhanh, triển khai phần mềm ổn định, và còn là một người dạy kèm tuyệt vời
  • Trích dẫn chuyên mục NYT của Cal Newport
    • "Bài viết của bạn phải là của chính bạn. Sự căng thẳng cần thiết để viết ra một ghi chú hay báo cáo rõ ràng là hoạt động tinh thần tương đương với việc vận động viên tập trong phòng gym; đó không phải một sự phiền toái cần loại bỏ mà là một yếu tố cốt lõi của kỹ năng"
    • Tác giả cho rằng phép so sánh này cũng đúng với việc viết code
  • Những lập trình viên xuất sắc mà tác giả từng làm cùng ở Aily phần lớn cũng là những người tận dụng AI rất giỏi, và kiến thức sâu tạo ra đòn bẩy khi dùng công cụ AI

Code retreat là gì

  • Recurse Center (RC) là một retreat lập trình tự định hướng, toàn thời gian, đặt tại Brooklyn
    • Retreat: "một khoảng thời gian tạm rời khỏi đời sống thường nhật để tập trung vào một hoạt động cụ thể"
    • Người tham gia được nhận sau khi nộp đơn và phỏng vấn code, rồi dành 6 hoặc 12 tuần để tập trung lập trình
    • Điểm đặc trưng là môi trường cộng tác theo cohort với chuyên môn đa dạng, trong đó có nhiều lập trình viên sở hữu hàng chục năm kinh nghiệm
    • Chương trình được vận hành miễn phí
  • Mục tiêu của tác giả tại Recurse Center
    • Học LLM từ đầu

      • Mục tiêu là tự viết Transformer thay vì fork codebase có sẵn, bao gồm cả pre-training và post-training
    • Viết Python bằng tay tốt hơn

      • Dù đã làm việc với Python nhiều năm, tác giả vẫn thấy còn rất nhiều điều phải học, và muốn giảm tối đa việc tra tài liệu hay hỏi LLM để xây dựng trực giác về cách tổ chức dự án
    • Hiểu máy tính sâu hơn

      • Tác giả nhìn nhận máy tính là một cỗ máy cực kỳ phức tạp vận hành trên nhiều tầng trừu tượng
      • Vì không được đào tạo chính quy về Computer Science, tác giả muốn xây dựng một mô hình tinh thần tốt hơn về cách các tầng này cùng hoạt động
      • Chưa có nhiều kế hoạch cụ thể, nhưng tin rằng RC là nơi phù hợp

Tiến độ hiện tại

  • 1. Huấn luyện LLM từ đầu

    • Tác giả đã hoàn thành bài tập đầu tiên của khóa CS336: Language Modeling from Scratch của Stanford mà không dùng hỗ trợ code từ LLM
      • Bài tập dài 50 trang được thực hiện cùng một Recurser khác
      • Tác giả đã viết tokenizer tối ưu bằng Python và triển khai kiến trúc kiểu GPT-2 bằng PyTorch
      • Sau nhiều lần ablation để tinh chỉnh hyperparameter trên bộ dữ liệu Tiny Stories, tác giả áp dụng chúng cho khoảng 9 tỷ token của OpenWebText
      • Kết quả learning rate sweep trên mô hình 17M tham số do chính tay tác giả viết cho thấy learning rate cao gây mất ổn định. Việc huấn luyện mất khoảng 1 giờ trên A100
    • Kế hoạch tiếp theo
      • Hoàn thành các bài tập còn lại của CS336: tối ưu language model, ước lượng/tính toán scaling law, chuyển đổi dữ liệu pre-training từ raw text, post-training mô hình
      • Tác giả đã bắt đầu bài tập thứ hai về GPU profilingtriển khai FlashAttention2 trong Triton
      • Mục tiêu cuối cùng là có được một mô hình đã tự mình post-training
  • 2. Cải thiện kỹ năng Python

    • Tác giả luyện tập bằng cách viết nhiều agent nhỏ và mạng nơ-ron bằng Python và PyTorch
    • Điều hữu ích nhất là pair programming với người có hơn 10 năm kinh nghiệm Python
      • Một người pair thường mở ngay terminal và gõ ví dụ đơn giản để kiểm tra hành vi trong chưa đầy 1 phút khi không nhớ cú pháp hay cách hoạt động
      • Quy trình đã thành phản xạ cơ bắp này, giải quyết vấn đề mà không cần Google hay hỏi LLM, giúp phá thế bế tắc rất hiệu quả
    • Tác giả dự định tiếp tục theo hướng này bằng cách pair programming giải các bài như Advent of Code
      • Hợp tác thời gian thực ban đầu khá căng thẳng, nhưng cũng vì vậy mà cảm nhận được tốc độ tiến bộ rất nhanh
  • 3. Đào sâu hiểu biết về máy tính

    • Tác giả viết fizzbuzz bằng BASIC trên chiếc máy tính Apple IIe năm 1983
      • Trải nghiệm trực tiếp quá trình chỉnh sửa và chạy code theo cách thủ công, từ đó nhận ra cả sự khác biệt lẫn điểm tương đồng giữa máy tính xưa và nay
    • Tăng cường kỹ năng Unix/terminal thông qua CTF Fridays
      • Giải các thử thách "war games" như Bandit trong terminal, thu thập password và lên level
      • Giờ đây tác giả có thể hiểu Claude Code đang cố chạy gì trên máy của mình
    • Tự tay code một perceptron một lớp trong Vim
      • Lúc đầu rất tẻ nhạt, nhưng đã cải thiện nhờ mẹo và phím tắt học được từ một Recurser khác
      • Điều này đặc biệt hữu ích khi cần sửa file phút chót trong lúc đang chạy huấn luyện trên cloud GPU
    • Tham gia workshop Clojure do một người có hơn 15 năm kinh nghiệm dẫn dắt
      • Vì ít trải nghiệm với ngôn ngữ hàm, bản thân chủ đề đã rất thú vị
      • Sau phần giới thiệu ngắn, workshop chuyển sang mob programming, nơi người tham gia thay phiên nhau đóng góp 1-2 phút để giải bài toán
    • Tham gia các bài thuyết trình kỹ thuật 5 phút hằng tuần
      • Có nhiều chủ đề như "Running Rust Code", "GPUs for Dummies", "Typesafe APIs for Type B Personalities", "Some Useless Agents" (bài của tác giả)
      • Tính đến nay tác giả đã thuyết trình 2 lần (kiến trúc agent đơn giản, mở rộng hiệu quả công cụ MCP), và tuần này dự kiến nói về cách tối ưu GPU
    • Chỉ riêng việc lắng nghe dự án và sự nghiệp của những người tham gia khác cũng đã mở rộng hiểu biết về phạm vi vấn đề mà máy tính có thể giải quyết

6 tuần còn lại

  • Sau retreat, tác giả sẽ quay lại công việc triển khai agent vào production và chạy eval với các kỹ thuật và kỹ năng mới
  • Tác giả lo rằng 6 tuần còn lại sẽ không đủ để hoàn thành mọi mục trong danh sách
  • Tuy vậy, giá trị thực sự của RC không nằm ở việc hoàn tất hết mọi mục, mà ở chính việc dành thời gian cho coding

5 bình luận

 
nemorize 3 ngày trước

Code cho công việc thì giao hết cho AI agent, để nó chạy vòng lặp càng dài càng tốt.
Còn dự án cá nhân làm vì sở thích thì tôi tự phát triển trực tiếp, không dùng AI assistant hay cả tính năng tự động hoàn thành bằng AI (...)

 
savvykang 3 ngày trước

Tắt tính năng AI của VSCode và dùng Claude Code thì đúng là thoải mái hơn hẳn.

 

Tôi đã bỏ vim để chuyển sang vscode vì AI,
nhưng cảm giác như đã đánh mất niềm vui khi lập trình nên tôi quay lại với vim.
Tôi đang dùng AI như một assistant, và đúng là có cảm giác như đã tìm lại được niềm vui phát triển phần mềm.

 
overthinker1127 2 ngày trước

Ngược lại, sau khi dùng AI Agent thì tôi lại chuyển sang nvim. Xem source bằng nvim thoải mái hơn nhiều...

 
Ý kiến trên Hacker News
  • Trong học kỳ này tôi đang dạy assembly 6502 cho các học sinh 18 tuổi bằng một Apple II Plus được giả lập
    Các em trước đó đã học Python, cấu trúc dữ liệu và lập trình hướng đối tượng trong môi trường hiện đại
    Chỉ với khoảng 10 giờ học và thực hành, các em đã nắm được thanh ghi, lệnh, chế độ định địa chỉ, memory map, các routine monitor của Apple, rồi cùng nhau làm chương trình vẽ, quả bóng nảy, sprite tự tạo và cả phát hiện va chạm đơn giản bằng đồ họa độ phân giải thấp 40x40
    Bài tập là tự làm và trình diễn một trò chơi đơn giản như Snake hoặc Tetris, rồi thuyết trình cách nó hoạt động
    Ban đầu các em ghét line editor, nhưng chẳng bao lâu sau đã bắt đầu lập kế hoạch và thảo luận trước khi viết code
    Một thói quen mà tôi luôn nhấn mạnh trong các lớp trước nhưng không mấy hiệu quả, lại tự nhiên hình thành khi không còn công cụ mạnh
    Về sau các em còn nói rằng không cần hiển thị toàn bộ code trên màn hình thì trong đầu vẫn nhớ được code
    Cuối cùng rồi các em cũng sẽ quay lại công cụ hiện đại, nhưng tôi cảm thấy trải nghiệm này rõ ràng có ý nghĩa lớn

    • Điều tôi rút ra khi dạy lập trình là Python khá lưng chừng khi làm ngôn ngữ đầu tiên
      Lý do lớn nhất là người học luôn phải ý thức về kiểu dữ liệu, nhưng Python lại có thể làm mờ phần đó
      Khoảng trắng lúc thì bắt buộc lúc thì không, với người quen thì tự nhiên như hơi thở nhưng với người mới có thể khá rối
    • Tôi cũng học một lớp gần như y hệt cách đây 9 năm, và đó là một trong những trải nghiệm hữu ích nhất trong chương trình cử nhân CS
      Chính môi trường cấp thấp và bộ công cụ hạn chế đã tạo cho tôi thói quen suy nghĩ trước khi viết code
      Đến giờ khi làm greenfield, tôi vẫn lấy bút và giấy ô ly ra trước để phác họa các hàm hay lớp khả dĩ thành một đồ thị lỏng và nối chúng bằng mũi tên
      Dĩ nhiên nếu đẩy quá xa thì nó lại thành một dạng khác của waterfall planning, nên điều độ là quan trọng
      Chỉ cần bỏ vài giờ nghĩ trước về cấu trúc cũng có thể giảm đáng kể thời gian code thực tế
      Hầu như chưa bao giờ sản phẩm cuối cùng giống hệt bản thiết kế trên giấy, nhưng chính quá trình nghĩ bức tranh lớn trước đã giúp tăng năng suất
      Khi scaffold ngay trong editor thì rất nhanh bị cuốn vào triển khai thật, còn viết trên giấy thì đằng nào cũng phải gõ lại nên tôi có thể tránh bị phân tâm bởi những chuyện lặt vặt như tên biến hay chọn method
      Cả khi vibe coding vài lần, cách này cũng đặc biệt hữu ích vì giúp tôi đưa ra prompt cụ thể và tập trung hơn nhiều
    • Lúc đầu tôi đã nghĩ tại sao lại bắt sinh viên dùng line editor, chắc chắn phải có plugin VS Code hỗ trợ tô sáng cú pháp chứ
      Nhưng đến đoạn sinh viên nói code đã nằm trong đầu họ thì tôi đổi ý
      Tôi cũng nhớ Zed Shaw từng nói điều tương tự, rằng code viết không có IDE trông kỳ lạ là lại tốt hơn
      Theo mạch đó, tôi từng học bằng những cuốn như "From Nand to Tetris", và nó thực sự giúp ích rất nhiều để hiểu máy tính, assembler và compiler vận hành ra sao
    • Một trong những trải nghiệm ấn tượng nhất hồi đầu sự nghiệp kỹ sư của tôi là làm việc cùng một kỹ sư rất kỳ cựu
      Mỗi khi nhận bài toán, ông ấy không gõ ngay mà nghĩ trước, ghi vài nét lên giấy, thậm chí còn đi dạo rồi mới ngồi vào máy
      Sau đó ông gần như gõ một mạch rồi cuối cùng chỉ việc compile, và thực sự thường chạy được
      Ngay cả lỗi gõ sai cũng hiếm
      Trải nghiệm này khiến tôi cảm nhận rất rõ tầm quan trọng của việc dựng không gian vấn đề và chương trình trong đầu trước rồi mới suy luận
      Khi đó kết quả mong đợi trở nên rõ ràng hơn, và nếu có điều gì bất thường xảy ra thì cũng nhận ra nhanh hơn
    • Mỗi lần tôi cố đưa môn ngôn ngữ assembly vào chương trình đại học đều là một cuộc chiến khó khăn
      Cấp trên thường bỏ môn này với lý do quá khó và giờ chẳng ai còn dùng nữa
      Dù vậy tôi vẫn lén nhét từng chút vào các môn khác như lập trình hệ thống, ngôn ngữ máy tính và kiến trúc máy tính
      Thời tôi lớn lên, assembly là một phần của chương trình đào tạo và đóng vai trò bắc cầu giữa phần cứng với các ngôn ngữ bậc cao như C/C++
      Nó giúp hiểu vì sao một số tính năng ngôn ngữ lại tồn tại, và nhiều thành phần của ngôn ngữ thực sự hoạt động như thế nào
      Trên hết, như các bình luận phía trên nói, nó cực kỳ tuyệt vời ở chỗ rèn cho người học cách tư duy theo từng dòng CPU thực thi
      Dù môn chính quy thường không thắng nổi, tôi vẫn hy vọng ít nhất mình đã gieo được hạt giống trong sinh viên
      Tôi tin ai cũng đáng học ít nhất một loại assembly một lần trong đời
  • Tôi ước đã có nhiều đầu tư hơn cho workflow autocomplete bằng AI
    Nó là một điểm trung gian khá tốt
    Cái hiện nay bị gọi là kiểu cũ ấy, nếu nhìn rộng ra, tôi vẫn thấy hoàn toàn đủ sức cạnh tranh so với workflow kiểu agent
    Khi tự tay gõ, bạn giữ được hiểu biết về codebase tốt hơn nhiều, và nhờ quá trình chủ động nhớ lại rồi kiểm chứng, mức độ hiểu khái niệm cũng sâu hơn

    • Dạo này tôi khá thích đảo ngược workflow agent
      Tôi tự viết code, còn giao cho agent làm code review
      Làm vậy tôi vẫn giữ được cảm giác viết code và hiểu codebase, trong khi nó lại bắt bug khá tốt trước khi commit
    • Tôi cũng có cảm giác y hệt
      Cursor thời đầu thực sự rất ấn tượng, nhưng từ đó đến nay autocomplete gần như chững lại, và ngay cả Cursor mới nhất cũng đang dần nghiêng về phía agent như các công cụ khác
      Tôi hy vọng một ngày nào đó khi diffusion model có thêm đà thì các workflow gần với autocomplete sẽ lại sôi động trở lại
      Mercury model của Inception Labs phản hồi gần như tức thì nên đến giờ vẫn có cảm giác hơi như phép màu
      Chỉ tiếc là vẫn thiếu độ tinh xảo ở mức Cursor và khả năng tích hợp editor sâu
      Ngoài ra, dòng diffusion có vẻ thực sự rất hợp để chạy local, nên việc hầu như không có open-weight model đáng kể cũng khá đáng tiếc
    • Trải nghiệm của tôi cũng tương tự
      Khi tôi tự viết phần glue code nhàm chán, tôi có được một bản đồ dự án trong đầu
      Ngược lại, nếu agent dựng quá nhiều cấu trúc thì lúc đầu có thể chạy được, nhưng một tuần sau chỉ cần sửa nhỏ là lại phải đi tìm xem nó đã nhét thứ gì vào đâu
    • Tôi thấy autocomplete bằng AI không hay lắm
      Mọi người nhanh chóng chuyển sang hướng khác là có lý do cả, và rốt cuộc tôi không thấy đó là giao diện hữu ích
    • Tôi hiểu logic của việc code thủ công, nhưng với tôi nó giống như băng qua lục địa bằng ô tô thay vì đi máy bay
      Một khi đã thử máy bay rồi thì thực sự rất khó quay lại
  • Tôi thấy đây là một trong những tiêu đề u ám nhất tôi từng thấy ở đây

    • Điều thú vị là bình luận này có thể được hiểu theo hai hướng hoàn toàn trái ngược
      Có thể là buồn vì hand-coding đã trở nên xa lạ đến mức đáng để viết blog, hoặc ngược lại là một người theo chủ nghĩa AI cực đoan đang mỉa mai việc con người viết code
      Nhìn lịch sử bài viết thì có lẽ cách hiểu đầu tiên đúng hơn
    • Có khi bây giờ nói tự viết Python lại đồng nghĩa với viết mà không có LLM
      Nó làm tôi nhớ đến kiểu từ ngữ từng thịnh hành như wild swimming, cứ như mọi thứ đã đi quá xa
      Thật sự giống một tình huống jumped the shark
    • Tôi vẫn nghĩ Hacker News là nơi để chia sẻ suy nghĩ và thảo luận với người khác, nên thấy kiểu phản ứng này tôi có cảm giác nó đang giống khu bình luận Facebook hơn
      Dù vậy, tôi vẫn thấy đây là một đóng góp rất ấn tượng
    • Lúc đầu tôi cũng bấm vào chỉ để xem có phải trò đùa không
      Xem xong thì thật sự cạn lời
    • Tôi thấy đây mới chỉ là khởi đầu
      Chẳng mấy chốc người ta sẽ còn đùa về một thế giới nơi chỉ vì nói đến hand-coding mà bị tống vào bệnh viện tâm thần
  • Những năm đầu sự nghiệp của tôi chủ yếu là viết Perl bằng vi trên Solaris chạy SPARC, mà còn là vi chứ không phải vim
    Perl Cookbook của O’Reilly gần như là kim chỉ nam duy nhất, diễn đàn Internet cũng không nhiều, công cụ tìm kiếm thì nguyên thủy nên lúc bị kẹt còn khó tìm trợ giúp hơn nhiều
    Bù lại, môi trường đó khiến tôi học rất sâu cú pháp Perl, công cụ terminal, và đặc biệt là các tổ hợp phím vi
    Không có syntax highlighting hay IntelliSense, và có lẽ vì thế mà mọi thứ càng in sâu hơn
    Giờ nhìn lại thì thời đó nhiễu và xao nhãng ít hơn rất nhiều
    Dĩ nhiên cũng có thể vì hồi đầu sự nghiệp kỳ vọng thấp hơn nên mới thấy vậy, nhưng tôi vẫn cảm giác bây giờ mọi thứ đã trở nên quá nhiều tầng lớp và phức tạp

    • Với tôi điểm khởi đầu là GW-BASIC, và gần như chẳng có editor theo nghĩa hiện nay
      Đó là một trải nghiệm khá thuần khiết, với phần thưởng tức thì, tốc độ phát triển nhanh và không có những lớp trung gian thừa thãi; chính điều đó đã kéo tôi vào con đường này
      Trớ trêu là agentic coding lại đem trở lại phần nào cảm giác hứng khởi khi ấy
      Vì tôi không còn phải tự mình vật lộn với mọi cân nhắc enterprise phức tạp nữa, nên mối liên kết giữa suy nghĩ và kết quả lại gần nhau hơn
  • Tôi thấy sự thay đổi của ngành thật đáng kinh ngạc
    Chỉ mới 2 năm trước đây gần như là điều mọi lập trình viên đều có thể nói, vậy mà giờ người nói mình code bằng tay lại trông như loài bên bờ tuyệt chủng

    • Tôi đặc biệt lo về việc trí nhớ cơ bắp bị mai một
      Nhất là với các công nghệ và ngôn ngữ mới tôi dùng trong một năm qua, càng dễ tạo ra kết quả thì tôi lại càng có cảm giác mình đang tích lũy nợ tri thức
      Tôi thực sự lo không biết thế hệ kỹ sư phần mềm tiếp theo rồi sẽ học được sự hiểu biết sâu về những thứ này bằng cách nào, hay có khi sẽ không học được nữa
    • Với tôi, viết bằng tay của 2 năm trước giống như việc code không có LLM của hiện tại
      Nếu ví với thế hệ trước nữa thì nó giống như code không có IDE, mà trên thực tế kiểu đó cũng đã khá hiếm rồi
  • Tôi khá ủng hộ AI nói chung, đặc biệt là GenAI, nhưng vẫn dành nhiều thời gian để tự code bằng tay
    Cùng lắm là bật Copilot hỗ trợ
    Đôi khi tôi làm spec-driven development bằng các công cụ như SpecKit + OpenCode, hoặc đơn giản là vibe code
    Dù vậy tôi vẫn chưa định buông bỏ trách nhiệm phải hiểu code, cũng chưa định từ bỏ chính năng lực tự viết code
    Vì thế gần đây tôi còn mua thêm vài cuốn sách về LISP và Java, trước đó thì mua sách về Forth
    Ít nhất trong một thời gian nữa, mà có thể là mãi mãi, tôi chưa có ý định ngừng code hoàn toàn

    • Tôi nghĩ trách nhiệm của mình không nằm ở việc tự tay kiểm từng dòng code, mà là bảo đảm code đáp ứng yêu cầu chức năng và phi chức năng
      Trọng tâm là hiểu hành vi, không phải hiểu cách triển khai
      Việc xác minh đó được thực hiện bằng unit test, integration test và load test tự động
      Có người cho rằng tôi ngây thơ khi nói mình vibe coded một trang quản trị web nội bộ mà vẫn đáp ứng yêu cầu bảo mật dù chưa nhìn một dòng code nào
      Nhưng yêu cầu là người có quyền truy cập vào trang phải làm được mọi thứ, quyền truy cập thì được bảo vệ bằng thông tin xác thực Amazon Cognito, và Lambda cung cấp trang này được gắn role đặc quyền tối thiểu
      Nếu hai bất biến đó bị phá vỡ thì theo tôi gần như phải là Claude vừa tìm ra một lỗ hổng AWS cực lớn
  • Tôi cố tận dụng AI tối đa để làm được nhiều thứ, nhưng đồng thời vẫn luôn dành thời gian rà lại xem code AI tạo ra có vượt qua ngưỡng tải nhận thức của tôi hay không
    Quá trình đó gồm cả việc dọn dẹp code và viết tài liệu, và tôi đang làm cho nhiều phần trở nên dễ hơn dựa trên ví dụ AGENTS.md này
    Dù vậy tôi vẫn nhận ra được lúc mọi thứ bắt đầu đi chệch hướng, và khi đó tôi sẽ tự cầm lái lại
    Và khi hết credit thì đến lượt tôi thực sự làm việc
    Lúc ấy code đã được sắp xếp gọn, abstraction cũng hợp lý, comment cũng hữu ích, nên rất thuận lợi để tiếp tục kiểu code hữu cơ của con người trên đó
    Giờ tôi còn bảo AI chuẩn bị sẵn sân khấu trước mỗi khi gần chạm hạn mức
    Trước đây khi hết credit, thứ còn lại thường là loại code mà muốn hiểu phải ngồi học, rất bực bội; còn giờ thì tôi lại gần như mong chờ lần brain time hand-out tiếp theo
    Nghe có thể hơi kỳ, nhưng với tôi nó cũng là một dạng teamwork
    Tôi có thể dùng gói đắt hơn, nhưng tôi muốn bộ não mình tiếp tục được hoạt động

    • Trong những nguyên tắc được trích, phần đừng lạm dụng DRY khá thú vị
      Tôi đồng ý với nguyên tắc đó, nhưng ít nhất với Claude thì tôi lại cảm thấy nó hay sao chép logic quá thường xuyên, đến mức cần phải điều hướng theo chiều ngược lại
    • Tôi khó mà coi đó là teamwork
      Khi LLM viết code thay tôi, phần code đó với tôi gần như là một hộp đen khó động vào
      Nếu nó chạy được thì tôi dùng, nhưng không thể tin hẳn, còn hỏng thì chỉ thấy bực bội
      Cuối cùng cách phù hợp với tôi là tôi luôn cầm vô lăng, còn LLM đóng vai trợ lý trả lời câu hỏi, cùng brainstorm ý tưởng, và giúp tôi diễn đạt những khái niệm mà tôi đã hiểu sang cú pháp của một ngôn ngữ cụ thể
      Thực ra so với việc hiểu khái niệm, tôi lúc nào cũng thấy hơi vất vả hơn ở khâu chuyển nó thành cú pháp
    • Cảm ơn vì đã chia sẻ
      Tôi cũng đang nghĩ về cách giao một phần cho agent nhưng cố ý giữ một phần việc lại cho mình để bộ não tiếp tục hoạt động
      Có lẽ tôi nên thử tự làm một skill hoặc hook cho Claude Code
  • Tôi thấy việc có thể dành 3 tháng cho một hành trình tự định hướng để học thật sâu là điều rất tuyệt
    Những kỹ năng chiều sâu như thế này có lẽ vẫn có giá trị lâu dài, và tôi vẫn chưa chắc lần thay đổi này có thật sự là cùng một kiểu trừu tượng hóa như việc chuyển từ assembly sang C hay không
    Phần lớn code của tôi dạo này do LLM sinh ra, nhưng đến cuối ngày tôi thành thật mà nói là không thấy vui, không thấy thành tựu hay thỏa mãn gì mấy
    Đồng thời, tôi cũng nhận ra phần tôi thật sự thích ở việc code vốn chỉ khoảng 5–10%, còn lại là những công việc chán ngắt, nửa cơ học, có tác dụng chống đỡ cho phần lõi thú vị
    Nếu nhìn toàn bộ lịch sử loài người thì chính thời kỳ làm việc với máy tính cũng chỉ là một khoảnh khắc rất ngắn, nên tôi tự hỏi 100 năm nữa người ta sẽ nhìn về thời đại hand-coding như thế nào
    Có thể nó chỉ còn là chú thích bên lề, hoặc bị gom chung với toàn bộ thời kỳ trước khi máy móc tự động hóa chính nó

    • Tôi nghĩ biến chuyển hiện nay có thể giống với sự chuyển dịch từ assembly sang ngôn ngữ biên dịch trong quá khứ
      Trước đây người ta từng tự viết assembly, nhưng sau đó chuyển sang các ngôn ngữ biên dịch như C, còn assembly thì vẫn hữu ích nhưng trở thành kỹ năng ngách
      Giờ đây, cũng như cách ta giao code cho compiler và hầu như không nhìn đầu ra nội bộ của nó, tương lai có thể là phần lớn việc phát triển sẽ chuyển lên lớp trừu tượng LLM
      Năng lực cốt lõi cũng có thể chuyển sang viết prompt tốt, quản lý context window, và vận hành agent với memory
      Một số lập trình viên có thể vẫn đọc và tìm ra vấn đề trong code do LLM tạo, nhưng phần lớn có thể sẽ không làm được
      Cảm xúc của tôi cũng khá lẫn lộn
      Từ khi ChatGPT ra mắt cho đến vài tháng trước tôi vẫn khá hoài nghi về lập trình bằng LLM, và dù có model mới ra thì tôi vẫn thấy như chỉ là những biến thể khác nhau của cùng một loại đầu ra chất lượng thấp
      Nhưng gần đây có vẻ như các model đã vượt qua một ngưỡng nào đó, và tôi cũng đã bắt đầu dùng Claude một cách dè dặt; nó thực sự giúp giảm đáng kể thời gian làm tính năng hoặc xác định vị trí bug chỉ từ log
      Tôi vẫn không đồng ý với những lời cường điệu kiểu coding đã được giải quyết, nhưng ít nhất cũng có cảm giác mình đang chứng kiến một trong những thay đổi lớn nhất kể từ khi ngôn ngữ bậc cao xuất hiện
  • Tôi đã bắt đầu dùng Zed như một kiểu thỏa hiệp nửa vời
    Từ giờ tôi định dùng AI nhiều hơn cho lập kế hoạch và gợi ý các bước thay vì cho chính việc triển khai
    Dạo này tôi thấy cả người không làm kỹ thuật cũng bắt đầu dùng Claude để làm ứng dụng, và nhìn vào Openclaw cùng trào lưu ám ảnh agent, tôi cảm thấy tiếp tục đi theo con đường quá sa đà vào AI không thật sự thực dụng
    Trong những mặt khác của cuộc sống, tôi luôn là kiểu người để ý đến chi tiết nội bộ và được đánh giá cao vì có thể trực tiếp xắn tay giải quyết vấn đề mới
    Tôi tò mò thị trường rồi sẽ thích nghi ra sao, và mọi người sẽ truyền đạt cũng như chứng minh loại năng lực xử lý sắc thái này như thế nào

  • Khi thấy trên trang Recurse Center có câu “không có giáo viên hay chương trình học cố định, chỉ yêu cầu cam kết toàn thời gian trong suốt kỳ retreat”, tôi thấy tò mò
    Tôi muốn biết một người đang làm full-time thì thường tham gia kiểu coding retreat này như thế nào
    Tôi cũng tự hỏi liệu đây chủ yếu có phải là chương trình dành cho người mới vào ngành hoặc đang ở khoảng nghỉ giữa hai công việc hay không
    Bài viết chủ yếu kể về việc tác giả đã làm gì ở retreat, nhưng ngược lại nó lại khiến tôi muốn tự mình đến thử

    • Tôi là đồng sáng lập Recurse Center, và xin trả lời rằng đa số mọi người tham gia vào giai đoạn giữa hai công việc
      Khá nhiều người nghỉ việc hẳn để đi RC, hoặc nộp đơn sau khi mất việc
      Cũng có nhiều người tận dụng sabbatical chính thức, garden leave, hay kỳ nghỉ hè của sinh viên đại học và cao học
      Freelancer, contractor độc lập và người đã nghỉ hưu cũng đến không ít
      Cũng có người tham gia để vào ngành, nhưng phần lớn người tham gia đã từng làm lập trình viên rồi
      Độ tuổi tham gia trải từ 12 đến đầu tuổi 70, nhưng nhóm chính là từ 20 đến 40 tuổi
    • Đúng vậy, nhìn chung mọi người thường đi vào giai đoạn chuyển việc
      Bạn có thể xem thêm thông tin chi tiết về người tham gia trên trang giới thiệu Recurse Center
      Hoặc cách thực tế hơn là phải có thể xin một kỳ nghỉ kiểu sabbatical khoảng 6 tuần và sau đó quay lại công việc hiện tại