Giới thiệu sách “Practices of an agile developer”
Câu hỏi đơn giản “một lập trình viên Agile cần phải làm những gì?” hóa ra lại không đơn giản. Có người thì nói rằng “không khác gì một LTV bình thường”, có người thì nói “phải siêu hơn LTV bình thường”, có người thì nói “làm gì có LTV Agile, chỉ có một LTV thôi”, thậm chí có người cố tình ‘hỏi ngu’ “Agile là gì?”.
Xin được thuyết minh ngắn gọn: một “lập trình viên Agile” (Agile Developer) là một lập trình viên (developer) làm việc trong các nhóm phát triển phần mềm có sử dụng các phương pháp phát triển phần mềm linh hoạt (Agile Software Development). Vì thế, câu hỏi “một LTV Agile cần phải làm những gì?” sẽ dẫn đến những công việc đặc thù (hoặc không đặc thù) mà một LTV Agile phải làm để hoàn thành nhiệm vụ; nếu chưa thể làm tốt vì thiếu hiểu biết hay thiếu kĩ năng thì cũng biết là mình không biết để còn học tập và nâng cao tay nghề, đặc biệt là cho những LTV chỉ quen làm việc theo các phương pháp phát triển truyền thống. Đó thực sự là một câu hỏi nghiêm túc. Thật may mắn, có vài cuốn sách trả lời câu hỏi trên, trong đó phải kể đến cuốn “Practices of an agile developer” (dịch là: Mấy “võ” của LTV Agile”), tác giả Venkat Subramaniam và Andy Hunt.
Các tác giả dành một chương để giúp bạn đọc hiểu được Agile là gì với việc diễn giải Tuyên ngôn Linh hoạt (mà một trong hai tác giả của cuốn sách – Andy Hunt – là đồng tác giả của văn bản nổi tiếng này, cũng là đồng sáng lập tủ sách hành dụng - Pragmatic Bookshelf với rất nhiều tựa sách có giá trị) và những bình luận quan trọng liên quan đến triết lí Agile. Chương tiếp theo được dùng để thảo luận về những vấn đề chung nhất khi làm việc trong các nhóm linh hoạt (agile team) như làm việc theo mục tiêu, trách nhiệm đảm bảo chất lượng, sự dũng cảm khi làm việc. Tác giả dành cả chương 3 để nói về tầm quan trọng của việc học – một tinh thần cơ bản của Agile – và các “mánh” để một LTV Agile liên tục nuôi dưỡng sự tiến bộ. Năm chương tiếp theo, các tác giả mô tả khá chi tiết theo tinh thần hành dụng (pragmatic) những công việc thiết yếu mà một LTV Agile phải làm hằng ngày: Hiểu đúng yêu cầu của người dùng và chuyển giao đúng cái khách hàng muốn, cung cấp và sử dụng những phản hồi thật hiệu quả khi phát triển, lập trình theo “phong cách” Agile với những kĩ thuật đặc thù và yêu cầu khắt khe về chất lượng công việc, gỡ rối (debug) theo “phong cách” Agile, và cộng tác hiệu quả trong nhóm làm việc. Chương cuối cùng được dùng để vừa tóm tắt, vừa hướng dẫn thiết lập một môi trường tiêu chuẩn để một LTV Agile có thể làm việc hiệu quả.
Đây là một cuốn sách mỏng, theo tinh thần thực dụng, vì thế khá ngắn gọn, dễ hiểu và dễ áp dụng. Bỏ qua một số phần dính dáng đến kĩ thuật liên quan tới phiên bản phần mềm, đây là một cuốn sách nhập môn quan trọng cho mỗi LTV Agile trước khi chị ta có thể đi sâu hơn vào nghiên cứu và thực hành từng phương diện đặc thù của một “nghệ nhân phần mềm” trong tương lai.
Dương Trọng Tấn