Giới thiệu sách “The Clean Coder: A Code Of Conduct for Professional Programmers”
Ở Việt Nam, chưa ai viết sách về Lập trình viên (gọi bình dân là coder) và ca ngợi nghề lập trình thì phải? Có chăng chỉ là một vài trang ca ngợi hời qua quýt, vài bài ca cẩm hời hợt, cùng lắm là một bộ phim nhàn nhạt có tên “Lập trình trái tim” vốn chả dính dáng gì tới nghề Lập trình. Dĩ nhiên ở Mĩ thì khác hẳn: phim làm về các lập trình viên rất rất thú (như phim về Bill Gates hay Mark Zuckerberg chẳng hạn), sách viết về lập trình viên, lập trình viên tự viết, hay viết cho lập trình viên thì rất nhiều. Thử lấy ví dụ về vụ FlappyBird ầm ĩ gần đây thì thấy sự khác nhau rất rõ: trong khi báo chí trong nước chỉ biết xào đi xáo lại vài mẩu tin cũ từ tạp chí nước ngoài, thì hàng loạt hãng tin có tiếng như CNN, Forbes đưa tin, phỏng vấn trực tiếp; thậm chí tờ báo rất oách Rolling Stones thuê hẳn một cây viết có tiếng David Kushner viết thật chi tết về một chân dung coder thứ thiệt đầy đam mê và sức trẻ. Một coder học tập, lớn lên và thành danh ở chính quê hương Hà Đông của mình, nhưng lại được vinh danh ở những chỗ trang trọng nhất trên những diễn đàn nổi tiếng nhất của miền đất hứa của dân Lập trình.
Cho đến giờ, coder ở Việt Nam phần nhiều chỉ coi mình là những “cu-li” của thời đại số, coi nghề lập trình chỉ như chỗ ghé chân thoảng qua trong sự nghiệp. Đấy quả là một não trạng đầy u ám và không nên duy trì lâu trên một quốc gia muốn lấy CNTT làm “bàn đạp” để tiến ra thế giới. Có thể những Nguyễn Hà Đông sẽ giúp cải thiện phần nào tình hình, nhưng những cánh én ấy chỉ mang lại những cảm hứng, chứ để định hình cả một nghề nghiệp tử tế thì còn nhiều việc phải làm và phải chờ một thời gian nữa.
Chú Bob (“Uncle Bob”, tên “đường phố” của Robert C. Martin, một tay tổ trong giới lập trình, tác giả của hàng loạt tập sách thuộc loại gối đầu giường cho coder, đồng tác giả của Agile Manifesto trứ danh – một văn bản định hình lại văn hóa lập trình hơn một thập kỉ qua) là người nhiệt thành đến cực đoan trong việc thúc đẩy một quan điểm “nâng tầm” nghề lập trình, đòi hỏi cả coder lẫn những người khác phải nhìn nhận lập trình như một nghề chuyên nghiệp đáng trân trọng, và phải đầu tư nghiêm túc, từ chuyên môn tới trách nhiệm và đạo đức. Cuốn sách mới nhất của Chú Bob, cuốn “Clean Coder: A Code Of Conduct for Professional Programmers” hiển hiện rất rõ như là một “kinh điển” mà một coder cần phải mang theo, từ lúc còn tập tọe viết “Hello World” cho tới lúc đã 10 năm kinh nghiệm lập trình. Với cuốn sách này, Chú Bob tiếp tục thể hiện mình là một lãnh đạo tư tưởng (thought leader) xứng đáng của giới viết mã.
Chương 1 bắt đầu như thể để nối liền tựa sách: Professionalism. Chú Bob bắt đầu thảo luận trước hết về đạo đức nghề nghiệp, những điều suy nghĩ nghiêm túc về trách nhiệm của một coder. Trong tiểu mục có lẽ là quan trọng nhất của chương, lấy tựa kiểu như một tín điều trong Kinh thánh “First, Do No Harm”, Chú Bob chỉ rõ các quy tắc và yêu cầu cụ thể đối với một coder thứ thiệt, như: không để lại bug, viết code phải sạch mã đến mức QA không thể tìm thấy gì, coder phải biết rõ là code mình chạy tốt chứ không cần nhờ đến tester hay ai khác “kiểm thử” giúp. Đó là những quan điểm nhất quán được Chú Bob đặt như là một trong những nền tảng đạo đức quan trọng nhất của nghề viết mã. Hai chương tiếp theo tiếp tục làm rõ những tình huống cần nói Không và Có, như là cụ thể hóa các ranh giới đạo đức nghề nghiệp mà một coder cần phải vạch ra. Năm chương 4, 5, 6, 7, 8 bàn kĩ về các khía cạnh kĩ thuật mà một coder phải thành thục hằng ngày: viết mã, kiểm thử, đảm bảo chất lượng, và luyện tập nâng cao tay nghề liên tục. Thông điệp của những chương này hẳn là rất rõ: coder cần đảm bảo tay nghề luôn vững và tăng trưởng liên tục, trong khi luôn tạo ra những đoạn mã chất lượng cao và sạch lỗi (clean code), những phần mềm có chất lượng tự thân và không làm phiền QA. Chương 9 là một chương hết sức thú vị về quản lí thời gian, từ chuyện họp hành, tới những điều nhỏ nhặt nhưng gần gũi và không kém phần quan trọng như chuyện uống cà phê, chuyện tập trung khi làm việc hay nghỉ ngơi như thế nào. Nếu được góp ý với Chú Bob, chắc là tôi thích gọi chương này cùng với chương bàn về áp lực (Ch11: Pressure) là “Quản lí năng lượng” (managing energy) thay vì tách ra và gọi riêng như tác giả đã dùng. Những điều này cực kì quan trọng đối với một coder, để thoát ra khỏi cái định kiến về một giới thường hay ngồi xó văn phòng, đầu to mắt cận da bọc xương ít giao tiếp xã hội. Trong quan điểm của Chú Bob, coder hoàn toàn là những người bình thường như bao người khác. Sau một chương hơi kĩ về kĩ thuật ước tính (Estimation), các chương tiếp theo tác giả bàn quanh chuyện cộng tác và làm việc trong nhóm; có thể coi như những dẫn giải kĩ lưỡng về nguyên lí đã từng được viết cô đặc trong Agile Manifesto: ”Individuals and interations over process and tools”, và “Customer collaboration over contract negotiation”, sự khác biệt ở đây là tác giả chỉ rất rõ cái “How” cho những độc giả còn chưa quen Agile Software Developent (Phát triển Phần mềm Linh hoạt). Chú Bob kết thúc phần chính của quyển sách của mình với từ khóa quan trọng nhất cho một trào lưu hậu-Agile: : Software Craftsmanship (Nghề Thủ công Phần mềm) với các chủ điểm ngắn gọn về kèm cặp (mentoring), học việc (apprenticeship) và một nghệ nhân phần mềm (craftsman). Phần phụ lục có khi lại là phần đắc địa với nhiều người nhất khi Chú Bob liệt kê đầy đủ “dao kéo” (tools) cho một coder thứ thiệt như ông đã nhắc tới trong suốt cả cuốn sách.
Được viết với một văn phong giản dị và dễ hiểu, những từ khóa không mấy hấp dẫn như “trách nhiệm”, “đạo đức”, “những điều răn” … được Chú Bob dẫn nhập một cách có lí có tình và thật nhiều hướng dẫn thi triển cụ thể. Cộng thêm những suy tư cá nhân của riêng một người có thâm niên gõ bàn phím được dàn đầy trong các trang sách, với các coder chân chính “The Clean Coder” xứng đáng là cuốn sách cần đọc lòng và ngẫm nghĩ thường xuyên.
Dương Trọng Tấn.