Có gì hot? Tuần 09 - 2023

Viết bởi @kcjpop

Đăng ngày

Dài 1392 từ. Đọc trong 7 phút.

"Bản tin Ehkoo tuần 09 năm 2023"

Tuần này không có tin gì nổi bật lắm nên chúng ta chuyển qua “tâm sự tuổi hồng” vậy 😀

Trong tuần rồi mình có đọc bài The Great Gaslighting of the JavaScript Era của Jared White. Đại ý của bài là phàn nàn chuyện chúng ta thay vì sử dụng HTML/CSS lại làm web hoàn toàn bằng JavaScript với React, CSS-in-JS 🤢, Tailwind 🤮, v.v. Theo tác giả thì không phải các công cụ này thực sự giúp ứng dụng chạy nhanh và hiệu quả hơn, mà vì chúng ta được “nghe các tai to mặt bự trên Twitter” nói là như vậy.

Bỏ qua chuyện ngôn ngữ trong bài có phần ồn ào với những chỗ in đậm không cần thiết, mình cũng phần nào đồng cảm với tác giả, vì những gì xảy ra gần giống với trải nghiệm của mình tầm 8-10 năm trước. Có khác chút là mình xài PHP/ Laravel thay vì Ruby on Rails. Ngày đó mình xém nhảy tàu qua AngularJS nhưng “may mắn thay” khi nghe Angular 2 viết lại bằng TypeScript mình đã không theo 😂 Mình cũng không chọn React ngay từ đầu mà dùng Mithril.js, cho đến khi phải viết React “kiếm cơm”, đâu đó tầm 6-7 năm nay.

Sau ngần ấy năm thì mình cảm thấy mệt 😃 Nhìn lại thì bao lời hứa hôm nào với Flux/ Redux hay MobX, v.v cũng không thật sự đúng. Rồi Context, hooks, và những khái niệm như Suspense, Server-side Components, SSR, v.v. làm mình cảm thấy mọi thứ không đáng phải phức tạp như vậy, hay do trình độ mình kém nên chưa hiểu hết vì sao phải có những cái này (viết đến đây thì mình nhận ra mình đang “nghi ngờ về nhận thức, hiểu biết của bản thân” 😱 xem phần Ngoài lề bên dưới). Đến khi có các meta-framework như Next.js hay Remix hỗ trợ SSR thì mình thấy “ủa sao quen quen”.

Bạn có biết hồi xưa xửa xưa React lấy cảm hứng từ XHP, một thư viện viết bằng PHP? 🤓

Ngoài ra bạn không thấy bài viết nào về GraphQL trên Ehkoo, một phần là… mình làm biếng, một phần nữa là mình không chắc nó giải quyết vấn đề của riêng Facebook hay đại chúng, cuối cùng là mình muốn xem thử GraphQL có phổ biến như REST không. 4 năm rồi và có vẻ như GraphQL vẫn không cất cánh nổi.

Bởi vậy mình có phần hờ hững và nghi ngờ với các công cụ/ thư viện gắn mác “awesome” hay “blazingly fast” hay “scalable”. Gần đây thì chúng ta có Solid và khái niệm signals, với dự báo cũng sẽ “trở thành tương lai”, hay Qwik với hướng tiếp cận hoàn toàn mới. Nhưng nghĩ đến chuyện nghiên cứu hay nhảy qua các framework ở trên thì… mình mệt. Mình cũng không nghĩ hệ sinh thái của các thư viện này có thể trở nên to lớn như React, nếu có thì liệu chúng có đi vào vết xe đổ của React không.

Từ bài viết ở trên:

They use React because they’ve been told they need to use React, and so they use React.

Hehe giống như câu “Nobody gets fired for buying IBM” vậy. Mà không sai nha. Rõ ràng bây giờ trên các trang tuyển dụng, ngay cả vị trí junior cũng đòi bạn phải biết React hay thư viện tương tự. Thành ra có chuyện đi học bootcamp vài tháng cho tới 1 năm là ra ngoài đi làm được. Mình nghĩ cái này cũng không có gì là sai, thị trường đòi hỏi sao thì mình đáp ứng vậy. Chỉ mong là mọi người đừng chăm chăm giải quyết mọi thứ bằng React/ JavaScript mà quên đi những cái cốt lõi như HTML hay CSS.

Nói đi cũng phải nói lại, mình không nghĩ bao nhiêu năm làm React là hoàn toàn vô ích. Theo mình thì React giúp khái niệm chia nhỏ ứng dụng thành các components trở nên gần gũi và tự nhiên. Các kỹ thuật lập trình như hàm thuần khiết (pure function), tính bất biến (immutability), hay hàm thứ bậc cao (higher-order functions) cũng được phổ biến hơn. Một cách gián tiếp, bản thân JavaScript và hệ sinh thái của nó cũng phát triển thông qua các công cụ như Prettier, TypeScript, hay Storybook. Cũng không phũ nhận chuyện xài React thì tốc độ ra app nhanh hơn hẳn. Chưa kể là những nền tảng như Vercel hay Netlify làm cho cuộc sống lập trình viên đơn giản hơn nhiều.

Viết mãi chưa xong 😕 Cũng như bao công nghệ khác, React có cái hay cũng như dở của nó. Bạn chọn viết React hay framework nào, miễn sao tới tháng có lương, lãnh lương xong trả tiền điện với tiền chợ còn dư một chút là được. Nhưng đừng quên là nền tảng web ngày càng mạnh mẽ, những gì ngày xưa phải dùng JS để giải quyết thì ngày nay có khi chỉ cần HTML/ CSS là đủ (mình đang nhắc đến thẻ <details>, <dialog>, hay container queries đó). Thành ra viết JS càng ít càng tốt nhe.

Ngoài lề: Chuyện về chữ “gaslight”

Mình mới biết chữ “gaslight” trong khoảng 1-2 năm gần đây, nhưng vẫn không chắc mình hiểu đúng nghĩa của nó. Cứ nghĩ là “thêm dầu vào lửa” hay đại loại vậy thôi.

Không biết vũ trụ sai khiến kiểu gì mà mình có đăng ký bản tin Computer Things của Hillel Wayne, và bài gần nhất là Hype Cycles Aren’t “Gaslighting” You, trả lời cho bài viết ở trên và có nhắc đến định nghĩa “gaslighting” của Hiệp hội Tâm lý học Hoa Kỳ:

To manipulate another person into doubting his or her perceptions, experiences, or understanding of events. The term once referred to manipulation so extreme as to induce mental illness or to justify commitment of the gaslighted person to a psychiatric institution but is now used more generally.

Tạm dịch:

Thao túng một người nào đó để họ nghi ngờ về nhận thức, trải nghiệm, hay hiểu biết về một/ nhiều sự kiện. Khái niệm này từng đề cập đến hành vi thao túng rất cực đoan, đến mức dẫn tới bệnh lý tâm thần, hoặc để đánh giá sự hợp tác của người bị “đốt xăng” với một viện tâm thần, nhưng hiện tại đã được sử dụng phổ biến hơn.

Theo đó thì “gaslighting” mang nghĩa xấu hơn nhiều so với việc chỉ là “nói dối”. Mình không phải là người nói tiếng Anh bản ngữ nên không nhận ra được sự khác biệt ở đây, nhưng từ nay sẽ cẩn thận hơn khi dùng chữ này 😃

Mới thấy trên quầy

Một vài thư viện/ công cụ hữu ích mà bọn mình mới phát hiện 😛

  • total-typescript/ts-reset: Một thư viện giống như “CSS reset” dành cho TypeScript, giúp định nghĩa kiểu dữ liệu tốt hơn cho các API thông dụng của JavaScript.

  • natemoo-re/clack: Một thư viện giúp bạn làm các ứng dụng CLI, viết bằng TypeScript. Bao gồm hai gói @clack/core không style gì hết, chỉ bao gồm các primities để bạn dễ mở rộng, và @clack/prompts với giao diện xây dựng sẵn, gắn vô xài liền. Nhìn cũng đẹp lắm.

  • tldraw/signia: Một thư viện signals khác được xây dựng bởi tldraw.

  • scrollbar.app: Ứng dụng giúp bạn thay đổi màu sắc hay hình dáng của thanh cuộn bằng thuần CSS.

Đọc/ xem gì cuối tuần

Kết

Bản tin tuần này tưởng ngắn mà lại dài dòng quá 😅 Mong mọi người góp ý thêm nha.

Hẹn gặp lại các bạn trong tuần tiếp theo 👋

Bản tin Ehkoo hàng tuần 💌

Đăng ký ngay để nhận những tin và bài viết mới nhất về lập trình frontend, cũng như các thủ thuật hay thư viện mới…

Powered by Buttondown

Gửi tặng cà phê ☕️

Nếu thấy bài viết này hữu ích, bạn có thể gửi tặng Ehkoo một ly cà phê theo link bên dưới 👇

Cám ơn bạn rất nhiều 🤗