1989 - cái thời mà RAM tính bằng Kilobyte, màn hình còn đen thui xanh lét và khái niệm StackOverflow còn chưa tồn tại, lão quái Rob Pike (cha đẻ ngôn ngữ Go, đồng sáng tạo Unix) đã ném ra 5 chân lý cho dân code dạo. Ảo ma ở chỗ, hơn 30 năm sau, mấy cái "luật rừng" này vẫn vả đôm đốp vào mặt mấy thanh niên chúa tể over-engineering hiện nay.
Tóm gọn 5 bí kíp võ công của giáo chủ Rob Pike
Anh em lười đọc tài liệu cổ thì để tôi tóm cái váy lại 5 quy tắc của cụ Pike cho nhanh. Nghe thì có vẻ hiển nhiên, nhưng lúc code thật thì 90% anh em toàn quên mẹ mất.
- Đừng có cầm đèn chạy trước ô tô: Các ông đ*o bao giờ biết được chương trình nó sẽ cắn tài nguyên ở đâu đâu. Nút thắt cổ chai (bottleneck) toàn nằm ở những chỗ ối giời ơi. Thế nên, đừng có rảnh háng đi "tối ưu hóa" (speed hack) khi chưa chứng minh được chỗ đó thực sự là cục tạ.
- Đo đạc đi đã, đừng mõm: Nối tiếp luật 1, đừng có tune tốc độ khi chưa measure (đo lường). Kể cả đo xong rồi cũng kệ xừ nó, trừ khi cái đoạn code đó nó làm chậm nguyên cả một hệ thống.
- Thuật toán "sang chảnh" thường vô dụng: Mấy cái thuật toán fancy phức tạp thì xịn xò đấy, nhưng lúc $n$ nhỏ thì nó chạy như rùa. Mà ở đời thực, $n$ thường xuyên là nhỏ. Cứ đơn giản mà phang.
- Càng màu mè càng nhiều bug: Thuật toán phức tạp thì đẻ ra bug nhiều hơn, lại còn khó implement. Lời khuyên của cụ? Dùng thuật toán đơn giản đi kèm với cấu trúc dữ liệu đơn giản. Hết.
- Data là chân ái (Trùm cuối): Cấu trúc dữ liệu (Data structures) mới là lõi của lập trình, đ*o phải thuật toán. Nếu các ông tổ chức data ngon lành, thuật toán tự nhiên nó sẽ sáng như trăng rằm, cứ thế mà ốp vào thôi.
Giang cư mận cõi Dev nói gì về bộ kinh thư này?
Vì bài gốc toàn cao nhân ẩn danh nên tôi tổng hợp lại những pha gật gù của anh em dev khắp các diễn đàn khi đọc lại bảng phong thần này.
- Phe chán ghét màu mè: Nhiều anh em dạo này hay lạm dụng AI để gen ra một đống code thiết kế theo đủ thứ Design Pattern lằng nhằng, xong tự hào ta đây bá đạo. Đọc xong bộ luật này chắc nhột. Giải quyết cái bài toán CRUD quèn mà vác cả kiến trúc Microservices vào thì đúng là lạy.
- Phe thực dụng thờ phụng Data: Cực kỳ đồng tình với luật số 5. Anh em nhớ câu của Linus Torvalds không? "Bad programmers worry about the code. Good programmers worry about data structures and their relationships." Rõ ràng các lão quái đều có chung một tư duy.
- Phe xôi thịt cậy tiền: Một vài đạo hữu tà dâm thì bảo luật này cũ rồi. Giờ vps rẻ bèo, cloud scale tẹt ga, code chậm tí thì đập tiền mua RAM, mua CPU là mượt ngay. Tư duy này nghe cũng lọt tai cho đến khi cuối tháng nhìn bill server cắn hết mẹ tiền lãi của công ty.
Chốt hạ từ Coding4Food: Bài học sinh tồn chốn võ lâm
Tóm lại, 5 quy tắc của Rob Pike quy về đúng một chữ: ĐƠN GIẢN (KISS - Keep It Simple, Stupid).
Làm dev, cái sướng nhất không phải là viết ra một đoạn code mà chỉ có chúa và mình hiểu. Cái sướng nhất là viết code xong, 6 tháng sau đọc lại vẫn không tự chửi thề vào mặt mình trong gương. Hãy bớt thời gian flex thuật toán LeetCode Hard đi, tập trung vào thiết kế Data Structure cho chuẩn. Và làm ơn, bỏ ngay cái tật "premature optimization" (tối ưu hóa sớm) đi. Code chạy đúng đã, chạy nhanh tính sau!
Nguồn hóng hớt: Rob Pike’s Rules of Programming (1989) trên Hacker News