Nguyên Tắc Dễ Dàng Chỉnh Sửa
Nguyên tắc Dễ thay đổi
Trong tháng vừa qua, tôi đã bắt đầu dịch cuốn “The Pragmatic Programmer” bản thứ hai. Đến nay đã hoàn thành hơn 100.000 từ, gần bằng một nửa toàn bộ tác phẩm.
Công việc vô cùng gian nan và mệt mỏi. Dịch thuật hoàn toàn khác biệt so với việc đọc hiểu thông thường. Dù bản thân đã nắm bắt được nội dung, việc diễn đạt sao cho rõ ràng mạch lạc lại là điều không dễ dàng. Có những câu văn mang tính mơ hồ, muốn hiểu thấu đáo bản chất thật sự không hề đơn giản.毕竟思想终究不是绝对真理,翻译者只能竭尽全力 truyền tải đúng tinh thần tác giả.
Nhưng càng đi sâu vào công việc, tôi càng cảm thấy đây là một sứ mệnh thiêng liêng. Cuốn sách này giống như bản gốc cách đây hai thập kỷ, từng câu từng chữ đều chứa đựng giá trị quý báu. Nó sẽ trở thành kim chỉ nam cho hàng triệu lập trình viên. Những triết lý trước đây còn mờ nhạt, nay qua hàng chục năm tích lũy kinh nghiệm, tác giả đã nhìn thấu đáo hơn bao giờ hết.
Đặc biệt có một nguyên tắc hoàn toàn mới so với bản cũ, được đặt ở vị trí trung tâm trong phiên bản này: Nguyên tắc ETC (Easier To Change) - Dễ thay đổi.
Tôi luôn hiểu rõ tầm quan trọng của việc thiết kế linh hoạt, nhưng chưa từng nghĩ nó lại là nền tảng cho mọi nguyên tắc khác. Trong bản trước, tác giả luôn nhấn mạnh nguyên tắc DRY (Don’t Repeat Yourself). Cá nhân tôi thích cách diễn đạt SPOT (Single Point Of Truth) trong nghệ thuật lập trình Unix hơn. Nhưng lần này, DRY được xếp vào nhóm nguyên tắc thứ cấp, cùng với các quy tắc mới được trình bày, tất cả đều xoay quanh một nguyên lý cốt lõi duy nhất: Tại sao không nên lặp lại? Tại sao chân lý chỉ nên được viết ở một nơi duy nhất?
Bởi vì mọi nỗ lực của chúng ta đều nhằm mục tiêu cuối cùng: Dễ dàng thay đổi.
Khi chân lý chỉ tồn tại ở một điểm duy nhất, việc cập nhật sẽ chỉ cần sửa đổi tại đó. Khi các mô-đun được thiết kế tách biệt, bạn không cần lo lắng về các mối liên hệ phức tạp. Nếu không tách biệt, mỗi lần thay đổi bạn phải dành thời gian xác định các điểm liên quan, hoặc nếu bỏ qua sẽ dẫn đến lỗi hệ thống. Việc đặt tên hàm, biến rõ nghĩa không chỉ là nghệ thuật, mà là chìa khóa để người khác dễ dàng đọc hiểu và sửa đổi.
Nói đến việc đặt tên, mỗi khi dịch xong một chương, tôi đều dành thời gian nghiên cứu kỹ lưỡng những trích dẫn mở đầu của tác giả. Tìm hiểu nguồn gốc, phân tích lý do chọn lựa từng câu nói. Nhiều trích dẫn tôi chưa từng biết đến trước đây, nhưng càng tìm hiểu càng bị cuốn vào thế giới tư tưởng của tác phẩm gốc.
Hai ngày trước, khi dịch đến trích dẫn từ “Truyền thuyết đất Phẳng” của Ursula K. Le Guin: “Thắp một ngọn nến là tạo ra một cái bóng”, tôi sử dụng bản dịch của Tài Mỹ Linh “Thắp một ngọn nến, tạo ra một cái bóng”. Biên tập viên góp ý “ngọn nến” nên đổi thành “ngọn lửa” cho chuẩn ngữ pháp. Trong lúc cân nhắc từ ngữ, tôi lại bị cuốn vào thế giới huyền bí của tác phẩm, lập tức mua trọn bộ trên Kindle. Đọc hai trang đầu tiên đã không thể dừng lại, cuối cùng dành cả cuối tuần để hoàn thành ba tập đầu tiên.
Tại sao việc đặt tên lại quan trọng? “Truyền thuyết đất Phẳng” có lẽ sẽ cho chúng ta câu trả lời :)