JavaScript adalah salah satu bahasa pemrograman yang paling populer di dunia. Salah satu alasannya karena dulu JavaScript adalah satu-satunya bahasa yang Anda bisa pakai di tampak-muka web. Sekarang sudah ada bahasa lain yang bisa digunakan selain JavaScript, yaitu TypeScript, Elm, Dart. Tapi JavaScript tetap memegang tombak kepemimpinan di dunia tampak muka karena JavaScript sudah memegang manfaat gerakan-pertama (first-move advantage). Di samping itu JavaScript juga tidak membutuhkan proses yang ribet, seperti kompilasi (kecuali Anda menggunakan versi terbaru JavaScript).
Google mengeluarkan mesin JavaScript V8 yang akhirnya digunakan oleh seorang pemrogram untuk membuat Node.js. JavaScript pun berekspansi ke dunia peladen juga selain dunia tampak-muka. Orang-orang mulai menggunakan JavaScript sebagai bahasa pemrograman peladen. Artinya apa? Orang tidak perlu belajar dua bahasa lagi untuk membuat aplikasi web. Dengan satu bahasa utama, yaitu JavaScript, orang bisa menjadi pemrogram seluruh tumpukan (fullstack engineer). Dulu orang harus belajar bahasa lain untuk mengerjakan bagian peladen, misalnya PHP, Ruby, Perl, Java, atau Python.
Kemudian JavaScript pun menempati pangkalan aplikasi desktop. Electron adalah kerangka pengembangan yang popular dalam membuat aplikasi desktop. Alasannya adalah dengan menggunakan bahasa pemrograman yang populer, yaitu JavaScript, Anda dapat membuat aplikasi multiplatform, aplikasi yang bisa digunakan di platform Windows, Mac, dan Linux. Tidak perlu lagi bikin aplikasi 3 kali. Banyak aplikasi populer yang menggunakan Electron, seperti Visual Studio Code, Slack, Spotify, dan lain-lain.
Kemudian JavaScript masuk ke bahasa pemrograman yang digunakan untuk membuat aplikasi seluler. React Native adalah kerangka pengembangan yang sangat populer untuk membuat aplikasi seluler multiplatform, aplikasi seluler di atas platform Android dan iOS. Tidak perlu aplikasi seluler 2 kali.
Bahkan JavaScript ikut-ikutan masuk menjadi bahasa pemrograman di Pembelajaran Dalam (Deep Learning) dengan Tensorflow.js. Tapi untuk yang satu ini, JavaScript masih kalah populer dibandingkan Python. 😀
Tapi di balik kejayaan JavaScript, ada banyak masalah yang tertimbun. Masalah-masalah ini ada yang sampai membuat pemrogram-pemrogram menjadi letih untuk mengerjakan pemrograman tampak-muka. Ada yang meninggalkan dunia pemrograman tampak-muka untuk bekerja di dunia pemrograman lain seperti pemrograman peladen atau pemrograman aplikasi seluler. Dunia pemrograman tampak-muka menjadi sangat kompleks. Perkembangan teknologinya begitu pesat sehingga dibutuhkan penulis penuh-waktu untuk mengikuti perkembangan teknologi di dunia JavaScript.
Berlalu sudah dunia JavaScript yang sederhana di mana Anda cukup menggunakan jQuery untuk membantu Anda dalam membuat aplikasi web antar-muka yang dinamis. Sekarang sudah lazim orang menggunakan kerangka pengembangan JavaScript yang super kompleks misalnya React, Vue, Angular, Ember, dan masih banyak lagi lainnya. Setiap tahun sepertinya muncul kerangka pengembangan JavaScript yang baru.
NPM adalah tempat di mana pustaka Node.js hidup. NPM mirip dengan PyPi (Python), Maven Repository (Java), RubyGems (Ruby). Untuk memasang pustaka JavaScript dari NPM, orang tinggal melakukan perintah ini:
$ npm install pustakayangmaudipasang
Masalahnya ada orang jahat yang sempat berhasil mengunggah pustaka di NPM yang mencoba untuk mencuri kunci privat (private key) Bitcoin. Ada pustaka yang namanya Event-Stream yang digunakan oleh aplikasi dompet Copay. Pemelihara pustaka ini kehilangan minat dan tidak punya waktu lagi untuk memelihara pustaka Event-Stream dan menyerahalihkan kepemilikan pustaka Event-Stream ke seorang pemrogram lain. Pemelihara baru ini kemudian memasang kode jahat yang mencoba untuk mencuri kunci privat Bitcoin.
Selain itu entah kenapa NPM menarik banyak pemrogram yang membuat pustaka sangat pendek, misalnya modul dengan fungsi 1 baris. Banyak pustaka atau aplikasi yang tergantung dari modul seperti ini sehingga ketika terjadi masalah, ada efek dominonya. Misalnya, modul 1 baris membuat pustaka create-react-app menjadi rusak. Masalah ini bukan kali pertama terjadi. Pada tahun 2016, seorang pemelihara modul di NPM menarik semua modulnya. Salah satu modulnya bernama left-pad yang digunakan oleh banyak modul lainnya. Akhirnya ribuan modul JavaScript menjadi rusak (termasuk pustaka populer Babel).
Tapi ada masalah, ada peluang. Di tengah kekacauan di dunia JavaScript, ada peluang untuk mendulang emas. Masalah-masalah terjadi karena banyaknya orang / energi / duit yang dilemparkan di dunia JavaScript. Sejelek-jeleknya JavaScript lebih baik daripada bahasa pemrograman yang sepi masalah karena hampir tidak dipergunakan oleh orang lain, seperti <disensor>.
Bagaimana cara mendulang emas di dunia JavaScript yang edan? Ah, saya senang Anda menanyakan pertanyaan itu.
👩💼 Mencari Kerja sebagai Pemrogram JavaScript
Ada banyak lowongan pekerjaan sebagai pemrogram JavaScript. Ini adalah salah satu dari sekian dikit bahasa pemrograman yang memberi keamanan pekerjaan. Hampir semua perusahaan membutuhkan aplikasi web. Sebagian besar aplikasi web menggunakan tampak-muka yang sebagian besar ditulis dengan JavaScript. Memang ada aplikasi web yang cuma menggunakan aplikasi seluler sebagai klien. Peladen mereka hanya mengeluarkan JSON saja.
Ada banyak lowongan pekerjaan pemrogram JavaScript di Indonesia. Saya cuma melihat bagian “Web Development” belum “Mobile Development”. Seperti yang kita tahu, React Native adalah kerangka pengembangan JavaScript yang populer dalam membuat aplikasi seluler.
Ada banyak juga lowongan pekerjaan jarak jauh sebagai pemrogram JavaScript.
🏫 Mendirikan Bootcamp JavaScript
Permintaan atas pemrogram JavaScript naik tapi persediaannya terbatas sehingga diciptakanlah bisnis bootcamp. Orang-orang diajari pemrograman JavaScript selama beberapa bulan sebelum dilepas ke perusahaan-perusahaan yang membutuhkan pemrogram JavaScript.
Bootcamp yang terkenal di Indonesia adalah bootcamp Hacktiv8. Perintis ini baru mendapatkan modal dari pemodal ventura sebesar 3 juta USD. Mereka sudah membangun cabang di tempat lain di luar markas mereka yang terletak di Pondok Indah. Badan-badan tertentu memproyeksikan bahwa jumlah lowongan-lowongan pekerjaan pemrogram akan menjadi tinggi beberapa tahun ke depan sementara talentanya masih sedikit.
🏗️ Mengembangkan Kerangka Pengembangan JavaScript
Evan Yue mengembangkan kerangka pengembangan JavaScript yang bernama Vue. Dia didukung oleh sistem donasi Patreon.
Pada tahun 2013, Evan Yue masih bekerja di Google. Dia menciptakan pustaka Vue. Dia mengerjakan semuanya di waktu luang. Jadi ada waktu di mana dia berminggu-minggu tidak menyentuh Vue karena kesibukannya.
Pada tahun 2015, Evan Yue menghabiskan seluruh waktu liburannya untuk mengerjakan improvisasi terhadap Vue. Vue dengan versi 1.0 keluar.
Pada tahun 2016, Evan Yue memutuskan untuk bekerja penuh waktu untuk mengembangkan pustaka Vue. Dia hidup dari tabungan pada awal-awalnya. Rencana dia adalah kalau uang dia sudah habis, dia akan mencari pekerjaan baru. Dia berusaha mencari sokongan dari perusahaan-perusahaan. Jika perusahaan itu menyumbang uang sekian, perusahaan itu bisa memasang logonya di situs Vue.
Pada tahun 2017, Evan Yue menembus angka donasi 10 ribu USD per bulan. Pada tahun 2018, Evan Yue mempekerjakan orang untuk membantu dia dalam mengembangkan pustaka Vue.
Dari sisi kompetitor Vue, yaitu React, ceritanya sedikit berbeda.
Pada tahun 2014, pustaka React.js diluncurkan ke publik. Dan Abramov, seorang pemrogram yang tinggal di Rusia, berkontribusi ke React.js. Dia juga memberi presentasi tentang React.js di temu jumpa BerlinJS. Kemudian pada tahun 2015 dia menciptakan pustaka Redux. Pada tahun itu juga dia pergi ke konferensi teknikal di Paris. Dia bertemu dengan Jing Chen yang bekerja di Facebook. Mereka sudah sering berdialog di saluran React di IRC. Sebelumnya Dan Abramov sudah dikontak oleh perekrut Facebook cuma perbincangannya menjadi stagnan karena Dan Abramov tidak memiliki ijazah S1 (dia tidak menyelesaikan pendidikan kuliah). Dan Abramov bilang dia tidak bisa mendapatkan visa Amerika Serikat. Kemudian Jing Chen menawari pekerjaan di London. Dan Abramov diwawancarai di tempat di mana konferensi teknikal itu diselenggarakan juga. Akhirnya Dan Abramov mendapatkan pekerjaan di Facebook.
✍️ Menulis Buku tentang JavaScript
JavaScript mungkin adalah bahasa pemrograman yang sederhana bagi pemrogram tertentu tapi ekosistemnya sangat rumit. Dunia JavaScript (termasuk pustaka, ekosistem, perambah, dan lain-lain) itu seperti labirin yang membuat banyak orang tersesat. Maka dibutuhkanlah panduan untuk memahami JavaScript termasuk kerangka pengembangannya.
Menulis buku tentang JavaScript adalah prospek yang menggiurkan karena jumlah potensial pembaca (dan pembeli) buku-buku JavaScript itu sangat besar. Misalnya buku tentang kerangka pengembangan Angular bisa mendapat 400 ribu USD per tahun (penghasilan kotor) untuk 2 tahun pertama. Itu adalah penjualan dari penerbit. Royaltinya sekitar 50% untuk pengarang yang menggunakan penerbit itu.
Dokumentasi resmi di situs proyek kode terbuka saja kadang tidak cukup untuk memahami kegilaan JavaScript. Makanya penulis buku tentang JavaScript bisa memberi nilai lebih untuk menyelesaikan titik sakit ini.
📺 Membuat Video Pelatihan JavaScript
Ada sebagian orang yang lebih suka belajar tentang JavaScript dari video ketimbang tulisan. Bermuncullah video-video tutorial tentang JavaScript. Orang sering pergi ke Udemy untuk membeli video-video tentang JavaScript. Instruktur yang sangat populer adalah Maximilian Schwarzmüller. Penghasilan dari penjualan video di Udemy yang bakal masuk ke kantong instruktur adalah 50% (untuk pemasaran organik). Salah satu kursus Maximilian yaitu React – The Complete Guide (incl Hooks, React Router, Redux), dibeli sebanyak hampir 250 ribu. Harga video tutorial di Udemy bervariasi. Tapi jika Anda sabar, biasanya harga bisa turun menjadi sekitar 10 USD atau sekitar Rp 140 ribu. Anda bisa hitung sendiri berapa yang didapat oleh Maximilian.
Ada juga yang menerapkan sistem langganan, jadi bukan bayar lepas seperti Udemy. Misalnya Vue School. Pelanggan membayar 25 USD per bulan. Bayar per tahun lebih murah. Ada juga opsi bayar sekali untuk akses seumur hidup. Mereka mengaku punya 60.000 pengguna. Tidak jelas apakah pengguna ini adalah pengguna premium saja atau termasuk pengguna gratisan saja.
Ada juga yang lebih luas daripada sekadar pelatihan Vue dan menggunakan sistem langganan, yaitu egghead.io. Untuk berlangganan orang harus membayar 350 USD per tahun. Sebagian dari biaya langganan ini akan diteruskan ke proyek kode terbuka. Kursus mereka meliputi Angular, Vue, React, GraphQL, bahkan hingga Git.
🦄 Membangun Perintis
Anda bisa membangun perintis berdasarkan teknologi JavaScript. Bukan, yang saya maksud bukanlah membangun perintis dengan teknologi JavaScript. Misalnya Anda membangun perintis pencucian baju berdasarkan permintaan (on-demand laundry). Anda menggunakan Node.js dan kerangka pengembangan web Express.js untuk membuat aplikasi web. Bukan itu maksud saya. Tidak ada yang salah sih menggunakan JavaScript untuk membuat aplikasi web di perintis.
Yang saya maksudkan adalah membangun perintis berdasarkan teknologi JavaScript.
Pada suatu hari seorang pemrogram yang bernama Kyle Matthews membuat kerangka pengembangan aplikasi web statis dengan kerangka pengembangan JavaScript React. Namanya Gatsby. Dengan Gatsby Anda dapat membuat aplikasi web statis dengan fleksibilitas aplikasi web dinamis. Gatsby memberi beberapa kelebihan kepada Anda dibandingkan jika Anda menulis aplikasi web dengan HTML + CSS + JavaScript secara manual. Anda bisa menggunakan sumber data seperti MarkDown, REST, WordPress. Anda dapat juga mengemulasi aplikasi web dinamis (sampai tahap tertentu). Karena web Anda adalah statis berarti untuk pemasangan web Anda membutuhkan harga yang lebih murah karena Anda tidak membutuhkan aplikasi peladen seperti PHP, atau Ruby. Untuk sebagian besar situs web statis, Anda bisa menaruhnya secara cuma-cuma di GitHub Pages atau Netlify.
Kemudian Gatsby mendapat pendanaan dari pemodal ventura. Model bisnis mereka ada di awan. Jadi aplikasi web statis itu berisikan halaman-halaman statis. Tapi untuk mendapatkan halaman-halaman statis itu Anda mesti melakukan langkah bangun (build). Setelah itu halaman-halaman statisnya ditaruhlah di awan. Untuk situs yang cuma punya 5 halaman dan diubah sekali setahun, Anda tidak membutuhkan layanan premium dari Gatsby. Tapi ketika situs Anda sudah memiliki ribuan halaman, langkah bangun itu akan menjadi lama sekali. Gatsby menawarkan layanan bangun tambahan di awan jika Anda mau berpisah dengan sebagian uang Anda.
Saya jelaskan sekali lagi model bisnis Gatsby sehingga Anda bisa menghayati apa yang ditawarkan oleh perintis Gatsby. Ketika Anda menggunakan situs aplikasi web dinamis dengan bahasa PHP misalnya, harus ada aplikasi peladen yang mengeksekusi kode PHP (biasanya Apache Httpd atau Nginx dengan pengaya pengeksekusi PHP). Misalnya Anda punya 5 halaman yang memiliki bagian kepala (header) berisikan kode PHP yang sama, bagian kepala itu akan dieksekusi sehingga kita mendapat hasil dalam bentuk HTML.
<?php
// Berkas bagian kepala, header.php
echo "Bagian Kepala";
?>
<?php
// Berkas halaman 1, halaman1.php
include 'header.php';
echo "Halaman 1";
?>
Jika Anda mengubah berkas bagian kepala, semua 5 halaman itu akan mendapatkan perubahannya.
Bandingkan dengan Gatsby. Hal yang serupa terjadi juga. Tapi Anda mesti bangun (build) semua berkas itu sehingga Anda mendapatkan berkas HTML saja sebelum ditaruh di awan. Paham?
Pembangunan berkas-berkas itu bakal menjadi rumit ketika aplikasi web statis Anda menjadi besar. Cukup tentang Gatsby.
Nuxt.js baru saja mendapatkan pendanaan dari pemodal ventura. Nuxt.js adalah kerangka pengembangan yang dibuat di atas kerangka pengembangan Vue.js.
Gatsby dan Nuxt.js membutuhkan aplikasi untuk membuat konten statis yang biasanya berformat MarkDown. Situs profil perusahaan mungkin tidak butuh alat khusus. Tapi kalau Anda membuat Sistem Manajemen Konten atau CMS, Anda akan terbantu dengan alat khusus. Forestry membuat penggubah konten di atas Git. CMS harus bisa gampang diakses oleh pengisi konten yang tidak teknikal. Penggubah teks ini memiliki tampak-muka yang bersahabat untuk menggubah konten. Selain itu, penggubah konten ini memiliki sistem yang bisa mendorong konten ke repositori Git dan langsung terserbar ke tempat produksi. Mereka menggunakan sistem langganan.
Masih banyak lagi lainnya cara untuk mendulang emas di dunia JavaScript yang edan ini. Yang saya lihat Jamstack sudah mulai populer sehingga ada banyak kesempatan di sini. GraphQL juga populer sebagai sumber data (kita akan bahas di lain waktu) dan terkait erat dengan JavaScript. Kerangka pengembangan web Svelte naik daun juga. Mungkin Anda bisa membangun kerangka pengembangan di atas Svelte seperti Nuxt.js di atas Vue, atau seperti Gatsby di atas React? Deno sebentar lagi akan rilis secara resmi. Apakah Deno akan menyalip popularitas Node.js, hanya waktu yang akan menjawab. Jika Deno bakal sukses, banyak hal yang bisa dibangun di atas pengganti Node.js ini.
Tapi hati-hati, ada sebagian jalan mencari kekayaan di dunia JavaScript yang haram hukumnya.