Development là gì?

Agile Software Development là một tập hợp các phương pháp hướng đến việc chuyển giao nhanh và liên tục sản phẩm có giá trị cho khách hàng. Mô hình này khuyến khích việc lập kế hoạch tốt, triển khai các chu trình nhỏ thông qua cộng tác chéo giữa các teams trong dự án.

Agile có thể áp dụng cho mọi doanh nghiệp (từ startup đến enterprise), mọi team (từ nhỏ đến lớn), và mọi loại dự án. Các tổ chức sử dụng Agile cần luôn sẵn sàng thích ứng với thay đổi và huấn luyện thường xuyên để phát triển.

Ưu điểm của Agile là gì?

  • Greater transparency Tính minh bạch cao được thể hiện ở việc tất cả các bên liên quan (testers, developers, designers, PM v.vv..) đều tham gia các buổi họp định kỳ và nắm được thông tin chức năng nào đang làm, chức năng nào cần hoàn thành.
  • Greater predictability Công việc được sắp xếp theo mức độ ưu tiên và thực thi trong từng chu trình ngắn (lý tưởng là 1-2 tuần), do đó các chức năng mới có thể chuyển giao liên tục và xác định được từ trước.
  • Greater flexibility Khi độ ưu tiên cần thay đổi, có thể ngay lập tức thêm mới và sắp xếp lại các stories trong backlog.
  • Focus on business values Các bên liên quan quyết định thứ tự các chức năng cần phát triển, từ đó mọi người đều hiểu rõ sản phẩm quan trọng nhất ở đâu.
  • Focus on users User stories được tạo phù hợp với mong muốn thực tế từ người sử dụng, các tính năng phát triển đều góp phần tăng giá trị cho sản phẩm.
  • Focus on quality Khi tất cả công việc đều được chia nhỏ để có thể quản lý và build liên tục, chất lượng sản phẩm sẽ được cải thiện nhờ việc kiểm thử và sửa lỗi nhanh chóng.

“Agile [is] now the default approach for new software development.”

  • Al Hilwa – Program Director, Application Development Software, IDC

Để sử dụng Agile cần lưu ý những gì?

Để có thể chuyển từ mô hình truyền thống sang Agile một cách thành công, đòi hỏi phải có sự thay đổi trong quan điểm về tiến trình công việc cũng như các kiến thức cơ bản về thuận lợi hay khó khăn khi ứng dụng vào thực tế. Nên có câu trả lời cho các câu hỏi sau trước khi quyết định lựa chọn Agile:

Team bạn đã thực sự sẵn sàng?

Agile cần sự hợp tác tích cực từ tất cả các bên liên quan trong dự án. Hãy giúp mọi người hào hứng với Agile, hãy giải thích về lợi ích mà mô hình này mang lại cho tổ chức, cho từng cá nhân. Hãy đập tan những suy nghĩ coi Agile chỉ là xu thế nhất thời.

Bạn đang dự định triển khai một mình?

Nếu là như vậy thì nên ngừng lại. Hãy tìm những người trong team bạn đã có kinh nghiệm và thích thú với Agile. Bắt đầu sử dụng Agile ở mức cơ bản và xem xét những trở ngại có thể sẽ ảnh hưởng đến khách hàng hay các teams khác ra sao. Lý tưởng nhất là bạn hãy thuê một chuyên viên về Agile để tư vấn xem nên bắt đầu thế nào và hướng đi đúng ra sao. Điều này sẽ giúp giảm thiểu rủi ro và triển khai lâu dài hơn.

Làm thế nào để mọi người rèn luyện được?

Bạn cần lên kế hoạch để rèn luyện cho team. Việc giảm thiểu quy trình có thể dẫn đến việc thực thi tồi tệ, vì vậy phương pháp luận của Agile cần phải được học và truyền đạt cho tất cả mọi người. Điều quan trọng hơn là hãy để mọi người luyện tập bằng cách tham gia dự án thực tế và tự rút ra được lợi ích của Agile bằng trải nghiệm.

Bạn đã chuẩn bị quy trình và công cụ chưa?

Bạn thông thạo công cụ quản lý dự án nào, liệu nó có phù hợp với Agile ko? Bạn đã sẵn sàng áp dụng Test Driven Development (TDD), Continuous Integration (CI), Continuous Deployment (CD) chưa? Bạn sẽ áp dụng cho cả design và UX teams chứ? Hãy chuẩn bị công sức và tâm lý sẵn sàng để triển khai cho toàn bộ tổ chức.

“Do or do not, there is no try.”

  • Yoda

Mọi người đã sẵn sàng đối mặt với thay đổi?

Khi bạn bắt đầu triển khai Agile, không nghi ngờ gì về việc rất có thể mọi thứ sẽ trở nên chệch choạc. Mọi người sẽ tìm cách giải quyết vấn đề ở standup meeting, các yêu cầu về kỹ thuật cần điều tra bị chất đống, hay được chỉ định luôn cho từng cá nhân v.vv.. Mỗi ngày trôi qua, bạn phải đối mặt với những thử thách và đi tìm phương hướng để vượt qua.

So sánh Agile và Waterfall

Tình huống Agile Waterfall
Quản lý dự án muốn thêm chức năng mới trong quá trình phát triển Chức năng mới được bổ sung vào ngay backlog, có thể triển khai sớm đáp ứng các yêu cầu nghiệp vụ gần nhất. Giai đoạn thiết kế và cấu trúc hệ thống đã được hoàn thành từ trước đó, nên hạn chế việc thêm các chức năng mới cho đến lần lên kế hoạch tiếp theo (thường 6 tháng 1 lần).
Khi test, phát hiện bug bắt buộc phải sửa ngay Vấn đề được phát hiện sớm, dễ đánh giá thời gian sửa, có thể đưa vào lịch phát triển của sprint sau. Vấn đề được phát hiện ở cuối giai đoạn phát triển, có thể ảnh hưởng đến toàn bộ code của , khó đánh giá thời gian sửa, dễ làm chậm tiến độ.
Nhận feedback từ khách hàng Feedback sẽ được phân tích và có thể triển khai ngay từ sprint sau Feedback sẽ được ghi lại nhưng không được triển khai cho đến lần release tiếp theo

Agile và Extreme Programming

Một trong những phương pháp phát triển đặc trưng của Agile là Extreme Programming (viết tắt là XP), bao gồm: theo cặp, kiểm thử tự động, chỉ làm các chức năng thực sự cần, tối giản hoá code, tương tác liên tục với khách hàng.

Agile ở Pivotal

Với 25 năm kinh nghiệm sử dụng Agile, Extreme Programming được lan toả mọi bộ phận trong Pivotal, giúp chúng tôi thực hiện công việc hàng ngày:

  • 9:00AMBreakfast Lấy thức ăn, nước ép hoa quả hay cafe và tán gẫu 1 chút với đồng nghiệp.
  • 9:06AMCompany Standup Cập nhật nhanh thông tin về các sắp tới, hỏi đáp 1 số vấn đề cần giúp đỡ (nếu có).
  • 9:15AMTeam Standup Chia sẻ với team về công việc hôm trước làm, và dự định công việc hôm nay làm.
  • 9:25AMBắt đầu công việc Thực hiện nghiên cứu khách hàng, tạo wireframe, thiết kế giao diện, tạo prototype, hướng dẫn khách hàng v.vv..
  • 12:30PMLunch – Tech talk Thưởng thức bữa trưa và học thêm kiến thức mới về code, design, quy trình hay một startup mới.
  • 3:48PMPing Pong break! (chắc là nghỉ ngơi giữa giờ, đánh bóng bàn v.vv..)
  • 5:00PMWeekly Team Retro Thứ 6 hàng tuần, team sẽ ngồi thảo luận về những gì đã làm được, chưa làm đc, cải thiện thế nào trong tuần sau, với 1 chút bia hoặc rượu.
  • 6:00PMYou’re Done! Chúng tôi ko làm việc thêm giờ, cũng ko làm việc vào cuối tuần. Riêng thứ 6 thì có vài thành viên Whiskey Club ở lại.

Theo nguyên lý Agile, chúng tôi luôn:

  • Tổ chức standup meetings và iteration planning meetings để thảo luận, sắp xếp mức độ ưu tiên và theo dõi công việc qua tool quản lý (Pivotal Tracker).
  • Sử dụng pair programming để đảm bảo chất lượng code.
  • Viết code, sau đó tự động test/deliver qua CI/CD tool (Concourse).
  • Deploy mọi thứ lên Pivotal Web Services hoặc Pivotal Foundry.
  • Liên tục lặp lại với hệ thống quản lý dữ liệu (Pivotal Data Suite).

Ở Pivot, mọi quy trình lớn hay nhỏ đều được tối ưu hoá, mọi người làm việc trong từng team nhỏ để có thể phát huy được tốt nhất khả năng của mình và deliver sản phẩm ở tốc độ nhanh nhất.

Productive people are happy people.


SourceAgile: The Way to Develop Great Software

Xem thêm Agile Là Gì và Các Phương Pháp Kiểm Thử Agile

Print Friendly, PDF & Email

Comments

comments

Bài viết liên quan