Membuat produk atau jadi budak Kerangka Kerja (framework) ?
Sudah banyak aplikasi dan website sudah ku buat, kebanyakan menggunakan framework Nextjs . Framework frontend ini sangat mudah digunakan, tetapi banyak fitur yang tidak digunakan yang akhirnya membuat aplikasi menjadi besar (dalam segi ukuran file) dan lambat saat load data.
Fitur nextjs yang sangat tidak digunakan pada sebagian besar aplikasi berbasis website (Web Base Application) adalah SSR Nextjs. Secara default Nextjs memaksa developer untuk menggunakan SSR dan harus menggunakan use client
jika ingin menjalankan kode pada sisi client. Aku merasa ini sangat berguna untuk website Artikel, mengedepankan SEO, aplikasi publik (bukan private seperti aplikasi internal).
Apakah Nextjs masih relevan? apakah setiap proyek harus menggunakan Nextjs?
Ya, aku setuju bahwa Nextjs sudah menghandle banyak hal dalam pemrograman website seperti: Routing, SSR, revalidating. Tapi memaksa developer untuk menggunakan SSR rasanya tidak masuk akal untuk sebagian besar kasus yang aku hadapi.
Pemilihan kerangka kerja (atau framework) sangat membantu untuk memotong waktu pembuatan aplikasi. Tetapi, menggunakan framework yang memiliki fitur beragam untuk aplikasi kecil rasanya terlalu overkill.
Aku mencoba melihat framework Remix, cukup menarik dan jadi ladang baru untuk bermain. Fitur framework ini sudah tersedia file based routing, handling form, Default component Link, Form, dll. Semakin menarik ketika baru diketahui bahwa React Router jadi mesin utama di remixjs.
Routing adalah fitur utama dalam aplikasi, mengarahkan pengguna, membuat halaman, layout, dan memilih apa yang ditampilkan di layar pengguna. Framework frontend javascript seperti Reactjs dan vuejs tidak memiliki fitur routing, kita perlu membuat satu halaman untuk mengenali path apa yang diakses oleh pengguna dan halaman mana yang akan muncul. React Router adalah salah satu library Routing Reactjs. Mudah digunakan dan cukup menarik. Dalam membuat library, selain memperhatikan aspek User Experience (UX) dan User Interface (UI) juga perlu memperhatikan Developer Experience (DX) yaitu pengalaman Developer dalam membangun Software. Semakin lengkap dokumentasi, penulisan kode yang mudah, ruang diskusi yang terbuka dan komunitas yang ramah maka semakin mudah juga developer menggunakan alat tersebut.
Saat ini banyak kerangka kerja (framework) bertebaran di internet. Semakin ramai juga pembicaran, fitur menarik yang menggaet DX terbaik. Mengetahui banyak alat kerangka kerja dapat meningkatkan pengalaman, sudut pandang, inovasi, dan mengikuti perkembangan. Tetapi trend ini tetaplah hanya trend saja, pemilihan kerangka kerja atau alat tetap berada di tangan personal developer. Terlalu mendewakan kerangka kerja tidak membuat diri menjadi keren kecuali sebagai preferensi pribadi saja.
Keep It Simple, Stupid (KISS)
Keep It Simple, Stupid (KISS) berawal dari U.S. Navy in 1960. Prinsip dalam tentara dibangun untuk tidak ruwet dan menjelimet, yang kemudian diadaptasi ke Software Development. Kerangka kerja pada awalnya dibuat berdasarkan prinsip ini, pembuatan aplikasi akan memakan waktu yang lama jika dibuat dari modul terkecil. Tetapi, belakang layar dari framework terdapat berbagai proses yang tidak diperlukan hanya untuk aplikasi sederhana dan mungkin tidak semua aplikasi menggunakan semua fitur didalam framework. Proses dan memori ini juga penting, semakin sedikit proses dan memori yang digunakan maka semakin ringkas aplikasi tersebut. Prinsip KISS bisa dilihat dari berbagai sudut pandang, apakah ringkas secara durasi pengerjaan untuk rencana panjang, atau ringkas pemprosesan CPU/Memory untuk aplikasi sederhana?. Ini artinya sudut pandang KISS selaras dengan skala aplikasi dan aspek lainnya. Mengambil keputusan hanya berdasarkan satu aspek bukanlah keputusan yang baik.
Sebuah aplikasi pasti memproses data, konsep sederhananya adalah input, process, dan output. ReactJS sendiri sudah memenuhi kebutuhan ini, bahkan menggunakan fetch
untuk mengolah data ke endpoint yang tersedia. Ini sudah cukup untuk sebagian besar kasus aplikasi reactive dan Single App Application. Library React Router membuat pengerjaan proyek Reactjs menjadi mudah dalam hal routing, fitur keunggulannya adalah loader
dan action
. Fitur ini diimplementasi dengan baik dalam framework Remix.
Disisi lain aku menggunakan Vite sebagai packaging pengganti Webpack dalam segi kecepatan build yang sangat cepat. UI Shadcn menyediakan komponen Reactjs menggunakan Tailwindcss. Sekumpulan library dipilih sesuai kebutuhan dapat membuat aplikasi menjadi sangat ringan dalam pengerjaan dan penyimpanan data. Konsep KISS membuat kita memikirkan dengan baik dan memilih perangkat kerja dengan baik, tetapi terlalu berpaku pada konsep ini kadang membuat kita lupa bahwa harus membuat produk secepatnya yang kemudian berakhir menjadi dilema yang terus berulang setiap saat proyek dimulai.
Rule Of Thumb
In English, the phrase rule of thumb refers to an approximate method for doing something, based on practical experience rather than theory. - Wikipedia
Rule of thumb adalah salah satu metode untuk menentukan sebuah metode dalam melakukan sesuatu, misalnya “Jika jarak ke tujuan lebih dari 500 Meter maka gunakan kendaraan, jika kurang maka jalan kaki”. Rule of thumb tidak memiliki teori ilmiah apapun, ini murni berdasarkan pengalaman pribadi maka setiap orang pasti memiliki rule of thumb masing-masing. Terkadang ini perlu untuk membuat keputusan dengan cepat walaupun tidak terlalu ilmiah.
Memahami fungsi sebuah framework dan mempertanyakan Apakah ini relevan?, apakah ini yang benar-benar dibutuhkan? menjadi pertanyaan yang membangun pemikiran dan mencari alternatif solusi untuk membuat keputusan lebih bijaksana. Diawalai dengan pertanyaan ini, aku menyadari bahwa sebuah framework tidak harus digunakan dalam semua kasus. Penemuan framework lainnya dan library lainnya membuka mata dan pilihan didepan mata.
Javascript, Reactjs, Remix, Nextjs, Vite, Tailwindcss, React Router. Begitu banyak library dan pastinya para kontributor sudah mengobarkan waktu untuk membuat library ini sangat terkenal hingga memiliki DX yang terbaik. Rule of thumb pribadi ku dalam membuat aplikasi khususnya frontend adalah
Jika website mementingkan SEO maka Nextjs sangat berguna disini. Tetapi jika website difungsikan untuk internal dan pengolahan data khususnya, maka Reactjs dengan kombinasi library seperti Vite, dan React Router sudah cukup.
Sudah jelas bahwa alat atau framework hanyalah sebuah alat pada akhirnya. Alat apapun itu hanya untuk membantu pekerjaan. Secara pribadi, aku menggunakan alat bukanlah untuk pekerjaan saja, pemilihan alat yang tepat dapat membuat pekerjaan dan hasil pekerjaan menjadi lebih bermakna. Berhati-hati jika sudah masuk fase dilema dan pahami bahwa kadang perlu keputusan yang cepat dan tepat.
Conclusion
Pembuatan proyek dan pemilihan alat di zaman yang menyediakan banyak alat saat ini sangat perlu pemikiran untuk selalu mempertanyakan apakah alat yang digunakan masih relevan?. Prinsip Keep it simple, stupid (KISS) adalah konsep dalam dunia pemrograman, haruslah memilih alat yang simpel dan ringkas. Aku harap kamu dapat mengambil beberapa hal baik dari tulisan ini, mohon maaf jika salah banyak kata atau kalimat. Jika kamu kesulitan untuk mengikuti zaman teknologi khususnya dalam pemrograman saat ini, ayo join telegram channel ku The IO Hub agar dapat update terbaru. Terima kasih sudah membaca. Sampai jumpa!