Thursday, March 2, 2023

Hiện tượng Gold plating

 

Hiện tượng Gold plating (mạ vàng) là gì? Tại sao có ảnh hưởng quyết định đến chất lượng dự án?






Gold Plating Là Gì?

Theo định nghĩa gốc tiếng Anh:


Gold plating happens when team adds features that it thinks helps users, instead of sticking to what is defined in the scope baseline. Who knows the end user’s needs better than the customer?

 

Trong đội dự án có một developer (lập trình viên phát triển phần mềm) nghĩ ra một tính năng tiện ích rất "cool" hay một hiệu ứng đẹp mặt hiển thị các hình ảnh, menu trên trang chủ (giống như một tòa nhà hiện đại phát ánh sáng laser ban đêm vậy). Vì sự sáng tạo và nhiệt tình này mà anh ấy cần mất thêm 2 ngày để làm và 2 ngày nữa để hoàn thiện. QA team không có yêu cầu cho việc kiểm tra tính năng này vì thế họ chỉ kiểm thử theo ý của họ và "deliver" sản phẩm cho khách hàng.

Khi khách hàng nhận sản phẩm cuối cùng đã rất ngạc nhiên về tính năng thêm này.  Rất nhiều khách hàng có thể cảm nhận điều thú vị này, nhưng cũng có những khách hàng sẽ phàn nàn rằng các lập trình viên sáng tạo quá mức, thiếu tập trung vào nghiệp vụ, và do đó làm chậm tiến độ dự án. Thí dụ mục tiêu quan trọng nhất của khách hàng là thời gian "book" phòng phải nhanh nhất có thể, tránh các bước rườm rà. Tốc độ "load" trang phải nhanh, do đó việc thêm các hiệu ứng là không cần thiết.

Trong trường hợp vừa nêu, nhóm lập trình đang làm cái gọi là "mạ vàng cho khách" (gold plating). Khách hàng không cần điện thoại Vertu mạ vàng xung quanh, họ chỉ cần chiếc điện thoại smartphone chạy nhanh, hỗ trợ 2 sim. Đây chính là mục tiêu (objective) của dự án.

Hiểu một cách đơn giản Gold Plating là làm dư thừa, làm cái mà khách hàng không yêu cầu, làm những thứ ngoài phạm vi (scope) dự án. Khi phần vượt lớn hơn phần phải có (trong phạm vi) thì dẫn đến một loạt các sụp đổ (công việc, chất lượng, tiến độ...).

Trong nhiều trường hợp Gold Plating lại giúp ích cho chiến lược kinh doanh (của những công ty lớn). Nhớ lại thập kỷ 2000-2010, các máy tính xách tay tích hợp công nghệ đăng nhập vân tay và sau này là khuôn mặt, nhưng lúc đó độ chính xác chưa cao. Vậy các hãng máy tính đưa vào để làm gì? Rõ ràng là gold plating và điều này có thể làm tăng giá bán sản phẩm. Thực tế thì không hẳn vậy. Các hãng máy tính cố gắng tiếp cận công nghệ mới và tạo ra những sản phẩm flagship, "educate" khách hàng quen dần với công nghệ - những thứ sẽ trở nên quen thuộc trong tương lai

Gold Plating Làm Chệch Mục Tiêu Chính Của Dự Án

Trong thực tế, có rất nhiều dự án thất bại do đi chệch mục tiêu. Thí dụ dự án Cổng thông tin một cơ quan Bộ tích hợp module CMS. Team kỹ thuật nghĩ ra một loạt các quy trình kiểm duyệt bài vô cùng phức tạp vốn chỉ dành cho báo chí điện tử (vnexpress, dantri...).

Cổng thông tin ở trên chính xác là mô hình P-CMS (Publications CMS). P-CMS hỗ trợ việc quản lý các loại ấn phẩm trực tuyến (sổ tay, sách, trợ giúp, tham khảo...). Đây là "objective" của phần lớn các Cổng thông tin Portal ở Việt Nam. Đừng bao giờ cố ý hay vô ý biến Cổng thông tin thành tòa soạn báo chí điện tử bạn nhé, nếu không bạn đã phạm vào quy tắc chống Gold Plating.

Gold Plating có nguy cơ tạo ra hiệu ứng domino. Một thay đổi của bạn sẽ khiến cả module hoặc cả hệ thống phải "test" lại. Các lập trình viên và quản lý sẽ vất vả kiểm tra xem đoạn code bạn viết có tốt hay không, có phá vỡ cấu trúc tổng thể hay không. Thậm chí, chính bạn (tác giả của đoạn code thay đổi) cũng không kiểm soát nổi những thay đổi bạn đưa vào vì bạn không "document" nó ở đâu cả.


Gold Plating là một trong mười rủi ro của dự án phát triển phần mềm

Gold Plating sẽ kéo theo các hiệu ứng khác, thí dụ hiệu ứng “Sụt lở/leo thang trong phạm vi công việc”. Một thay đổi tưởng chừng vô hại tích tụ lại và tăng nhanh chóng thành thay đổi lớn mà có ảnh hưởng đến các nguồn lực hạn chế dự án, giống như hiệu ứng ”Quả cầu tuyết” (Snowball Effect).

Khi Nào Gold Plating Có Ảnh Hưởng Tích Cực Đến Sản Phẩm Của Bạn?

Như đã nói ở trên Gold Plating không hoàn toàn mang ý nghĩa xấu. Gold Plating là sản phẩm của giới quý tốc, vậy thì bạn cũng cần thiết nâng cao tư duy để tạo đẳng cấp cho kinh doanh của bạn. Tiếng Anh có câu "go extra miles" để chỉ việc cố gắng thêm một chút, trong kinh doanh chúng ta hiểu như khuyến mại một cái gì đó. Chúng ta không nên cứng nhắc khi chỉ làm cho khách hàng những thứ đã được "chốt" trong specs. Chúng ta có thể "free" cho họ những thứ chúng ta đã có sẵn, nhưng không thể free những thứ chúng ta "mới chỉ đang thử" vì việc phát sinh như vậy có thể ảnh hưởng tiến độ dự án, làm tăng chi phí dự án, ảnh hưởng chung đến tình hình tài chính doanh nghiệp.

Gold Plating Khác Với Giá Trị Đem Lại Cho Khách Hàng Như Thế Nào?

Gold Plating có thể đem lại giá trị, có thể không. Giá trị đem lại cho khách hàng không chỉ là sản phẩm bàn giao, mà còn bao gồm chất lượng thương hiệu, uy tín của team (thí dụ triển khai dự án đúng tiến độ, luôn sáng tạo để tăng tính trải nghiệm người dùng...).

Gold Plating chỉ là một cách nói về "sự nhiệt tính quá giới hạn". Bạn đem lại quá nhiều giá trị cho khách hàng, khi đó bạn vô tình trở thành người chịu trách nhiệm về dự án chậm tiến độ, khiến công ty bạn phải tăng cường nhân lực, dự án phải gia hạn thêm, chung quy lại sẽ ảnh hưởng đến tính hình tài chính của dự án.

Khác Nhau Giữa Gold Plating Và Scope Creep

Gold Plating là hiện tượng khi team kỹ thuật vô tình thêm vào các tính năng khách hàng không cần, trong khi Scope Creep là vấn đề khi khách hàng đưa vào các yêu cầu mới theo thời gian, dẫn đến "vỡ trận" khi dự án không thể kết thúc nổi. Trong nhiều trường hợp, khách hàng sẽ đưa vào mỗi lần một ít, dần dần sẽ tích tiểu thành đại (chiến lược lát cắt Salami). Ban đầu team kỹ thuật nghĩ rằng các thay đổi nhỏ đó hoàn toàn vô hại, nhưng họ vô tình không thể nào biết được nguy cơ "sạt lở" từ đống source code khổng lồ của họ do chồng chất thay đổi hết đợt này đến đợt khác. Đến khi dự án chuẩn bị nghiệm thu, quản lý dự án mới nhận ra rằng có quá nhiều thay đổi khác hẳn với bản mẫu (prototyping) ban đầu. Mọi quyết định lúc đó đã quá muộn, một sự tiến thoái lưỡng nan "tiền trảm hậu tấu" vì các lập trình viên đã sa vào cái bẫy chết người có tên "quả cầu tuyết khổng lồ".



Đầu tiên đó chỉ là 1 thay đổi đơn giản nhưng sau đó là một thay đổi lớn ảnh hưởng đến tiến độ dự án, và sẽ nghiêm trọng hơn nếu công việc này còn nằm trên đường găng (critical path) bởi vì sẽ trì hoãn tiến độ của cả dự án.

Dự án trong trường hợp những yếu tố không kiểm soát được về mặt thời gian và nguồn lực, xuất phát từ những thay đổi nhỏ rồi thành thay đổi lớn gọi là scope creep.

Định nghĩa gốc tiếng Anh của Scope Creep:

 

A simple, seemingly harmless change snowballs into a big change that impacts project constraints resulting in scope creep.

 

Gold Plating Trong Các Lĩnh Vực Khác

Ngoài lĩnh vực phần mềm, các lĩnh vực khác cũng từng xuất hiện những vấn đề như vậy. Dự án phim ảnh cho vào quá nhiều cảnh không cần thiết, quá nhiều hiệu ứng chuyên nghiệp nhưng người xem họ chỉ tập trung vào nội dung về cuộc sống làng quê dân dã trong bộ phim.

Lĩnh vực công trình xây dựng ít chịu ảnh hưởng của Gold Plating nhất. Vì sao vậy?

Lĩnh vực công trình xây dựng và lĩnh vực phát triển phần mềm có rất nhiều điểm tương đồng, đây cũng là 2 lĩnh vực hàng đầu hay được nhắc đến trong chứng chỉ quản lý quốc tế PMP. Chính nhờ lĩnh vực CNTT xuất hiện, mà kéo theo sự ra đời của PMP.

Mặc dù có nhiều điểm tương đồng, nhưng giữa 2 lĩnh vực này vẫn có sự khác biệt quan trọng sau:

  • Lĩnh vực xây dựng có đầu vào là các nguyên vật liệu, còn phần mềm có đầu vào là chất xám và các tài sản trí thức mà nhà thầu có được (thí dụ công nghệ, tài sản mã nguồn core...).
  • Bạn không thể thiết kế thêm một cái cửa nếu như nó không có trong bản vẽ. Nếu đó là cửa Euro Window đi nữa, khách hàng cũng không cần đến vì nó phá vỡ cấu trúc chung của ngôi nhà.
  • Nếu mắc sai lầm trong lĩnh vực xây dựng, bạn sẽ mất cả chi phí, thời gian và uy tín. Trong lĩnh vực phần mềm, bạn không mất chi phí vật tư, bạn vẫn có thể sử dụng lại đoạn code đó ở những dự án trong tương lai (đặc tính "portable"). Đặc tính của phần mềm là tính dễ dàng thử nghiệm hay tìm tòi sáng tạo mà không cần đến phòng lab, không cần đến nguồn nguyên liệu/vật tư, không quá phụ thuộc vào quyết định của toàn đội.





No comments:

Post a Comment

So sánh các GitFlow model và áp dụng với CICD

https://medium.com/oho-software/so-s%C3%A1nh-c%C3%A1c-gitflow-model-v%C3%A0-%C3%A1p-d%E1%BB%A5ng-v%E1%BB%9Bi-cicd-b6581cfc893a