Khởi đầu cho tư duy theo Agile

2016-07-08 13:24:22 - Career Fsoft

Khi các bạn nghe thấy cụm từ “Agile Development”, các bạn nghĩ đến điều gì? Agile Development coi trọng niềm vui của mỗi cá nhân khi phần mềm chạy đúng theo thiết kế. Bên cạnh đó, nó coi việc phát triển phần mềm là sản phẩm của sự hợp tác và kết nối giữa các thành viên trong đội.

Khi các bạn nghe thấy cụm từ “Agile Development”, các bạn nghĩ đến điều gì?

Tôi không dám chắc. Nhưng có thể có người sẽ nghĩ ngay đến các từ khóa như “Pair programming”, “Stand up meeting (Daily scrum)”, “Test-driven development”, “Burn-down chart”, “Planning poker” v.v..

Tất nhiên, trong quá trình vận dụng vào thực tế, ta cần có những “process và practice” này. Nhưng không có nghĩa là chúng ta thực hiện Pair programming mà tuyệt nhiên không ý thức gì về Agile, cũng như không phải chỉ đơn thuần là vừa đứng vừa báo cáo thì hoạt động đó đã trở thành daily scrum được.

Vì vậy, điều quan trọng không phải là cách làm (How to do) như thế nào cho đúng mà là cách thức bạn cảm nhận (Way to be). Nói cách khác, không phải là làm Agile một cách máy móc (Do Agile) mà hãy trở nên Agile (Be Agile). Khi đó, “Agile” không phải là danh từ mà nó đã trở thành một tính từ.

Bởi thế, trong Agile Development, hãy thử suy ngẫm về tư duy và quan điểm, nói tóm lại là về “Agile Mindset” nhé.

Đầu tiên, tôi xin trích dẫn định nghĩa về Agile trong một vài cuốn sách đại diện trong số rất nhiều tài liệu viết về Agile Development. Nếu thử đọc những định nghĩa này, có lẽ các bạn sẽ nhận ra rằng không có định nghĩa nào đề cập đến việc vận dụng thực hành (practice) một cách cụ thể cả.

khoi-dau-tu-duy-theo-agile

khoi-dau-tu-duy-theo-agile1

khoi-dau-tu-duy-theo-agile2

Vậy, tinh thần chung mà các bạn lĩnh hội được từ những định nghĩa này là gì? Cá nhân tôi đã rút ra được những nội dung sau:

  • Yếu tố con người trong phát triển phần mềm.
  • Tầm quan trọng của vòng phản hồi (feedback cycle).
  • Phải liên tục mang lại giá trị.

Thực ra, tôi muốn viết rất nhiều về từng nội dung này. Nhưng do số lượng trang viết có hạn nên tôi xin viết về điều đầu tiên cũng là điều quan trọng nhất, đó là việc chú trọng đến con người.

Ngành công nghiệp phần mềm từ trước đến nay đang phát triển theo hướng loại bỏ tính cá nhân theo kiểu, nếu tiến hành theo một kế hoạch đã định sẵn từ trước thì bất kể là ai thực hiện cũng đều cho ra sản phẩm đầu ra như nhau. Nếu yêu cầu của dự án là ổn định hoặc dễ dàng kiểm soát sự thay đổi, thì có thể có những ước lượng tương đối chính xác, và kế hoạch của dự án không bị xê dịch nhiều.

Tuy nhiên, trong thế giới phát triển phần mềm thế kỷ 21, các bạn có thể nhận thấy, trong công việc cũng như sinh hoạt hàng ngày, môi trường mà chúng ta sống đang dần thay đổi. Do điều kiện tiền đề đang dần thay đổi nên đây chính là thời đại mà việc xây dựng một kế hoạch hoàn hảo ngay từ đầu là không có ý nghĩa gì.

Điều kiện tiền đề đang được đề cập đến ở đây không chỉ nói về việc kỹ thuật mà chúng ta đang sử dụng thay đổi với tốc độ nhanh hay yêu cầu đặc tả được thay đổi thường xuyên, mà còn là về việc học hỏi của mỗi cá nhân đối với đối tượng đang tạo ra trong quá trình phát triển. Hơn nữa bản thân đội phát triển cũng đang thay đổi do mối liên kết giữa các thành viên trong nhóm ngày càng trở nên sâu sắc.

Chúng ta đều biết cách thức tương tác của cá nhân với môi trường xung quanh luôn thay đổi mạnh mẽ. Đó là lịch sử tiến hóa sinh vật trải qua 4 tỷ năm. Từ khóa để lý giải về việc sinh vật liên tục tiến hóa như vậy chính là “tính đa dạng”.

Tương tự, trong một đội phát triển phần mềm, thay vì loại bỏ tính cá nhân, cần phải sử dụng tính đa dạng và vận dụng tính chất đó một cách tích cực. Do đó, trong Agile Development rất coi trọng yếu tố “con người”.

(Ngoài ra, trong các tài liệu “Refactoring: Improving the Design of Existing Code” và “UML Distilled Third Edition”, Martin Fowler đã đưa ra một quan điểm gọi là “Evolutional Design” (thiết kế một cách tiến hóa), nó giống như tiến hóa sinh vật trong thiết kế phần mềm. Nếu có hứng thú, các bạn hãy tìm hiểu nhé.)

Agile Development coi trọng niềm vui của mỗi cá nhân khi phần mềm chạy đúng theo thiết kế. Bên cạnh đó, nó coi việc phát triển phần mềm là sản phẩm của sự hợp tác và kết nối giữa các thành viên trong đội.

Từ đó có thể khẳng định rằng, nếu hội tụ đủ các điều kiện: 1. Khuyến khích cá nhân có ý chí hướng tới mục tiêu cao hơn, 2. Các thành viên trong đội tin tưởng lẫn nhau, và hơn nữa là 3. Dũng cảm chấp nhận sự khác biệt, thì tự nhiên có thể tạo ra sản phẩm chất lượng tốt.

Agile mindset là sản phẩm do cả đội tạo ra. Đó là một loại “văn hóa” mà nếu đọc đến tận đây chắc các bạn cũng hiểu. Vì vậy, khi đọc xong bài viết này, hẳn là sẽ không có điều gì thay đổi quá đột ngột với bạn nữa.

Sau đây, mỗi người chúng ta hãy cùng nhìn nhận lại bản thân mình. Đến một lúc nào đó nhất định sẽ có điều gì đó thay đổi và nó sẽ trở thành văn hóa. Vì vậy, nhân dịp này tôi xin đưa ra 3 câu hỏi để thay cho lời kết của bài viết.

  •  Bạn có muốn làm việc chung với những người như thế không?
  •  Bạn có đang làm việc chung với người có suy nghĩ như vậy không?
  •  Bản thân bạn cũng đang suy nghĩ như vậy chứ?

Act as agile!

Comments

comments