Coder mất ngủ

Coder mất ngủ Code ban ngày, suy nghĩ ban đêm 🌙
Nơi kể mấy chuyện vui buồn của đời coder mà ban ngày bận quá không nói hết.

01/07/2026

📖 ÁM ẢNH MANG TÊN "CALLBACK HELL" VÀ HÀNH TRÌNH TÌM LẠI BÌNH YÊN VỚI ASYNC/AWAIT
Năm đầu tiên sau khi học lập trình, tôi luôn tự hào mình là đứa viết code "sạch". Thẳng hàng, ngay ngắn, từ trên xuống dưới, cứ như một cuốn sách giáo khoa.
Cho đến khi tôi va phải Xử lý bất đồng bộ (Asynchronous) trong JavaScript. Đó cũng là lúc cuốn sách giáo khoa của tôi biến thành một cái "kim tự tháp" đổ nát mang tên: Callback Hell.
Hồi đó, tôi được giao một tính năng nghe qua thì rất đơn giản:
1. Đọc file cấu hình từ hệ thống để lấy URL.
2. Dùng URL đó gọi API lấy thông tin user.
3. Có thông tin user rồi thì tiếp tục gọi một API khác để lấy danh sách bài viết.
4. Cuối cùng là lọc dữ liệu và hiển thị lên màn hình.
Vì JavaScript chạy trên cơ chế Single Thread (đơn luồng) – nghĩa là tại một thời điểm nó chỉ xử lý một việc – nên để tránh việc trình duyệt bị "đóng băng" khi chờ đợi các tác vụ tốn thời gian như đọc file hay gọi API, JS buộc phải ném các tác vụ đó vào hàng đợi và xử lý dưới dạng bất đồng bộ. Và công cụ sơ khai nhất để làm việc này chính là Callback function.
Tôi bắt đầu cắm đầu vào code. Hàm 1 gọi hàm 2 thông qua callback, hàm 2 nhận kết quả lại lồng tiếp hàm 3, hàm 3 lồng hàm 4...
Chỉ sau khoảng 4 tầng lồng nhau, đoạn code của tôi bắt đầu "dạt" dần về phía bên phải màn hình. Nhìn từ xa, nó không khác gì một cái hình tam giác chĩa mũi nhọn ra vô cực.
Cơn ác mộng thực sự ập đến khi hệ thống báo lỗi. Tìm xem lỗi phát sinh ở tầng callback nào là một cực hình. Tôi phải căng mắt ra đếm từng dấu đóng mở ngoặc nhọn }), }), }). Chỉ cần sửa một logic nhỏ hoặc đổi tên biến, cả hệ thống lập tức sụp đổ như quân bài Domino. Lúc đó, tôi bất lực nhìn màn hình và tự hỏi: "Chẳng lẽ ngôn ngữ phổ biến nhất thế giới lại có cách vận hành ngu ngốc và tra tấn người dùng đến vậy sao?"
May mắn thay, JavaScript không dừng lại ở đó.
Bước ngoặt đến khi tôi biết đến Promises ở ES6. Nó giống như một lời cứu rỗi. Thay vì lồng code vào nhau, tôi có thể "xâu chuỗi" các tác vụ bằng .then(), .then(), .catch(). Code đã bắt đầu phẳng ra, dễ đọc hơn, việc bắt lỗi (error handling) cũng gom về một mối ở hàm .catch() cuối cùng thay vì phải if (err) ở từng tầng như trước.
Nhưng "chân ái" thực sự giúp tôi tìm lại sự bình yên tuyệt đối chính là sự xuất hiện của Async/Await (ES7).
Tôi vẫn nhớ cảm xúc lần đầu tiên refactor (tối ưu) lại đống Callback Hell ngày xưa bằng Async/Await. Toàn bộ cái "kim tự tháp" dạt phải biến mất hoàn toàn. Thay vào đó là một đoạn code thẳng tắp, viết bất đồng bộ nhưng đọc mượt mà như đồng bộ
Bản chất bên dưới của JavaScript vẫn là Single Thread, vẫn là cơ chế Event Loop dịch chuyển liên tục, nhưng async/await đã khoác lên nó một lớp áo "cú pháp" (Syntactic Sugar) tuyệt vời. Nó bắt bộ não của lập trình viên không còn phải "nhảy cóc" tư duy theo các hàm callback lồng chéo, mà có thể tập trung hoàn toàn vào luồng nghiệp vụ thực tế.
Hành trình từ Callback Hell tiến lên Async/Await đã dạy cho tôi một bài học xương máu: Đừng chỉ học cách viết code cho máy chạy, hãy học cách viết code sao cho con người có thể đọc, hiểu và bảo trì nó một cách dễ dàng.
JavaScript có thể có những điểm kỳ quặc ở thuở sơ khai, nhưng tư duy xử lý bất đồng bộ chuẩn chỉnh mới là thứ phân biệt giữa một Newbie viết code theo bản năng và một Developer thực thụ biết làm chủ ngôn ngữ.
👉 Nếu bạn cũng đang phân vân trên con đường làm chủ tư duy JavaScript, đây là thứ giúp tôi đi tiếp: https://bit.ly/3Qa3Vxw

Học Java Script vẫn ok đấy chứ
23/06/2026

Học Java Script vẫn ok đấy chứ

17/06/2026

Năm 3, tôi suýt bỏ Java vì một câu nói trên mạng.
Hồi đó tôi đang học Java, làm được vài cái bài tập, thấy cũng ổn. Cho đến một hôm lướt Facebook, đọc được một bình luận đại loại: "Java chết rồi, giờ mà còn học Java thì ra trường thất nghiệp, phải nhảy qua AI với Python mới có tương lai."
Tôi hoang mang thật sự. Đang học giữa chừng, tự nhiên thấy mình hình như chọn nhầm đường. Suýt nữa tôi bỏ ngang để chạy theo cái đang hot.
May là trước khi bỏ, tôi đi hỏi một anh đang làm backend ở một công ty fintech. Anh cười, rồi nói với tôi mấy điều mà sau này tôi mới thấy thấm:
"Em lên mạng thì thấy Java chết. Nhưng em thử nhìn vào mấy hệ thống mà nếu sập một phút là thiệt hại tính bằng tỷ xem — chúng nó chạy bằng gì?"
Rồi anh kể: hệ thống core banking của gần như mọi ngân hàng ở Việt Nam, backend của mấy ông lớn xử lý hàng triệu người dùng mỗi ngày, cả mảng fintech, logistics, bảo hiểm... phần lớn vẫn đang chạy trên Java. Lý do đơn giản: mấy doanh nghiệp đó không chọn công nghệ theo trend trên feed. Họ chọn thứ ổn định, scale được, và đáng tin tuyệt đối khi vận hành ở quy mô hàng triệu user.
Mấy năm gần đây Java đã có Virtual Threads — xử lý hàng triệu request cùng lúc mà không cần kiến trúc rối rắm như xưa. Rồi cả mấy thư viện đưa AI thẳng vào hệ sinh thái Java, để dev không phải bỏ stack, không phải học lại từ đầu vẫn bắt kịp được xu hướng AI.
Hóa ra trong khi mọi người mải chạy theo thứ ồn ào nhất trên mạng, mấy anh Java vẫn lặng lẽ có việc tốt, lương ổn, làm những hệ thống thật sự tạo ra giá trị. Đôi khi thứ đáng học nhất lại không phải thứ nói nhiều nhất.
Và tôi nhận ra câu hỏi mình hỏi sai ngay từ đầu. Không phải "Java có lỗi thời không?" — mà là:
"Mình đã xây nền đủ sâu để bước vào được những hệ thống đó chưa?"
Vì doanh nghiệp không thiếu chỗ cho Java. Họ chỉ thiếu người Java đủ giỏi để giao việc thật.
Còn bạn — bạn đang học Java, hay đang trên hành trình làm được việc với Java? Comment kể mình nghe câu chuyện của bạn.
👉 Nếu bạn cũng đang phân vân giống tôi hồi năm 3, đây là thứ giúp tôi đi tiếp: https://bit.ly/3Qa3Vxw

16/06/2026

Năm 4, tôi đi phỏng vấn thực tập và nhận ra: không phải mình kém, chỉ là mình học sai thứ.
Tôi không phải sinh viên tệ. Điểm khá, mấy môn chuyên ngành toàn 8, 9. Tôi từng nghĩ ra trường kiếm việc chắc không khó.
Rồi tôi đi phỏng vấn vị trí thực tập. Người ta hỏi tôi đã từng deploy một sản phẩm thật lên server chưa, làm việc với Git theo nhóm thế nào, API tôi viết có ai dùng thật không. Tôi ngồi im. Vì gần 4 năm trên giảng đường, tôi chưa từng đụng tới những thứ đó.
Buổi đó tôi về, lúc đầu tự trách mình lười. Nhưng ngồi nghĩ lại, tôi mới hiểu vấn đề không nằm ở tôi:

Tôi học rất nhiều lý thuyết, nhưng chưa từng làm một dự án nào đủ "chất" để bỏ vào CV.
Đồ án thì làm cho xong, bảo vệ điểm cao rồi cất tủ — không ai ngoài hội đồng nhìn tới.
Mở mấy cái JD tuyển dụng ra, tôi thiếu quá nửa yêu cầu mà trường chưa bao giờ dạy.
Tôi biết viết code, nhưng không biết một sản phẩm thật chạy trong doanh nghiệp như thế nào.
Phần kinh nghiệm trong CV trống trơn, trong khi vài đứa bạn đã có chỗ thực tập.

Khoảng cách giữa "biết code" và "làm được việc" — không ai ở trường nói cho tôi biết. Và tôi chỉ còn chưa đầy một năm trước khi ra trường.
Tôi sợ. Sợ cái cảnh cầm tấm bằng khá trên tay mà đi phỏng vấn vẫn ngồi im như hôm đó. Nên lần này tôi không chờ nữa.
Tôi đi tìm cho bằng được một nơi cho mình làm dự án thật, có người kèm cặp, có cả cơ hội bước vào doanh nghiệp ngay khi còn đang học. Và may là tôi tìm được — vẫn còn kịp trong năm cuối.
Chỉ sau một thời gian, mấy thứ tôi từng thiếu được lấp lại đúng chỗ:
Tôi được làm dự án thật — có quy trình, có deadline, có review gắt — chứ không còn là bài tập trên lớp. Tôi có người kèm 1-1 cái đồ án tốt nghiệp từ đầu đến cuối, để nó thành một sản phẩm tử tế đặt lên đầu CV chứ không cất tủ. Và tôi được vào môi trường doanh nghiệp thật ngay khi vẫn còn là sinh viên.
Cái ngày đi phỏng vấn lại, tôi không còn ngồi im khi người ta hỏi "em đã làm trong một team thật bao giờ chưa".
Tôi viết cái này không phải để khuyên ai cả. Chỉ là... nếu bạn đang là sinh viên năm 3, năm 4, đọc đến đây mà thấy hơi giật mình — thì bạn còn nhiều thời gian hơn tôi hồi đó nhiều. Đừng đợi đến buổi phỏng vấn đầu tiên mới hiểu. 🌙
👉 Con đường tôi đã đi, để lại đây cho ai cần: https://bit.ly/3Qa3Vxw

Address

105 Văn Khê, Khu đô Thị Văn Khê, Hà Đông
Hanoi
100000

Website

Alerts

Be the first to know and let us send you an email when Coder mất ngủ posts news and promotions. Your email address will not be used for any other purpose, and you can unsubscribe at any time.

Shortcuts

Share

Category