Nguyên Tắc Cốt Lõi Của Lập Trình
Trên blog của Lưu Vị Bằng có bài viết “Nguyên tắc cốt lõi của lập trình (s) là gì?” đang được chia sẻ rộng rãi trên Google Reader những ngày qua. Điều này khiến tôi tự hỏi: Nguyên tắc hàng đầu mà bản thân đang theo đuổi là gì?
Thực ra những điều tôi muốn nói đều đã có người đề cập trong bài viết đó. Nếu phải chọn một nguyên tắc tối thượng, tôi đồng tình với đa số khi chọn KISS - Hãy giữ mọi thứ đơn giản, đừng phức tạp hóa. Tuy nhiên, với nguyên tắc DRY - Đừng lặp lại chính mình (Don’t Repeat Yourself), tôi lại cho rằng nó chỉ nên xếp thứ yếu, đặc biệt khi va chạm với KISS.
Nếu phải tìm một nguyên tắc ngang tầm với KISS, tôi sẽ nói: Tránh những giải pháp ngốc nghếch. Nghe có vẻ mâu thuẫn? Việc lặp lại chính mình (Repeat Yourself) thường phản ánh những phương pháp thiếu thông minh, không thực sự đơn giản và đòi hỏi nhiều công sức thể chất. Chữ “Stupid” trong KISS không phải chỉ sự ngu dốt thông thường, mà là kiểu “ngốc” của bậc trí tuệ cao - thứ đối lập hoàn toàn với kiểu “thông minh tự phụ” đang hủy hoại nhiều dự án lập trình hiện nay.
Dưới mái vòm KISS, có thể chia ra nhiều nguyên tắc cụ thể khác mà nhiều chuyên gia đã từng nhấn mạnh. Trong hai năm gần đây, hai câu tôi thường nói với đồng nghiệp nhất là: “Hãy xác định rõ vấn đề bạn đang giải quyết” và “Bạn không nhất thiết phải giải quyết vấn đề đó”. Vì đôi khi, không làm gì cả lại là giải pháp đơn giản nhất. Muốn biết điều gì không cần làm, trước tiên phải hiểu tường tận bản chất vấn đề.
Hiện tượng lạm dụng lập trình hướng đối tượng hay các công nghệ phức tạp thường xuất phát từ việc hiểu sai yêu cầu thực tế. Nhiều người viện cớ về hiệu năng hay tính năng để áp dụng giải pháp phức tạp hơn, coi phương tiện thành mục đích. Họ tin rằng để đạt được mục tiêu phải dùng công cụ X, và việc triển khai công cụ X trở thành mục đích chính.
Tôi cũng nhận thấy sự trừu tượng hóa thái quá thường bắt nguồn từ việc chưa thấu hiểu vấn đề. Khi chưa hình dung rõ sản phẩm cuối cùng cần gì, nhiều lập trình viên vội vàng xây dựng các tầng trừu tượng như một phản xạ. Dần dần, việc phân tích vấn đề cụ thể bị bỏ qua, thay vào đó là thói quen xây dựng trừu tượng ngay từ đầu. Trong khi đó, chính các tầng trừu tượng này lại thường là thành phần phức tạp nhất trong hệ thống, đi ngược hoàn toàn với tinh thần KISS.