Về Tôi
Tôi là Nguyễn Huỳnh Minh Tiến (TienNHM), kỹ sư phần mềm tại TP.HCM. Công việc chính là làm CRM và hệ thống loyalty cho doanh nghiệp bằng .NET, ABP Framework và Angular — hiện ở Utop, một đơn vị thuộc FPT IS, và dẫn kỹ thuật cho một đội tới 10 người. Trang này ghi lại những gì tôi gặp khi làm: ca gỡ lỗi production kèm số đo, quyết định kiến trúc và cái giá của nó, và một giáo trình .NET backend miễn phí.
Tôi đang làm gì
Từ 01/2023 tôi làm tại Utop — đơn vị thuộc FPT IS — với vai trò Technical Specialist / Developer. Từ 03/2025 là Tech Lead cho sản phẩm CRM Next thuộc bộ FPT CX Suite, dẫn đội tới 10 kỹ sư.
Các miền nghiệp vụ đã đi qua:
| Miền | Việc cụ thể |
|---|---|
| Loyalty | Tích điểm, đổi quà, quy tắc quy đổi, phân hạng thành viên; tích hợp Haravan và OneSignal |
| CRM | Lead, account, booking, quy trình phê duyệt; tích hợp Pancake cho chat Facebook, Zalo, Instagram |
| GenAI | Pipeline RAG và LLM sinh mô tả sản phẩm thời trang, nhận diện ảnh, xuất bản qua Directus |
Trước đó là FPT Software (2022), làm Loyalty Network System cho FPT Group.
Xem đầy đủ các mốc ở Hành trình, hoặc tôi đang bận gì lúc này.
Thứ tôi dùng hằng ngày
Không liệt kê mọi thứ từng chạm vào — chỉ những thứ đang dùng thật trong công việc:
- Backend: C#, .NET, ASP.NET Core, Entity Framework Core, ABP Framework
- Frontend: Angular, TypeScript
- Dữ liệu: SQL Server, PostgreSQL, Redis, Elasticsearch
- Hạ tầng: Docker, Kubernetes, RabbitMQ, k6
- AI: RAG, LLM, MCP, Agent Skills trong quy trình làm việc
Tôi viết gì ở đây
Không phải bài hướng dẫn "X là gì". Mỗi bài bắt đầu từ một thứ hỏng trên production, rồi truy đến nguyên nhân thật và chứng minh bằng thí nghiệm chạy được:
- Khi một header của Cloudflare làm hỏng HttpClient của .NET — ngoại lệ ở tầng thư viện, nguyên nhân nằm ở một ký tự không thuộc ASCII
- Vì sao EF Core bắn 201 query cho một màn hình danh sách — 200 dòng, 201 câu lệnh SQL
- Thêm 4 index làm INSERT chậm 6 lần — cái giá không ai nhắc khi bảo bạn đánh index
- Hai giao dịch cùng cộng 100, số dư chỉ tăng 100 — isolation level qua thí nghiệm thật
- Workstation GC ăn RAM trong container — một dòng cấu hình đổi hẳn mức tiêu thụ
- Dựng nền tảng CRM multi-tenant từ con số không — chuyện nghề 20 tháng
Và phần mở rộng sang công cụ AI: cơ chế đằng sau Agent Skills — vì sao description quan trọng hơn thân bài, và phần tri thức bị bỏ lại khi chỉ cài rồi dùng.
Giáo trình .NET Backend
Thứ tốn công nhất trên trang này: .NET Backend: Zero → Senior — 19 module, 5 giai đoạn, 4 dự án, miễn phí.
Khác biệt so với một danh sách chủ đề: toàn bộ xoay quanh một bài toán CRM duy nhất lớn dần, từ List trong bộ nhớ ở giai đoạn 1 tới hệ phân tán nhiều bounded context ở giai đoạn 5. Mỗi kiến thức xuất hiện đúng lúc bài toán cần tới nó.
Ngoài ra còn tài liệu Hệ điều hành kèm 10 bộ trắc nghiệm và đề thi thử — viết hồi còn đi học, vẫn có sinh viên dùng.
Ba điều tôi thật sự tin
Số đo thắng ý kiến. "Index làm chậm ghi" là ý kiến. "Thêm 4 index làm INSERT chậm 6 lần trên bộ dữ liệu này" là số đo — và chỉ số đo mới dùng để ra quyết định được.
Viết ra thì mới biết mình chưa hiểu. Phần lớn bài ở đây bắt đầu vì tôi tưởng mình đã hiểu, viết được nửa chừng thì phát hiện không giải thích nổi. Viết công khai làm chỗ hổng lộ ra sớm.
AI đổi tốc độ, không đổi trách nhiệm. Tôi dùng Claude Code và MCP hằng ngày, và chính vì vậy mà càng phải hiểu thứ nó sinh ra. Một SKILL.md là một bản nén phán đoán của người khác — cài vào thì có kết quả ngay, nhưng phần lý lẽ bị bỏ lại. Đó là lý do tôi viết về cơ chế chứ không viết hướng dẫn cài đặt.