Về Agile Y


Cuốn sách này dành cho ai?

Đây không phải là cuốn sách về công nghệ, kỹ thuật nhưng mọi lập trình viên đều nên đọc. Theo tôi, điểm yếu của lập trình viên Việt Nam không chỉ là công nghệ hay kỹ thuật. Điều chúng ta còn thiếu là phương pháp làm việc khoa học và cách thức thực hành có chủ đích. Công nghệ và kỹ thuật luôn phát triển rất nhanh và cần cập nhật thường xuyên, đặc biệt trong ngành công nghệ thông tin (CNTT); nhưng nhờ Internet khoảng cách này ngày càng được thu hẹp giữa những nước phát triển và Việt Nam. Chúng ta dễ dàng tiếp cận những thay đổi từ Java, Swift… tới những công nghệ phức tạp hơn; nhưng lại bỏ qua cách thức làm việc để tiếp cận và thực hành chúng một cách đúng đắn để tạo ra những sản phẩm tốt. Và khi một phần của thế giới đã bước sang giai đoạn làm việc tự chủ với phản hồi nhanh thì phần lớn kỹ sư CNTT Việt Nam vẫn đang loay hoay với với việc áp dụng kỹ thuật cụ thể trên một yêu cầu và giải pháp rõ ràng. Điều này làm giảm lợi thế cạnh tranh của lập trình viên Việt Nam khi chúng ta thiếu những kỹ năng cộng tác, làm việc nhóm, tự quản… – những kỹ năng giờ đây đã được cứng hoá, là bắt buộc, không còn là kỹ năng mềm bổ trợ.

Những nhà quản lý, những người chịu trách nhiệm về sản phẩm, dự án phần mềm. Bởi cách thức tổ chức dự án và phát triển phần mềm đã thay đổi trong 10 năm gần đây. Tất cả những gì chúng ta đang làm, với một cách thức tổ chức dự án cồng kềnh, phân hoạch rõ ràng và bám sát kế hoạch giờ đây đã không còn phù hợp; thay vào đó là sự linh hoạt, gọn nhẹ dựa trên cộng tác giữa những cá nhân nhằm tối ưu giá trị mang lại cho khách hàng.

Những nhà quản lý cao cấp, những người mong muốn tổ chức hướng tới lợi ích của từng nhân viên bằng một môi trường làm việc thân thiện và vui vẻ. Thị trường lao động về cơ bản đã thay đổi trong những năm gần đây và đặc biệt thay đổi rất mạnh tại thị trường CNTT non trẻ như Việt Nam; quan niệm về chất lượng cuộc sống ngày càng được nâng cao trong từng cá nhân; và lương, thưởng đôi khi không còn là điều kiện tiên quyết. Ngày càng nhiều nhân viên bước dần lên những bậc cao hơn của tháp Maslow nơi họ muốn đứng ra nhận trách nhiệm bằng việc thể hiện khả năng trong một môi trường khoáng đạt hơn thay vì chỉ chăm chỉ làm theo mệnh lệnh của cấp trên.

Những ai không nên đọc cuốn sách này? Những người có hiểu biết sâu sắc về Agile. Đây không phải là một cuốn sách sâu sắc về Agile; những kiến thức này đã xuất hiện rất nhiều trên thế giới. Thay vào đó, cuốn sách này vẽ ra một bức tranh tổng thể, điểm ra những vấn đề cơ bản của Agile trong thế giới phát triển phần mềm và cá nhân. Điều tôi nghĩ tới khi viết cuốn sách này đó là, mặc dù cộng đồng Agile đã phát triển rất nhanh tại Việt Nam, song các tổ chức vẫn dè dặt ở mức tìm hiểu; bởi cộng đồng thiếu một góc nhìn toàn cảnh, những phương pháp, những thay đổi tích cực cũng như rủi ro nhận được khi áp dụng Agile trong tổ chức. Cuốn sách này được coi như điểm khởi đầu cho những người mới tìm hiểu về Agile có được góc nhìn rộng về những điều cần quan tâm; và khi thực sự quan tâm tới một vấn đề, phương pháp cụ thể, bạn có thể biết cách tìm tới những kiến thức chuyên sâu ở một nơi khác.

Nội dung

Agile Y không thực sự là một cuốn sách về Agile đúng nghĩa mà bao gồm nhiều nội dung trong những bài viết của tôi trên blog cá nhân, những buổi nói chuyện, những nguồn tư liệu tham khảo về Agile được cấu trúc lại theo một cách hợp lý hơn. Tại đây bạn có thể tìm thấy những nội dung về Agile được cấu trúc theo 3 phần gồm 11 chương như sau:

Phần I: Agile trong phát triển phần mềm

Phần I là những nội dung quan trọng nhất trong cuốn sách này, dành cho lập trình viên và những nhà quản lý dự án phát triển phần mềm, gồm 5 chương.

Chương 1 đặt ra những vấn đề cơ bản về những hạn chế trong việc phát triển phần mềm theo phương pháp truyền thống, những lý do Agile cần được áp dụng trong việc phát triển phần mềm hiện đại. Những nội dung, phân tích này không thực sự mới bởi Agile đã được thừa nhận là phương pháp phát triển phần mềm hiện đại; bạn có thể bỏ qua chương này nếu đã biết về Agile.

Chương 2 giới thiệu về Agile, tuyên ngôn Agile và điểm qua một số phương pháp nằm trong chiếc ô Agile giúp bạn hiểu cách tiếp cận giúp Agile giải quyết những vấn đề hạn chế của phương pháp phát triển truyền thống đã được đặt ra trong Chương 1.

Chương 3 giới thiệu về Scrum, phương pháp phát triển phần mềm phổ biến nhất trong chiếc ô Agile, giúp bạn hiểu về cách một nhóm phát triển phần mềm vận hành và những nguyên lý, giá trị tạo nên nền tảng sức mạnh của Scrum. Tôi khuyến nghị mọi tổ chức mới thực hành Agile tìm hiểu kỹ và sử dụng Scrum.

Chương 4 giới thiệu về Kanban, Scrumban – những phương pháp có sự tăng trưởng nhanh nhất trong chiếc ô Agile. Đây thường là phương pháp được những nhóm phát triển phần mềm lựa chọn sau khi đã thực hành thành thục Scrum.

Chương 5 bàn về những vấn đề kỹ thuật thường được áp dụng trong những nhóm Agile nhằm đạt hiệu quả cao. Hầu hết những kỹ thuật được giới thiệu trong chương này thuộc về XP (eXtreme Programming), những kỹ thuật không thể thiếu với những nhóm thực hành Agile, dù theo bất cứ phương pháp nào.

Phần II: Agile trong tổ chức

Khác với Phần I giới thiệu về Agile “nguyên thuỷ”, nơi việc phát triển phần mềm tập trung vào nhóm. Phần II cho thấy bức tranh về việc những tổ chức lớn hơn thực hành Agile. Phần II dành cho những nhà quản lý cấp cao thấy được bức tranh toàn cảnh trong việc mang Agile vào tổ chức.

Chương 6 phân tích về cách những tổ chức ngày nay vận hành bằng cách sử dụng những nhóm tự tổ chức liên chức năng nhằm tăng sự linh hoạt qua việc tối đa hoá việc cộng tác và chịu trách nhiệm. Những vấn đề về trao quyền cũng như cộng tác cũng được đặt ra trong chương này.

Chương 7 giới thiệu về việc mở rộng Agile, cho thấy cách Agile áp dụng trong những tổ chức lớn, những dự án lớn. Trong khoảng gần 10 năm gần đây, Agile đã chứng minh được sự phù hợp và hiệu quả trong thời đại ngày nay với quy mô nhóm. Và giờ đây, Agile đang từng bước đập tan hoài nghi rằng Agile chỉ phù hợp với những nhóm nhỏ, dự án nhỏ.

Chương 8 bàn về việc chuyển đổi tổ chức từ cấu trúc truyền thống sang môi trường thực sự Agile nhằm nâng cao tính cạnh tranh. Chuyển đổi trong tổ chức chưa bao giờ là việc là dễ dàng, và không có chiếc đũa thần nào giúp mang tới hiệu quả tức thì; ở đây tôi chỉ điểm qua một số ưu thế và khó khăn cũng như cạm bẫy có thể gặp phải trong quá trình thay đổi.

Phần III: Agile cho cá nhân

Phần III không nằm trong kế hoạch về nội dung ban đầu, song tôi muốn dành phần này cho lập trình viên – những người đang bị cuốn trôi bởi quán tính công việc và rất ít quan tâm tới hiệu quả công việc cũng như chất lượng cuộc sống cá nhân. Phần này giúp bạn áp dụng Agile vào cuộc sống, thực hành có chủ ý nhằm nâng cao lợi thế cạnh tranh cá nhân.

Chương 9 đặt ra những vấn đề cơ bản về việc quản lý cá nhân trong cuộc sống ngày nay; những vấn đề cần quản lý để nâng cao hiệu quả công việc và chất lượng cuộc sống.

Chương 10 giới thiệu về cách áp dụng Kanban cá nhân nhằm quản lý công việc tốt hơn; trực quan và hiệu quả. Về cơ bản bạn sẽ gặp lại những khái niệm được đề cập đến trong Chương 4; nên sẽ thật thiếu sót nếu những lập trình viên dù đã thấy giá trị Kanban trong nhóm phát triển phần mềm lại bỏ lỡ cơ hội áp dụng nó vào cuộc sống cá nhân.

Chương 11 đặt ra những nguyên lý cơ bản đứng sau Kaban cá nhân cũng như những kỹ thuật được áp dụng trong cuộc sống hàng ngày nhằm nâng cao hiệu quả công việc. Tất nhiên, không có một phương pháp nào phù hợp với mọi cá nhân, song những nguyên lý cơ bản thì không thay đổi.

Phụ lục

Phần kết của cuốn sách bao gồm 2 phụ lục.

Phụ lục tham khảo điểm qua những nguồn tài liệu và đánh giá cơ bản giúp bạn tìm hiểu tiếp để có hiểu biết sâu sắc về Agile trong quá trình áp dụng cho cá nhân, nhóm hay tổ chức.

Phụ lục thuật ngữ Agile điểm qua những thuật ngữ được sử dụng trong Agile cùng giải thích ngắn gọn giúp bạn dễ tiếp cận với những tài liệu chuyên sâu, nơi những thuật ngữ này không được giải thích.

Định dạng nội dung

Xuyên suốt những chương sách của Agile Y, bạn có thể tìm được những nội dung phong phú, về nhiều khía cạnh khác nhau về việc áp dụng những tư tưởng Agile trong việc phát triển phần mềm, trong xây dựng tổ chức và cho cá nhân. Do đó, bất cứ ai cũng có thể nhận được một nội dung hữu ích, dù ít hay nhiều, sau khi đọc xong Agile Y.

Thiết kế của Agile Y đảm bảo các phần nội dung độc lập một cách tương đối qua 3 phần và từng chương nhằm giúp những ai đã có hiểu biết về Agile và quan tâm tới những nội dung cụ thể nhanh chóng tiếp nhận được ý tưởng. Nhằm tăng tính tương tác, tôi sử dụng hai chỉ dẫn xen ngang giữa các phần nội dung là Gợi ýThử thách.

Gợi ý là những chỉ dẫn ngắn gọn để bạn có thể thực hành được phần nội dung tương ứng.

Thử thách dưới dạng câu hỏi hoặc bài tập giúp bạn hiểu hơn về nội dung tương ứng.

Kết thúc mỗi chương là phần Tổng kết những nội dung chính, nơi tôi chọn ra những điểm quan trọng nhất được mô tả chỉ trong một hoặc hai câu, giúp bạn dễ dàng ghi nhớ phần nội dung.

Ngoài ra, qua kinh nghiệm cá nhân, tôi nhận thấy có nhiều cách hiểu chưa đúng về Agile trong những nội dung cụ thể; bạn có thể tìm thấy trong phần Hiểu đúng kèm những giải thích ngắn gọn. Những nội dung này hầu hết được tôi chỉ ra trong phần nội dung chính; song theo kinh nghiệm cá nhân, tôi nghĩ nên có một phần riêng đề cập tới những hiểu nhầm hay gặp để giúp bạn dễ dàng ghi nhớ hơn.

Ngôn ngữ sử dụng

Agile Y chứa đựng cách truyền tải nội dung gần với những bài viết, trò chuyện, thường được tôi sử dụng trong những bài viết trên blog. Rất nhiều từ ngữ, thuật ngữ được sử dụng trong cuốn sách này được giữ nguyên (hoặc lai tạp) bằng tiếng Anh (có thể kèm theo chú thích); nên nhiều chỗ bạn có thể cảm thấy khó chịu vì một câu tiếng Việt chứa những từ tiếng Anh. Song tôi không tham vọng sẽ dịch những thuật ngữ này sang tiếng Việt trong cuốn sách; ít nhất, những thuật ngữ tiếng Anh cũng giúp bạn dễ Google hơn để tìm được những tài liệu tham khảo liên quan khi nguồn tài liệu về Agile bằng tiếng Việt chưa thực sự phong phú trong thời điểm này.