Nếu bạn quan tâm đến việc làm thế nào để xây dựng một team Agile thì bài viết này dành cho bạn.

Việc tạo ra các ứng dụng phần mềm tốt là tấm vé để công ty của bạn duy trì và phát triển mạnh. Một quy trình được kiểm soát tốt là cách duy nhất để đảm bảo sản phẩm tốt.

Team Agile sẽ giúp phát triển các ứng dụng một cách hiệu quả. Nhưng trước hết Agile là gì?

Agile là gì?

Agile là một cách phương pháp linh hoạt trong phát triển phần mềm (và quản lý dự án) giúp đưa sản phẩm đến người dùng nhanh nhất và ít gặp những vấn đề hóc búa nhất. Thay vì đánh cược vào việc đưa ra sản phầm một lần sau khi hoàn thành mọi thứ, team agile sẽ cho ra mắt từng phần một nhưng đảm bảo sử dụng được. Các yêu cầu, kế hoạch thực hiện và kết quả được đánh giá liên tục và như vậy nhóm phát triển có thể nhanh chóng thay đổi cho phù hợp với thực tế. 

Agile là gì

Agile là gì? Ảnh agilenutshell.com

Agile Software Development là gì?

Agile Software Development hay còn gọi là phương pháp phát triển phần mềm linh hoạt cho phép quy trình xây dựng sản phẩm được phép tập trung tối đa vào khách hàng, khuyến khích sự thay đổi trong vòng đời dự án, rút ngắn thời gian tiếp cận thị trường.

Khác với phương pháp phát triển phần mềm truyền thồng – Waterfall, Agile giúp giảm rủi ro của dự án thông qua việc chia sẻ công việc của mình với khách hàng, lập kế hoạch phát triển trong các khung thời gian ngắn. Do vậy, Agile Software Development dần trở thành xu hướng phổ biến trong các công ty phần mềm hiện nay. Trang bị cho bản thân các kiến thức về Agile có thể mang lại một lợi thế lớn cho các bạn làm việc trong lĩnh vực phần mềm.

phương pháp Agile

 

Agile bắt đầu như thế nào?

Trong giai đoạn trước những năm 90 của thế kỷ 20, trên thế giới xảy ra cuộc khủng hoảng về phương pháp phát triển phần mềm. Lí do của việc này đó là phương pháp truyền thống ngày càng bộc lộ nhiều nhược điểm và tỉ thệ các dự án bị thất bại quá cao. Có rất nhiều các cá nhân và công ty riêng lẻ đã tự tìm tòi và phát triển những phương pháp khác nhau để thích ứng với tình hình mới, ở đó những yếu tố môi trường kinh doanh và công nghệ thay đổi nhanh chóng, khiến cho phương pháp phát triển truyền thống không còn phù hợp. Những phương pháp riêng lẻ này phần nào giải quyết được một số vấn đề, nhưng lại nảy sinh những vấn đề khác về sự chia sẻ, cộng tác, các kỹ thuật, công cụ, sự mở rộng, hướng phát triển,…

Do đó, Tháng 2 năm 2001, 17 lập trình viên là đại diện cho những phương pháp phát triển mới này đã gặp nhau tại Utah. Họ đã đi đến thống nhất về quan điểm chung giữa các phương pháp và cho ra đời một tài liệu được gọi là: Tuyên ngôn Phát triển Phần mềm Linh hoạt (Agile Manifesto)  kèm với 12 nguyên lý phía sau. Đây chính là thời điểm mà thuật ngữ Agile được sử dụng hiện nay ra đời, mặc dù các phương pháp riêng lẻ thì đã có trước đó.

Nhóm Agile Software Development là gì?

Thành phần chính của bất kỳ tiến trình agile nào cũng là Development Team. Vai trò của ScrumMaster rất quan trọng trong việc đảm bảo rằng Development Team luôn tuân thủ các mệnh lệnh và nguyên tắc agile trong từng giai đoạn của quá trình phát triển.

Vai trò của ScrumMaster bị giảm đi khi agile Development Team ngày càng trở nên hiệu quả hơn trong việc hoàn thành các công việc hàng ngày của họ. Trong các dự án scrum, Development Team bao gồm các bên liên quan hiệu quả, những người chịu trách nhiệm cung cấp sản phẩm đúng thời hạn và ngân sách. Nhóm scrum là sự hợp tác đa chức năng, bao gồm lập trình viên front-end, back-end, designers và testers.

Có thể bạn muốn tìm hiểu:

Bạn đã sẵn sàng để xây dựng một Agile Software Development Team?

Có công thức cụ thể nào cho việc xây dựng một team Agile Software Development hoàn hảo không ? Cho dù các Agile team cùng chia sẻ chung giá trí, nguyên tác và methodologies, thì cũng không có một công thức chung nào cho các developers và đương nhiên hoàn cảnh của họ khác nhau.

Tương tự, cũng có những khác biệt trong methodologies mà họ áp dụng. Một số thành viên trong nhóm Agile thích Scrum, trong khi những người khác có thể thích Kanban hơn.

Phương pháp tiếp cận tư duy, đào tạo và quản lý đúng đắn, v.v. là nền tảng cốt lõi của Agile Software Development Team. “Một khi team của bạn đã thành lập, điều quan trọng cần nhớ là các agile teams phải giống như những bông hoa: họ cần thời gian để phát triển.

Tóm lại, có bốn giai đoạn phát triển quan trọng đối với Agile Development Team:

  • Forming: Sự hỗn loạn là một yếu tố lớn trong giai đoạn này và vì vậy các team cần sự cố vấn và hướng dẫn từ quản lý để xác định rõ ràng vai trò và trách nhiệm công việc, v.v.
  • Storming: Giai đoạn này chúng ta đã hiểu rõ hơn về vai trò của team / kênh giao tiếp, v.v., tuy nhiên, đây vẫn là một giai đoạn rất mong manh. Các thành viên trong nhóm vẫn chưa đủ tin tưởng lẫn nhau và vẫn cần được training các phương pháp làm việc cụ thể.
  • Normalizing: Đây là giai đoạn quan trọng nhất. Hiện tại, các mối quan hệ đã ổn định và các thành viên trong nhóm hiểu hơn về vai trò của họ trong nhóm. Tất cả trách nhiệm của Agile Development Team, mục tiêu đã được khẳng định rõ ràng và đây là lúc mọi thành viên tập trung vào tối ưu hóa phương pháp.
  • Performing: Giai đoạn này tất cả các thành viên đều đã hiểu đúng và thành thạo với vai trò cá nhân của họ và vai trò của nhóm, do đó mọi người làm việc tốt và không cần tới sự giám sát chặt chẽ của quản lý.

Các vai trò trong phương pháp Agile

Các vai trò trong phương pháp Agile

  • Hiểu và xác định người dùng
  • Crafting và ghi lại vision statement
  • Xác định phạm vi, cơ hội và kết quả.

User: Bắt đầu quá trình bằng cách xác định rõ ràng target audience. Xác định chính xác tính cách người dùng và sử dụng những tính năng này để xây dựng các tiêu chí / yêu cầu khác nhau trong workflow mà software hỗ trợ.

Product owner: Product owner là các bên liên quan chính hoặc người dùng chính của ứng dụng sẽ được phát triển. Product owner là người đại diện cho phía khách hàng và là người có thẩm quyền cuối cùng. Anh ấy / cô ấy nên luôn sẵn sàng khi bất cứ ai có bất kỳ nghi ngờ cần làm rõ. Điều quan trọng là Product owner phải hiểu và không chỉ định bất kỳ yêu cầu mới nào ở giữa giai đoạn nước rút hoặc khi nước rút đã bắt đầu.

Nhóm phát triển phần mềm: Trong Agile, là những lập trình viên sẽ tham gia vào việc phát triển từng tính năng cụ thể. Các lập trình viên này có thể sẽ có kỹ năng khác nhau và một số sẽ giỏi về những kỹ năng nhất định.

Ngoài ra, Software development team bao gồm các kỹ sư đảm bảo chất lượng (QA), các lập trình viên khác (chẳng hạn như databases và back-end systems), designers và nhà phân tích, tùy thuộc vào loại dự án phần mềm.

Các phương thức agile (Agile Frameworks)

Scrum

Agile Framework phổ biến và được sử dụng rộng rãi nhất là Scrum. Scrum là một quy trình quản lý và kiểm soát được áp dụng trong các dự án phát triển phần mềm giúp loại bỏ những công đoạn phức tạp và chỉ tập trung vào những công đoạn cần thiết đáp ứng được nhu cầu của khác hàng đưa ra. Scrum cũng được coi là một bộ tập quán hay Framework được đưa ra để áp dụng trong phát triển phần mềm.

Scrum ra đời vào khoảng những năm 1990. Cho tới bây giờ nó vẫn được coi như Framework hiệu quả và được sử dụng rộng rãi trong cả các công ty lớn và nhỏ. Đặc điểm của Scrum là nó đơn giản dễ hiểu và dễ áp dụng.

Scrum kết hợp một nhịp phân phối được gọi là Sprint (tức một giai đoạn lặp lại của một scrum). Sprint kéo dài từ một tuần đến một tháng, và liên tục để giữ cho các dự án tiến triển với tốc độ nhanh nhất có thể. Có bốn sự kiện quan trọng xảy ra trong mỗi sprint.

  • Lập kế hoạch để xác định các ưu tiên của sprint.
  • Daily Scrum Calls/Meetings – Development Team họp khoảng 15 phút mỗi ngày để theo dõi tiến trình của nhóm đối với các mục tiêu sprint và cũng xác định các blockers nếu có.
  • Sprint Review – Development Team hợp tác và trao đổi ý kiến ​​/ quan điểm về các nhiệm vụ đã hoàn thành và điều chỉnh các công việc tồn đọng theo yêu cầu.
  • Sprint Retrospective – Đây là một trải nghiệm học hỏi tuyệt vời cho Development Team. Nhóm thảo luận cởi mở về các hạng mục chính đã thành công, cũng như các trường hợp nhóm không đạt được kỳ vọng để cải thiện mọi thứ cho tương lai.

Và cũng có rất nhiều Framework khác cũng có thể dùng để thực thi Agile như Kanban chẳng hạn.

Kanban

Kanban là một hệ thống trực quan để quản lý công việc diễn ra theo một quy trình đã được xây dựng sẵn. Kanban trực quan hóa quy trình công việc và phản ánh chính xác thực trạng triển khai công việc thực tế dựa trên quy trình đó. Mục tiêu của Kanban là xác định công việc cần phải thực hiện và quá trình thực hiện chúng để hoạt động sản xuất có thể diễn ra một cách hiệu quả với tốc độ và chất lượng tối đa.

“Kanban là thuật ngữ có nguồn gốc xuất phát từ công ty chế tạo xe hơi Toyota những năm 40 sử dụng trong sản xuất và kỹ thuật. Một kỹ sư công nghiệp ở Toyota là Taiichi Ohno đã phát triển kanban để cải thiện hiệu quả sản xuất. Theo dịch nghĩa tiếng Nhật, Kanban là có nghĩa là thẻ thị giác, với từ “kan” là thị giác và từ “ban” là thẻ. Những nhà lãnh đạo đã dùng thẻ Kanban này để nhắc nhở nhân viên của mình về công việc cần làm theo quy trình.”

Một số lợi ích của việc áp dụng kanban bao gồm:

  • Linh hoạt
  • Thời gian dẫn ngắn hơn
  • Ít bottlenecks hơn
  • Hình ảnh hóa các số liệu
  • Continuous delivery

Kanban Boards là công cụ tuyệt vời cho các cuộc họp hàng ngày với Agile Development Team. Kanban Boards có 5 grids:

  • Backlog
  • To-do
  • In progress
  • Review
  • Done

Development management teams sẽ chuyển Kanban cards từ grid này sang grid khác mỗi khi nhiệm vụ được hoàn thành. Hình ảnh trực quan này giúp nhanh chóng xác định các roadblocks và thiết lập cách tiếp cận phù hợp cho các nhiệm vụ. Khi các nhóm tập hợp lại với nhau trong các cuộc họp hàng ngày, sẽ có free-flow và tương tác tốt hơn, v.v.

Extreme Programming (XP)

XP (Extreme Programming) là một phương pháp phát triển phần mềm hướng đến việc nâng cao chất lượng phần mềm và khả năng đáp ứng với thay đổi yêu cầu người dùng. XP là một trong các phương pháp thuộc họ Agile, nó chủ trương đưa ra các bản phát hành thường xuyên thông qua các chu trình phát triển ngắn. Việc này là để nâng cao năng suất và tạo ra những thời điểm để tiếp nhận những yêu cầu người dùng mới. Tác giả của XP là Ken Beck, một kỹ sư phần mềm người Mỹ.

XP tập trung vào việc áp dụng tốt nhất những kỹ thuật lập trình, giao tiếp rõ ràng và làm việc nhóm để tạo những sản phẩm tốt nhất. Một số thành phần và đặc điểm của XP: Lập trình cặp, Rà soát mã nguồn, Kiểm thử đơn vị, Giữ mã nguồn đơn giản và rõ ràng, Sẵn sàng đón nhận các thay đổi, Trao đổi thường xuyên với khách hàng, Trao đổi thường xuyên giữa các nhà phát triển.

Môi trường nào thích hợp để sử dụng Extreme Programming (XP)?

  • Liên tục thay đổi yêu cầu phần mềm
  • Rủi ro liên quan đến các dự án thời gian cố định sử dụng công nghệ mới
  • Quy mô Agile Development Team nhỏ và được bố trí riêng
  • Công nghệ được sử dụng cho phép kiểm tra đơn vị và chức năng tự động

Năm giá trị cốt lõi của XP

  1. Giao tiếp (Communication): mọi người trong nhóm trao đổi trực diện hằng ngày, trong tất cả các công việc từ phân tích yêu cầu cho tới lập trình
  2. Tính đơn giản (Simplicity): chỉ làm những gì cần thiết, không hơn. Làm những gì cần thiết cho thì hiện tại, không phải tương lai quá xa, với những bước nhỏ để cán đích và giản lược tối đa các sai hỏng.
  3. Phản hồi (Feedback): cam kết nghiêm túc để liên tục bàn giao các phần mềm chạy tốt vào cuối các phân đoạn (iteration) ngắn. Luôn có thể demo phần mềm chạy tốt từ sớm và thường xuyên, lắng nghe phản hồi từ các bên và thực hiện các điều chỉnh cần thiết.
  4. Tôn trọng (Respect): mọi người tự cảm thấy và được tôn trọng vì họ là những thành viên quan trọng của nhóm. Mỗi người đều đóng vai trò vào việc tạo ra các giá trị không kể công việc như thế nào.
  5. Can đảm (Courage): luôn nói đúng về tiến độ và ước lượng. Không cần thiết phải sợ điều gì bởi vì thành viên không làm việc cô độc. Mỗi khi có thay đổi, nhóm sẽ có các hành động cần thiết để thích ứng. Can đảm trong việc vứt đi những gì không thực sự cần thiết nữa (mã nguồn, giấy tờ …)

Giống như các phương pháp phát triển nhanh nhẹn khác, “Extreme Programming” tập trung vào sự tham gia của khách hàng, cơ chế phản hồi nhanh và nhất quán, lập kế hoạch và thử nghiệm liên tục, cộng tác hiệu quả và làm việc theo nhóm để cung cấp phần mềm hoạt động trong khoảng thời gian thường xuyên. 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ể.

XP sử dụng 12 cách thức thực hành được sử dụng trong quá trình phát triển phần mềm, gồm:

  1. Trò chơi Lập kế hoạch (The Planning Game)
  2. Các bản phát hành nhỏ (Small releases)
  3. System Metaphor (Ẩn dụ Hệ thống)
  4. Thiết kế Đơn giản (Simple design)
  5. Kiểm thử (Testing)
  6. Tái cấu trúc (Refactoring)
  7. Lập trình theo cặp (Pair programming)
  8. Sở hữu tập thể (Collective ownership)
  9. Tích hợp liên tục (Continuous integration)
  10. Làm việc 40 giờ một tuần
  11. Khách hàng tại chỗ (On-site customer)
  12. Các chuẩn mực lập trình (Coding standards)

Các yếu tố giúp Agile Development Team thành công

Sự Hợp tác

Đối với Team Agile Development, các thành viên trong nhóm sẽ làm việc cùng nhau về các tính năng của sản phẩm. Developers và testers cùng hợp tác để xác định và triển khai các tính năng.

Cởi mở và phản hồi kịp thời

Việc phản hồi và giao tiếp cởi mở là cơ sở giúp team thành công. Các thành viên trong nhóm Agile Development sử dụng các sprints để xây dựng và xem xét công việc theo từng giai đoạn.

Một cơ chế phản hồi được bố trí tốt là cơ sở của một nhóm nhanh thành công. Các thành viên trong nhóm phát triển Agile sử dụng nước rút như một cách xây dựng và xem xét công việc họ đã thực hiện theo từng giai đoạn. Việc tương tác và feedbacks kịp thời giúp team có thể học hỏi và rút kinh nghiệm trong quá trình làm việc.

Khả năng thích ứng

Bất kỳ thành viên nào trong nhóm cũng đều cần phải cực kỳ linh hoạt để nhanh chóng thích ứng với môi trường thay đổi. Các điều kiện bất lợi có thể phát sinh, chẳng hạn như bug trong lúc chạy chương trình, v.v., nhưng team của bạn cần đủ bản lĩnh để giải quyết mọi vấn đề và tập trung vào việc hoàn thành nhiệm vụ.

Nhiệt huyết

Agile Development Team phải luôn duy trì văn hóa chia sẻ kiến ​​thức và hợp tác cởi mở. Nhóm nên tôn trọng ý kiến ​​và phê bình của nhau, đồng thời có tư duy cởi mở để chào đón những ý tưởng mới.

Lòng tin

Tính minh bạch và cộng tác là trọng tâm của Agile Development Team. Niềm tin là một thành phần quan trọng, mỗi thành viên trong nhóm cần được trao quyền và phải thường xuyên động viên lẫn nhau.

Kết Luận

Không có một công thức hoàn hảo cho việc xây dựng một phần mềm hay sản phẩm. Một số team đạt được rất nhiều thành công và thấy được những cải tiến vượt bậc sau khi áp dụng Agile, trong khi một số team khác thì lại gặp vấn đề. Điểm khác nhau lớn nhất có thể kể đến đó chính là hệ tư duy của các thành viên trong nhóm, họ có tư duy Agile hay không. Vậy bạn sẽ làm gì để đạt được những kết quả tuyệt vời đó cho team của mình? Làm thế nào để chắc chắn rằng team mình có tư duy đúng về Agile? Đó chính là lý do bạn cần phải hiểu được Agile Manifesto. Khi bạn và team bạn hiểu được các giá trị và nguyên tắc của Agile, dự án của bạn sẽ trở nên hiệu quả hơn rất nhiều.

Bài viết dựa trên bài đăng trên DevTeam Space và một số nguồn thông tin khác.

 

Bạn có biết?


tham gia cộng đồng ITguru trên Linkedin, Facebook và các kênh mạng xã hội khác có thể giúp bạn nhanh chóng tìm được những chủ đề phát triển nghề nghiệp và cập nhật thông tin về việc làm IT mới nhất

Linkedin Page: https://bit.ly/LinkedinITguru
Facebook Group: https://bit.ly/ITguruvn
cơ hội việc làm IT : ITguru.vn

Bạn đánh giá bài viết thế nào?

Average rating 5 / 5. Vote count: 1

No votes so far! Be the first to rate this post.