Tahun 2016 ini menjadi sebuah puncak dari keramaian usaha rintisan (startup) dalam bidang transportasi dan jasa logistik instan. Berita terakhir bahkan Go-Jek membukukan pendanaan sebanyak $550.000.000,00 atau dengan kurs 1 USD = 13197.6 IDR; nilainya sekitar Rp 7.258.652.500.000,00. Iya digitnya sebanyak itu. Sangat luar biasa.
Uang sebanyak itu tentunya bisa digunakan untuk mengembangkan produknya menjadi lebih baik dan lebih aman. Saya berharap bagian sangkalan (disclaimer) ini tidak ada lagi dan saya mau pakai Go-Jek lagi.
Kami tidak menjamin keamanan database kami dan kami juga tidak menjamin bahwa data yang anda berikan tidak akan ditahan/terganggu ketika sedang dikirimkan kepada kami. Setiap pengiriman informasi oleh anda kepada kami merupakan risiko anda sendiri. Anda tidak boleh mengungkapkan sandi anda kepada siapa pun. Bagaimanapun efektifnya suatu teknologi, tidak ada sistem keamanan yang tidak dapat ditembus.
Tapi kali ini saya tidak membahas itu tentunya karena melenceng jauh dari judul. Saya akan bahas apa untungnya untuk pemrogram/pengembang di Indonesia.
Adanya Kebutuhan Memecahkan Masalah
Saya sangat senang akhir-akhir ini usaha-usaha rintisan yang ada di Indonesia mulai dengan masalah yang nyata. Go-Jek sendiri sudah dimulai tahun 2011, tetapi baru mulai mendapatkan traksi tahun 2015. Permasalahan kemacetan dan harga ojek yang mahal diatasi dengan adanya Go-Jek ini.
Masalah lain yang juga diatasi oleh Go-Jek adalah soal logistik. Go-Jek mengatasi permasalahan pengiriman instan. Dulu tidak ada seperti ini. Kita perlu harus mengirim surat dan barang sendiri atau meminta tolong kurir. Akses orang terhadap kurir terbatas, tetapi sekarang semua orang punya kurir, tinggal di-Go-Jek-in aja.
Masalah logistik instan ini juga baru ada di beberapa tahun terakhir karena mulai banyaknya platform dagang daring horisontal C2C (consumer to consumer) maupun dari pedagang-pedagang di Facebook. Sekarang mereka punya pilihan untuk mengirimkan barangnya dalam waktu kurang dari sehari.
Keberadaan Masalah Membentuk Talenta
Keberadaan masalah-masalah besar inilah yang membentuk talenta-talenta teknologi. Kemampuan talenta diasah dari perusahaan-perusahaan di mana dia bekerja. Banyaknya e-commerce beberapa tahun belakangan melahirkan talenta-talenta teknologi seperti pemrogram, perancang, dan pemasar digital yang mengerti tentang keperluan e-commerce dari sisi teknologi dan operasinya karena mereka terpapar dengan masalah tersebut setiap hari. Saat ini sudah banyak talenta yang mengerti cara memecahkan masalah seperti inventori, gudang, pembayaran, pemasaran digital dan sebagainya.
Manusia adalah makhluk yang selalu belajar. Jika terpapar permasalahan yang sama setiap hari, maka kita makin ahli dalam mengatasi masalah tersebut. Google awalnya juga mesin cari sederhana, tetapi dengan banyak iterasi, kesempatan, dan modal bisa jadi seperti sekarang ini. Mungkin Indonesia belum sampai ke level pemodal ventura mendanai proyek-proyek eksperimental seperti di Amerika. Tetapi, kabar baiknya kita punya masalah yang mungkin hanya bisa diatasi orang yang hidup di Indonesia.
Demikian pula dengan e-commerce, dengan tercurahnya modal ke e-commercemaka terbuka kesempatan talenta di Indonesia untuk semakin paham, ahli, dan efektif tentang e-commerce. Logistik adalah permasalahan besar selanjutnya yang harus diatasi. Dengan tercurahnya modal ke Go-Jek saya harapkan terbuka kesempatan pengembang-pengembang di Indonesia untuk terpapar dengan permasalahan logistik. Permasalahan logistik ini bukan permasalahan sederhana, cukup kompleks. Yang tidak instan saja sudah berat, apalagi yang instan.
Masalah Logistik Adalah Masalah Algoritmik
Jika e-commerce domain masalahnya rata-rata bersifat CRUD (Create Read Update Delete) dan stateless, permasalahan dalam logistik, terutama yang instan adalah permasalahan yang stateful dan berat di algoritma. Masalah yang solusinya algoritmik harus bisa diselesaikan secara deterministik dan yang penting cepat. Berikut mungkin hal-hal yang perlu diperhatikan oleh pengembang jika mau terjun ke perusahaan digital yang mencoba mengatasi masalah transportasi dan logistik:
- Proyeksi — Bumi itu bulat, tetapi dalam perhitungan jarak, mau tidak mau kita harus “mendatarkan” bumi terlepas Anda percaya atau tidak dengan teori flat earth. Garis lintang dan bujur tidak bisa digunakan untuk menghitung jarak kecuali diproyeksikan terlebih dahulu. Banyak sekali bentuk proyeksi ini, dan kita harus tau mana yang pas.
- Teori Graf — Jika ketika kuliah, Anda pernah mempelajari tentang graf dan tree beserta berbagai macam algoritma graph traversal seperti BFS, DFS, Djikstra, dan A*, percayalah pengetahuan tentang algoritma tersebut sangat diperlukan dalam memecahkan masalah logistik. Lalu lintas dan perutean itu cara membuat abstraksi modelnya adalah dengan graf.
- Aljabar Linier — Semua yang berhubungan dengan koordinat akan berurusan dengan aljabar linier sudah suatu keniscayaaan. Jadi buka-buka lagi jika masih punya buku aljabar linier yang berdebu di pojok ruangan.
- Jaringan dan Protokol — Sudah saatnya pemrogram membuka diri kalaudi dunia ini yang namanya protokol tidak hanya HTTP dan tidak semuanya RESTful. Pemrogram harus mulai membuka diri bagaimana memakai protokol yang pas. HTTP mempunyai payload yang cukup besar. Payload yang besar akan cepat menghabiskan kuota pelanggan, apalagi harus mengirim posisi setiap menit.
- Konkurensi — Dengan masalah yang stateful, pemrogram akan berhubungan dengan masalah konkurensi. Bagaimana mempertahankan dan mengatur state dan mengatasi kondisi seperti deadlock dan race condition.
Selain itu ada masalah-masalah di dunia ilmu komputer yang belum ada solusinya. Ya betul, Anda tidak salah baca. Ada beberapa permasalahan dalam logistik yang belum ada solusi algoritmiknya yang artinya harus memakai solusi non-deterministik maupun brute-force.
Satu permasalahan yang sangat menarik adalah Travelling Salesman Problem. Masalahnya cukup sederhana, jika kita punya misalnya 5 lokasi, bagaimana membuat urutan dari titik awal dan kembali lagi ke titik semua sehingga jarak yang ditempuh minimal. Semakin banyak titik kemungkinannya akan jadi (n-1)!. Artinya kalau menambah satu titik lagi naiknya kemungkinan yang harus dicoba jadi tambah banyak. Jika kita punya 5 lokasi, ada sekitar 24 kemungkinan, tetapi jika kita menambah satu lagi maka kemungkinannya akan naik jadi 120 demikian seterusnya.
Komik dari XKCD ini cukup menggambarkan masalah ini:
Jika meruntut ke Wikipedia kita dihadapkan ke kenyataan kompleksitas algoritma ini:
In the theory of computational complexity, the decision version of the TSP (where, given a length L, the task is to decide whether the graph has any tour shorter than L) belongs to the class of NP-complete problems. Thus, it is possible that the worst-case running time for any algorithm for the TSP increases superpolynomially (perhaps, specifically, exponentially) with the number of cities.
Banyak pemecahan masalah, tapi belum ada yang deterministik dan cepat. Jadi pemrogram yang biasa berpikir “ah ini gampang, besok pasti bisa” sebaiknya berpikir ulang jika dihadapkan dengan permasalahan TSP.
Pada akhirnya saya berharap dengan dipaparnya mereka dengan permasalahan di dunia nyata, kemampuan pemrogram di Indonesia terasah dalam mengatasi permasalahan-permasahan dalam bidang logistik. Semakin banyak yang bisa dan menularkan ilmunya ke timnya, semakin bagus. Semoga pendanaan bertriliun-triliun Go-Jek bisa membuka kesempatan yang mungkin akan jadi efek halo untuk usaha-usaha lainnya yang bergerak di bidang logistik.
–
Disclosure: artikel tamu ini telah dipublikasi ulang dengan penyuntingan dan izin dari Didiet Noor. Artikel ini pertama kali diterbitkan di halaman Medium-nya.
Didiet adalah seorang software engineer dan tech advocate. Ia bisa dikontak via @lynxluna.