Categories
startup wealth

Menaklukkan Dunia dengan Produk 100% Digital

Jadi baru-baru ini Basecamp (CTO-nya adalah DHH, pencipta Ruby on Rails) mengeluarkan produk Hey. Ia adalah layanan surel seperti Gmail. Kelebihannya dari yang saya baca-baca sekilas adalah pengalaman pengguna (UX) yang superior. Mereka tidak ada versi gratis seperti Gmail. Ada 14 hari uji coba tapi pada akhirnya Anda harus membayar atas jasa layanan surel ini. Harganya $99 per tahun. Tapi jika Anda memilih nama pengguna yang lebih pendek seperti sky@hey.com, atau yo@hey.com, maka harganya akan naik beberapa kali lipat. Reaksi dari beberapa orang yang memakai jasa ini positif.

Produk Hey bertipe sama dengan produk Basecamp. Mereka adalah produk murni digital atau 100% digital. Artinya semua interaksi di produk mereka bisa dilakukan di ranah digital. Tidak ada hal yang perlu dilakukan di lapangan. Ada keunggulan (dan kelemahan) dari produk murni digital ini. Mereka bisa menjual jasa mereka ke seluruh dunia (sepanjang pembeli memiliki koneksi internet dan tidak ada embargo ekonomi). Anda bisa menjadi pelanggan Hey ataupun Basecamp sepanjang Anda memiliki kartu kredit atau kartu debit atau akun Paypal. Hayati paragraf ini sebelum kita beranjak ke paragraf berikutnya. Tarik napas dan resapi kata-kata saya. Sudah? Ayo, lanjut!

Nah, mari kita kembali ke tanah air tercinta kita, Negara Kesatuan Republik Indonesia. Orang-orang kan sekarang berlomba-lomba bikin perintis (startup) di Indonesia. Siapa yang tidak ngiler melihat kisah sukses Tokopedia, Bukalapak, Traveloka, Gojek, Tiket.com, dll? Umur kurang-lebih baru 10 tahun, tapi valuasi Gojek sudah mengalahkan perusahaan Garuda yang memiliki pesawat-pesawat terbang!

Tapi coba perhatikan tipe-tipe perusahaan digital yang besar. Bukan cuma yunikon, tapi juga perusahaan-perusahaan besar seperti Kredivo, Blibli, Halodoc, Cekaja, Warung Pintar, Dana, IDN Media, Modalku, Happy Fresh, Fabelio, Sayurbox, Koinworks, Moka, dll. Perhatikan baik-baik contoh-contoh tersebut. Tidak ada perusahaan yang menawarkan produk 100% digital ke seluruh dunia.

Ambil contoh Warung Pintar. Mereka harus ke lapangan untuk mengintegrasikan teknologi dengan warung. Modalku? Anda bisa bilang mereka memiliki produk digital 100% karena mereka tidak terjun ke lapangan. Tapi produk mereka terbatas di Indonesia saja karena aliran finansial antar negara itu kompleks dan penuh dengan birokrasi (yang coba diselesaikan oleh teknologi blockchain). IDN Media? 100% digital dan produknya bisa dinikmati seluruh dunia. Tapi konten mereka dalam bahasa Indonesia yang membatasi segmen pembaca. Dana? Cuma bisa dipakai di Indonesia. Sayurbox? Mesti terjun ke lapangan (beli produk dari petani, mengantarkan sayur ke rumah). Fabelio? Mereka jual dan kirim perabotan ke penduduk Indonesia. Apakah Anda melihat tema besar dari apa yang saya tulis?

Saya pernah berbincang-bincang dengan teman saya. Saya mengutarakan ide saya yaitu membuat platform edukasi tentang suatu teknologi dengan target ke penganut teknologi itu di seluruh dunia. Jawaban dia, “Kenapa kamu memikirkan dunia? Indonesia saja sudah cukup besar sebagai pasar.”

Dia benar. Achmad Zaky dan Nugroho Herucahyono membuat perintis Bukalapak yang cuma melayani segmen Indonesia. Hasilnya? Achmad Zaky diasumsikan memiliki kekayaan sebesar kurang lebih 100 juta USD (sekitar 1,4 trilyun Rupiah). Saking kayanya sekarang mereka bagi-bagi duit ke perintis.

Tidak ada yang salah dari membuat perintis yang hanya melayani segmen Indonesia. Sepanjang Anda memberi nilai ke masyarakat, dan tidak merampok orang, ada yang salah memangnya?

Betul, tidak ada yang salah. Cuma dari pengalaman saya di lapangan, saya mendapat kesan bahwa di Indonesia, orang-orang cenderung membuat perintis yang terbatas terhadap Indonesia. Jarang sekali saya melihat orang membuat produk digital 100% untuk segmen dunia di Indonesia. Tidak percaya? Coba cari perusahaan Indonesia yang membuat produk seperti Hey, Basecamp, atau Gitlab. Saya tunggu.

Hal ini membuat saya gelisah. Kenapa tidak ada (atau jarang) orang yang membuat produk 100% digital untuk segmen dunia? Salah satu figur terkenal di dunia perintis Indonesia (tidak boleh sebut nama!) bilang kepada saya bahwa ketika kita membuat produk 100% digital untuk seluruh dunia, sebenarnya kita cuma membuat produk untuk negara yang menggunakan bahasa Inggris (negara-negara di Eropa, India, Amerika Serikat). Kita berkompetisi dengan perintis-perintis di Amerika Serikat, Eropa, dan India. Bandingkan jika kita membuat perintis untuk segmen Indonesia, kompetitornya jarang dari luar karena ada faktor birokrasi, wilayah dan hukum.

Dia ada benarnya. Misalnya ada orang yang namanya A yang tinggal di Belanda. Dia bakal susah untuk mendirikan perusahaan teknologi finansial yang memberi pinjaman kepada petani di Indonesia. Dia harus datang ke Indonesia dan mendirikan Perusahaan Modal Asing. Belum lagi dia harus berhadapan dengan birokrasi Indonesia yang terkenal akan…. <disensor>. Jadi penghalang masuk (barrier entry) tergolong tinggi. Itulah kenapa kita “dianjurkan” untuk membuat perintis khusus segmen Indonesia. Orang luar susah masuk.

Selain itu Indonesia memiliki populasi yang sangat tinggi, hampir 300 juta penduduk. Alasan egois mendirikan perintis kan jadi super kaya. Apakah kaya dari mendirikan perintis yang cuma melayani penduduk Indonesia atau melayani seluruh dunia, itu kan tidak relevan. Seperti kata teman saya, pasar Indonesia itu besar. Besar sekali. Seperti gajah. Eh, seperti paus deh. Hanya ada 3 negara yang jumlah penduduknya lebih banyak daripada Indonesia: Tiongkok, India, dan Amerika Serikat. Dengan faktor pasar yang besar ini, pendiri perintis pun kehilangan insentif untuk melayani segmen dunia. Bandingkan jika Anda adalah warga negara Belanda atau Singapura. Mau tak mau Anda harus mendirikan perintis dengan segmen internasional.

Sytse Sijbrandij (Belanda) dan Dmitriy Zaporozhets (Ukraina) mendirikan Gitlab, saingan dari Github. Valuasi Gitlab itu sekitar Rp 40 trilyun. Memang masih kalah dengan valuasi Gojek. Tapi itu hitungannya sudah yunikon. Gitlab adalah produk 100% digital dengan segmen dunia.

Kenapa saya menceritakan kisah singkat Gitlab? Karena saya merasa gelisah kenapa jarang sekali orang Indonesia membuat produk internasional seperti Gitlab. Jika Anda membaca kisah-kisah pendanaan (funding) perintis Indonesia akhir-akhir ini, hampir semua fokus mereka adalah segmen Indonesia.

Hanya karena Anda tinggal di negara dengan populasi penduduk yang besar, tidak berarti Anda tidak boleh membangun produk internasional. HackerRank itu berasal dari India.

Indonesia memang pasar yang besar. Tapi dunia adalah pasar yang lebih besar. Jika Anda membuat produk untuk orang-orang yang bisa berbahasa Inggris, Anda bisa menjangkau penduduk Amerika Serikat, India, dan negara-negara di Eropa. Hitung saja jumlah penduduknya. Beberapa kali lipat dari Indonesia.

Jika Anda berpikiran Anda bakal berhadapan dengan kompetitor dari seluruh dunia, so what? Anda kan bukan anak kecil yang masih harus sembunyi di belakang kaki orang tua Anda. Lagipula kompetisi dalam negeri bukannya tidak keras. Jadi jangan membatasi diri terhadap Indonesia saja.

Saya akan menceritakan perintis yang melayani segmen dunia dan pendirinya orang Indonesia. Nama perintisnya adalah Cotter. Ia adalah perintis yang memberikan solusi kata sandi satu sentuhan yang lebih aman dari SMS. Pendirinya adalah Putri Karunia, Kevin Chandra, dll. Produk mereka menjangkau seluruh dunia. Mereka orang Indonesia (lihat saja nama-nama mereka, Indonesia banget). Produk mereka 100% digital. Tidak perlu terjun ke lapangan. Moral dari paragraf ini adalah sebagai orang Indonesia, Anda tidak harus membuat perintis yang cuma melayani segmen Indonesia.

Nah, saya juga tidak mau cuma mengkritik. Tapi tindakan saya juga harus sinkron.

Saya membuat situs ArjunaSkyKok.com ini dengan misi untuk meningkatkan harkat dan martabat pemrogram-pemrogram Indonesia. Lihat saja tulisan blog ini! Target artikel ini adalah pemrogram-pemrogram Indonesia. Kalau saya terjemahkan tulisan blog ini ke bahasa Inggris, maka tulisan saya menjadi tidak relevan lagi. Lagipula kenapa orang Amerika Serikat atau India mau membaca tulisan blog yang membahas masalah spefisik di Indonesia? Situs ini bakal meluncurkan produk-produk yang bakal meningkatkan taraf hidup pemrogram-pemrogram Indonesia, misalnya Buku Pemrogram Rp 100 Juta. Ke depannya situs ini (mungkin) bakal meluncurkan produk (misalnya) English for Software Engineers. Dan lain-lain.

Tapi… bukankah saya mengadvokasikan perintis dengan segmen internasional sementara situs ini hanya melayani segmen Indonesia? SABAR WOI!

Selain situs ini yang cuma melayani segmen Indonesia, saya juga sedang mengembangkan perintis / produk internasional, yaitu Mamba. Memang sekarang ia hanyalah proyek kode terbuka (open source). Itu karena saya lagi menyelesaikan buku saya dan saya masih dalam tahap riset dan pengembangan di bidang blockchain. Saya juga sedang membangun reputasi saya di bidang blockchain. Nanti beberapa tahun lagi baru saya kembangkan proyek kode terbuka ini menjadi perintis internasional. Harus Anda ingat banyak perintis yang berasal dari proyek kode terbuka misalnya Gastby, Red Hat, dan Gitlab. So I’ll walk the talk. Bukan cuma omdo. (Permutakhiran tanggal 24 Agustus 2020: sekarang saya fokus ke produk lain: PredictSalary bukan Mamba lagi. Tapi semangat paragraf ini masih sama karena PredictSalary fokusnya ke pasar internasional.)

Jadi tunggu apa lagi? Negara Indonesia tidak sedang diembargo oleh negara adikuasa. Stripe memang belum masuk Indonesia. Tapi kita masih bisa pakai Paypal untuk menerima pembayaran dari konsumen internasional. Masih ada mata uang kripto juga yang lintas negara. Jadi tidak ada yang menghalangi Anda untuk membuat produk internasional. Jangan rendah diri dengan orang-orang luar. Taklukkan dunia dengan produk digital Anda! Go get’em, tiger! 🐯

Categories
php

Masa Depan Pemrogram PHP Masih Cerah

Saya mendapat surat dari pembaca buku saya. Dia meminta nasihat kepada saya seperti ini:

“Aku sedang belajar PHP dan framework CI (CodeIgniter). Aku merasa startup atau perusahaan sekarang sudah jarang yang menggunakan PHP dan CI. Aku melihat karir programmer PHP/CI lambat untuk naik. Aku mendapat kesimpulan itu karena melihat artikel, lowongan pekerjaan dan mendengar cerita dari kakak kelas aku. Maka dari itu aku mau mengutarakan pertanyaan, untuk menjadi backend engineer yang handal apakah langkahnya masih tetap mendalami PHP atau mending aku banting setir ke bahasa pemrograman lain yang lebih cerah nasibnya? Jika memang aku harus banting setir, sebaiknya aku pilih bahasa apa, Pak?” (kata-kata sudah diganti susunannya untuk melindungi identitas pembaca buku saya)

Saya memang tahu pemrogram PHP sering dirundung oleh masyarakat. Pemrogram Ruby yang congkak sering membuat pemrogram PHP sebagai bahan candaan. Pemrogram Go yang jumawa bahkan tidak mau mengakui keberadaan pemrogram PHP. Pemrogram Python yang tinggi hati merasa pemrogram PHP tidak selevel dengan mereka. Mungkin hanya pemrogram Java yang masih mau berteman dengan pemrogram PHP. 🤣

Pada tahun 2000 sampai tahun 2010, PHP berjaya karena pilihan teknologi pengembangan web masih terbatas. Pilihan lainnya cuma apa? Perl? PHP membuat pengembangan aplikasi web menjadi lebih demokratis. Orang bikin berkas PHP, unggah berkas itu lewat FTP, dan aplikasi web langsung bisa jalan. Semua perusahaan penerimaan aplikasi web (hosting) mempunyai jasa penerimaan berbagi (shared hosting) yang mendukung PHP. Kemudian muncullah aplikasi legendaris seperti WordPress, Joomla, Drupal.

Tapi dengan seiring banyaknya orang yang terjun ke pemrograman web, dan tidak semua orang itu memiliki kemampuan lebih dan disiplin dalam mengembangkan aplikasi web, maka muncullah kesalahan-kesalahan dan keteledoran-keteledoran yang mencemari nama baik PHP. Hal ini diperburuk dengan desain antarmuka pemrograman aplikasi (API) yang membuat orang bingung seperti array_search di mana orang sering lupa parameter pertama itu jerami (data) atau jarum (hal yang dicari).

$a = array(1, 2, 3);
array_search(2, $a);

Bandingkan dengan Python yang memiliki API yang lebih bersahabat, yaitu index yang dikaitkan dengan objek yang merupakan data tersebut, misalnya:

a = [1, 2, 3]
a.index(2)

Orang menjadi kesal dan memutuskan untuk beralih ke bahasa lain. Lahirlah Ruby on Rails yang popularitasnya terbang tinggi ke angkasa. Python pun melahirkan kerangka pengembangan Django. Lalu Go lahir dan merebut hati-hati orang.

Oh ya, mengenail sural pembaca buku saya…. Begini surel yang saya kirim sebagai balasan:

1. PHP masih hidup kok

Iya benar, di Indonesia, perusahaan-perusahaan terkenal, misalnya unicorn-unicorn Indonesia, gak pakai PHP di peladen mereka.

Tokopedia pakai Go.
Gojek pakai Ruby, Clojure, Java.
BukaLapak pakai Ruby, Go.
Traveloka pakai Java.

Tapi menurut penelitian, masih banyak situs yang memakai PHP. Sampai lebih dari 75%!
https://kinsta.com/blog/is-php-dead/

Jadi PHP bakal memberi keamanan pekerjaan (job security) bagi Anda.

Betul, hanya karena banyak pekerjaan, belum tentu PHP adalah teknologi ideal. Mungkin pekerjaan-pekerjaan PHP hanya memberi gaji kecil.

Apa gunanya ribuan lowongan pekerjaan PHP tapi gaji yang ditawarkan kalah jauh dengan lowongan pekerjaan teknologi lain yang lebih sedikit tapi gajinya lebih tinggi?

Tapi…. di luar perusahaan-perusahaan terkenal (yang harusnya bisa menggaji lebih tinggi dari rata-rata) masih pakai PHP kok.

iPrice (Malaysia) membutuhkan pemrogram PHP.
https://stackoverflow.com/jobs?id=385408

Urban Sports (Jerman) membutuhkan pemrogram PHP.
https://stackoverflow.com/jobs?id=335938

Sam Media (Malaysia) membutuhkan pemrogram PHP.
https://stackoverflow.com/jobs?id=392483

Adam Wathan (Tailwind CSS) membutuhkan pemrogram PHP jarak jauh (remote).
https://twitter.com/adamwathan/status/1260629589803634689
https://jobs.tailwindui.com/full-stack-developer

Taylor Otwell (Laravel) membutuhkan pemrogram PHP jarak jauh.
https://twitter.com/taylorotwell/status/1254434614111809536

Automattic (WordPress, Jetpack, WooCommerce) membutuhkan pemrogram PHP jarak jauh.
https://automattic.com/work-with-us/software-engineer/

Slack juga pakai PHP.
https://slack.engineering/taking-php-seriously-cf7a60065329

2. Jangan taruh semua telur dalam 1 keranjang

Jangan cuma belajar PHP. Tapi belajar juga bahasa lain. Minimal 2 bahasalah untuk peladen (backend). Satu bahasa sudah dipilih: PHP.
Nah pilih bahasa lain. Pilih antara bahasa Go, Ruby, Java, atau Python. Mereka adalah bahasa populer untuk peladen. Misalnya Anda pilih bahasa Ruby. Belajar bahasa Ruby juga selain PHP. Terus belajar juga
kerangka pengembangan webnya, yaitu Ruby on Rails.

3. Jangan cuma belajar kerangka pengembangan web CI (CodeIgniter)

Tapi belajar juga kerangka pengembangan web Laravel. Laravel sekarang adalah kerangka pengembangan web PHP yang paling
populer entah dilihat dari Github atau Google Trends. Symfony kalah ngetren daripada Laravel tapi memiliki kontributor yang lebih banyak daripada Laravel. Sementara itu CI kalah dari sisi manapun.
Jadi sepertinya Laravel memegang puncak klasemen sampai saat ini.

https://github.com/laravel/laravel

https://github.com/codeigniter4/CodeIgniter4

https://github.com/symfony/symfony

https://trends.google.com/trends/explore?geo=US&q=Laravel,CodeIgniter,Symfony

https://trends.google.com/trends/explore?geo=ID&q=Laravel,CodeIgniter,Symfony

4. Belajar keahlian universal

Terlepas dari bahasa pemrograman / kerangka pengembangan web yang Anda pilih, ada beberapa kemampuan universal yang harus dimiliki oleh pemrogram, misalnya tes, CI/CD, kode bersih, algoritma, basis data (database), git, jaringan/internet, kriptografi, aplikasi peladen (Nginx/Apache Httpd), dan lain-lain. Jadi belajar juga hal-hal ini.

Contoh kasus: Tahukah Anda bagaimana HTTPS bekerja? Dapatkah Anda menjelaskan HandShake? Dapatkah Anda mengkonfigurasi penyeimbang tekanan (load balancer) dengan Nginx? Dapatkah Anda memasang aplikasi PHP di AWS/GCP/Azure dan memasang Redis yang tersambung ke aplikasi PHP Anda?

Jadi jika Anda adalah pemrogram PHP dan paham semua hal-hal universal ini tapi Anda melamar pekerjaan sebagai
pemrogram dengan bahasa lain, ada kemungkinannya perusahaan bakal tetap menerima Anda. Anda tentu saja diharapkan untuk mempelajari bahasa baru di perusahaan itu.

5. Perdalam kemampuan PHP

Semakin dalam kemampuan PHP semakin tinggi kemungkinan Anda untuk mendapatkan pekerjaan dengan gaji tinggi. Jangan cuma belajar cara baca berkas, pengulangan (loop) dan merasa cukup. Tapi belajar juga hal-hal lain seperti pola desain (design pattern), koleksi sampah
(garbage collection), keamanan (security), DTrace dynamic tracing, dan lain-lain.

https://www.php.net/manual/en/

6. Bangun Portfolio PHP

Jika Anda ingin jadi pemrogram PHP gaji tinggi, bangun portfolio yang bagus. Misalnya kontribusi ke kerangka pengembangan
web CI, atau Laravel, atau Symfony, atau WordPress.

7. Menyelam Lebih Dalam Lagi

Belajar ngoprek aplikasi terkenal dari PHP, seperti WordPress, Magento, atau WooCommerce. Jangan cuma pasang (install) WordPress dan bangga. Tapi coba bikin pengaya (plugin) WordPress. Coba baca dan pahami kode Magento.

Sekian surel saya.

Nah, betul kadang kita harus melihat tren untuk memilih teknologi. Teknologi apakah yang dipakai oleh perusahaan-perusahaan yang berduit? Tidak ada orang yang peduli jika Anda adalah pemrogram Haskell dan menganggap Haskell adalah bahasa terbaik di seluruh dunia tapi perusahaan-perusahaan berduit memakai Node.js. Yah, Anda harus belajar Node.js kalau mau dapat gaji tinggi. Tidak ada yang peduli apakah Anda memiliki opini bahwa Haskell itu 100x lebih baik daripada Node.js.

Tapi PHP masih hidup dan sehat walafiat. Betul, popularitasnya menurun. Tapi PHP masih dominan. Betul, PHP bahasanya kurang afdol. Tapi dengan PHP 7.4, banyak kelemahan-kelemahan yang diperbaiki, misalnya typed properties, arrow functions, dan lain-lain. PHP juga punya kerangka pengembangan Laravel yang memiliki baterei lengkap untuk mengembangkan aplikasi web dengan cepat. Bahkan Laravel memiliki Spark yang bisa membantu Anda mengembangkan aplikasi web dengan lebih cepat lagi.

Jika aplikasi yang Anda ingin buat adalah blog, Anda tinggal menggunakan WordPress dan dengan kemampuan PHP, Anda bisa membuat sesuatu yang hebat di atas WordPress. Betul, banyak aplikasi blog sekarang yang mulai merebut hati orang seperti Gatsby, Ghost, Jekyll, dan lain-lain tapi WordPress masih merupakan aplikasi blog yang paling banyak dipakai. Bahkan Anda bisa menggabungkan Gatsby dengan WordPress. Gatsby menyediakan blog bagi orang luas. WordPress menyediakan penulisan blog bagi orang dalam.

Untuk aplikasi el-niaga (e-commerce), Anda tinggal mengembangkan aplikasi web el-niaga dengan WooCommerce atau Magento. Dengan menggunakan bahasa PHP, Anda bisa menjual solusi el-niaga kepada klien yang membutuhkan situs el-niaga yang dibuat sesuai pesanan.

Jadi jangan khawatir akan masa depan sebagai pemrogram PHP. Yang penting Anda mesti giat meningkatkan ilmu pemrogram PHP Anda. Jangan cuma bangga bisa bikin aplikasi PHP yang menerima data dari formulir dan memasukkan data ke basis data MySQL. Tapi bisakah Anda menangani jutaan permintaan (request) ke aplikasi web Anda? Nah kalau Anda bisa, Anda layak dapat b̶i̶n̶t̶a̶n̶g gaji tinggi.

Categories
javascript wealth

Mendulang Emas di Dunia JavaScript yang Edan

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.

Categories
desktop

Jadi Kaya Lewat Pemrograman Desktop

Di Indonesia pemrograman desktop sudah ditinggalkan orang-orang. Dulu masih banyak orang-orang yang membuat aplikasi desktop dengan Visual Basic, Borland Delphi, atau Java Swing. Saya pernah membuat aplikasi manajemen stok di gudang dengan Java Swing kira-kira 15 tahun yang lalu. Kini siapa yang masih membuat aplikasi desktop?

Lima belas tahun yang lalu itu, hidup masih berjalan dengan lambat. Internet sudah ada. Tapi yang menikmati masih sedikit. Belum ada AWS. Mau bikin aplikasi web, pilihan kebanyakan cuma PHP saja. Belum ada ponsel pintar seperti iPhone atau Android. Yang ada hanyalah ponsel Nokia yang cuma bisa SMS (mungkin MMS juga). Saat itu aplikasi desktop masih berjaya karena belum ada aplikasi seluler (mobile app) dan internet masih belum menjangkau banyak penduduk Indonesia.

Kemudian ponsel pintar lahir (tahun 2007, iPhone lahir). Beberapa waktu berselang, Android banting setir mengikut jejak iPhone. Beberapa tahun kemudian ponsel pintar merajalela di Indonesia. Dengan alat yang revolusioner ini, orang-orang bisa mengakses internet. Orang tidak perlu laptop atau komputer untuk berhubungan dengan internet. Mereka cukup membeli ponsel pintar Android yang sangat murah, sekitar beberapa juta Rupiah.

Saat itu AWS mulai menjadi populer sehingga mengembangkan aplikasi web yang kompleks menjadi lebih mudah. Teknologi web juga menjadi lebih matang di ponsel. Desain responsif (responsive design) muncul untuk mengatasi ukuran perambah yang bisa berbeda-beda di desktop dan ponsel.

Kemudian lahirlah calon yunikon-yunikon seperti Tokopedia, Bukalapak, Gojek, dan Traveloka. Mereka menyediakan jasa dalam bentuk aplikasi web yang bisa diakses oleh ponsel pintar. Perusahaan-perusahaan ini bertumbuh pesat. Sangat pesat. Mereka menjadi raksasa. Semua orang pun tergiur untuk membuat perusahaan dan aplikasi yang serupa yang memanfaatkan internet.

Dengan semua alasan itu, masih adakah motivasi yang tersisa untuk membuat aplikasi desktop? Untuk aplikasi baru, perusahaan pun memutuskan lebih hemat jika aplikasi itu dibuat sebagai aplikasi web. Bahkan jika yang memakai itu 1 orang, sekalian saja buat aplikasi web. Peladen webnya beralamatkan localhost yah tidak apa-apa. Aplikasi web tapi berperilaku seperti aplikasi desktop.

Pemrograman itu kompleks dan luas. Mencari pemrogram yang bagus itu susah. Membutuhkan biaya dan komitmen untuk membuat aplikasi desktop dan aplikasi web sekaligus karena mereka adalah dua platform yang jauh berbeda. Untuk membuat masalah lebih kompleks, membuat aplikasi desktop membutuhkan pertimbangan terhadap 3 platform desktop seperti Windows, Mac, Linux. Iya, ada platform pemrograman yang multiplatform seperti Java Swing. Tapi tidak semua orang suka terhadap Java Swing karena satu dan lain hal, misalnya kulit (skin) aplikasi tidak terlihat asli. Betul, membuat aplikasi web juga memaksa kita untuk mempertimbangkan perbedaan antara perambah (browser) dalam menafsirkan HTML, CSS, dan JavaScript. Tapi perbedaan antara platform desktop itu jauh lebih besar daripada perbedaan antara perambah.

Terlepas dari perbedaan antara perambah, aplikasi web bisa dinikmati oleh semua platform desktop (Windows, Mac, dan Linux). Perusahaan berpikir adalah lebih hemat untuk membuat aplikasi web. Aplikasi web bisa melakukan “apa saja” yang dilakukan oleh aplikasi desktop. Tapi ada “sesuatu” yang dilakukan oleh aplikasi web tapi tidak dapat dilakukan oleh aplikasi desktop. Aplikasi web tidak perlu dipasang (install) oleh pengguna. Lebih praktis.

Saya belum membicarakan aplikasi seluler (mobile app). Di Indonesia, lebih banyak orang memiliki ponsel pintar ketimbang laptop atau komputer. Perusahaan berpikir membuat aplikasi seluler lebih berfaedah ketimbang membuat aplikasi desktop karena mereka bisa lebih menjangkau banyak orang. Saya pernah mengakses situs dari sebuah perintis di desktop. Saya mengeluhkan kenapa situsnya tampilannya tetap ala seluler di desktop saya. Wakil Teknik (VP of Engineering) dari perintis itu bilang yang pakai desktop cuma 10%, sisanya lewat ponsel. Mereka bilang ingin fokus ke tampilan ala seluler. Tampilan situs di desktop saja “tidak terlalu” diperhatikan. Hal ini masih dalam ranah aplikasi web. Bayangkan seberapa kecil kemungkinan sebuah perusahaan mau membuat aplikasi desktop?

Makanya pemrograman desktop sudah ditinggalkan banyak orang di Indonesia. Masih adakah alasan untuk membuat aplikasi desktop? Masih adakah uang yang bisa didapatkan dari membuat aplikasi desktop? Mungkin sudah saatnya kita membuat eulogi atas pemrograman desktop.

“Pemrograman desktop, kalian sudah mengisi relung hati kita paling dalam dengan Visual Basic, kalian sudah memberi terang dengan Java Swing, kalian sudah menjadi teman dengan Borland Delphi, tapi saatnya kalian beristirahat dengan damai sampai akhir jaman.”

Tapi mari kita memberi kesempatan sekali lagi ke pemrograman desktop. Bagi kalian yang masih menggunakan desktop, apakah kalian menggunakan aplikasi desktop selain perambah (Firefox / Chrome / Safari / Edge) dan pengeksplorasi berkas (Windows Explorer / Nautilus / Finder)? Kemungkinan besar ya. Saya menggunakan aplikasi Android Studio, XCode, Vim, Visual Studio Code, Spotify, Adobe Photoshop, Adobe Illustrator, Virtual Box, iTerm, StarCraft 2, Fork (klien Git).

Apakah aplikasi-aplikasi desktop ini ada padanannya dengan aplikasi web atau aplikasi seluler? Saat ini belum ada aplikasi web/seluler pengganti Android Studio / XCode. Bagaimana dengan aplikasi penggubah teks seperti Vim atau Visual Studio Code? Sudah ada aplikasi web/seluler penggubah teks tapi orang masih lebih produktif dengan aplikasi seperti Vim atau Visual Studio Code. Spotify? Iya, mungkin ini aplikasi yang nilai tambahannya cukup kecil dibandingkan dengan aplikasi Spotify versi web/seluler. Adobe Photoshop dan Adobe Illustrator? Versi web belum ada. Versi seluler fiturnya masih belum lengkap. Lagipula menggubah gambar dengan jari di ponsel agak ribet. Virtual Box dan iTerm? Belum ada versi webnya dan aplikasi ini berhubungan langsung dengan performansi komputer dan membutuhkan akses langsung ke sumber daya di komputer. StarCraft 2 adalah permainan video yang belum ada versi web atau seluler. Fork adalah aplikasi yang membantu pengaturan Git di lokal. GitHub atau GitLab tidak dapat membantu banyak dalam hal ini.

Seperti yang kita lihat, dunia belum kiamat bagi pemrograman desktop. Jika Anda ingin mencari uang dengan membuat aplikasi desktop, peluang-peluangnya masih ada. Tapi Anda harus mengambil sudut yang tepat. Jika Anda membuat aplikasi pengaturan penjualan, pembelian, stok barang di sebuah perusahaan yang dipakai lebih dari satu pengguna (dengan kata lain aplikasi CRUD), nilai yang bisa dikasih oleh aplikasi desktop itu kecil. Mending bikin aplikasi web. Lebih praktis. Aplikasi pengaturan Sumber Daya Manusia (HRD)? Sudah ada beberapa aplikasi SDM yang dibuat oleh perusahaan-perusahaan Indonesia. Dari yang saya lihat, semuanya berbentuk aplikasi web. Menurut saya, strategi mereka tepat. Tidak ada faedahnya membuat aplikasi desktop. Mereka harus memikirkan instalasi di Mac, Windows, dan Linux yang bisa bikin sakit kepala.

Tapi ada situasi di mana aplikasi desktop lebih cocok atau disukai oleh pengguna. Aplikasi yang butuh akses ke berkas komputer itu cocok berbentuk aplikasi desktop. Misalnya Anda ingin menganalisa berkas-berkas apakah yang mengambil penyimpanan yang paling banyak. Ini kan tidak cocok berbentuk aplikasi web. Masakan Anda mengunggah semua berkas di komputer Anda ke peladen di awan? Bagaimana dengan plikasi web dengan peladen beralamatkan di localhost di komputer pengguna? Bisa saja. Tapi meminta pengguna untuk memasang peladen Nginx di komputer mereka itu merusak pengalaman pengguna. Lebih baik bikin pemasang (installer) yang lebih bersahabat. Keunggulan aplikasi desktop di situasi ini ada satu lagi, yaitu privasi.

Aplikasi yang butuh eksekusi cepat lebih bagus berbentuk desktop, misalnya Android Studio / XCode / Vim / Visual Studio Code. Memang ada aplikasi pengembang yang terintegrasi berbentuk web, yaitu Cloud9. Ada juga penggubah teks dalam bentuk aplikasi web seperti CKEditor 5. Tapi mereka memiliki masalah latensi dan performansi. Aplikasi desktop bisa menggunakan API di komputer seperti mmap yang bisa memanipulasi ruang alamat virtual (virtual address space) untuk meningkatkan performansi.

Aplikasi yang butuh akselerasi dan akses ke kartu grafis lebih bagus berbentuk aplikasi desktop, seperti Adobe Photoshop atau Adobe Illustrator. Memang ada aplikasi penggubah gambar dalam bentuk aplikasi web. Tapi keterbatasan perambah dalam mengakses sumber daya di komputer membuat aplikasi web penggubah gambar terbatas fitur dan performansinya.

Aplikasi desktop juga memiliki akses ke penyimpanan tanpa batas sementara perambah biasanya dibatasi sampai 2 GB atau 10% dari kapasitas total. Ini adalah salah satu alasan kenapa kita tidak dapat membuat Android Studio versi web. https://stackoverflow.com/questions/10988569/storage-limits-on-chrome-browser/55483549#55483549

Apakah Anda sudah terbakar semangatnya untuk mencari uang dengan membuat aplikasi desktop? Mari kita lihat contoh beberapa aplikasi desktop dan tantangannya.

John Skinner, adalah seorang pemrogram yang meninggalkan pekerjaannya di Google pada tahu 2007 untuk mengembangkan aplikasi penggubah teks. Dia punya visi penggubah teks yang bagus itu seperti apa. Padahal dia sudah tahu cara memakai Vim. Tapi dia mendirikan perusahaan yang akan berkutat terhadap pengembangan aplikasi penggubah teks.

Pada awal tahun 2008, versi 1.0 dari Sublime Text keluar. Fitur-fiturnya masih sederhana. Penggubah teks tidak terpolusi oleh dialog yang tidak penting. Aplikasinya bisa menjadi penuh layar di beberapa monitor. Penyorotan sintaksis ekspresi regular.

Pada pertengahan tahun 2009, versi 1.2 dari Sublime Text keluar. Fitur-fiturnya seperti: sistem proyek, dukungan terhadap format TextMate, Python API yang sudah ditingkatkan.

Pada awal tahun 2010, versi 1.3 dari Sublime Text diluncurkan. Fitur-fiturnya semakin banyak: simbol goto, dukungan penyorotan sintaksis terhadap lebih banyak bahasa, dll.

Pada awal tahun 2011, Sublime Text dengan versi 2 pun keluar. Peranti lunaknya lebih sepadan dengan distribusi Linux selain Ubuntu. Tambahan jalur singkat di Mac untuk mengganti tab. Dukungan penyorotan sintaksis terhadap bahasa Go.

Pada tahun 2017, setelah melalui proses versi Beta bertahun-tahun, Sublime Text 3 keluar. Ada segudang fitur-fitur yang diluncurkan seperti pengindeksan simbol, manajemen panel, peningkatan kecepatan, penggunaan Python versi 3 ke atas untuk API-nya, peningkatan performansi Retina, dll.

Ada satu hal yang selalu dibanggakan oleh pemrogram pembuat Sublime Text atas peluncuran Sublime Text 3, yaitu peningkatan kecepatan. Seperti yang dikutip di blognya: “One of the areas I’m especially proud of in Sublime Text 3 is performance: it’s significantly faster than Sublime Text 2 along every axis. Startup is faster, opening files is faster, and scrolling is more efficient. While it’s a much larger application than 2, it feels leaner.”

Performansi ini susah dicapai jika Sublime Text 3 adalah aplikasi web. Perambah tidak bisa sembarang membiarkan halaman web mengakses memori komputer. Dengan menulis aplikasi desktop, pembuat aplikasi bisa mengakses API yang sangat berkuasa.

John Skinner atau perusahaannya Sublime HQ Pty Ltd (dia sudah mempekerjakan beberapa orang) mengeluarkan aplikasi desktop selain aplikasi penggubah teks. Namanya Sublime Merge. Aplikasi desktop ini adalah klien Git.

Saking besar komitmennya terhadap performansi dan kecepatan, mereka menggunakan mmap ketika membaca berkas objek git. mmap adalah pemetaan memori. Teknik ini berguna ketika kita ingin menangani berkas yang ukurannya besar, lebih besar daripada memori yang kita punya. Misalnya membuka berkas dengan ukuran 5 GB ketika memori kita cuma 4 GB. Ketika kita “membaca” sebagian berkas raksasa ini, aplikasi akan melihat apakah sebagian berkas ini sudah ada di memori atau tidak. Jika tidak sebagian berkas itu akan ditaruh di memori. Terus akibat penggunaan mmap ini, mereka bertemu dengan masalah seperti SIGBUS, dukungan 32 bit, dll. https://www.sublimetext.com/blog/articles/use-mmap-with-care

Saya menceritakan kisah pengembangan Sublime Text dan Sublime Merge ini karena mengembangkan aplikasi desktop yang sukses bukan cuma masalah “menghafal” API tampak muka grafikal. Anda menghafal 320 kelas atau fungsi untuk memanipulasi tampak muka grafikal seperti membuat jendela (window), mengubah warna tombol, membuat baris alat (toolbar), dll, itu bagus 👏. Tapi Anda juga kadang-kadang harus memberikan upaya ekstra seperti yang dilakukan pengembang Sublime Text dan Sublime Merge ini. Upaya ekstra inilah yang akan membuat aplikasi web tidak dapat menyaingi aplikasi desktop.

Aplikasi desktop apa lagi yang dicintai banyak orang? Sketch. Aplikasi desktop ini banyak dipakai oleh desainer tampak muka atau pengembang aplikasi web atau aplikasi seluler. Percaya tidak percaya, orang umumnya membuat aplikasi web atau aplikasi seluler dengan aplikasi desktop. Tapi aplikasi desktop ini ada kekurangannya yaitu cuma tersedia di platform Mac. Kompetitornya, yaitu Figma, berbentuk aplikasi web. Bagaimanapun saya harus mengakui, aplikasi desktop itu bukan solusi paripurna terhadap semua permasalahan di dunia.

Kalau Anda ingin mengembangkan aplikasi desktop, Anda harus eling bahwa aplikasi ini harus memberi banyak keunggulan daripada aplikasi web: performansi, fitur yang lebih kaya, kecepatan, integrasi yang lebih baik terhadap sistem operasi, akses ke penyimpanan yang lebih murah hati.

Aplikasi desktop apakah yang dapat membantu banyak pengguna desktop? Itu yang harus ada di pikiran Anda. Oh ya, jangan membatasi diri Anda terhadap pengguna-pengguna desktop di Indonesia. Ada banyak pengguna desktop di seluruh dunia. Untuk mendapat inspirasi, Anda dapat melihat-lihat aplikasi yang dijual di App Store atau Windows App – Microsoft Store atau Snapcraft.

Oke, Anda sudah mendapat ide. Jadi saatnya mengembangkan aplikasi desktop. Teknologi apakah yang Anda akan gunakan? Saya bisa menulis satu buku untuk menjawab pertanyaan ini. Tapi saya akan memberi jawaban singkat.

Electron adalah teknologi yang paling populer. Slack, Visual Studio Code, Spotify menggunakan Electron untuk aplikasi desktop mereka. Jika Anda punya keahlian JavaScript atau TypeScript, ini adalah pilihan yang terbaik. Satu kali mengembangkan, Anda dapat 3 platform sekaligus. Sekali mendayung, tiga pulau terlampaui. Tapi banyak pembencinya karena setiap aplikasi Electron menggunakan mesin Chrome tersendiri. Boros memori.

Jika Anda cinta Java atau Kotlin, Anda dapat memakai JavaFX. Banyak pustaka yang tersedia untuk mengembangkan aplikasi desktop. Platform pustaka pihak ketiga Java Virtual Machine itu sangat matang, tidak sekacau NPM-nya Node.js.

Anda juga dapat menggunakan Qt, tapi lisensinya LGPL. Anda tidak dapat menggabungkan pustaka dengan aplikasi Anda secara statik karena pengguna aplikasi Anda berhak untuk mengganti pustaka Qt yang disambungkan ke aplikasi Anda. Kecuali Anda bayar lisensinya atau Anda membuat aplikasi sumber terbuka (open source). Qt menggunakan C++ tapi ada ikatan (binding) dalam bahasa Python, yaitu PySide2.

Setelah itu, Anda juga dapat menggunakan platform asli di sistem operasi, misalnya GTK+ di Linux, Cocoa di Mac, Universal Windows Platform di Windows. Platform asli sangat disukai oleh pengguna karena terintegrasi paling baik terhaap sistem operasi. Tapi kerjanya banyak. Kalau Anda mengembangkan aplikasi desktop ini di 3 platform, berarti Anda harus kerja 3x. Ini yang dilakukan oleh pengembang Sublime Text. Going the extra mile… 🏃

Dilemanya sama dengan mengembangkan aplikasi seluler di Android dan iOS dengan pendekatan asli (Android – Kotlin/Java dan iOS – Swift/Obj-C) atau pendekatan multi-platform seperti React Native atau Flutter.

Ada juga WxWidgets yang menggunakan C++ tapi mereka memiliki ikatan terhadap bahasa-bahasa lain. Flutter juga mulai meluncurkan dukungan terhadap desktop tapi hari masih awal.

Jika Anda ingin mendapat pengetahuan holistik tentang menjadi kaya lewat pemrograman, silahkan beli buku saya: Pemrogram Rp 100 Juta: Panduan Pemrogram Untuk Menggapai 💰 Harta, 👑 Tahta, dan ⭐ Kemasyhuran.

Semoga Anda berhasil menjadi 💵💶💰 kaya lewat pemrograman desktop! 🙏