
“Code đẹp” có quan trọng bằng “Coder tốt” không?
Chào anh em đồng nghiệp,
Dạo này lướt các diễn đàn hay “tóp tóp”, tôi thấy anh em developer (cả trẻ lẫn “già”) hay khoe và tranh luận sôi nổi về một chủ đề muôn thuở: Code đẹp và Sạch.
Nào là “senior thì code phải gọn, phải clean”, “code phải theo chuẩn SOLID”, “mọi function phải < 10 dòng”, và tất nhiên, “phải đầy đủ comment” như một bài văn mẫu.
Đừng hiểu lầm tôi, với tư cách là một người đã “cày cuốc” trong ngành này đủ lâu, tôi hoàn toàn đồng ý rằng đó là những thói quen tuyệt vời. Code sạch giúp chúng ta dễ bảo trì, dễ mở rộng, và giúp đồng đội (hoặc chính chúng ta 6 tháng sau) đọc lại code mà không muốn… “nghỉ việc”.
Nhưng, (luôn có một chữ “nhưng” lớn) tôi thấy dường như mọi người đang biến nó thành một thứ tiêu chuẩn vàng duy nhất để đánh giá một lập trình viên.
Hôm nay, từ góc nhìn của một “lão làng” đã từng code “nhanh”, code “ẩu” rồi lại code “đẹp”, tôi muốn chia sẻ một quan điểm có thể hơi khác một chút:
“Code đẹp” có quan trọng bằng “Coder tốt” không?
OK, nói thẳng: Với anh em mình, đặc biệt là dân freelance hoặc làm product “nhà trồng”, code là “vốn lưu động”. Mà đã là “vốn” thì phải “xoay vòng” nhanh. Khi bạn bắt đầu tự code – tự kiếm sống, mọi quan điểm về “đẹp” hay “xấu” của code đều thay đổi. Khi tiền, deadline, và khách hàng cùng gõ cửa, thứ quan trọng nhất không phải là code “sạch”, mà là code mang lại giá trị nhanh và hiệu quả nhất.
💰 Code là chi phí. Sản phẩm mới là nguồn thu.
Làm freelancer, tôi tự bỏ công, bỏ thời gian – đó là vốn đầu tư của mình.
Mỗi dòng code là một chi phí cơ hội.
Còn sản phẩm tôi viết ra – đó mới là tài sản sinh lời.
Nếu ví freelancer như một doanh nghiệp mini, thì:
| Thành phần | Doanh nghiệp | Freelancer |
|---|---|---|
| Vốn đầu tư | Tiền mặt | Thời gian, công sức |
| Sản phẩm | Hàng hóa, dịch vụ | App, web, tool, API… |
| Doanh thu | Bán hàng | Khách hàng trả tiền, quảng cáo, license |
| Chi phí | Nhân sự, vận hành | Thời gian code, bug, refactor |
| Lợi nhuận | Phần còn lại sau chi phí | Giá trị thật mang về túi |
Và giống như doanh nghiệp,
Freelancer không sống bằng code đẹp, mà sống bằng sản phẩm được dùng, được trả tiền.
Kịch bản 1: “Vay Nóng” để “Chớp Deal” (Code Nhanh)
Đây là thực tế ở Việt Nam: Khách hàng (đặc biệt là khách SME) tìm đến bạn và nói:
“Hải ơi, anh/chị cần làm gấp cái web bán hàng “mì ăn liền”. Tuần sau bên chị khai trương rồi! Chạy được là được!”
Ngân sách? Vừa phải. Deadline? “Cháy máy”.
Lúc này, bạn là “con buôn” đứng trước một “mối hàng” (deal).
- Lựa chọn A (Đầu tư dài hạn – Code Sạch): Bạn mở VS Code, set up project NestJS/Spring Boot, thiết kế Clean Architecture, chia 3-4 layer, viết Unit Test…
- Kết quả: 2 tuần sau code vẫn “sạch” nhưng chưa “chạy”. Khách “lặn” mất tăm, họ đã tìm một bên khác làm bằng… WordPress/PHP thuần trong 3 ngày. Bạn “ôm” đống code sạch đó… để ngắm. Bạn “lỗ vốn” thời gian.
- Lựa chọn B (“Vay Nóng” – Code Nhanh): Bạn “vã” thẳng. Có thể là ExpressJS một file, hoặc PHP vứt thẳng logic vào file
index.php.- Kết quả: 4 ngày xong. Web chạy. Khách “ok” chuyển khoản. Bạn có tiền.
- Đây chính là “vay nóng kỹ thuật”. Bạn chấp nhận “lãi suất cao” (sau này code này bảo trì “muốn khóc”), để đổi lấy “vốn” (tiền) ngay lập tức.
Với các dự án nhỏ, dự án “thời vụ”, một “coder tốt” là một “con buôn” giỏi, biết khi nào cần “đánh nhanh thắng nhanh” để thu tiền về.
Kịch bản 2: “Trả Nợ” và “Đầu Tư” (Code Sạch)
Cái shop “mì ăn liền” kia bỗng làm ăn “phất” lên. 6 tháng sau, họ quay lại:
“Hải ơi, giờ chị muốn nâng cấp. Làm cho chị cái module quản lý kho, tích hợp Giao Hàng Tiết Kiệm, với thanh toán MoMo.”
Đây! “Tiền” đây! Họ sẵn sàng “xuống tiền” (pay) cho một thứ “xịn”.
Lúc này, nếu bạn lôi đống code “vay nóng” ngày xưa ra để “chắp vá”, bạn sẽ “chết”. Sửa một chỗ, sập 3 chỗ.
Đây là lúc “con buôn” trở thành “nhà đầu tư”.
Bạn nói với khách: “OK chị, để nâng cấp, em cần ‘đập đi xây lại’ phần lõi cho nó ‘chịu tải’ (scalable) và ổn định.”
Giờ là lúc bạn “trả nợ”: Dùng NestJS, dùng kiến trúc “xịn”, viết test. Bạn “đầu tư” code sạch, vì bạn biết cái “hệ thống” này giờ là “cỗ máy kiếm tiền” dài hạn cho cả bạn và khách.
🤔 Các dự án lớn có “code bẩn” lúc đầu không?
Câu trả lời là: CHẮC CHẮN CÓ!
Facebook những ngày đầu là minh chứng sống.
Mark Zuckerberg từng nói:
“Move fast and break things.”
(Di chuyển nhanh và phá vỡ mọi thứ.)
Câu này không dành cho “code đẹp” đâu — mà là “code nhanh”.
Facebook tập trung toàn lực vào việc thu hút người dùng, tăng trưởng, và chiếm thị trường.
Họ chấp nhận nợ kỹ thuật (technical debt) để đổi lấy tốc độ.
Code ban đầu chắc chắn lộn xộn nếu soi bằng tiêu chuẩn ngày nay.
Nhưng khi họ đã lớn mạnh, có người, có tiền, có thời gian, họ mới bắt đầu “trả nợ”:
- Viết lại toàn bộ hệ thống.
- Xây dựng React.
- Tạo ra ngôn ngữ Hack (từ PHP).
“Chuẩn hoá” đến sau khi thành công — và đó là lựa chọn chiến lược.
Kết luận: Đừng “sùng bái” Clean Code một cách mù quáng. Hãy hỏi: “Cái ‘deal’ này cần ‘quay vòng vốn’ nhanh hay ‘đầu tư’ dài hạn?”