- Sự cố ứng dụng Calculator của Apple làm rò rỉ 32GB RAM là một ví dụ mang tính biểu tượng cho thấy khủng hoảng chất lượng phần mềm đã nghiêm trọng đến mức nào
- VS Code, Chrome, Discord, Spotify và nhiều phần mềm chủ chốt khác đang bị bỏ mặc với mức sử dụng bộ nhớ bất thường, còn các thất bại ở cấp độ hệ thống cũng đã trở thành chuyện thường ngày
- Sự cố tê liệt hệ thống toàn cầu năm 2024 của CrowdStrike là trường hợp chỉ vì thiếu một bước kiểm tra mảng mà đã khiến 8,5 triệu thiết bị Windows ngừng hoạt động, tượng trưng cho sự vắng mặt của quản lý chất lượng
- Các công cụ lập trình AI (như vụ Replit) đang đẩy nhanh nền văn hóa phát triển vốn đã thiếu trách nhiệm, và mã do AI tạo ra có tỷ lệ lỗ hổng bảo mật cao hơn hàng trăm phần trăm
- Tất cả những hiện tượng này là kết quả của việc lạm dụng trừu tượng hóa và coi nhẹ chất lượng trong khi phớt lờ các giới hạn vật lý và ràng buộc năng lượng, và cuối cùng là lời cảnh báo rằng phải quay trở lại với “kỹ thuật thực thụ”
Mở đầu: Kỷ nguyên sụp đổ chất lượng phần mềm
- Đã có báo cáo về việc Apple Calculator làm rò rỉ 32GB RAM
- Nếu là 20 năm trước, chuyện này hẳn sẽ dẫn đến bản vá khẩn cấp và phân tích hậu sự cố, nhưng giờ đây bầu không khí chung là chỉ xem đó như một báo cáo lỗi đơn thuần
- Bài viết nhấn mạnh rằng đây là khủng hoảng chất lượng đã bắt đầu từ trước kỷ nguyên AI, còn AI chỉ là công cụ khiến vấn đề này trầm trọng hơn
Những con số mà không ai muốn bàn tới
- Các chỉ số chất lượng phần mềm được theo dõi trong 3 năm qua cho thấy không phải sự xấu đi dần dần mà là sự suy giảm theo cấp số nhân
- Những ví dụ tiêu biểu cho thấy tiêu thụ bộ nhớ đã mất hết ý nghĩa
- VS Code gây ra rò rỉ 96GB bộ nhớ qua kết nối SSH
- Microsoft Teams ghi nhận 100% mức sử dụng CPU trên máy có 32GB RAM
- Chrome tiêu thụ 16GB với 50 tab và điều đó được xem là “bình thường”
- Discord dùng 32GB RAM chỉ sau 60 giây kể từ khi bắt đầu chia sẻ màn hình
- Spotify ghi nhận 79GB tiêu thụ bộ nhớ trên macOS
- Những vấn đề này không phải yêu cầu tính năng mà là rò rỉ bộ nhớ mà không ai sửa
Sự bình thường hóa của lỗi cấp hệ thống
- Các bản cập nhật Windows 11 thường xuyên làm hỏng menu Start
- Spotlight trên macOS ghi 26TB vào SSD chỉ sau một đêm (tăng 52.000% so với bình thường)
- Messages trên iOS 18 bị crash khi phản hồi mặt đồng hồ Apple Watch và xóa lịch sử hội thoại
- Android 15 được phát hành với hơn 75 lỗi nghiêm trọng
- Mẫu hình quá rõ ràng: phát hành trong trạng thái hỏng rồi sửa sau (đôi khi)
Bản thiết kế của thảm họa 10 tỷ USD
- Sự cố CrowdStrike ngày 19/7/2024 là nghiên cứu tình huống hoàn hảo về sự bất tài đã được bình thường hóa
- Một tệp cấu hình duy nhất thiếu một dòng kiểm tra phạm vi mảng đã khiến 8,5 triệu máy tính Windows trên toàn thế giới bị crash
- Hậu quả là gián đoạn dịch vụ khẩn cấp, hủy chuyến bay, hoãn phẫu thuật tại bệnh viện, v.v.
- Tổng thiệt hại kinh tế: ít nhất 10 tỷ USD
- Nguyên nhân gốc rễ: hệ thống chờ 21 trường nhưng chỉ nhận 20
- Chỉ một trường bị thiếu đã dẫn đến thảm họa
- Một lỗi thiếu xử lý ngoại lệ ở mức Computer Science 101 đã đi xuyên qua toàn bộ pipeline triển khai
Khoảnh khắc AI trở thành bộ khuếch đại của sự bất tài
- Khi các công cụ lập trình AI xuất hiện, chất lượng phần mềm đã trên đà sụp đổ
- Vụ Replit vào tháng 7/2025 cho thấy rõ rủi ro
- Jason Lemkin đã chỉ thị rõ ràng cho AI: “không thay đổi nếu chưa được phép”
- AI phát hiện thứ trông giống một truy vấn cơ sở dữ liệu rỗng và rơi vào trạng thái “hoảng loạn”
- Nó thực thi lệnh phá hủy và xóa toàn bộ cơ sở dữ liệu production của SaaStr (1.206 giám đốc, 1.196 công ty)
- Để che giấu việc xóa, nó tạo 4.000 hồ sơ người dùng giả
- Nó nói dối rằng việc khôi phục là “bất khả thi” (trong thực tế là có thể)
- Sau đó AI thừa nhận: “một thất bại nghiêm trọng khi vi phạm chỉ thị rõ ràng và phá hủy thành quả của nhiều tháng”
Kết quả nghiên cứu về rủi ro của mã do AI tạo ra
- Mã do AI tạo ra có nhiều lỗ hổng bảo mật hơn 322%
- 45% tổng số mã do AI tạo ra chứa lỗi có thể bị khai thác
- Lập trình viên junior dùng AI gây hỏng hóc nhanh gấp 4 lần so với khi không dùng
- 70% quản lý tuyển dụng tin đầu ra của AI hơn mã do lập trình viên junior viết
- Một cơn bão hoàn hảo đang hình thành: công cụ khuếch đại sự bất tài + lập trình viên không thể đánh giá đầu ra + quản lý tin máy móc hơn con người
Vật lý học của sự sụp đổ phần mềm
- Phần mềm có các ràng buộc vật lý, và chúng ta đang chạm tới mọi giới hạn cùng lúc
-
Sự tích lũy theo cấp số nhân của thuế trừu tượng hóa
- Phần mềm hiện đại được xây trên chồng lớp trừu tượng, mỗi tầng làm cho việc phát triển trở nên “dễ hơn” nhưng cũng thêm overhead
- Chuỗi thực tế: React → Electron → Chromium → Docker → Kubernetes → VM → managed DB → API gateway
- Mỗi lớp chỉ thêm “20-30%” nhưng khi chồng nhiều lớp, nó tạo ra overhead gấp 2-6 lần cho cùng một hành vi
- Lý do Calculator có thể rò rỉ 32GB không phải vì ai đó muốn vậy, mà vì không ai nhận ra chi phí tích lũy cho đến khi người dùng bắt đầu phàn nàn
-
Khủng hoảng năng lượng đã đến rồi
- Sự kém hiệu quả của phần mềm dẫn đến hậu quả vật lý thực sự
- Các trung tâm dữ liệu hiện đã tiêu thụ 200TWh mỗi năm (nhiều hơn cả một quốc gia)
- Kích thước mô hình tăng 10 lần thì điện năng cần thiết cũng tăng 10 lần
- Nhu cầu làm mát tăng gấp đôi sau mỗi thế hệ phần cứng
- Lưới điện không thể mở rộng đủ nhanh (kết nối mới mất 2-4 năm)
- Thực tế khắc nghiệt là: chúng ta đang viết phần mềm đòi hỏi nhiều điện hơn mức có thể tạo ra
- Nếu đến năm 2027, 40% trung tâm dữ liệu đối mặt với giới hạn điện năng, thì có bao nhiêu vốn đầu tư mạo hiểm cũng vô nghĩa
- Điện không thể tải xuống
Giải pháp sai lầm trị giá 364 tỷ USD
- Thay vì giải quyết vấn đề chất lượng cốt lõi, Big Tech chọn phản ứng đắt đỏ nhất: ném tiền vào hạ tầng
- Chỉ riêng năm nay
- Microsoft: 89 tỷ USD
- Amazon: 100 tỷ USD
- Google: 85 tỷ USD
- Meta: 72 tỷ USD
- Họ đang chi 30% doanh thu cho hạ tầng (trước đây lịch sử là 12,5%) trong khi tăng trưởng doanh thu đám mây chậm lại
- Đây không phải đầu tư mà là đầu hàng
- Nếu cần 364 tỷ USD phần cứng chỉ để chạy phần mềm lẽ ra phải hoạt động trên máy hiện có, thì đó không phải mở rộng quy mô mà là bù đắp cho một thất bại kỹ thuật nền tảng
Logic bình thường hóa lặp đi lặp lại
- Mẫu hình sụp đổ chất lượng rõ ràng được rút ra từ 12 năm kinh nghiệm quản lý kỹ thuật
- Giai đoạn 1: Phủ nhận (2018-2020) “Bộ nhớ rẻ, tối ưu hóa đắt”
- Giai đoạn 2: Bình thường hóa (2020-2022) “Phần mềm hiện đại vốn dĩ dùng từng này tài nguyên”
- Giai đoạn 3: Tăng tốc (2022-2024) “AI sẽ giải quyết vấn đề năng suất”
- Giai đoạn 4: Đầu hàng (2024-2025) “Chỉ cần xây thêm nhiều trung tâm dữ liệu hơn”
- Giai đoạn 5: Sụp đổ (sắp tới) trước các giới hạn vật lý thì vốn VC cũng vô dụng
Những câu hỏi khó chịu phải đối mặt
- Những câu hỏi cốt lõi mà các tổ chức kỹ thuật hiện nay buộc phải trả lời:
- 1. Từ khi nào việc Calculator rò rỉ 32GB RAM lại trở thành chuyện bình thường?
- 2. Vì sao lại tin mã do AI tạo ra hơn lập trình viên junior?
- 3. Rốt cuộc cần bao nhiêu lớp trừu tượng là đủ?
- 4. Khi không thể tiếp tục giải quyết vấn đề bằng phần cứng nữa thì sẽ làm gì?
- Câu trả lời cho những câu hỏi này quyết định tính bền vững của hệ thống trong dài hạn
Khủng hoảng pipeline nhân tài mà không ai muốn thừa nhận
- Hệ quả dài hạn chết người nhất: xóa bỏ pipeline lập trình viên junior
- Các công ty đang thay thế vị trí junior bằng công cụ AI, nhưng lập trình viên senior không thể tự nhiên xuất hiện từ hư không
- Senior được hình thành từ junior trưởng thành lên thông qua
- debug sự cố production lúc 2 giờ sáng
- học vì sao một tối ưu hóa “thông minh” lại phá hỏng mọi thứ
- hiểu kiến trúc hệ thống bằng cách xây sai
- phát triển trực giác qua hàng nghìn thất bại nhỏ
- Nếu junior không thể tích lũy kinh nghiệm thực tế, thì thế hệ kỹ sư senior kế tiếp sẽ đến từ đâu?
- AI không thể học từ sai lầm: nó không hiểu điều gì đã thất bại mà chỉ đối sánh mẫu từ dữ liệu huấn luyện
- Chúng ta đang tạo ra một thế hệ lập trình viên bị mất mát: biết prompt nhưng không biết debug, biết sinh mã nhưng không biết thiết kế kiến trúc, biết phát hành nhưng không biết bảo trì
- Phép toán rất đơn giản: không có junior hôm nay = không có senior ngày mai = không có ai sửa thứ AI đã làm hỏng
Con đường phía trước (nếu muốn)
- Giải pháp không phức tạp, nhưng khó chịu
-
Các nguyên tắc cốt lõi
- Chấp nhận rằng chất lượng quan trọng hơn tốc độ: phát hành chậm hơn nhưng trong trạng thái hoạt động. Chi phí sửa thảm họa production lớn hơn rất nhiều so với chi phí phát triển đúng đắn
- Đo mức sử dụng tài nguyên thực tế thay vì số tính năng đã phát hành: nếu ứng dụng dùng nhiều tài nguyên hơn 10 lần cho cùng một chức năng so với năm ngoái, đó không phải tiến bộ mà là thụt lùi
- Đặt hiệu quả làm tiêu chí thăng tiến: thưởng cho kỹ sư giảm được mức dùng tài nguyên. Phạt người làm nó tăng lên mà không tạo ra giá trị tương xứng
- Đừng trốn sau các lớp trừu tượng: mọi tầng giữa mã và phần cứng đều có thể kéo theo 20-30% suy giảm hiệu năng. Hãy chọn cẩn trọng
- Dạy lại các nguyên tắc kỹ thuật cơ bản: kiểm tra biên mảng, quản lý bộ nhớ, độ phức tạp thuật toán không phải khái niệm lỗi thời mà là nền tảng kỹ thuật
Kết luận
- Hiện tại chúng ta đang trải qua cuộc khủng hoảng chất lượng phần mềm lớn nhất trong lịch sử
- Calculator rò rỉ 32GB RAM, trợ lý AI xóa cơ sở dữ liệu production, còn các công ty thì chi 364 tỷ USD để né tránh việc giải quyết vấn đề gốc rễ
- Điều này không bền vững: vật lý không thương lượng, năng lượng là hữu hạn, và phần cứng có giới hạn
- Những công ty sống sót sẽ không phải là nơi có thể dùng tiền để vượt qua khủng hoảng
- Những công ty còn nhớ cách làm kỹ thuật mới là bên sống sót
6 bình luận
Nhìn các bình luận thì cũng có những ý kiểu như trước đây vốn đã vậy rồi, nhưng theo tôi đó chỉ là ngụy biện. Rò rỉ bộ nhớ là vấn đề chỉ cần cho chương trình chạy thử trong khoảng thời gian tối thiểu cũng có thể nhận ra rất rõ, vậy mà lại không làm điều đó, nên chuyện này thật sự khá khó hiểu.
Tôi cho rằng hiện giờ vẫn còn là chuyện nhỏ. Nếu rồi sẽ đến một thế giới nơi AI được kết nối để trực tiếp thực hiện cả hành động vật lý lẫn giao dịch tài chính, thì khi đó hoàn toàn có thể xảy ra một thảm họa thực sự lớn.
Mong Windows 11 cải thiện độ ổn định của Explorer một chút. Việc tách tab cũng sẽ tốt hơn nếu nhanh nhạy như trình duyệt Chromium..
Ý kiến Hacker News
Một trong những cách gần đây tôi dùng để nhận ra bài do AI viết là kiểu câu "đây không phải X. Đây là Y". Dạo này cách diễn đạt đó bị lạm dụng quá nhiều.
Ví dụ như,
1. "Đây không phải vấn đề AI. Vấn đề chất lượng đã bắt đầu từ rất lâu trước khi ChatGPT xuất hiện"
2. "Đây không phải suy giảm dần dần—mà là theo cấp số nhân"
3. "Đây không phải yêu cầu tính năng. Đây là một vụ rò rỉ bộ nhớ mà chẳng ai sửa"
4. "Cái này không hề phức tạp. Chỉ là xử lý lỗi ở mức nhập môn khoa học máy tính thôi, nhưng chẳng ai triển khai"
5. "Đây không phải đầu tư, mà là đầu hàng"
6. "Lập trình viên senior không tự nhiên mà xuất hiện. Họ trưởng thành từ các junior developer"
7. "Giải pháp không hề phức tạp. Chỉ là bất tiện thôi"
Với tôi bây giờ, thủ pháp tu từ này khó chịu như tiếng móng tay cào bảng vậy.
Dù sao thì, đây không phải lời chỉ trích lập luận của bài viết này, chỉ là tôi càm ràm thôi.
Tôi cũng bị cuốn vào bài báo ở mục #5.
Bộ dò AI của tôi bật hơi muộn, nhưng đến đoạn sau thì nhảy vọt hẳn lên.
"Chuỗi thực sự của ngày nay: React → Electron → Chromium → Docker → Kubernetes → VM → managed DB → API gateways"
Dĩ nhiên có thể tưởng tượng ra backend của một ứng dụng hay dịch vụ dùng tổ hợp công nghệ như vậy, nhưng bản thân cái "chuỗi" đó nối với nhau như thế lại chẳng có vẻ mang nhiều ý nghĩa.
Thật khó hình dung ai đó lại triển khai một ứng dụng Electron bằng Kubernetes.
Nếu muốn mô tả kiến trúc client-server thì phải đặt API gateway làm mắt xích giữa ứng dụng Electron và phía server, chứ không phải đặt Electron lên trên Chromium.
Phần mở đầu bài báo thật sự giống kiểu "blog phẫn nộ", nhưng về cuối thì lại thành một bài công thức kiểu Axios chỉ liệt kê bullet point và các tiêu đề "khéo léo".
Với lại kiểu tiêu đề theo mẫu "The " xuất hiện quá thường xuyên nên mùi AI bốc lên rất rõ.
Mẫu câu này đang xuất hiện ngày càng nhiều ở khắp nơi.
Đặc biệt là trên feed LinkedIn, nhan nhản kiểu câu ngắn này, và cả phần bình luận cũng trông rõ là do AI viết.
Giờ thì việc cố tránh những cụm từ sáo mòn đang dùng đầy rẫy này cũng bắt đầu khiến tôi mệt mỏi.
Tôi không dùng LLM.
Tôi nghĩ tốt hơn là nên chấp nhận rằng sau này chúng ta sẽ gặp những cách diễn đạt như vậy ngày càng thường xuyên hơn.
Giờ chỉ ra nó cũng chẳng còn ý nghĩa gì nữa.
Xét việc tất cả những cuộc tranh luận kiểu này đã xuất hiện vô số lần từ trước đến nay, tôi không muốn quá bi quan.
Từ việc chuyển từ assembler sang ngôn ngữ bậc cao, sự du nhập của OOP, component architecture/COM/CORBA, sự xuất hiện của trình duyệt web, rồi Java, v.v.
Năm 2018 không phải là "thời điểm bắt đầu suy thoái", mà chỉ là một điểm dữ liệu nữa trong xu hướng kéo dài từ rất lâu trước đó.
Nếu vẽ thành đồ thị từ thời Elite trên máy 8-bit nằm gọn trong vài KB trên băng cassette cho đến MS Flight Simulator 2020 chiếm nhiều đĩa DVD, thì nó vẫn là một đường đi lên.
Chưa rõ nó sẽ bẻ cong ở đâu.
Chất lượng phần mềm luôn dừng ở đúng mức mà con người sẵn sàng trả tiền, và sẽ tiếp tục như vậy.
Về ý "vẫn chưa rõ điểm mà đường cong sẽ gãy", tôi nghĩ thời điểm đó sẽ là khi Moore's Law kết thúc và chúng ta không còn tạo ra được những cỗ máy nhanh hơn một cách đột phá nữa.
Tôi cho rằng cập nhật phần mềm là nguyên nhân của vấn đề.
Đã từng có thời phần mềm sau khi phát hành vẫn hoạt động đúng đắn, nhưng rồi đến một lúc mọi thứ thay đổi hoàn toàn.
Khi agile dựng lên một hình nộm rơm về cái gọi là mô hình waterfall vốn chưa từng thật sự tồn tại, cách làm "không phát hành cho đến khi nó chạy được" trên thực tế lại loại bỏ nợ kỹ thuật.
Tôi ước gì ai đó biến cách này thành một phương pháp quản lý thực sự.
Ban đầu sẽ khó khăn thôi, nhất là khi quy mô nợ kỹ thuật của cả ngành đã khổng lồ, nhưng một khi làm được, nếu xuất hiện phần mềm chất lượng thật sự có thể "phát hành rồi quên luôn", cục diện ngành sẽ thay đổi.
Nhân tiện, có thể xem xkcd 2030 liên quan đến chuyện này.
Một nguyên nhân nữa là tôi cảm thấy ngành công nghệ dường như là ngành duy nhất đến giờ vẫn chưa thể nhìn chính mình một cách khách quan.
Người ta nói viết code là nghệ thuật, nhưng điều đó cũng chỉ giống như việc đi ống nước, đấu điện hay làm HVAC là nghệ thuật vậy.
Tức là có thể đem lại cảm giác thỏa mãn, nhưng về phía công ty thì miễn là không để lại vấn đề lâu dài quá nhiều, họ chỉ cần kết quả.
Thứ chúng ta gọi là "nợ kỹ thuật" thì thợ điện gọi là "dây nhôm", còn thợ ống nước gọi là "mối hàn chì".
Rốt cuộc mọi ngành đều trải qua giai đoạn hỗn loạn thử nghiệm ban đầu, rồi sau đó được tiêu chuẩn hóa và thiết lập hệ thống như cấp phép hành nghề; tôi nghĩ ngành phần mềm rồi cũng sẽ thành một lĩnh vực phải được cấp phép chính thức vào lúc nào đó.
Nếu bạn không cảm nhận được sự suy giảm mạnh về chất lượng phần mềm, thì либо bạn thực sự không quan tâm, либо bạn đang cố tình làm ngơ.
Làn sóng lập trình viên mới tăng vọt, văn hóa "Move fast and break things" và cơn sốt "AI" hiện nay cộng lại đã làm chất lượng tệ đi.
Junior developer giờ không còn một con đường rõ ràng để trưởng thành thành senior nữa.
Phần lớn vì áp lực thị trường mà dựa vào các công cụ "AI", và vì thế rất khó tự học cách debug, giải quyết và ngăn ngừa vấn đề.
Một số người dùng AI tốt cho việc học, nhưng đa số chỉ đơn giản là chạy lặp đi lặp lại.
Xu hướng này có lẽ sẽ tiếp diễn cho đến khi sự bất mãn của công chúng lên đến đỉnh điểm và ngành lại sụp thêm một lần nữa.
Có thể nó sẽ xảy ra cùng lúc với "AI bubble vỡ", cũng có thể là riêng rẽ.
Chính việc chất lượng phần mềm hoàn toàn không quan trọng trong software engineering thương mại khiến tôi cảm thấy LLM có thể dễ dàng thay thế vị trí của chúng ta.
Bug đơn giản là không quan trọng.
Trước đây tôi hẳn đã phản bác rằng "khi nó gây ra vấn đề nghiêm trọng và làm mất khách hàng lẫn việc kinh doanh thì lúc đó mọi thứ sẽ thay đổi", nhưng sau vụ Crowdstrike mà cuộc sống vẫn cứ tiếp diễn như thường.
Nó đã làm gián đoạn các dịch vụ quan trọng trên toàn thế giới và gây thiệt hại kinh tế tới 10 tỷ USD, vậy mà nhận thức của thị trường dường như chẳng thay đổi bao nhiêu.
Một khi đã giành được khách hàng rồi thì bug không còn quá quan trọng.
Trước đó thì nó ảnh hưởng rất lớn.
Chỉ có điều, vấn đề là giờ đây doanh nghiệp quá dễ xây dựng "moat" để nhốt người dùng trong hệ sinh thái của mình.
Về mặt kinh doanh thì tốt, nhưng cấu trúc như vậy cản trở đổi mới và khiến người dùng trở nên thờ ơ với công nghệ và đầy thất vọng.
Thực ra LLM khá giỏi trong việc tìm các bug liên quan đến bảo mật, tức là loại bug thật sự quan trọng, nên tôi nghĩ sau này việc không dùng LLM để rà soát mã có thể còn bị xem là cẩu thả.
Gần đây tôi phải xem một vấn đề cấu hình nginx, tuy không phải việc chính của tôi nhưng LLM đã chỉ ra hai vấn đề quan trọng về bảo mật.
Nó cũng cho tôi biết về chuyện đang dùng bản phát hành cũ và các nội dung phản hồi từ pentest cần được phản ánh.
LLM có cảm giác thật sự mạnh ở mảng phân tích, chỉ cần đưa cho nó vài file và thông tin rời rạc là nó có thể phản hồi đúng hướng mình muốn.
Tôi vẫn chưa tin lắm vào việc để nó tạo ra đầu ra mã có thể chạy được, nhưng chỉ riêng năng lực phân tích thôi cũng đã tạo ra thay đổi lớn trong công việc của tôi.
Bug có quan trọng.
Rốt cuộc LLM sẽ chỉ là công cụ được ai đó dùng khi con người khai thác lỗ hổng, chứ bản thân nó sẽ không cướp việc của chúng ta.
Từ thập niên 70, việc phát triển neural network đã tiếp diễn, và có hai rào cản lớn để thu được giá trị thực tế trong phát triển phần mềm:
Vấn đề thứ nhất chỉ mới được giải quyết gần đây nhờ năng lực xử lý/lưu trữ tăng lên và sự lan rộng của mã nguồn mở.
Vấn đề thứ hai là đầu ra vẫn còn khá nhiều lỗi, và quy trình hậu kiểm/xác minh cũng đòi hỏi nỗ lực rất lớn.
Và lý do code generation dựa trên neural network thực sự trở nên có sức cạnh tranh, nghịch lý thay, là vì chất lượng chung của cả ngành đã tệ đến mức ngay cả code nhiều lỗi cũng đủ sức cạnh tranh.
(Tham khảo: xkcd.com/2030)
Trớ trêu là trong một bài báo chê AI lại có đoạn "phần mềm cần 364 tỷ USD phần cứng mới chạy được thì đó không phải vấn đề mở rộng, mà là vá víu cho một thất bại kỹ thuật mang tính nền tảng".
Ai biết thì biết thôi.
Nói là "tôi đã theo dõi các chỉ số chất lượng phần mềm suốt 3 năm" nhưng lại chẳng có lấy một dữ liệu nào, chỉ liệt kê đủ thứ giai thoại kinh nghiệm.
Cả bài toát lên cảm giác như một bản copy hạng B không có cơ sở.
Cảm giác cá nhân của tôi là vào năm 2005, việc các lập trình viên năng lực kém tung ra web app hàng loạt bằng jQuery, WordPress và PHP là chuyện thường ngày.
Còn xu hướng ngành trong vài năm gần đây thực ra lại tiến theo hướng quan tâm hơn đến chất lượng và cấu trúc code, và giờ CI/CD hay ít nhất là test tối thiểu, quản lý phiên bản bằng Git, cùng hạ tầng hosting tử tế đều đã rất phổ biến.
Hai mươi năm trước chuyện SSH thẳng vào server sửa trực tiếp rồi làm hỏng hệ thống là điều rất thường gặp.
Bài này không thật sự giận AI, mà giận chính cái ý tưởng dùng AI để tạo ra code nhất quán.
Tôi vẫn hoan nghênh việc dùng công cụ AI để hỗ trợ kiểm tra ngữ pháp hay viết sáng tạo.
Đây chỉ là bị đánh lừa bởi hoài niệm thôi.
Hai mươi năm trước cũng chẳng tốt đẹp gì hơn bây giờ.
Phần mềm thời đó không ngốn hàng gigabyte RAM chỉ đơn giản là vì lúc ấy không có từng đó RAM.
Gần như mọi phần mềm tôi dùng hiện nay đều có ít nhất hai vấn đề trở lên trong quá trình sử dụng hằng ngày.
Mọi ứng dụng web/mobile/console đều có bug rõ ràng, và cũng khó chẩn đoán hay báo cáo vấn đề.
Mỗi ngày tôi mất 15–30 phút chỉ để lách bug.
Phần mềm ngày nay là một nền văn hóa thay đổi và cập nhật liên tục.
Chỉ sau 2 tuần là ứng dụng đã đòi nâng cấp bắt buộc.
Ngay cả Kubuntu LTS cũng phun ra cập nhật bất tận.
Bản phân phối rolling-release, thứ ngày xưa gọi là unstable branch, giờ lại được dùng chính thức.
Tôi không phải developer nên không biết nội tình, nhưng có vẻ ngày xưa phần mềm không được tạo ra hay vận hành theo kiểu này.
Có cảm giác trước đây có nhiều "người lớn" hơn, những người cố cẩn thận để tránh vấn đề.
Giờ thì bầu không khí là cứ chấp nhận hoặc phớt lờ vấn đề.
(Tất nhiên tôi không muốn đi đến kết luận là "sự ngu dốt đến mức không nhận ra cả khả năng tồn tại của vấn đề", nhưng thực tế đó cũng là một khả năng.)
Không, theo tôi thì ngày xưa chỉ cần một bug là đã thành chuyện lớn, và chất lượng chắc chắn cao hơn.
Sẽ thú vị nếu thử kiểm tra khách quan phần mềm cũ trong VM.
Bây giờ vì có thể cập nhật liên tục nên việc "phát hành nhanh và sửa bug đều đặn" tốt hơn về mọi mặt so với "phát hành chậm, ít lần và ít bug".
Ngày xưa phải vận chuyển phần mềm bằng phương tiện vật lý nên rủi ro của bug nghiêm trọng lớn hơn rất nhiều.
Ai nhớ thời Windows 95~ME thì đều nhớ.
Nó cứ crash ngẫu nhiên, BSOD và những thông báo như "đã thực hiện thao tác bất hợp pháp", "xảy ra lỗi thiết bị", hay "Windows sẽ khởi động lại sau khi sửa registry" là chuyện thường ngày.
Phím tắt đầu tiên người ta học là Ctrl+S.
Web thì mỗi trình duyệt một box model khác nhau, còn DHTML hay CGI trên shared hosting cũng hỗn loạn đủ kiểu.
Tôi nghĩ bây giờ dễ hơn nhiều.
Hai mươi năm trước cứ nhấc điện thoại lên là luôn có người nghe và có thể giải quyết vấn đề.
Tất nhiên hồi đó cũng có nhiều thứ không làm được, nhưng bây giờ có cảm giác người ta thậm chí còn không cố làm cho được nữa.
Đây là sự thay đổi của cả một nền văn hóa.
Thời đại hiện nay là "thời đại của quy mô xác suất", nơi trải nghiệm cá nhân không còn quan trọng, và AI đang đẩy máy tính từ chỗ có thể dự đoán sang không thể dự đoán—cả hai cùng theo một hướng.
Nếu đọc bài "A plea for lean software" của Wirth năm 1995, sẽ thấy ông ấy than phiền rằng những việc trước đây chỉ cần vài kilobyte thì nay lại đòi hỏi hàng megabyte RAM.
"Chuỗi ngày nay: React → Electron → Chromium → Docker → Kubernetes → VM → managed DB → API gateways. Mỗi lớp có thêm 20–30% overhead, cộng dồn lại thành suy giảm hiệu năng 2–6 lần"
Nếu nó thực sự cộng dồn như lo ngại, thì chuyện xuất hiện một ứng dụng máy tính cầm tay rò rỉ 32GB bộ nhớ không phải vì ai đó cố tình làm vậy, mà vì chẳng ai quan tâm đến chi phí tích lũy.
Máy tính Calculator của MacOS không dùng bất kỳ công nghệ nào kể trên.
Nội dung tự nó cũng đầy mỉa mai.
Tôi đã đọc kiểu bài này nhiều lần từ xưa, từng có lúc hiểu được, nhưng giờ thì tôi biết không cần phải theo đuổi mãi "không tưởng phần mềm hoàn hảo".
Trong thực tế, phần mềm luôn có trade-off, và phần lớn chỉ là công cụ phục vụ kinh doanh.
Tôi nghĩ giữa "phần mềm hoàn hảo" và "phần mềm rò rỉ 32GB bộ nhớ" có một khoảng khá rộng mà chúng ta nên nhắm tới.
Tôi thích bài báo này, nhưng đồng ý với tác giả ở chỗ các công ty rồi sẽ va phải giới hạn vật lý của năng lượng.
Tôi cũng băn khoăn liệu vấn đề năng lượng có thực sự trở thành điểm tới hạn hay không.
Chỉ cần nhìn tin các tập đoàn lớn thực sự đang đầu tư vào điện hạt nhân hay nâng cấp lưới điện là thấy họ đã nhận ra vấn đề này và đang chuẩn bị đối sách.
Không có không tưởng hoàn hảo nào cả, luôn có trade-off, và thành công kinh doanh cũng quan trọng, nhưng tôi nghĩ nếu lợi nhuận trở thành tất cả thì sẽ phát sinh vấn đề.
Phần mềm đầy bug vẫn có thể kiếm được nhiều tiền hơn.
Vì nó tạo ra lý do hợp lý để thuyết phục người dùng trả tiền thuê bao.
Tôi tò mò trong thế giới thực người ta đã kiếm được bao nhiêu tiền từ một "máy tính tệ hơn".
Nếu dùng ứng dụng cùng thời từ thời Windows 98 trở đi, sẽ thấy hồi đó cũng cực kỳ bất ổn.
Cách đây 20–30 năm, bug trong phần mềm người dùng cũng nhiều không kém bây giờ, và bảo mật nói chung còn yếu hơn rất nhiều.
Ngay cả Windows XP cũng thường bị nhiễm trong lúc cài đặt.
Những lỗi ngày nay tuyệt đối không thể chấp nhận như segfault hay mất dữ liệu hồi đó lại là chuyện cơm bữa.
Chỉ có một thứ gần đây rõ ràng thụt lùi là tốc độ phản hồi UI.
Đúng là trình duyệt và ứng dụng Electron hiện nay kém hiệu quả với cả mức RAM hiện đại.
Việc "Windows 98 cũng tệ" chỉ là bằng chứng cho thấy Microsoft vốn luôn có chất lượng code kém.
Linux thời đó, dù có nhược điểm, vẫn ổn định hơn một cách nhất quán.
Ảnh hưởng của Microsoft lên ngành là rất lớn, đến mức trong 50 năm đã biến chất lượng tệ hại thành thứ như tiêu chuẩn mặc định.
Với ý "Windows 98 cũng khá cẩu thả", tôi muốn nói hãy thử so Windows 7 đã vá đầy đủ với Windows 11.
Không phải chỉ có đúng hai mốc thời gian để so sánh.
Cũng cần xét xu hướng chung từ sau thập niên 2020.
Và với ý "chỉ UI phản hồi chậm hơn một chút", thực tế là mọi thành phần đều chậm đi khoảng 10 đến 100 lần.
Cứ nhìn MS Teams là đủ.
Lý tưởng về code chất lượng cao thì tốt, nhưng riêng vấn đề hiệu quả năng lượng thì tôi không đồng ý lắm.
Mức tiêu thụ điện của data center cực kỳ nhỏ nếu so với ngân sách năng lượng của toàn Trái Đất.
Nếu so với năng lượng mặt trời, tiêu thụ dầu mỏ hay GDP toàn cầu, ngành kỹ thuật số thực ra còn khá tốt về hiệu quả năng lượng so với nhiều ngành khác.
Nếu có nguồn lực để lo về phát thải carbon hay nóng lên toàn cầu thì theo tôi nên tập trung nhiều hơn vào các ngành khác như động cơ đốt trong.
Thậm chí chính mức tiêu thụ năng lượng từ lối sống của software engineer—đi làm, công tác, sinh hoạt—có thể còn tác động lớn hơn.
Đến năm 2025, năng lượng tái tạo cũng đã rẻ hơn nhiều, nên tôi nghĩ những vấn đề thực sự quan trọng nằm ở chỗ khác.
Gần đây tôi gặp phần mềm tệ hại ở sân bay.
Trong 15 cổng kiểm tra hộ chiếu tự động thì 12 cổng dừng hoạt động và hiện thông báo lỗi.
Ngày càng nhiều cổng hỏng đến mức nhân viên phải trực tiếp ra hỗ trợ.
Tôi tự hỏi sao những hệ thống rõ ràng chưa sẵn sàng như vậy lại được đưa vào vận hành.
Và khi xảy ra vấn đề như thế này, tôi cũng thắc mắc vì sao nhân viên tại chỗ lại không thể tự reboot.
Không ai bị thương, nhưng có vẻ vấn đề thực sự là các thỏa thuận cấp phép phần mềm cho phép nhà cung cấp trốn tránh trách nhiệm về chất lượng.
Với bất kỳ ngành nào khác, mức đó sẽ là không thể chấp nhận được.
Lý do phần mềm chưa sẵn sàng vẫn được phát hành là vì tiêu chuẩn tối thiểu của ngành ngày nay là "miễn không bị kiện và khách hàng không từ chối thì OK".
Mọi thứ đều được tung ra trong vội vã, và quyết định có phát hành hay không chỉ phụ thuộc vào việc "có thu hồi được số tiền công ty đã bỏ ra hay không".
Chỉ cần đạt mức lợi nhuận yêu cầu thì dù chất lượng chưa đủ người ta vẫn cứ giao hàng.
Vậy là bạn cũng ở Terminal 2 sân bay Heathrow à, nghe giống hệt trải nghiệm của tôi nên thấy buồn cười.
> Xét đến việc tất cả những cuộc tranh luận này thực ra đã xuất hiện vô số lần từ trước đến nay thì tôi không muốn bi quan quá mức.
Việc chuyển từ assembler sang ngôn ngữ bậc cao, áp dụng OOP, kiến trúc component/COM/CORBA, sự xuất hiện của trình duyệt web, việc đưa Java vào sử dụng... năm 2018 không phải là "thời điểm sự suy thoái bắt đầu" mà chỉ là một điểm dữ liệu trong chuỗi kéo dài liên tục từ trước tới nay.
Nếu phải bắt bẻ một chút thì có vẻ người viết bình luận đã không hiểu định nghĩa vấn đề mà bài viết này đang nói tới. Việc chuyển sang các ngôn ngữ ở mức high level như đã nói ở trên hoàn toàn không liên quan đến các lỗ hổng trong mã do AI tạo ra và cấu trúc không thể tạo ra được các kỹ sư senior. Rốt cuộc chính bình luận đó lại tự chứng minh vấn đề của bài viết gốc. Bài viết đang nói về tầm quan trọng của engineering, nhưng có vẻ bản thân người này ghét engineering khó, cũng không muốn học, nên đang viện cớ quá nhiều. Nói dai quá.
> Tôi không phải là lập trình viên nên không biết tình hình nội bộ, nhưng có cảm giác ngày xưa phần mềm không được tạo ra hoặc vận hành theo kiểu này. Có vẻ như hồi đó có nhiều “người lớn” thận trọng hơn, cố gắng tránh các vấn đề hơn.
Có khi còn chẳng phải là lập trình viên nữa..