Một Lập Trình Viên Có Thể Viết Được Bao Nhiêu Dòng Mã Trong Một Năm?
Vài ngày trước tại Hạ Môn, trong một buổi thuyết trình bất ngờ, tôi đã ước lượng rằng sản lượng mã của mình hiện tại khoảng 200.000 dòng mỗi năm. Khi đó, Lei Jun (Lôi quân) tỏ ra không tin tưởng, và sau đó chúng tôi đã tranh luận về khả năng đạt được con số này. Ông ấy cho rằng để duy trì mức 200.000 dòng/năm, lập trình viên phải viết ít nhất 800 dòng mỗi ngày (chưa tính thời gian suy nghĩ và thiết kế hệ thống). Điều này dường như không thực tế.
Tuy nhiên hôm nay, khi kiểm tra lại số liệu từ tháng 8 đến cuối năm 2005, tôi phát hiện sản lượng đã dễ dàng vượt quá 80.000 dòng. Dự án chính bắt đầu từ tháng 8 cùng đồng nghiệp hiện đã đạt 90.000 dòng mã (gần như toàn bộ được viết thủ công bằng EditPlus, không copy-paste, không code generator tự động, thậm chí không dùng tính năng auto-complete trong VC IDE). Phiên bản hiện tại bắt đầu từ cuối tháng 9, còn hai tháng đầu tiên đã bị refactor hoàn toàn. Dù không bother khai quật phiên bản cũ trong kho lưu trữ, ước tính giai đoạn này cũng đóng góp khoảng 20.000 dòng. Như vậy sản lượng cá nhân tôi đạt 50.000+ dòng trong giai đoạn này.
Gần đây tôi còn phát triển một máy ảo và trình biên dịch script kèm bộ test, tổng cộng 6.000+ dòng. Trước đó đã thử nghiệm bằng C với phiên bản đơn giản hơn, khoảng 1.500 dòng.
Khi khởi động dự án game 2D mới, tôi đã viết lại engine 2D bằng Lua để các lập trình viên khác sử dụng - 2.500 dòng mã. Ngoài ra còn viết 1.000 dòng script Lua làm demo. Những dự án nhỏ lẻ khác (hơn 20 dự án) trung bình mỗi cái khoảng 500 dòng, tổng cộng khoảng 10.000 dòng.
Chưa tính đến các file cấu hình Jamfile hay script Jam do tôi viết tay, cũng như các bản vá lỗi cho dự án cũ. Tôi không thích viết comment, nên tỷ lệ comment và dòng trống chỉ chiếm khoảng 10% tổng mã nguồn.
Trong nửa năm gần đây, do tham gia nhiều vào công việc策划 (sáng tạo nội dung) và quản lý dự án nên hiệu suất code giảm rõ rệt. Dù vậy, con số 200.000 dòng/năm mà tôi đưa ra vẫn hoàn toàn chính xác. Khi Lei Jun tính toán, ông ấy giả định chỉ tính ngày làm việc, nhưng thực tế tôi thường code nhiều vào cuối tuần vì xem lập trình như sở thích. Trung bình 200.000/365 ≈ 550 dòng/ngày, nhưng nếu chỉ tính 22 ngày làm việc/tháng thì đúng là hơn 800 dòng/ngày.
Tôi từng thử đo đếm, một ngày có thể đạt tới 2.000 dòng code hiệu quả nếu tập trung. Khi làm dự án nhỏ, mỗi phiên làm việc liên tục thường sản sinh 400-500 dòng.
Tuy nhiên, cần nhấn mạnh rằng số lượng dòng code không nên là thước đo năng lực lập trình viên. Ngược lại, lập trình viên giỏi thường viết ít hơn vì biết tái sử dụng code hiệu quả và tối ưu giải pháp. Sản lượng mã của tôi những năm gần đây đã giảm so với giai đoạn đầu sự nghiệp. Có lẽ mục tiêu sắp tới nên là duy trì mức 100.000 dòng/năm - chất lượng hơn số lượng!