Nguyen Le PhongNguyen Le Phong

Bài viết

Blog

Một góc đọc dễ vào về software architecture, source code, AI và cách team phần mềm làm việc. Mỗi bài đi từ tình huống thật, giải thích bằng ngôn ngữ gần gũi, giữ lại những thuật ngữ quan trọng để người mới không bị ngợp và người đi làm lâu vẫn tìm được một góc nhìn có thể áp dụng ngay.

Bài mới để đọc tiếpTrang 16/23

204 bài viết

AI & Future of Work

Xu hướng AI 2026: nhìn bớt hype, tìm giá trị thật

Tin tức AI thay đổi nhanh đến mức rất dễ mệt. Bài này chọn lọc những xu hướng đáng theo dõi hơn trong năm 2026 như agentic AI, multimodal, AI trong app hằng ngày, on-device AI và vai trò ngày càng lớn của phán đoán con người. Quan trọng hơn, bài đưa ra một cách lọc hype để biến xu hướng thành thử nghiệm nhỏ có giá trị thật.

18 phút đọc
Ways of Working

TDD, BDD, DDD và họ “Driven Development”: hiểu đúng để dùng đúng

TDD, BDD, DDD, ATDD, EDD, CDD, FDD nghe như một rừng chữ viết tắt, nhưng chúng không phải đối thủ của nhau. Mỗi cách trả lời một câu hỏi khác nhau: kiểm thử trước, hành vi mong muốn, domain model, event, component hay feature. Bài này giúp engineer đặt chúng lên cùng một bản đồ, hiểu khi nào dùng gì và tránh biến “driven development” thành khẩu hiệu.

22 phút đọc
Ways of Working

Agile & Scrum trong thực tế: hiểu board, estimate và các buổi họp cho đỡ mơ hồ

Rất nhiều team nói mình làm Scrum, nhưng mỗi nơi lại hiểu story, point, Done, daily hay retro theo một kiểu. Bài này giúp mọi vai trò trong team có cùng ngôn ngữ: epic, story, task, status workflow, story point, estimate, log work, burndown, velocity và cách chạy planning, daily, review, retro sao cho chúng thật sự giúp team ship tốt hơn thay vì chỉ thêm họp.

20 phút đọc
Source Code & Software Architecture

Clean, Onion và Hexagonal Architecture: ba tên gọi cho cùng một hướng nghĩ

Clean Architecture, Onion Architecture và Hexagonal Architecture thường bị xem như ba trường phái khác nhau. Thực ra chúng cùng nhắc về một điều: domain và business rule nên nằm ở trung tâm, framework và chi tiết kỹ thuật ở ngoài rìa. Bài này so sánh nhẹ nhàng để bạn chọn cách gọi và cách vẽ phù hợp với team.

15 phút đọc
Source Code & Software Architecture

Dependency Injection & Inversion of Control: bớt coupling mà không cần phép thuật

DI và IoC không phải phép màu của framework. Ý tưởng đơn giản hơn nhiều: đừng để một class tự tạo mọi dependency mà nó cần; hãy đưa dependency từ bên ngoài vào. Bài này giải thích vì sao cách làm đó giúp code dễ test hơn, dễ thay đổi hơn và đỡ dính chặt vào database, SDK hay service cụ thể.

14 phút đọc
Source Code & Software Architecture

Tổ chức codebase: theo layer, feature hay domain?

Một codebase bắt đầu lớn lên từ những lựa chọn rất nhỏ: thư mục trên cùng nên là controllers/services/models, hay orders/billing/auth? Bài này so sánh cách tổ chức theo layer, theo feature và theo domain, chỉ ra mỗi kiểu hợp với giai đoạn nào, và vì sao cấu trúc thư mục thật ra đang kể cách team suy nghĩ về sản phẩm.

14 phút đọc
Source Code & Software Architecture

Monolith, Modular Monolith hay Microservices: chọn theo giai đoạn, không theo trend

Microservices không phải điểm xuất phát bắt buộc, mà thường là cái giá phải trả khi team và hệ thống đã đủ lớn. Bài này đi qua hành trình từ monolith, modular monolith đến microservices, với các dấu hiệu thực tế giúp bạn biết khi nào nên tách, khi nào nên giữ lại, và khi nào chỉ đang đổi sự đơn giản lấy thêm vận hành.

16 phút đọc
Source Code & Software Architecture

Micro-Frontends: khi nào đáng tách, khi nào chỉ thêm rối

Micro-frontends có thể giúp nhiều team deploy độc lập hơn, nhưng cũng mang theo chi phí về routing, shared dependency, design system, performance và ownership. Bài này nhìn micro-frontends từ kinh nghiệm thực tế, để bạn biết khi nào nó giải phóng team, và khi nào nó chỉ biến frontend thành một distributed system khó chăm hơn.

15 phút đọc