Frontend thì dễ... cho đến khi bạn thực sự bắt tay vào xây dựng thứ gì đó
Mọi người thường nghĩ phát triển frontend thật dễ dàng.
Họ thường nói những câu như:
- Nó chỉ là một cái màn hình thôi.
- Backend mới là nơi xử lý công việc thực sự.
- AI có thể xây dựng được cái đó mà.
- Chỉ cần dùng một thư viện component là xong.
- Nó chỉ là một cái checkbox thôi.
Mọi lập trình viên frontend đều biết những câu chuyện này kết thúc như thế nào. Một cái checkbox đơn giản có thể phá hỏng cả tuần làm việc của bạn.
Tôi đã học được bài học này một cách cay đắng tại công việc trước đây. Chúng tôi đã xây dựng một nền tảng cho một công ty kiểm toán. Một Quản lý Dự án đã yêu cầu thêm một cái checkbox trên dashboard. Cô ấy nói rằng việc đó chỉ mất hai tiếng đồng hồ. Cô ấy thậm chí còn cho tôi cả một ngày để kiểm thử nó.
Tôi cứ ngỡ cô ấy đang quá hào phóng. Nhưng tôi đã lầm.
Cái checkbox đó không phải là một thành phần UI đơn giản. Nó đi kèm với những quy tắc nghiêm ngặt:
- Nó chỉ xuất hiện đối với các loại khách hàng cụ thể.
- Nó chỉ hiển thị nếu dự án đạt đến một ngưỡng doanh thu nhất định.
- Nó chỉ xuất hiện nếu dự án đang hoạt động.
- Nó chỉ hiển thị nếu chuyên gia tư vấn là chủ sở hữu của dự án đó.
Sau đó, logic bắt đầu phát sinh thêm. Việc tích vào ô sẽ kích hoạt một yêu cầu (request). Yêu cầu đó cần sự phê duyệt từ quản lý. Điều này đòi hỏi:
- Các API endpoint mới.
- Các quy trình phê duyệt phức tạp.
- Xử lý lỗi và các trạng thái loading.
- Các hệ thống thông báo mới.
Mọi chuyện còn tệ hơn. Các quản lý không muốn các yêu cầu bị treo vô thời hạn. Cái checkbox phải ẩn đi nếu quản lý không trực tuyến (online). Chúng tôi đã phải triển khai tính năng theo dõi trạng thái hiện diện (presence tracking) theo thời gian thực.
Đột nhiên, chúng tôi phải quản lý:
- Các mô hình cơ sở dữ liệu (database models).
- Các kết nối socket.
- Đồng bộ hóa dữ liệu thời gian thực.
- Các tình trạng tranh chấp (race conditions).
Chúng tôi đã mất ba mươi tiếng đồng hồ cho một cái checkbox duy nhất.
Chúng tôi không mất ba mươi tiếng để vẽ một cái ô vuông. Chúng tôi mất ba mươi tiếng để chuyển đổi các quy tắc nghiệp vụ (business rules) thành mã nguồn.
Sự phức tạp của frontend đến từ các yêu cầu của con người. Bạn phải giải quyết các vấn đề về:
- Người dùng ngoại tuyến (offline).
- Các cú click chuột đồng thời.
- Thay đổi quyền truy cập.
- Phản hồi API chậm.
- Các kết nối socket bị ngắt.
Các thư viện component như ShadCN rất tuyệt vời. AI cũng rất hữu ích cho việc dàn trang (layouts). Nhưng chúng không giải quyết được các bài toán nghiệp vụ. Một thư viện cung cấp cho bạn một cái checkbox, nhưng nó không cho bạn biết ai sẽ thấy nó hoặc quy trình phê duyệt diễn ra như thế nào.
Phần khó nhất không phải là các điểm ảnh (pixels). Phần khó nhất là hiểu được ý nghĩa của cái ô đó.
Frontend là việc chuyển đổi sự hỗn loạn của con người thành thứ mà mọi người có thể click vào. Những sản phẩm tốt nhất trông có vẻ dễ dàng vì đã có ai đó dành nhiều ngày để làm cho nó cảm thấy thật đơn giản.
Câu chuyện về "chiếc checkbox đơn giản" của bạn là gì?
Nguồn: https://dev.to/mdazlaanzubair/frontend-is-easy-until-you-actually-build-something-20fb
