Extreme Programming

Giới thiệu

Extreme Programming (viết tắt là XP) là một phương pháp phát triển phần mềm dựa theo Agile, được sử dụng nhằm nâng cao chất lượng phần mềm và tăng khả năng thích nghi với những thay đổi requirement. Nó đã được chứng minh là rất hiệu quả ở nhiều công ty từ nhỏ đến lớn, trong đa dạng ngành nghề trên toàn cầu.

Sự thành công của XP là nhờ nhắm đến sự hài lòng của khách hàng. Thay vì làm ra tất cả những thứ mà bạn có thể mong muốn trong một tương lai xa thì phương pháp này mang lại những thứ mà bạn thực sự cần vào lúc bạn cần. Nó đồng thời cũng cho phép các lập trình viên có thể tự tin thực hiện những thay đổi requirement, dù cho ở giai đoạn cuối.

XP tập trung vào teamwork. Manager, developer và khách hàng đều là những đối tác bình đẳng với nhau. Nó thực hiện một môi trường đơn giản nhưng hiệu quả, cho phép team đạt hiệu quả cao. Team tự giải quyết vấn đề một cách hiệu quả nhất có thể.

iteration.gif

Các luật của Extreme Programming

Lập kế hoạch

  • Viết ra user stories
  • Lên kế hoạch release
  • Lên kế hoạch cho việc release những phiên bản nhỏ
  • Chia project thành các iteration
  • Lên kế hoạch cho iteration trước khi bắt đầu mỗi iteration

Quản lí

  • Tạo không gian làm việc mở cho team
  • Đặt một nhịp độ làm việc dễ chịu
  • Tổ chức stand up meeting hàng ngày
  • Tốc độ làm việc cần được đánh giá
  • Luân chuyển công việc thường xuyên
  • Giúp mọi người tuân thủ theo XP

Thiết kế

  • Chú trọng sự đơn giản
  • Sử dụng CRC card khi làm thiết kế
  • Tạo ra những giải pháp để giảm thiểu rủi ro
  • Những chức năng không cần thiết thì không làm
  • Refactor bất cứ nơi nào và khi nào có thể

Coding

  • Luôn có sự giao tiếp với khách hàng
  • Code cần tuân thủ theo các standard
  • Code cần được unit test trước
  • Tất cả code đều cần được pair-programming
  • Chỉ duy nhất một pair thực hiện 1 thời điểm
  • Tích hợp thường xuyên
  • Cần có server được deploy bản mới nhất
  • Cho phép mọi người đóng góp ý tưởng vào mọi phần của dự án

Testing

  • Tất cả code đều được unit test
  • Code phải pass qua tất cả unit test trước khi được release
  • Khi một bug được phát hiện, phải tạo test cho case đó
  • Acceptance test cần được chạy thường xuyên

Các giá trị của Extreme Programming

XP dựa trên những giá trị. Các luật chúng ta vừa xem bên trên chỉ là sự cụ thể hóa và kết quả của những giá trị. XP ko phải là những luật cứng nhắc, mà là một sự kết hợp hài hòa với các giá trị cá nhân cũng như giá trị của công ty. Bạn có thể dựa vào những giá trị dưới đây, kết hợp cùng với các giá trị riêng của bạn để thay đổi các luật cho phù hợp.

Sự đơn giản

Chúng ta sẽ chỉ làm những gì chúng ta cần. Nó sẽ tăng tối đa giá trị trên sự đầu tư. Chúng ta sẽ thực hiện từng bước nhỏ một đến với mục đích đề ra và hạn chế tối đa tổn thất nếu thất bại.

Communication

Mỗi người đều là một phần của team và chúng ta giao tiếp với nhau face to face hàng ngày. Chúng ta làm việc cùng nhau trong mọi thứ, từ requirement đến code. Tận dụng tối đa trí tuệ tập thể.

Feedback

Chúng ta cần đặt ra những cam kết nghiêm túc về việc tạo ra một sản phẩm chạy được sau mỗi iteration. Chúng ta demo sản phẩm sớm và thường xuyên, sau đó lắng nghe phản hồi và thay đổi nếu cần.

Tôn trọng

Mỗi người đều được tôn trọng và cần tôn trọng người khác như là một thành viên giá trị trong team. Thực tế, mọi người đều đóng góp giá trị dù nhiều hay ít. Developer cũng cần tôn trọng khách hàng và ngược lại.

Can đảm

Can đảm để nói sự thật về tiến độ và estimate. Chúng ta không viết những biên bản giải thích các lí do dẫn đến sai lầm vì chúng ta hướng đến thành công.

Sự khác biệt giữa XP và Scrum

  1. Scrum team thường làm việc trong các iteration (được gọi là sprint) kéo dài từ 2 - 4 tuần. XP team thì thường làm việc trong các iteration từ 1 - 2 tuần.

  2. Scrum không cho phép thay đổi trong sprint. Một khi kế hoạch sprint đã được lập, và đã có danh sách các backlog item cần hoàn thành thì nó sẽ không được thay đổi. XP team thì dễ dàng thay đổi trong iteration. Chỉ cần team chưa bắt tay vào làm một tính năng nào đó, thì một tính năng khác có khối lượng tương đương có thể được thay thế cho tính năng đó.

  3. XP team hoạt động theo thứ tự ưu tiên nghiêm ngặt. Các chức năng sẽ được đặt độ ưu tiên bởi khách hàng và team sẽ phải tuân thủ theo thứ tự đó. Ngược lại, trong Scrum, Product Owner sẽ chọn việc ưu tiên trong Product Backlog, nhưng team sẽ quyết định xem việc nào cần làm trước trong backlog.

  4. Scrum không chỉ ra một engineering practice nào, nhưng XP thì có. Tôi thích những practice của XP, như test-driven development, automated testing, pair programming, simple design, refactoring, v.v.

Tham khảo

http://www.extremeprogramming.org/

https://en.wikipedia.org/wiki/Extreme_programming

https://www.mountaingoatsoftware.com/blog/differences-between-scrum-and-extreme-programming