Từ Code "chạy được" đến Code "hoàn hão"
Sau hơn thập kỷ "cày cuốc" với .NET, Database và đủ loại hệ thống, từ monilithic đến microservices, tôi đã chứng kiến vô số lần tranh cãi về "code tốt" là gì.
Có lẽ, hành trình của mỗi developer luôn được thể hiện qua: Code chạy Được đến Code "Hoàn Hảo".
Chào các bạn, trong các bài post trước, tôi đã giới thiệu ngắn gọn về sự khác biệt trong tư duy code giữa junior và senior devs. Hôm nay, tôi muốn chia sẻ về một chủ đề mà tôi nghĩ sẽ hữu ích cho cả junior và senior developers: sự khác biệt trong tư duy lập trình giữa code chỉ "chạy được", và code "perfect". Đây cũng chính là yếu tố phân biệt rõ ràng giữa yếu tố phân biệt rõ ràng giữa junior và senior devs.
Tôi sẽ đưa ra và phân tích một số case study để chúng ta cùng phân tích nhé.
Các bạn developers mới thường ưu tiên làm code hoạt động nhanh chóng, mà chưa chú trọng đến chất lượng. Đây là giai đoạn "survival", code chạy đúng là thành công, nhưng dễ dẫn đến technical debt.
Hãy lấy ví dụ từ .NET trong .NET, một junior dev có thể viết method đơn giản để lấy dữ liệu users:
Nó bình thường và chạy được đúng không :) Giờ ta thử phân tích kỹ hơn:
Code một cảm giác tuyệt vời, một cú "hit" dopamine đầu tiên. Thông thường, nó mang những đặc điểm dễ nhận thấy:
Tuy nhiên từ kinh nghiệm cho thấy, trong dự án, code kiểu này dẫn đến timeout khi traffic tăng, techdebt, có khi buộc phải refactor toàn bộ.
Là senior developers, chúng ta không chỉ làm code chạy mà còn tối ưu trong giới hạn thời gian, ngân sách, và team skills. Tư duy thực dụng: áp dụng best practices như code chỉnh chu, comment chi tiết, unit/integration test đầy đủ, và query performance-tuned, nhưng không over-engineer.
Refactor ví dụ trên trong .NET với Entity Framework Core (EF Core) và SQL tối ưu:
Phân tích kỹ hơn đoạn code trên:
Khi đã có kinh nghiệm, bạn không còn thỏa mãn với việc code chỉ "chạy được". Bạn bắt đầu đặt câu hỏi:
Đây là lúc tư duy về chất lượng và sự bền vững xuất hiện.
Code hoàn hảo luôn là dộng lực cho cải tiến liên tục, cả server side như .net, java,... hay client side framework như react, vuejs, angular,... nhưng tất cả đó chỉ là ảo tưởng, không tồn tại.
Ngay cả các framework đó cũng thay đổi từng ngày, từ .NET Framework đến .NET 8, từ Angular 13 đến 20, rồi 2 tháng nữa thôi là ra 21 rồi. Nhu cầu + yêu cầu thay đổi, và luôn có trade-offs. Chúng ta cần hiểu rằng pursue perfection có thể delay delivery.
Trong lập trình các bạn junior thường tập trung functionality, code .NET, UI nhanh nhưng thường thiếu thiếu validation, test hay comment, query SQL cơ bản. Họ giỏi adopt những tính năng mới, nhưng cần học và có tầm nhìn xa hơn.
Trong khi đó, Senior dev xem xứt hệ thống toàn diện hơn, code .NET chỉnh chu với patterns (Repository, CQRS), validator cẩn thận trên UI, query tuned cho perf, align với business. Và họ mentor để build resilient teams. << làm được chi li như này, thì bạn đã là Senior rồi đấy.
Sự khác biệt lớn nhất giữa một Senior và một Junior không chỉ nằm ở kỹ năng code, mà nằm ở khả năng sự chi li, ra quyết định dựa trên bức tranh toàn cảnh, bao gồm cả kỹ thuật và con người.
Các bạn có đồng ý với quan điểm này không? Dựa vào đây chúng ta cùng thay đổi để bản thân tốt hơn, team tốt hơn được chứ :)
Hãy chia sẻ suy nghĩ và trải nghiệm của bạn ở phần bình luận bên dưới nhé!
#DotNetDeveloper #DatabaseOptimization #SeniorDev #CodeBestPractices #TechMentorship #LinkedInTech #1percentbetter
Công nghệ - 19/08/2025 21:13:07
Tìm hiểu cách xây dựng hệ thống phát hiện ngôn ngữ ký hiệu theo thời gian thực bằng AI, sử dụng DETR để tăng cường khả năng tiếp cận và đổi mới. Kết nối lời nói và cử chỉ.
Công nghệ - 18/08/2025 13:38:25
Tối ưu hóa các hệ thống RAG bằng cách tận dụng siêu dữ liệu để truy xuất thông tin chính xác và nhanh chóng hơn, giải quyết các thách thức về dữ liệu dư thừa hoặc lỗi thời với công cụ LangExtract nguồn mở. Khám phá cách LangExtract sử dụng các mô hình ngôn ngữ tiên tiến để trích xuất và cấu trúc siêu dữ liệu, tạo ra một quy trình truy xuất hợp lý và hiệu quả.
Công nghệ - 01/08/2025 07:00:00
Gỡ lỗi LLM rất quan trọng vì quy trình làm việc của chúng phức tạp và liên quan đến nhiều phần như chuỗi, lời nhắc, API, công cụ, trình truy xuất, v.v.
Công nghệ - 19/06/2025 03:05:09
Code xong chạy được là chưa đủ – phải biết khi nào nó "chết" nữa chứ 😅
Bạn đang triển khai ứng dụng trên Kubernetes, Docker hay môi trường production nào? Và bạn từng "toát mồ hôi" vì service chết mà không ai báo?
Công nghệ - 16/07/2025 13:41:17
Công nghệ - 27/06/2025 03:15:44
Công nghệ - 11/12/2025 15:05:29
[Góc chuyện nghề] bán account game để đi học nghệ - bạn dám không?
Làm nghề 20 năm, gặp nhiều sinh viên, nhưng chiều qua tôi khá bất ngờ với một cậu em tên Quang. Em Quang muốn theo nghề BA và mong muốn lương 20 triệu sau khi làm việc 1.5 năm tới 2 năm trong nghề.
Công nghệ - 22/09/2025 08:59:20
Dừng ngay việc dùng DateTime.Now trong APIs, đó là ổ lỗi tiềm ẩn trong hệ thống của bạn
⏱️ Tôi từng nghĩ DateTime.Now là một thứ vô hại, đơn giản và tiện lợi, cho đến khi gặp những vấn đề về múi giờ. Những lỗi "tưởng chừng nhỏ" này lại chính là nguồn cơn của sự thất vọng và tốn kém thời gian cho nhiều đội ngũ phát triển.
Công nghệ - 14/03/2025 04:30:32