Vì sao tôi xây portfolio với hai chế độ
Hầu hết portfolio chọn một phong cách rồi đi tới cùng. Portfolio của tôi có hai chế độ: geek IDE và classic. Chính ràng buộc phải hỗ trợ cả hai lại khiến từng chế độ tốt hơn.
Khi bắt đầu làm portfolio này, tôi có hai ý tưởng mà không thể chọn bỏ cái nào.
Geek mode cho tôi cảm giác rất "nhà". Giao diện kiểu VS Code, tab kéo thả, terminal nằm ở cuối mỗi trang, ASCII art, hiệu ứng scanline. Đây là phiên bản của tôi thích phần thủ công của việc làm sản phẩm: người có thể dành cả một ngày thứ Bảy chỉ để chỉnh easing curve trong Framer Motion.
Classic mode thì lại cần thiết. Sạch hơn, nhiều khoảng thở hơn, typography lớn và dễ đọc. Đây là phiên bản của tôi hiểu rằng recruiter hoặc hiring manager không muốn phải học shortcut chỉ để đọc kinh nghiệm làm việc của mình.
Tôi đã cố chọn một. Không được. Vậy nên tôi xây cả hai.
Ràng buộc này ép tôi ra quyết định tốt hơn
Hỗ trợ hai chế độ nghĩa là tôi không thể lười dùng những con số magic chỉ hợp với một theme. Mọi màu sắc phải thành CSS variable. Mọi layout phải chạy ổn trong cả hai ngữ cảnh. Mọi tương tác phải hợp lý dù người dùng đang ở giao diện IDE hay layout kiểu magazine.
Zustand store cuối cùng khá gọn:
mode: "geek" | "classic"
theme: ThemeId // 4 themes cho mỗi mode
language: "EN" | "VI"Một nguồn sự thật duy nhất, được lưu trong localStorage, kèm một inline script trong <head> đọc state trước khi React hydrate. Nhờ vậy trang không bị flash sai theme trong khoảnh khắc đầu.
Chi phí ẩn
Hai chế độ đồng nghĩa với gấp đôi bề mặt cần test. Mỗi component mới cần hoạt động ổn trong cả styling geek lẫn classic. Một số component chỉ tồn tại ở một chế độ, ví dụ terminal không xuất hiện trong classic mode vì nó sẽ bị lệch giọng.
Một portfolio đơn giản hơn chắc đã ship sớm hơn khoảng 6 tuần. Nhưng bản này lại có cảm giác là của tôi hơn rất nhiều so với một site chỉ có một mode.
Tôi có khuyên người khác làm vậy không?
Với đa số portfolio: không. Chọn một hướng, polish thật kỹ, rồi ship. Giá trị của portfolio nằm ở bài viết, dự án, case study và cách bạn kể chuyện, không phải ở hệ thống layout.
Nhưng nếu dual mode là một phần của câu chuyện bạn muốn kể, rằng bạn là người quan tâm đến UX đủ nhiều để xây cùng một website theo hai cách khác nhau, thì có thể. Chỉ cần budget thời gian gấp đôi.