Chuyên môn · Chọn phạm vi làm gì trước

Có cần pattern library không

Câu hỏi không phải có hay không, mà là sản phẩm của Anh Chị đã đủ phức tạp để cần chưa.

Chốt nhanh

Cần pattern library khi sản phẩm có những tình huống giao diện phức tạp lặp lại: biểu mẫu nhiều bước, bảng dữ liệu, luồng tìm kiếm và lọc. Lúc đó vấn đề không nằm ở từng nút đơn lẻ, mà ở cách các component ghép lại để giải một bài toán trải nghiệm. Nếu sản phẩm còn đơn giản và chỉ một đội đang làm, thư viện component lõi là đủ, thêm pattern library sớm chỉ tốn công duy trì.

Đối sánh nhanh
Nên chọn hướng này khi
  • có biểu mẫu phức tạp, bảng dữ liệu, luồng nhiều bước lặp lại
  • nhiều đội cùng giải cùng bài toán trải nghiệm
Chưa cần khi
  • sản phẩm đơn giản, ít màn hình, một đội
  • thư viện component lõi đã phủ hết nhu cầu

Trong nhiều dự án design system (hệ thống thiết kế), Sinh Vũ nhận được câu hỏi này khá muộn, sau khi đội đã xây xong component library (thư viện thành phần giao diện) và bắt đầu nhận ra có những tình huống không biết xếp vào đâu. Câu trả lời không phải lúc nào cũng là "có" hoặc "không", mà phụ thuộc vào mức độ phức tạp thực của sản phẩm và số đội đang cùng làm.

Pattern và component: hai tầng khác nhau

Đây là điểm phân biệt quan trọng nhất, và cũng là nơi nhiều đội nhầm nhất.

Component là viên gạch: nút bấm, ô nhập liệu, thẻ thông tin, huy hiệu trạng thái. Mỗi component hoạt động độc lập và có thể tái dùng ở nhiều chỗ. Pattern (tình huống giao diện) là cách ghép những viên gạch đó lại để giải một bài toán trải nghiệm cụ thể, ví dụ: luồng đặt hàng nhiều bước, bảng dữ liệu có lọc và phân trang, biểu mẫu đăng ký có xác thực theo thời gian thực.

Component trả lời câu hỏi "Đây là cái gì?" Pattern trả lời câu hỏi "Làm thế này thế nào?"

Nathan Curtis, EightShapes

Theo khung Atomic Design của Brad Frost, component tương ứng với tầng atom và molecule. Pattern tương ứng với organism và template, là nơi các phần nhỏ được ghép lại có mục đích. Hai tầng này bổ sung cho nhau và không thể thay thế nhau.

Các yếu tố cần cân nhắc

  • Độ phức tạp của sản phẩm: Sản phẩm có nhiều luồng nhiều bước, bảng dữ liệu lớn, hoặc các tình huống tìm kiếm và lọc phức tạp không? Nếu không, component lõi thường là đủ.
  • Số đội cùng làm: Một đội có thể thống nhất miệng. Nhiều đội cần tài liệu chuẩn chung, nếu không mỗi đội sẽ tự chế một kiểu cho cùng một tình huống.
  • Tần suất lặp lại: Nếu một tình huống chỉ xuất hiện một lần trong toàn bộ sản phẩm, ghi chú trong file thiết kế là đủ. Nếu lặp lại ở nhiều màn hình và nhiều luồng, cần pattern thành văn.
  • Khả năng duy trì: Pattern library cần được cập nhật song song với component. Nếu đội không có người chịu trách nhiệm duy trì, tạo ra rồi bỏ đó còn tệ hơn không có.

Khi nào cần, khi nào chưa cần

Nên làm pattern library khi: Sản phẩm có biểu mẫu nhiều bước, bảng dữ liệu với lọc và phân trang, hoặc các luồng phức tạp lặp lại ở nhiều nơi. Có từ hai đội trở lên cùng làm trên cùng một sản phẩm. Đội đang phát hiện mỗi sprint lại có người tự giải lại cùng một bài toán giao diện theo một cách khác. Có người sẵn sàng duy trì và cập nhật tài liệu pattern.

Chưa cần pattern library khi: Sản phẩm còn ít màn hình và luồng đơn giản. Chỉ một đội làm và có thể thống nhất trực tiếp. Component lõi đã phủ hết những gì cần thiết. Đội chưa có bandwidth để duy trì thêm một tầng tài liệu.

Lỗi thường gặp nhất

  • Nhồi mọi thứ vào một kho không phân tầng: Kết quả là người dùng không biết đang tìm viên gạch hay đang tìm cách xây, kho trở nên khó tra cứu khi lớn dần.
  • Làm pattern library quá sớm: Khi sản phẩm chưa đủ phức tạp, pattern library trở thành tài liệu bày ra cho có, không ai dùng và không ai cập nhật.
  • Có pattern nhưng không kèm hướng dẫn dùng: Một pattern không có mô tả khi nào dùng, khi nào không dùng, và tại sao chọn cách này, thực chất chỉ là ảnh chụp màn hình trong một kho lạnh.

Góc nhìn của Sinh Vũ

Trong bàn giao A3 cho các sản phẩm có độ phức tạp trung bình trở lên, Sinh Vũ tách rõ thư viện component lõi và pattern library thành hai tầng riêng. Những tình huống giao diện phức tạp đã có lời giải chuẩn sẵn, đội không phải nghĩ lại mỗi lần gặp cùng một bài toán.

Với sản phẩm còn đơn giản, Sinh Vũ tư vấn khoan làm pattern library. Không phải vì không có giá trị, mà vì làm sớm khi chưa đủ tình huống thực tế dễ dẫn đến pattern xây trên giả định, không khớp với cách sản phẩm thực sự vận hành sau này. Tốt hơn là để pattern nảy sinh từ những tình huống lặp lại thật, sau đó chuẩn hóa.

Nguyên tắc Sinh Vũ theo: pattern library phục vụ đội, không phải ngược lại. Nếu Anh Chị phải thuyết phục đội dùng nó, có thể làm sớm hơn nhu cầu thực.

Công cụ mang về

Checklist quyết định

Chủ đề: Có cần pattern library trong design system không. Cẩm nang Sinh Vũ, sinhvu.com

0 trên 6 mục

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.

Dấu hiệu cho thấy Anh / Chị nên làm
Câu hỏi cần trả lời trước khi quyết định

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.

Nguồn tham khảo

Nathan Curtis, EightShapes: UX Patterns không phải UI Components. Brad Frost: Atomic Design, Chương 2. Kinh nghiệm thực hành trong bàn giao A3 tại Sinh Vũ Studio.

Câu hỏi thường gặp

Pattern library và component library khác nhau chỗ nào?

Component library chứa các viên gạch riêng lẻ: nút, ô nhập liệu, thẻ thông tin. Pattern library chứa cách ghép những viên gạch đó lại để giải một tình huống cụ thể, ví dụ luồng đặt hàng nhiều bước hay bảng lọc dữ liệu. Nói theo khung Atomic Design của Brad Frost: component là atom và molecule, còn pattern là organism và template. Hai cái này bổ sung cho nhau, không thay thế nhau.

Khi nào biết đã đến lúc cần làm pattern library?

Dấu hiệu rõ nhất là khi nhiều đội hoặc nhiều sprint khác nhau phải giải cùng một bài toán giao diện mà mỗi lần ra một kiểu khác nhau. Hoặc khi review thiết kế mà câu hỏi không còn là nút này đúng màu chưa, mà là luồng này nên hoạt động thế nào. Lúc đó pattern library giúp chốt lời giải chuẩn một lần, dùng lại nhiều lần.

Có thể nhồi pattern vào cùng component library luôn được không?

Được về mặt kỹ thuật, nhưng dễ gây lộn xộn khi kho lớn dần. Trộn hai tầng vào một chỗ khiến người dùng khó biết đang tìm viên gạch hay đang tìm cách xây. Sinh Vũ khuyến nghị tách rõ hai tầng khi kho bắt đầu có cả component đơn lẻ lẫn những cấu hình ghép phức tạp, để mỗi thứ nằm đúng chỗ và dễ duy trì hơn.

← Về Hệ thiết kế số
{INJ}