Product Management
Đăng nhập
ESC

Nhập từ khóa để tìm kiếm

↑↓ Di chuyển
Enter Mở
ESC Đóng

Từ thiết kế sang code — component, thư viện và một nguồn sự thật

Đã đọc 0/8 mục · còn khoảng 4 phút
Cách chúng tôi ghi nhận

Một mục được tính là đã đọc khi nó nằm giữa màn hình đủ lâu so với độ dài của nó (bảng và sơ đồ tính một nửa), bạn vẫn đang cuộn hoặc bấm phím, và bạn đã thấy tới cuối mục. Lướt nhanh hoặc để tab mở không được tính. Chúng tôi chỉ lưu thời gian đọc từng mục — không lưu gì khác.

Hai thư viện, một sự thật

Một design system có hai nửa. Nửa thứ nhất nằm trong công cụ thiết kế: thư viện component mà designer kéo thả để làm màn hình. Nửa thứ hai nằm trong code: thư viện component mà kỹ sư gọi để dựng màn hình. Nếu hai nửa được làm riêng và cập nhật riêng, chúng sẽ lệch nhau, và đội quay lại đúng chỗ bài 1: màn hình trong thiết kế một kiểu, trên sản phẩm một kiểu.

Một nguồn sự thật nghĩa là với mỗi quyết định, có đúng một chỗ được coi là chuẩn, và mọi chỗ khác lấy từ đó. Không nhất thiết phải là code hay phải là file thiết kế. Điều quan trọng là cả đội biết chỗ đó là đâu khi hai bên khác nhau.

Giỏ Xanh chọn gì làm chuẩn

ThứNguồn sự thậtLý do
Design tokenMột file token trong kho code, xuất ra cho cả công cụ thiết kế và codeThay đổi qua review như code, có lịch sử
Component đã phát hànhThư viện codeĐó là thứ người dùng thật thấy
Component đang đề xuấtFile thiết kếCòn đang thay đổi, chưa đáng để viết code
Cách dùng và khi nào không dùngTrang tài liệu của design systemMột chỗ cho cả designer, kỹ sư, PM, QA
Quy ước của Giỏ Xanh là: khi thiết kế và code của một component đã phát hành khác nhau, code là đúng cho đến khi có quyết định sửa. Quy ước này nghe lạnh lùng với designer, nhưng nó chấm dứt những cuộc tranh luận kiểu "trong Figma đâu có như vậy" khi QA báo lỗi.

Một component đầy đủ gồm những gì

Một component không chỉ là một hình vẽ hay một đoạn code. Để dùng lại được, nó cần đủ năm phần:

PhầnNội dungVí dụ với nút
TênMột tên, giống nhau ở thiết kế, code, tài liệuButton / Nút
Thuộc tínhNhững gì người dùng component được chọnbiến thể: chính, phụ, viền, nguy hiểm; cỡ: nhỏ, vừa, lớn
Trạng tháiMọi trạng thái có thể xảy rathường, rê chuột, đang nhấn, đang tải, vô hiệu, đang được chọn bằng bàn phím
Quy tắc dùngKhi nào dùng, khi nào khôngMỗi màn hình tối đa một nút chính
Khả năng tiếp cậnNhững gì đã được đảm bảo sẵnĐộ tương phản, vùng chạm, tên đọc được cho trình đọc màn hình
Phần "trạng thái" là phần hay bị thiếu nhất. Designer vẽ trạng thái thường và trạng thái rê chuột; kỹ sư tự nghĩ ra trạng thái đang tải; QA phát hiện trạng thái vô hiệu trông y như trạng thái thường. Khi mọi trạng thái được định nghĩa trong component, những câu hỏi đó được trả lời một lần cho mọi màn hình.

Đường đi của một thay đổi

flowchart TD
    A[Đổi token hoặc component trong kho chung] --> B[Review bởi đội nền tảng giao diện]
    B --> C[Phát hành phiên bản mới của thư viện]
    C --> D[Thư viện thiết kế cập nhật theo]
    C --> E[Các squad nâng phiên bản trong code]
    D --> F[Màn hình mới dùng bản mới]
    E --> F

Điều cần thấy ở sơ đồ: không có mũi tên nào đi từ một màn hình cụ thể ngược lên thư viện. Nếu một squad cần nút khác đi, squad đó đề xuất thay đổi thư viện, không sửa riêng trong màn hình của mình. Bài 7 nói cách đề xuất được duyệt.

Trang tài liệu là sản phẩm cho người trong nhà

Thư viện code có thể chạy tốt mà không ai dùng, vì không ai tìm được thứ mình cần. Giỏ Xanh dựng một trang tài liệu nội bộ, mỗi component một trang, có:

  • ảnh và bản chạy thử của mọi biến thể và trạng thái;
  • đoạn code mẫu để dán vào;
  • mục "dùng khi" và "đừng dùng khi", có ví dụ đúng và sai;
  • tên tương ứng trong công cụ thiết kế;
  • người phụ trách và phiên bản hiện tại.
Nhiều đội dùng các công cụ như Storybook cho phần bản chạy thử. Công cụ không quan trọng bằng việc trang tài liệu được cập nhật cùng lúc với component, trong cùng một thay đổi.

Lệch nhau thì làm gì

Dù có quy trình, thiết kế và code vẫn sẽ lệch. Cách Giỏ Xanh xử lý:

  • Phát hiện: QA và designer đánh dấu lệch bằng một nhãn riêng trong hệ thống ticket, để đếm được.
  • Phân loại: lệch do màn hình không dùng component (lỗi của màn hình), hay do component trong code khác thiết kế (lỗi của thư viện).
  • Sửa ở đúng tầng: lỗi của thư viện sửa trong thư viện một lần; lỗi của màn hình sửa bằng cách chuyển màn hình sang component.
Con số 42 lỗi lệch thiết kế mỗi quý ở bài 1 có được chính nhờ nhãn này. Không có nhãn, không ai biết vấn đề lớn đến đâu.

PM và BA cần biết gì ở đây

Bạn không cần viết component. Nhưng bạn cần biết thư viện có gì để không yêu cầu một thứ đã có, và cần hiểu rằng "sửa riêng cho màn này" là một quyết định tạo ra nợ. Cách làm việc giữa sản phẩm, thiết kế, kỹ sư và QA quanh thư viện chung được nói thêm ở kỹ năng phối hợp Dev, QA và Design.

Làm ngay

Chọn một component phổ biến trong sản phẩm của bạn, như nút hoặc ô nhập. Tìm nó ở ba chỗ: file thiết kế, code, và tài liệu (nếu có). So sánh năm phần trong bảng: tên, thuộc tính, trạng thái, quy tắc dùng, khả năng tiếp cận. Ghi lại chỗ nào khác nhau và chỗ nào bị thiếu. Rồi hỏi đội: khi hai bên khác nhau, ai và cái gì đang được coi là đúng?

Học xong bài này rồi? Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu, và học hết khóa thì có chứng chỉ. Lưu tiến độ của tôi