Dùng chung mã nguồn không đồng nghĩa dùng chung một thiết kế. Câu hỏi là bạn tách phần riêng bằng cách nào mà không tạo ra nhiều hệ song song.
Tổ chức theo kiến trúc token (đơn vị biến số thiết kế) ba tầng: một lõi dùng chung cho toàn tập đoàn, mỗi thương hiệu chỉ ghi đè tầng chủ đề (theme) của mình. Về con người, bắt đầu bằng đội tập trung rồi chuyển dần sang mô hình liên bang (federated) khi từng thương hiệu đã có đội đủ mạnh để đóng góp ngược lại. Đây là cấp độ thực sự cần quản trị (governance) chính thức, không chỉ là một thư viện component đặt chung server.
Khi tập đoàn có nhiều thương hiệu cùng dùng chung một mã nguồn, câu hỏi không phải là "dùng chung được không" mà là "tách phần riêng bằng cách nào để hai năm sau hệ vẫn còn nhất quán". Nếu không có kiến trúc và quản trị rõ ràng ngay từ đầu, kết quả gần như chắc chắn là mỗi đội tự xử theo cách của mình, và hệ dùng chung trở thành hư cấu trên giấy.
Nền tảng của mọi design system (hệ thiết kế) phục vụ nhiều thương hiệu là token (đơn vị biến số thiết kế như màu sắc, khoảng cách, cỡ chữ) được phân thành ba tầng rõ ràng:
Nguyên tắc đặt tên token cũng cần có tầng vùng tên (namespace) để phân biệt: hệ nào, thương hiệu nào, miền nào. Không làm bước này, sau vài tháng token của thương hiệu này bị thương hiệu kia ghi đè mà không ai hay.
Trong thực tế, hầu hết tập đoàn nên bắt đầu bằng mô hình tập trung, rồi chuyển dần sang liên bang khi từng thương hiệu đã hiểu hệ và có người có thể đóng góp có trách nhiệm.
Ở quy mô nhiều thương hiệu, design system không còn là vấn đề kỹ thuật thuần túy. Hai thứ tối thiểu cần có:
Một design system không có quản trị là một thư viện component đang chờ phân rã.
Nathan Curtis, EightShapes
Đây là cấp độ cao nhất mà một design system có thể đạt đến. Cách Sinh Vũ tiếp cận là dựng token theo chuẩn DTCG (Design Token Community Group, định dạng token mở do cộng đồng thiết kế xây dựng) với lõi dùng chung và tầng chủ đề tách riêng cho từng thương hiệu, kèm quy trình RFC để mọi thay đổi đều có người đề xuất và người duyệt rõ ràng.
Về triển khai, Sinh Vũ thường chọn một sản phẩm điểm mẫu để chuyển sang hệ trước, kiểm chứng kiến trúc trong thực tế, rồi mới nhân rộng sang các thương hiệu còn lại. Cách này giúp phát hiện vấn đề sớm thay vì triển khai ồ ạt rồi mới biết thiếu sót.
Một lưu ý thực tế: hệ có thể xây rất tốt, nhưng nếu không có người chủ quản duy trì và tiến hóa theo thời gian, hệ sẽ dần bị bỏ qua. Ở quy mô tập đoàn, đây là bài toán điều phối nội bộ không kém phần quan trọng so với bài toán kỹ thuật. Anh / Chị nên cân nhắc kỹ cơ cấu đội và ngân sách bảo trì trước khi chốt phạm vi dự án.
Chủ đề: Tập đoàn đa thương hiệu dùng chung mã nguồn nên tổ chức hệ thế nào. Cẩm nang Sinh Vũ, sinhvu.com
Bấm chọn từng mục Anh / Chị thấy đúng, rồi bấm in hoặc lưu thành PDF để mang theo.
Nếu Anh / Chị đánh dấu phần lớn ở nhóm dấu hiệu trên, đây là lúc nên trao đổi kỹ hơn. Sinh Vũ có thể cùng Anh / Chị soi lại và đề xuất hướng đi.
Brad Frost, The Many Faces of Themeable Design Systems. Nathan Curtis, Team Models for Scaling a Design System và Consolidating Design Systems (EightShapes). Kinh nghiệm thực hành Sinh Vũ Studio.
Fork nghe có vẻ nhanh nhưng sau vài quý mỗi nhánh đi một hướng, sửa lỗi bảo mật hay cập nhật nền tảng phải làm lại nhiều lần. Quan trọng hơn, nhận diện thương hiệu bắt đầu trôi dạt mà không ai biết cho đến khi khách hàng nhận ra sự không nhất quán. Kiến trúc token ba tầng sinh ra đúng để giải quyết bài này: phần chung chỉ sửa một lần, phần riêng của từng thương hiệu được tách sạch.
Tối thiểu cần hai thứ: quy trình RFC (Request for Comment, tức đề xuất thay đổi có người duyệt) để không ai tự ý sửa lõi chung mà không thông báo, và bộ chỉ số đo mức áp dụng (adoption) để biết đội nào đang âm thầm bỏ hệ ra làm tay. Sinh Vũ thường đề xuất thêm gói bảo trì định kỳ sau khi triển khai để duy trì hai thứ này, vì thiếu người chủ quản thì hệ tốt đến đâu cũng dần mục ruỗng.
Nếu các hệ hiện tại đang chồng lấn, tức là component cùng chức năng xuất hiện ở nhiều nơi với tên và hành vi khác nhau, thì hợp nhất (consolidate) thường rẻ hơn xây mới. Chiến lược là kiểm kê toàn bộ component hiện có, gom những phần đã ổn định vào lõi, rồi dần loại bỏ các bản song song. Xây mới chỉ hợp lý khi hệ cũ nợ kỹ thuật quá nặng đến mức gom lại còn tốn hơn làm lại.