- Năm 1982, đội phần mềm Lisa của Apple đã áp dụng chính sách theo dõi số dòng mã hằng tuần của từng lập trình viên để chuẩn bị phát hành phần mềm
- Bill Atkinson cho rằng số dòng mã là một thước đo sai lệch về năng suất phần mềm
- Ông đã viết lại بالكامل bộ máy tính toán region của QuickDraw, cắt giảm khoảng 2.000 dòng mã và cải thiện hiệu năng gấp 6 lần
- Atkinson đã ghi -2000 vào biểu mẫu quản lý dùng để báo cáo số lượng mã
- Cuối cùng, quản lý không còn yêu cầu Bill nộp biểu mẫu đó nữa
Đội phần mềm Lisa năm 1982 và chính sách theo dõi số dòng mã
- Đầu năm 1982, đội phần mềm Lisa bắt đầu tăng tốc với mục tiêu phát hành phần mềm trong vòng 6 tháng tới
- Một số quản lý cho rằng việc theo dõi số dòng mã mà mỗi kỹ sư viết mỗi tuần sẽ giúp thúc đẩy tiến độ
- Vì vậy, họ đưa vào sử dụng một biểu mẫu mà kỹ sư phải điền và nộp vào mỗi thứ Sáu, ghi lại số dòng mã đã viết
Quan điểm của Bill Atkinson về tiêu chuẩn năng suất
- Bill Atkinson, người thiết kế QuickDraw và giao diện người dùng, cho rằng số dòng mã không thể là tiêu chuẩn đo năng suất phần mềm
- Ông nhấn mạnh rằng mục tiêu là làm cho chương trình nhỏ nhất và nhanh nhất có thể
- Ông nhận thấy việc đo số dòng mã ngược lại có thể khuyến khích mã lộn xộn và kém hiệu quả
Tái cấu trúc và tối ưu hóa bộ máy region của QuickDraw
- Gần đây, Atkinson đã viết lại hoàn toàn bộ máy tính toán region của QuickDraw bằng một thuật toán đơn giản hơn và tổng quát hơn
- Kết quả tối ưu hóa đã tăng tốc các phép toán region lên tới 6 lần
- Trong quá trình đó, 2.000 dòng mã cũng được cắt giảm một cách tự nhiên
Báo cáo viết -2000 dòng mã và phản ứng của quản lý
- Khi điền biểu mẫu quản lý của tuần đầu tiên, Atkinson đã viết -2000 vào ô số dòng mã
- Không rõ các quản lý đã phản ứng thế nào với con số này
- Vài tuần sau, Bill được bảo rằng không cần nộp biểu mẫu nữa, và ông đã vui vẻ đón nhận điều đó
1 bình luận
Ý kiến trên Hacker News
Commit mà tôi nhớ là xuất sắc nhất là lần xóa khoảng 60.000 dòng code, thay toàn bộ “server” vốn lưu mọi trạng thái trong bộ nhớ bằng khoảng 5.000 dòng logic gọn nhẹ
Hồi đại học tôi từng làm cho một công ty có chủ trương quản lý rằng tân binh cũng có thể viết ra code tốt, và rốt cuộc họ trở thành một ví dụ thất bại chưa thể chứng minh điều đó
Về chủ đề liên quan, có người đã tổng hợp các thread nổi tiếng trên Hacker News về “-2000 dòng code” tại liên kết
Dự án web UI tôi phụ trách có 250.000 dòng code, chưa tính backend
addEventListener. Tôi còn đùa rằng “đưa cho một nhà sư một cuốn sách JavaScript và 10 năm biệt giam thì sẽ ra loại code như thế này”switch/case/if/elselồng nhau và toán tử ba ngôi tới 10 tầng, câu SQL trộn lẫn với JS/HTML/HTML chèn JS, và hoàn toàn không có test tự động trong một kiểu frontend thời PHP/DojoCó một tranh Dilbert về cấu trúc thưởng vô hạn: sếp của Dilbert hứa sẽ thưởng tiền mỗi khi sửa được một bug, và Wally liền nói “Hôm nay chắc tôi phải code ra ít nhất một chiếc minivan mới được!”
Chia sẻ một trường hợp thực tế xóa 64.000 dòng trong kho
dotnet/runtimeMỗi khi thấy thống kê nói LLM đã nâng năng suất lập trình viên lên bao nhiêu, tôi lại nhớ đến câu chuyện kinh điển này
Tôi không học CS bài bản mà là người đi làm rồi học thực chiến
Trước kỳ đánh giá cuối năm, tôi nhìn lại thống kê trong monorepo nội bộ và phát hiện mình đã trở thành người có số dòng code ròng âm
Từ rất lâu trước đây, tôi từng sốc khi thấy trong một dự án lớn, các PL ghi tay offline số bug theo từng lập trình viên — số bug sửa được, số bug gây ra — rồi dán lên tường như một KPI thảm họa