# Đừng để user phải hỏi: “Giờ mình đi đâu?”

> Chọn cách dẫn đường theo ý định của user, để mỗi điểm đến và mỗi cái tên đều có lý do.

- URL: https://dantech.academy/courses/kotlin-accelerator/indie-builder/03-design-the-experience/lesson-01-navigation-with-intent
- Khóa học: [Mobile Action Pro](https://dantech.academy/courses/kotlin-accelerator.md)
- Module: Thiết kế trải nghiệm
- Thời lượng: 25 phút
- Độ khó: beginner
- Truy cập: Miễn phí, đọc toàn bài

## Mục tiêu

- Chọn Single screen, Bottom Navigation hay Drawer dựa trên ý định quay lại của user
- Dẫn user đến một điểm đến chính duy nhất ngay sau Aha moment

---

User mở app để làm xong một việc có ý nghĩa với họ. Nếu họ phải tự hỏi **"Giờ mình đi đâu?"**, app vừa giao thêm cho họ một việc không ai muốn làm.

**Navigation** tốt trả lời câu hỏi đó trước khi nó kịp xuất hiện.

## Navigation đi theo ý định của user

Khi bắt đầu build, developer hay xuất phát từ những thứ mình đang có: ý tưởng, tính năng, nội dung, rồi ghép tất cả lại thành app.

User thì đến để làm một việc cụ thể. Vì vậy các điểm đến trong app nên đại diện cho những ý định rõ ràng của user, không phải cho cách bạn chia code hay chia nội dung.

Hãy bắt đầu bằng câu hỏi: **user quay lại app để làm gì, và từ đó họ sẽ đi tiếp đến đâu?** Câu trả lời thường rơi vào một trong ba dạng:

- **Một ý định chính:** user mở app là thấy ngay màn hình làm việc đó.
- **Vài ý định ngang hàng:** mỗi ý định là một lý do riêng để quay lại.
- **Những nơi phụ:** cài đặt, tài khoản, trợ giúp. Ít dùng nhưng không thể thiếu, nên đặt sau hành trình chính.

## Single screen: một con đường cho một nhiệm vụ

Single screen hợp với app chỉ có **một** nhiệm vụ trung tâm.

Ví dụ một app dọn bộ nhớ điện thoại: user mở app, bấm Scan, chờ kết quả. Không phải chọn gì, không phải tìm gì. Kiểu app này được ưa chuộng chính vì nó rõ ràng và không bắt user chờ đợi hay suy nghĩ.

App quiz trong repo của khóa học cũng đi theo hướng này. Màn menu có một nút **Bắt Đầu** lớn ở phía dưới, còn bảng xếp hạng và cài đặt mở dạng popup ngay trên menu, không kéo user sang một khu vực khác.

Sự tối giản này giữ user tập trung vào giá trị cốt lõi. Cái giá phải trả là khi user cần so sánh nhiều kết quả, quản lý nhiều phần riêng hoặc tìm lại thứ đã lưu, một màn hình duy nhất sẽ thành ngõ cụt. Cố nhồi tất cả vào đó sẽ khiến user ngợp, và ngợp là một lý do phổ biến để gỡ app.

## Bottom Navigation: khi nhiều ý định cùng là lý do quay lại

Bottom Navigation hợp khi app có từ 3 đến 5 điểm đến tương đối ngang hàng, mỗi điểm đến đáp ứng một nhu cầu quen thuộc. Đây là mẫu rất phổ biến trên cả Android và iOS, nên user đã quen với nó.

Ví dụ một app luyện tiếng Anh có thể có các tab **Học tiếp**, **Từ đã lưu**, **Tiến độ** và **Tài khoản**. Đó là những khu vực độc lập, không phải các bước nối tiếp trong một quy trình.

Các lựa chọn quen thuộc luôn ở gần tạo cảm giác an toàn. Nhưng mỗi tab thêm vào cũng giành sự chú ý của user. Nếu vài tab chỉ là biến thể của cùng một nhu cầu, hoặc có tab hiếm khi được mở, hãy gộp lại hoặc bớt đi.

## Drawer Navigation: nhiều tính năng nhưng vẫn giữ tập trung

Drawer hợp khi app có một hành trình chính rõ ràng nhưng vẫn cần chỗ cho **Tài khoản**, **Trợ giúp**, **Nội dung đã lưu** hay **Tùy chọn cá nhân**. User tìm đến những mục này khi cần, mà không phải nhìn thấy chúng mỗi lần mở app.

Đừng dùng Drawer để giấu điểm đến quan trọng. Nếu user thường xuyên cần xem tiến độ hoặc tiếp tục việc đang dở, đặt chúng trong Drawer chỉ đẩy gánh nặng tìm kiếm sang phía user. Drawer dành cho thông tin bối cảnh và các tùy chỉnh phụ.

## Tên điểm đến phải nói được user làm gì ở đó

Tên điểm đến không nên phản ánh tên nội bộ hay cấu trúc hệ thống. Một cái tên tốt trả lời ngay câu hỏi: **"Vào đây mình làm được gì?"**

| Ý định của user                 | Tên mơ hồ | Tên thể hiện ý định |
| ------------------------------- | --------- | ------------------- |
| Tiếp tục việc đang dở           | Trang chủ | Học tiếp            |
| Xem mình tiến bộ thế nào        | Thống kê  | Tiến độ             |
| Quản lý thông tin cá nhân       | Khác      | Tài khoản           |

"Trang chủ" chỉ nói vị trí. "Học tiếp" nói lý do user muốn đến đó.

Nếu một điểm đến chỉ có thể đặt tên là "Khác", có lẽ nó chưa đủ rõ hoặc chưa đủ quan trọng để đứng riêng.

Tên tốt thì ngắn, nhất quán, dùng từ quen thuộc với user và không hứa nhiều hơn những gì bên trong thật sự có.

## Điểm đến ngay sau Aha moment

Aha moment là lúc user tự nhận ra app có ích với mình. Đó cũng là lúc họ hào hứng nhất, và là lúc dễ đánh rơi họ nhất nếu app chỉ hiện kết quả rồi để họ tự tìm đường.

Ngay sau khoảnh khắc đó, app cần chọn **một hành động chính** biến điều user vừa thấy thành việc làm được ngay.

Lấy màn kết thúc lượt chơi của app quiz. Người chơi vừa biết mình mang về bao nhiêu. Màn này có các lựa chọn Chơi lại, Về menu và Chia sẻ kết quả. Câu hỏi thiết kế là: lựa chọn nào nên nổi bật nhất để người chơi đi tiếp?

Nếu ba nút trông ngang nhau, người chơi phải tự quyết định trong khi app có đủ thông tin để gợi ý. Người vừa thua ở một câu gần mốc thưởng có thể muốn chơi lại ngay. Người vừa đạt kết quả cao có thể muốn chia sẻ. Hành động phụ vẫn có thể có mặt, nhưng nên có một hành động chính rõ ràng.

Với một app luyện thi, hành động chính sau khi làm xong đề có thể là **"Ôn lại phần bạn vừa sai"**. Nút này không nên mở một danh sách bài học chung chung. Nó nên mở đúng phần được tạo từ kết quả vừa có, để user thấy liền một mạch:

**Bạn vừa sai ở đâu → Bạn nên làm gì tiếp → Điều gì sẽ được cải thiện**

## Key takeaway

> Navigation trả lời câu hỏi "Mình đến đây để làm gì tiếp?". Dùng single screen khi một nhiệm vụ là đủ, Bottom Navigation khi vài ý định quen thuộc thật sự ngang hàng, Drawer cho những nơi phụ. Mỗi tên điểm đến phải hứa đúng điều user làm được bên trong.

## Mang sang dự án của bạn

Khi user mở app của bạn, hành động nào cần được mời gọi ngay? Nếu chỉ có một, hãy dùng một con đường rõ ràng. Nếu có vài ý định ngang hàng, hãy đặt tên chúng theo kết quả user tìm kiếm. Cuối cùng, chọn một hành động chính cho màn hình ngay sau Aha moment của app.

---

- Bài trước: [Tìm kiếm Aha moment cho user](https://dantech.academy/courses/kotlin-accelerator/indie-builder/02-find-and-validate-ideas/lesson-06-find-the-aha-moment.md)
- Bài tiếp theo: [Khi nào app được phép ngắt nhịp user?](https://dantech.academy/courses/kotlin-accelerator/indie-builder/03-design-the-experience/lesson-03-interruption-with-intent.md)
