Akuisisi Teknologi Baru
Programmer sering kebingungan memilih framework atau library untuk projek baru. Alat atau framework modern dapat digunakan jika kamu tahu seberapa-modern-nya lingkungan kamu. Framework baru cocok untuk pengalaman bekerja yang modern dan menarik, tidak jarang lebih sederhana bahkan lebih ringan dibanding framework lama.
Teknologi baru punya kelebihan seperti:
- Pengalaman development baru, berbagai metode pengembangan baru dikembangkan untuk memudahkan dan mempercepat proses pengembangan
- Teknologi baru memiliki desain yang lebih fleksibel dan kecil sehingga secara kecepatan proses lebih cepat dibanding sistem lama.
- Dukungan komunitas dan Dokumentasi lengkap, berbagai library dan framework dikembangkan komunitas memiliki kelebihan masing-masing, dokumentasi juga lengkap sehingga mudah dipelajari
Framework/bahasa/library—kita sebut saja sebagai alat. Saat menggunakan alat-alat tersebut, kamu harus membaca dokumentasi, forum, bertanya ke AI, memilih kombinasi dan solusi yang tepat. Seluruh proses ini disebut dengan akuisisi. Pada tahapan ini, kamu akan mengalami berbagai masalah tidak terduga dan mungkin ada berbagai bagian yang hilang dari alat sebelumnya terbiasa kamu gunakan.
Risiko dari akuisisi teknologi baru:
- Integrasi tidak stabil, teknologi baru belum tentu sesuai dengan teknologi lama yang sedang digunakan. Contohnya framework X tidak bisa jalan di OS lama.
- Technical Debt, implementasi teknologi baru dapat jadi hutang karena riset dan try-error harus dilakukan dan dilewati, selain itu akan ada perbaikan di masa depan.
- Risiko keamanan, alat baru tampak modern tapi membuka celah keamanan baru.
- Biaya tersembunyi, biaya implementasi, pelatihan, migrasi, pemeliharaan. Semuanya akan dibayar pada masa depan.
Perlu mengukur risiko dari masing-masing teknologi sebelum digunakan, kecuali kamu gunakan pada area terisolasi dan tidak punya dampak besar pada sistem yang telah berjalan.
Ingat bahwa ada beban tidak terlihat dari Framework baru atau bahasa pemrograman baru. Tanpa tahu risiko—atau potensi risiko— dimasa depan dapat menjadi hambatan bagi sistem.
Pemecahan Sistem
Sebelum menggunakan alat, perlu tahu lingkungan dari pekerjaan. Bagaimana gambaran sistem dan masalah apa yang ingin dipecahkan.
Pahami jenis-jenis sistem untuk memahami perilaku dan fungsinya. Kita bisa pecah sistem berdasarkan Apa yang Dilihat User (User-facing Side):
- Sistem Back-office, berguna untuk mengelola data penting bagi organisasi.
- Sistem Front-office, bagian dari sistem yang ditampilkan kepada pelanggan atau pengguna. Contohnya Landing Page, storefront.
Kategori sistem lainnya adalah Fungsi atau Komponen Bisnis, sebagai contoh:
- Sistem Katalog, seluruh proses dalam mengelola katalog hingga bagaimana menampilkannya kepada pelanggan
- Sistem Keranjang, seluruh proses yang digunakan pelanggan untuk mengelola keranjang sebelum menuju sistem pembayaran
- Sistem Pembayaran, Sitem terintegrasi menghubungkan proses transaksi dari pelanggan, bank, kartu kredit, QRIS, hingga diterima oleh perusahaan.
- Sistem Pengiriman, Sistem yang terintegrasi pada proses pengiriman, transportasi, status pengiriman hingga diterima.
Sistem-sistem tersebut bisa dipecah menjadi sub-sub sistem sesuai kebutuhan dan sumber daya yang dimiliki perusahaan.
Apakah menggunakan salah satu framework mampu untuk mengelola seluruh sistem diatas? mungkin saja tapi sistem menjadi terikat satu sama lain sehingga sulit untuk dipisahkan saat Scaling Up dilakukan. Tetapi terlalu memisah-misahkan sistem dari awal pengembangan malah akan memberatkan biaya pengembangan.
Pilih Alat Kerja
Disini kita bahas contoh-contoh framework yang bisa dipilih, sebagian besar dari Node.js karena sangat populer akhir-akhir ini. Pada dasarnya, setiap framework punya kelebihan sesuai dengan visi komunitas yang mengembangkannya.
Nextjs
Framework Nextjs paling populer untuk membuat Aplikasi website, menjadikan React.js jalan di server. Kamu bisa gunakan ini sistem ini:
- Front-office: Cocok untuk landing page, website, storefront karena dengan mekanisme SSR membuat website mudah dibaca oleh Search Engine, SEO. selain itu fitur Cache membuat website cepat dinavigasi.
Nextjs jadi pedoman karena secara fitur bawaan sudah mumpuni untuk membuat berbagai hal, tetapi tidak cocok untuk membuat sistem back-office karena terlalu berat dijalankan, menghabiskan banyak RAM, memprioritaskan cache. Sedangkan Back-office tidak membutuhkan cache seperti Front-office.
Nuxt
Framework Nuxt adalah framework VueJS untuk jalan dari server. Mendukung SSR, sehingga cocok untuk:
- Front-office: membuat landing page, website, storefront. Fitur SSR, optimalisasi gambar, cocok untuk optimalisasi SEO dan navigasi website dengan cepat.
Nuxt memecahkan masalah Vuejs yang tidak ramah SEO. Tetapi tidak cocok untuk membuat Aplikasi atau Back-office yang banyak mengolah data. Konsep Pages lebih cocok untuk front-office karena setiap tampilan merupakan ‘halaman’ bukan fitur.
Astro
Astro adalah framework website dengan fitur “Zero-JS” sehingga website tidak perlu menunggu Javascrip untuk menampilkan tampilan. Sehingga cocok untuk:
- Front-office: Landing page, storefront jadi sangat cepat dan bisa gunakan beberapa komponen dari framework berbeda misalnya React.js atau Vue dalam satu projek.
Astro juga punya fitur SSR untuk mengambil konten dari sumber data lainnya. Walaupun begitu, Astro tidak diperuntukkan untuk back-office karena komponen utamanya adalah membuat halaman yang cepat dan instan digunakan.
Expressjs
Expressjs adalah framework/library untuk mengatasi request HTTP di Nodejs. Penggunaan expressjs seperti kanvas putih yang hanya berguna apabila diisi oleh pelukisnya. Bagaimana digunakan?
- Backend: Cocok untuk mengolah data, menampilkan dalam berbagai bentuk data, JSON/HTML/XML.
- Front-office: Karena dapat menghasilkan HTML, pastinya bisa membuat website landing page, store-front menggunakan template engine.
Expressjs sejatinya hanya membantu mengolah HTTP, maka bagaimana sistem dibuat itu diserahkan kepada pengguna. Membuat template engine berbeda denga workflow front-end seperti Nextjs/Nuxt, karena template engine memproses HTML oleh Route HTTP.
Laravel
Laravel adalah framework PHP dengan stack terlengkap dibanding lainnya. Sehingga cocok hampir semua kasus
- Backend: mampu mengolah data, membuat tampilan UI menggunakan template engine, tersedia authentication, enkripsi.
- Front-office: Cocok untuk membuat website, storefront menggunakan Reactjs/Vue yang mendukung SSR. Memiliki fitur cache untuk mempercepat proses penampilan data. Selain itu punya library payment gateway yang dibuat oleh Laravel sendiri.
Framework paling populer ini jadi andalan karena sudah ada banyak alat yang siap pakai untuk mencapai tujuan.
Jika kamu lihat polanya, masing-masing punya fungsi yang berbeda-beda sesuai fitur yang dimiliki. Framework yang menggunakan caching secara agresif seperti Next.js cocok untuk website front-office, begitu juga dengan Nuxt dan astro. Sedangkan Laravel dan Expressjs jadi web server yang mengolah data, fokus pada pengolahan informasi.
Apakah Layak Pakai Teknologi Baru?
Definisi layak tidak ada jawaban tunggal. Itu semua keputusan dari pemilik bisnis, programmer, dan lingkungan dalam organisasi. Diperlukan difinisi masalah dan kebutuhan untuk membuat keputusan.
Tetapi jangan berpikir “tidak ada masalah”, karena tujuan sederhana projek CRUD sehingga semua solusi nampak sama. Tetapi sebenarnya ada biaya peluang dan beban kognitif yang tersembunyi.
Pikirkan peluang dari masing-masing teknologi, baik yang sudah kamu gunakan dan belum digunakan. Versi dari framework juga punya peran, karena setiap versi punya perubahan dan perbaikan yang menyebabkan workflow berubah. Baik itu peluang secara bisnis, maupun secara teknikal.
Penggunaan teknologi baru akan jadi pemborosan apabila:
- Kamu tidak tahu cara menggunakan alat sebenarnya sehingga memakai sumber daya yang besar.
- Menggunakan general configuration, sehingga tidak dibuat efektif dan efisien untuk kasus berbeda.
- Terlalu terikat dengan library sehingga sulit perbaiki masalah-khusus (edge case)
Keputusan ini biasanya diserahkan pada manager atau technical lead, pemimpin projek yang menentukan masa depan dari projek tersebut. Tidak jarang keputusannya berdasarkan preferensi pribadi sehingga karyawan baru perlu mengikuti teknologi yang digunakan.
Tetapi jika keputusan ini ada ditangan kamu, pilih dengan bijak dan bertanggung jawab dengan pilihan.
Pilih Dengan Bijak
Membuat keputusan yang bijak memerlukan pemikiran kognitif terhadap masalah dan situasi yang ada. Mampu mendefinisikan kebutuhan, sistem, dan solusi jadi dasar untuk membuat keputusan pemilihan alat. Alat atau library atau framework atau teknologi apapun yang digunakan, punya kelebihan dan kelemahannya masing-masing. Sebagai software engineer, disinilah tugas yang sebenarnya, bukan hanya ngoding saja.
Add a comment