Lompat ke konten utama
EP 8

Ngobrolin Android

Ringkasan Episode

Bantu Koreksi

Episode ini menyeberang ke dunia Android bersama tiga Google Developer Expert di bidang itu: Andrew, Budi, dan Sidik. Pembukanya cerita masing-masing tentang bagaimana mereka menjadi GDE — prosesnya bukan mengirim lamaran, melainkan direkomendasikan lalu melewati beberapa kali wawancara: dengan sesama GDE yang menggali sisi komunitas, dan dengan Googler yang justru menanyakan hal teknis serta masukan terhadap produk yang dipakai. Pertanyaan utamanya soal masa depan Java. Jawabannya: Java masih akan bertahan lama karena bahasanya matang dan penggunanya luas, dan di banyak proyek ia hidup berdampingan dengan Kotlin dalam satu codebase. Kotlin hadir bukan untuk menggantikan melainkan mengobati keluhan utama Java — terutama null pointer yang dulu ditangani dengan berbagai pre-condition. Dibahas juga sisi politiknya: perselisihan Oracle membuat lahir banyak varian OpenJDK dari berbagai pihak. Bagian tentang Jetpack Compose menarik karena mengakui asal-usulnya: developer mobile beralih dari imperatif ke deklaratif setelah melihat cara kerja web, dan XML di Android sendiri dulu dipilih justru agar terasa akrab bagi developer web yang sudah terbiasa dengan HTML. Compose membuat hal yang dulu rumit jadi sederhana — membuat list tidak lagi butuh RecyclerView beserta adapter dan view holder-nya. Ditutup dengan Kotlin Multiplatform yang membagi business logic bersama tetapi membiarkan lapisan tampilan tetap native, plus pesan soal menjadi agnostik: pelajari lebih dari satu platform supaya kita sendiri yang jadi multiplatform.

Poin-poin Utama

  • •Menjadi GDE bukan lewat lamaran melainkan rekomendasi, lalu beberapa wawancara: sesama GDE menggali sisi komunitas, sementara Googler menanyakan hal teknis dan masukan terhadap produknya
  • •Java dan Kotlin bisa hidup berdampingan dalam satu codebase, dan itulah yang terjadi di banyak proyek nyata — Kotlin hadir untuk mengobati keluhan utama Java seperti null pointer, bukan menggantikannya
  • •Perselisihan dengan Oracle melahirkan banyak varian OpenJDK dari berbagai pihak yang ingin mengembalikan Java ke jalur open source
  • •Jetpack Compose membuat hal yang dulu rumit jadi sederhana: membuat list tidak lagi butuh RecyclerView beserta adapter dan view holder, cukup lazy column
  • •XML di Android dulu dipilih justru agar terasa akrab bagi developer web yang sudah terbiasa HTML — dan kini developer mobile beralih ke deklaratif setelah melihat cara kerja web
  • •Kotlin Multiplatform membagi business logic bersama tetapi membiarkan lapisan tampilan tetap native, sehingga akses ke API platform masing-masing tidak perlu lewat bridge
  • •Menjadi agnostik itu menguntungkan: kita tahu kelemahan tiap tools dan bisa memilih sesuai kebutuhan — jadikan diri sendiri yang multiplatform, dengan bentuk keahlian seperti huruf T

Halo, selamat malam, selamat hari selasa, dan selasa malam adalah waktunya kumpulin web.

Yes, masih bersama saya Rija dan juga ada Eka.

Dan kita kehilangan satu teman kita lagi.

Satu orang.

Ivan paling sering ya, paling sering absen ya.

Wah, luar biasa.

Kali ini dia absen lagi tapi nggak usah khawatir.

Karena sebagai gantinya kita menyiapkan, nggak cuma satu, tapi dua orang GDE.

Bintang tamu.

Iya, bintang tamu yang spesial malam hari ini ya.

Suka developer expert di bidang?

Android.

Android.

Iya kan kemarin beberapa episode kemarin kan banyak mulai ada yang nanya tentang Java,

ada yang nanya tentang Kotlin, gitu masa depan Java juga ada yang nanya Java versus Kotlin.

Nah ini kita langsung datangin nara sumber terpercaya ya.

Yang pertama ada Mas Andrew, halo Mas.

Salam, selamat malam.

Oke, mungkin kenalan, kenalan sedikit lah ya, kita kenalan sedikit.

Mas Andrew ini siapa dan join GDE waktu itu ceritanya gimana kok bisa sampai join GDE itu gimana jalan ceritanya?

Oke, halo semua, thank you ya om Riza udah dikenalin.

Jadi saya join GDE program itu tahun 2015 kalau nggak salah.

Oh wow, 7 tahun.

Pokoknya sekitar itu, jadi waktu itu sih saat itu hanya ada Yohan Toting ya yang jadi GDE web.

Jadi yang GDE Android itu sama sekali belum ada dan belum ada GDE yang lain-lain juga.

Jadi untuk tau kenapa saya bisa jadi GDE juga saya agak-agak bingung juga sih.

Karena saya kayaknya cuma ikut acara Google for Indonesia ya waktu itu di Museum Fatah Ila.

Museum Gajah itu, terus udah cuma register aja kan ditanya app-nya di Play Store waktu itu saya punya app project, side project itu namanya Mata-Mata.

Apa itu?

Bukan project styling ya, bukan app buat style orang ya, tapi ini jadi kayak buat supaya lebih, kan dulu jaman dulu kalau menonton itu kan di 21 kan webnya kan agak-agak ya susah dibaca gitu ya.

Lihat transkrip lengkap (1314 segmen lagi)

Sama ada CGV dan lain-lain, jadi waktu itu kita bikin scraping platform itu untuk nampilin movie schedule yang lebih enak dibiak lah gitu.

Nah terus waktu itu ya jadi populer juga, nggak secara organik lah, nggak dipasarin, nggak ada apa-apa juga karena itu kan free app juga ya.

Ya mungkin dari situ juga sih, jadi saya diundang waktu itu interview buat GDE.

Terus ketemu Om Sidik sama yang lain-lain juga, ada tiga belas orang dan akhirnya yang dipilih tiga, saya, Om Sidik, sama Mas Ibun, jadi kita bertiga.

Oh sangkatan ya sama Om Sidik.

Ya sangkatan, jadi kita bertiga sangkatan nih jadinya.

Senior-senior ya.

Karena waktu itu isalnya belum ada GDE dan belum banyak yang tahu juga kan program ini gitu kan.

Belum-belum waktu itu belum tahu.

Ya kan, dulu taunya Microsoft ya, kalau program MVP.

MVP, oh iya iya iya, berarti awal-awal banget ya.

Iya benar.

Berarti udah berapa tahun tuh?

Berarti udah sekarang tahun ke tujuh tahun, iya udah tujuh tahun, tahun ke tujuh.

Tahun ke tujuh.

Kalau kegiatan atau kerjaan seharianya, ngapain ini Andrew?

Jadi sekarang sih saya adalah salah satu founder yang jadi CEO di lumio.id.

Lumio.id itu jadi suatu platform buat digital signage.

Kan sekarang iklan kan kebanyakan di OH, di luar, di gedung-gedung, atau di dalam gedung juga.

Semua udah mulai digital ya.

Jadi kita ada salah satu bagian dari platform itu ya CMS-nya, Content Management System-nya.

Dan sudah dipakai di mana-mana hampir.

Ya di Jakarta lumayan lah kalau ke Sudirman gitu.

Mungkin di belakangnya ada lumio.id-nya, ada lumio.victaernya gitu di sana.

Itu teknologi yang dipakainya Android juga atau campur?

Android, ya kan pasti ada cloud ya, ini kita apalagi ngomong di GDE Web ya sama GDE Web.

Ada backend-nya, tapi di ujungnya itu kita hardware sendiri pakai custom Android.

Oh custom Android sendiri, wow.

Iya, maksudnya kalau GDE Android tapi nggak pakai produk Android, agak-agak aneh.

Nggak ada latihan, tapi ya itu, jadi kita di ujungnya Android, jadi nggak pakai PC.

Kan biasanya kalau kebanyakan kan dulu digital signage itu kan kebanyakan pakai PC di belakang ya.

Kadang kalau mati tiba-tiba blue screen of death.

Ya, atau pop-up, pop-up dialog anti-virus gitu ya, atau belum keregister gitu kan, belum diaktifkan.

Jadi makanya pikir kita pakai custom Android karena kan memang bisa jadi intinya dedicated hardware lah ya jadinya untuk jalanin.

Cuma nggak ada Google Play Service, jadi jangan mungkin kalau nanti ada pertanyaan tentang Android,

tentang Google Play Service, mungkin nggak ada ya, karena ini kan sebenarnya fokusnya ke web ya.

Tapi ya mungkin tahu, cuma maksudnya mungkin kurang up to date gitu.

Oke, oke, mantap, terima kasih.

Kita undang satu lagi ya, kita ada dua nih malam hari ini, satu lagi nih yang tidak kalah seru, ada Mas Budi, halo.

Halo semuanya.

Ini GDE baru nih, harus dipanggil.

Anak baru muka lama, Alhamdulillah masih dibilang muda, terima kasih lho.

It's been an honor lho diundang kesini lho, iya, suatu kehormatan dan dedekan juga sebenarnya sih.

Dedekan kenapa?

Kenapa gitu?

Bener nih, nggak apa-apa.

Nggak apa-apa, oh ya boleh dong cerita dong cerita, prosesnya EO INGDE itu gimana?

Ini kayaknya masih baru, jadi mungkin relate sama temen-temen GDE.

Ya oke, jadi anyway, kenalin nama gue Budi Octavian, dan gue baru jadi GDE itu kurang lebih satu tahun.

Dan selama pandemi, jadi prosesnya cukup komplikated ya ketika pandemi, karena interview-nya tuh nggak live gitu lho, nggak langsung.

Mungkin kalau temen-temen GDE yang join sebelum pandemi kan kayaknya prosesnya cukup panjang, dan interview-nya juga offline gitu ya.

Dan gue tuh semuanya dilakukan, oh nggak, nggak juga ya?

Oh berarti memang dari dulu aja kayak gitu.

Kayak cuma yang paling lama banget gitu ya, 2015.

Ya lama banget ya, ada krubulernya di Indonesia mungkin ya.

Iya bener, kantornya juga masih diselayan.

Oh belum pindah ya, belum pindah ke Indonesia ya.

Oke, jadi gue resmi join tuh sekitar Juli tahun lalu sebagai Android, dan kenapa gue join sebagai Android?

Sebenernya pertanyaannya menarik sih, to be honest gue join sebagai Android tuh ketika gue tidak full megang Android gitu.

Waktu itu megang iOS ya?

Iya, jadi gue jadi sebagai GDE tapi kibelatnya udah beda.

Jadi kayak gimana ya, ya nggak apa-apa, tapi Android masih menarik sih, jadi, agnostik itu enak gitu loh, bisa kemana-mana gitu kan.

Oh, sudah ada pertanyaan aja nih, apa lah.

Barusan kan, barusan, jadi prosesnya juga ada prosesnya.

Tapi nggak apa-apa, gue berusaha juga dulu, iOS juga pas lagi masih itu juga ada, nge-develop on iOS juga, jadi ya nggak apa-apa lah.

Iya, jadi nggak apa-apa lah, jadi kalau misalnya kan bosan yang satu itu bisa selingkuh sama yang lain gitu kan.

Iya, makanya malah jadi orang, nggak apa-apa malah jadi ini.

Tolong jangan dipotong bagian itu ya, jangan dipotong, jangan dipastikan.

Dijadikan Youtube short boleh nih Youtube short ya?

Konteksnya tuh selingkuh sama bahasa, jadi kan kayak bosan nih, lagi bosan Android gitu-gitu aja, ya udah main kayak yang lain,

main ke Flutter kek, atau main ke Swift, sorry ke iOS gitu kan, atau nanti kan ada Fuzia, Fuzia juga kan teknologinya Google gitu kan.

Nah, seru itu.

Seru kan?

Seru itu, seru berarti ya.

Eh, ceritain dulu dong ini apa prosesnya gimana, proses GDA-nya, apakah apply atau direferensikan?

Oke, jadi sebenernya proses jadi GD itu nggak ada kayak apply harus masukin CP ke mana gitu sih.

Jadi kebetulan gue jadi GD itu karena direkomendasikan oleh salah satu teman kita juga, yaitu Sidik Permanak.

Karena dia mungkin ngeliat, apa ya, sepak terjang apa bahasanya nih, kayak ya beberapa kali ngisi event lah gitu kan.

Dua tahun sebelum pandemi, dan akhirnya di situ Sidik nawarin, "Lo mau nggak join GD?" gitu.

Dan di situ prosesnya sebenernya off gini, jadi gue sebenernya ada dua kali proses gitu, ini-ini unik sih.

Jadi sebenernya awalnya tuh gue di promote untuk jadi GD eCode-lin, jadi spesifik ke bahasa gitu.

Oke, oh ada juga ya?

Ada, ada, ternyata ada, GD eCode-lin tuh ada gitu.

Cuman di Indonesia belum ada ya?

Belum ada, belum ada, belum tahu, kayaknya belum ada ya, belum buka lagi, isi seri gitu.

Jadi sebagai GD eCode-lin udah ngelakuin interview sama ini ya, assesment kita kan harus ngisi beberapa assesment home ya gitu ya.

Terus ada beberapa talk yang harus kita isi ya sebagai bagian dari apa namanya proses gitu.

Nah ternyata setelah di asses, topi code-lin yang gue bawakan tuh lebih ke Android-nya gitu.

Nah yang di sini uniknya nih, oh yaudah berarti gue berpikir yaudah berarti emang bukan GD aja jadi GD gitu.

Nah tapi akhirnya setelah itu gue ditawarin lagi, yaudah kalau Android aja boleh nggak? Gitu.

Oh yaudah kita proses lagi gitu.

Jadi lumayan panjang sih proses gue itu nggak selama pandemi kemarin itu nggak 2021, jadi mulai dari 2019 gitu.

Itu berapa kali interview prosesnya?

Berapa kali interview kalau nggak salah, 3 ya, sama community itu 2 kali, apa sih namanya community lead ya atau GD e-nya juga gitu.

Terus sama Googlernya 1 kali gitu.

Oh sama GDI, GDI yang sudah ada, ya GDI yang sudah ada, interview kita, itu kalau nggak salah gue 2 kali, ya terus sama Googlernya.

Googlernya yang sesuai sama yang kita ini kan bagiannya kan misalkan Android, web atau yang lainnya.

Oh ya ada sedikit cerita unik nih ketika gue jadi GDI, mungkin boleh gue ceritain ya.

Jadi waktu itu masa-masa lagi Covid lagi tinggi ya, dan kebetulan gue juga kena gitu, jadi gue kelas kelulusan S1 nya Covid lagi.

Hahahaha, lucu banget ini.

Yang kemarin dari Bali yang kemarin nyebarin gitu ya.

Oh iya kemarin dari Bali juga, hahaha.

Ya jadi gue ketika itu harusnya interview dengan, ini nggak boleh sebut nama ya, dengan si X lah gitu ya.

Jadi gue udah di jadwal nih, gue interview dengan si X, ini oleh Googlernya, jadi itu akhir, tapi pas waktu itu gue kena Covid.

Jadi jadwalnya tuh udah kayak sebulan sebelumnya, mundur, ya jadi mundur nih, mundur, terus akhirnya mereka nawarin lagi tuh menjelang, Julie lah menjelang ya lebaran haji ya kalau nggak salah.

Kebetulan yang si X ini itu terkenal di kalangan GDI itu galak gitu, dan banyak yang gagal sama dia gitu.

Mau siapa nih? Javan ya? Tapi sekarang gue berteman baik kok, berteman baik, karena dia juga membantuin gue untuk memindahin aplikasi di kantor gue ini ke rumah baru gitu lah.

Nah akhirnya gue interview sama orang namanya Ye, jadi yang si X ini ada di Singapura, yang Ye ini ada di Jepang, nah gue spesifik ke negaranya aja ya, silahkan cari tahu namanya siapa.

Nah ketika sama si ini, gue nanya sama si Dik, si X gimana si Ye gimana, jadi kan gue dapet referensi dua-duanya nih gitu ya, karena si Dik yang referensi, referensiin gue.

Nah si Dik bilang wah beruntung banget lo dapet si Ye, ini mah lolos, tembus lo, ah serius gitu. Masa sih? Iya lo diem aja juga pasti tembus gitu.

Waduh. Kalo sama si Ye sih lo kayaknya gagal sih kata dia sama si X, sorry. Eh emang yang ditanya apa aja? Kenapa?

Yang ditanyain apa aja pada saat lo gitu. Waduh itu kayak teknis atau apa?

Ya sebenernya gini kan kalo sama GDI kita ditanya keinginan lo untuk jadi GDI apa gitu kan, keinginan untuk jadi GDI itu kan salah satunya adalah build community gitu kan.

Dan gue cerita lah bagaimana gue build community sejak tahun 2017 gitu, terus interview sama Google tuh lain, yang ditanya bukan community nya lagi,

tapi ditanya spesifik ke produk, ya produk yang lo puasain gitu. Terus lo ada feedback gak sama produk ini gitu.

Bahkan kayaknya gue pernah denger salah satu pengalaman dari temen-temen GDI kita ya, yang waktu itu proses jadi GDI itu sampai ada yang dikasih kayak semacam resis atau apa gitu makalah ya.

Waduh ini konteksnya bukan yang itu, aplikasinya bukan, kalo itu kan saya yang pindah ke rumah baru, bukan aplikasi nya.

Jadi, oke ini gue cerita ya yang tadi ke rumah baru itu maksudnya gini, jadi kan kantor gue yang sekarang itu banyak mengakuisisi beberapa startup ya di 2 tahun 3 tahun ke belakang lah gitu.

Nah salah satunya startup namanya Kudo kan dulu gitu. Nah play store nya si Kudo ini itu ada salah satu aplikasinya yang gue pegang ketika gue join gitu.

Terus kita harus rebranding aplikasi ini karena bakal dipake oleh regional, artinya dipake oleh 8 negara asia dan garah-garah gitu.

Nah akhirnya bos gue tuh minta bisa gak, gue gak pengen ini dipublish rebranding dari aplikasi ini dipublish play store yang lama, lo bisa gak mindahin ini ke play store nya Grab gitu ya.

Nah singkat cerita gue coba kirim email biasa lah gitu kan bagaimana cara mindahinnya segala macem, terus gue inget gue pernah kenal sampe akhirnya, eh lo bisa tolongin gue gak connectin sama orang-orang di dalam gitu buat.

Kayak update databasenya dari sini ke sini gitu. Akhirnya yaudah berhasil lah aplikasi itu pindah sekarang dan udah dipake oleh, sebenernya gak dipake external ya, dipake oleh internal sales team sih.

Di aplikasi kecil sih. Oke, sip kalau gitu. Terima kasih ceritanya temen-temen. Interview nya banyak interview nya, ganti topik. Udah kan tadi interview nya, sama Google itu ya teknis, jadi seputar produk karena gue di android ya, jadi produk android yang lo puasain apa, terus lo ada feedback nya sama produk itu apa yang bisa kita improve gitu.

Yaudah gue bilang aja, gue sembel sama ini nih compact, kenapa gini-gini dulu dari dulu gitu. Ya contohnya kayak gitulah.

Gara-gara rumah baru jadi gak gue bahas ya. Ya jadi kalau sama Google biasanya ditanyain teknis ya.

Oh ini pernah aja lah, ini udah dibawah ya. Imre juga pernah di tes, tes nya lebih gila lagi deh ya di tes nya ya. Nah itu ya, seru baca paper ya.

Okay, kita kembali ke topik nih. Topik kita malam hari ini adalah mengenai android, ya dan teman-teman nya termasuk Kotlin, Java dan lain-lain kan, beberapa episode yang lalu kita ada cukup banyak pertanyaan berkaitan dengan ini gitu.

Pertanyaan pertama, masa depan Java. Masa Andrew mungkin bisa bantu jawab. Seperti apa masa depan Java?

Tau aja kasih aja ke Andrew duluan, baru gue mau aja. Yang senior, yang udah lama pegang Java, dari kotlin belum ada udah pegang android kan.

Benar, benar. Ya benar, ya berarti kan emang masih pejahla ya. Masih pakai Eclipse lagi dulu tuh. Oh iya benar. Kalau saya, menurut saya ya ini kayaknya gak ada salah yang benar ya, kotok Java itu saya bilang sih bakal masih bertahan.

Masih dipakai di banyak tempat juga ya, gak hanya di android ya. Dan itu bahasa juga udah mateng, dan juga sekarang udah Java berapa ya terakhir ya? Java 17, 17, 18.

Nah RTS yang, pokoknya ada juga yang itu kan ya, yang tersupportnya ya. Jadi tetap masih disupport sama Oracle juga ya kan secara language. Juga sebetulnya yang pengguna nya saya bilang juga masih banyak ya di mana-mana.

Tapi ya memang kalau kotlin ini terus berkembang juga, biarpun mereka, maksudnya kotlin ini kan masih bahasa yang baru dan masih muda ya. Tapi progress perkembangannya itu sangat cepat juga gitu.

Jadi kalau saya bilang sih tetap, dua-duanya bisa tetap exist lah, co-exist gitu kan. Selama ini juga di project, gue di Lumio, juga ya karena masih ada kan codebase-nya udah gede juga ya, masih ada yang apa?

Legacy code ya. Masih ada ya yang pakai Java, ada yang masih pakai kotlin. Ya enaknya itu Java sama kotlin bisa dipakai bersama gitu kan.

Berbalangan di satu project. Jadi apalagi kan kita start-up kecil ya, orangnya juga nggak banyak. Jadi ya itu. Jadi tetap masih pakai dua-duanya, tapi itu works gitu.

- Oke. Kan kalau di Lumio sendiri kan konteksnya ada, tadi sempat sebut ada back-end, ada CMS-nya kan. Kalau itu pakai teknologi apa untuk web-nya?

- Kalau di back-end-nya ya. Masih di bagian web default-nya lah gitu ya. - Iya, di cloud-nya.

- Kita, jadi beda-beda sih. Jadi kita masih ada pakai PHP buat back-end dan lain-lain. Benar-benar tanya waduh, kok masih pakai PHP? Jadul banget gitu ya.

Tapi kan kadang-kadang juga kita pikir secara basis point of view juga orang-orang yang bisa PHP lebih banyak. Tapi juga kita nggak cuma hanya satu bahasa itu juga sih.

Kita kayak ada kode CDN yang saya juga co-develop juga buat jadi, buat content delivery, buat optimize gambar dan lain-lain itu kita pakai Golang.

- Oke. - Jadi ada berbagai macam sih. Tergantung kebutuhan aja. Jadi kita microservice, beda-beda itu bisa beda bahasa.

- Ada yang pakai Java nggak back-end-nya? - Nggak, nggak ada. - Oh, nggak ada. Oke.

- Oh iya sebentar, sebentar. Ini ada tambahan satu lagi nih. - Oh, tambahan satu lagi. - Nah. - Oh, wah. - Akhirnya udah benar-benar waktu buat meeting-nya.

- Iya. - GDI Agnostik. - GDI Agnostik. - Agnostik gemar selingkuh nih. - Kok gemar selingkuh? - Halo-halo. - Waduh, gemar selingkuh. - Bukan bahasa.

- Waduh. - Iya. Jadi ini GDI Android malam ini hadir semua ya? - Hadir semua. Kita takut dikeroyok, saya tadi takut dikeroyok jadi kita ngajak temen jadi akhirnya kita bertiga jadinya ya.

- Nggak boleh dong, meskipun... - Lebih ke ngajak pasukan ya. - Iya, ngajak pasukan. - Iya. - Loh, ilang kan dia. - Oh, malah ilang. - Oh, malah ilang, kayaknya dia... - Cuma, cuma apa? - Intermezzo aja ya. - Yang penting kakinya. - Aksen aja ya, aksen. - Aksen aja. - Oke, oke, menarik. Jadi untuk back-end nggak ada yang pakai Java, kemudian pakai microservice dan teknologinya dipakai bermacam-macam ya.

- Untuk koneksi ke device-nya sendiri itu pakai protocol apa? Recepti AI atau apa? - Oh, jadi itu ada Recepti AI sama ada Websocket juga. - Websocket, oke, oke. Dan, apa namanya? Kalau, Mas Budi, punya apa ini nggak? - Oke, ini pertanyaannya sama ya berarti ya? - Sama, sama. - Masa dengan Java ya? - Oke, sebelum gue jawab itu gue mau menagapi pertanyaannya dulu. Ini menagapi sama Java ya.

- Ya, ya. Emangnya masa depan basa lain gimana? Masa depan THP gimana masa depannya? - Masa depan THP, Lamborghini, Lamborghini. - Aduh, aduh, aduh, aduh. - Gini kan, sudut pandangnya gini kan, Java itu beberapa tahun terakhir banyak, apa ya, banyak mengalami apa ya, kayak masalahnya, apa ya.

- Masalah dalam tangan kutip ya, ada masalah antara Google sama Oracle. - Itu dari segi politiknya ya? - Dari segi politiknya, maksudnya ini kan si Google udah memutuskan untuk memasukkan Java ke dalam Android.

Jadi selama Android masih ada, ya Javanya masih tetap ada kan, Java, GPM, dan lain-lain gitu kan. Tapi ada problem disitu juga kan, ada masalah lisensi atau masalah apalah gitu politiknya sama Oracle gitu. Kira-kira gimana gitu kan, ada, ini kan pasti ada impactnya gitu kan.

Jadi gini, sebenernya Java itu kan sekarang kayak semacam udah binek atung galika gitu loh, jadi udah kayak banyak versinya gitu. Salah satunya gara-gara kelakuan Oracle juga sih, gitu.

Yang pertama berantem sama Google, ya, pertama berantem sama Google. Karena mereka ngerasa, "Gua udah beli sun microsystem nih", gitu kan. Ngerasa gua gak bisa menguasai sepenuhnya ekosistemnya Java gitu kan.

Akhirnya mereka kayak bener-bener menguasai satu produk end-to-end itu, Java itu pokoknya harus dibanbling sama database-nya mereka gitu kan. Sedangkan di luar sana sebelum diakusisi Oracle ya, kalau kita tahu sejarahnya, Java itu kan banyak versinya, ada yang versinya si IBM, ada versinya si sun microsystem sendiri.

Nah, ada beberapa gerakan-gerakan separatif di luar sana yang akhirnya, bahasa gua kayaknya terlalu ini ya. Jadi yang sebenernya seperti memberontak gitu akan kehadiran Oracle saat ini.

- Ya, selain si... - Java perjuangan ya? - Ya, jadi kan ada Java biasa sama Java perjuangan. Java perjuangan ini, ini banyak versinya loh Java perjuangan ini. Jadi kayak, mungkin pernah dengar Zulu. - Zulu? - Zulu ini, ya, Zulu, Zulu, Zulu System.

Nah, Zulu System ini sekarang diklaim menjadi satu-satunya Java Virtual Machine tercepat di antara versi OpenJDK yang lain. Jadi kan, karena tadi banyak Java-Java perjuangan ini yang tidak mau terasosiasi dengan Oracle ya.

Mereka akhirnya bikin versinya masing-masing. Jadi ada versinya si, gua lupa, semuanya OpenJDK gitu. Jadi OpenJDK itu yang perjuangan tadi nih. Jadi ada... - Open Source gitu ya? - Ya, mereka mengembalikan kepada marwahnya gitu sebagai Open Source.

Nah, jadi ada OpenJDK, ada, ya, si Zulunya juga bagian dari OpenJDK gitu. Dan si Android ini kan, eh, sorry, Android. Si Google ini kan, dia mau masukin Java pada awalnya karena ingin membuat Virtual Machine yang lebih baik daripada GVM kan.

Karena GVM-nya versi Oracle itu udah dibanding sama beberapa produknya mereka gitu. Dan Google ga suka dibagian itu kan. Karena kayak lu mau ngomong, terpaksa harus type sama Oracle kan. Sedangkan dulu ada versi IBM, ada versi RedFed, ada versi Centos dan sebagainya lah gitu.

Nah, jadi kalau dibilang masa depan ya, balik lagi pertanyaan ya masa depan. Masa depan Java sebenarnya ga ada masalah selama kita masih pengen bikin web application ya, web application atau back-end application menggunakan Java sebagai microservice-nya atau sebagai web application-nya.

Sampe saat ini juga Vifotal yang punya Spring itu juga sama mengembangkan si Spring itu sendiri kan. Jadi ada Spring Boot, versi berapa ya? 2 ya. Eh, sorry, 1, 2, 5 apa 2 gitu.

Nah, gue udah lupa juga sih. Nah, dengan hadirnya Kotlin sebenarnya itu kayak alternatif aja. Sebenernya kan basah-basah turunan GVM ya, ini gue ga ngomongin spesifnya Java, tapi GVM. GVM itu kan dari dulu turunannya banyak. Karena banyak yang rotakan tadi itu.

Dengan kekakuannya si Java ini lah yang dikit-dikit kena nolpointer, versi lambda nih lambat banget nih akhirnya keluar Kotlin, keluar Scala. Dulu ada Groovy juga kan.

Oh ya, Groovy. Dynamis ya, bahasa dinamis. Ya, bahasa dinamis banyak lah, bahasa static itu kan. Ada Java campur Python, ada Java campur Ruby, ya, Clojure gitu. Cuma Kotlin ini hadir karena dia salah satu keunggulannya ya itu tadi mengobati masalah utamanya Sejava.

Gue ga bilang bahasa yang lain lebih bagus sih. Maksudnya gue ga bilang bahasa turunannya GVM itu jelek ya. Kayak Clojure juga punya keistimewaan sendiri. Dengan kurung-buka-kurung tutup terlalu banyak gitu kan. Itu istimewa juga kan.

Wah, oke. Skala dengan SBT-nya yang lumayan bisa bikin kita order kopi Starbucks 50 kali kan. Eh jangan sebut barek. Ini tidak di sebut barek.

Waduh, waduh. Waduh, one more, one more. Mungkin di sensor, di sensor bagian itu. Ya, order kopi Starling. Ya, dan yang, ya, si Kotlin ini, balik lagi, Kotlin ini hadir karena dia mengobatin masalah utamanya bahasa si Java ini sendiri.

Karena kalau kita pakai Java itu selalu kena yang namanya nullpointer. Dan berbagai macam cara lah. Sebelum adanya Kotlin itu berbagai macam cara kita bikin pre-condition untuk cek nullpointer itu dengan segala macam annotation processing dan segala macem apa ya.

Tujuan utamanya adalah untuk itu ya menyelesaikan masalah itu. Tapi kan lebih ke ini juga kan, Kotlin ini untuk supaya Java lebih modern gitu kan.

Ya, lebih modern. Sebenernya Java 89 itu juga udah bisa dibilang modern. Karena lambda, lambda udah. Ya, functional programming juga di Java, gue lupa aja, gue karena nggak terlalu ngikutin sih.

Java 12 atau 17 gitu, itu udah ada functional programming juga. Biar mirip-mirip kayak Swift kali. Ya, cuma kan telat ya. Ya, Swift juga hampir sama ya. Jadi dari...

Ya, mirip-mirip lah. Jadi Swift gitu kan. Tapi, lanjutannya ke Kotlin ini, Kotlin ini juga kena masalah politik juga nih. Yang masalah perang antara...

Ini yang mana nih politiknya nih? Perang antara Rusia sama Ukraina kan? Oh, dulu, dulu, dulu. Memang, gitu. Bukan ini ya? Gak ada nggak sih?

Seingat gue, yang nggak harus cuma... Rusia kan? Bukan? Iya, betul, betul. Kotlinnya Rusia sih. Yang utanya Ukraina ya, bukan Rusianya. Kena nggak? Nggak kena ya?

Masih belum ada... Oh, maksudnya jadi lambat gitu. Melambat atau gimana. Tapi ini open source kan kalau Kotlin ini ya? Open source. Yang gue inget tuh yang lambat adalah berang lambat sih ya.

Gue soalnya makin salah satu timing Zcell gitu. Gue lupa namanya siapa. Kalau nggak salah Starfish ya, atau Starlight ya. Itu yang kena impact banget sih. Beliau yang bikin itu sih.

Oh, oke, oke. Jadi bisa dibilang hampir nggak ada pengaruh ya dari masalah politik-politik Rusia dan lain-lain itu ya? Dengan Kotlin. Kayaknya cuma minyak doang yang terpengaruh.

Minyak doang. Inflasi. Inflasi. Gandum, gandum. Gandum, bener, bener.

Ya, dan Kotlin ini juga bukan hanya digunakan di Android aja kan, tapi bisa digunakan untuk backend juga kan. Bahkan multi platform kan. Multi platform.

Ya, sempel ke JavaScript ya, Kotlin? Iya kan? Bisa kan? Iya, betul-betul. Kotlin multi platform itu banyak jenisnya sih. Jadi bisa jadi aplikasi web tanpa JavaScript ya. Atau bisa jadi Kotlin JS-nya. Kotlin web juga ada gitu.

Tapi kayaknya perkembangannya nggak terlalu di praktikan ya belakangan ini. Karena fokusnya lebih ke... Belum matang lah, belum bisa. Iya, belum matang. Fokusnya masih ke multi platform, mobile-nya dulu gitu. Android dan iOS.

Android dan iOS. Oh bisa ya, iOS ya, pakai Kotlin? Bisa. Bisa. Bisa banget. Bisa banget.

Jadi itunya tuh. Nah itu... Iya, Bapak yang satu itu belum join, jadi nanti... Iya ya, bisa ini pengalaman ya. Supporter. Menggunakan... Yang nge-pompong terus tuh dia kemana-mana, mengangguannya.

Dia pakai di real project ya? Di real project dia pakai. Padahal dulu ada doktornya juga. Wah menarik ya kalau ini. Kalau bisa kita dapat insight-nya. Tapi ya, ok lah. Berarti kan, ya ini kan, ya dimanapun Java bisa jalan, Kotlin bisa dipakai gitu kan. Intinya gitu kan.

Ya, jadi... Iya, jadi sebenarnya Kotlin itu... Iya, rata-rata bahasa turunannya JVM kan harus ada Java Virtual Machine-nya, ya.

Kotlin ini dia spesial, bisa dengan atau... Kalau pakai JVM berarti jadi Kotlin bisa si Java Virtual Machine. Tapi kalau nggak pakai JVM, dia akan menggunakan Virtual Machine di OS masing-masing. Kayak misalkan ta iOS berarti lewat LLV ya gitu.

Oh, ok. Oh iya, ada satu lagi yang berhubungan sama JVM juga kalau nggak salah ya. Nggak tahu bener atau salah. GraalVM itu termasuk bagian dari ekosistemnya Java atau nggak?

Kayaknya nggak ya. Mungkin ada yang tahu. Itu kayaknya Oracle punya ya, GraalVM. Iya nggak sih? Kayaknya nggak dengar deh. Kayaknya gue pernah dengar... Ya, GraalVM itu kalau nggak salah Oracle. Oh iya, Oracle ya.

Ini apanya JVM lagi nih? Nah, Sidik muncul lagi. Bagian dari politik. Bagian dari politik. Mari kita lihat sebentar ya. Kita ini aja belajar bareng-bareng. Ini GraalVM.

Itu ada yang seru tuh pertanyaan yang paling bawah. Oh iya, bentar ya. High Performance Cloud Native Polyglot. Java, JavaScript, Python, Ruby, R, Wasm.

Oh iya, dia pengen nyayangin virtual mesinnya apa ya. Jadi si Kotlin itu kalau balik lagi ke ceritanya Kotlin ya, Kotlin itu sekarang dia bisa tanpa si JVM kan. Jadi kita bisa bikin multi platform rotation dan juga kita bisa bikin WebAssembly pakai Kotlin nantinya.

Oke, oke. Jadi dia bisa nggak pakai JVM gitu ya? Betul, bener-bener nggak perlu pakai JVM dan WebAssembly itu kan juga dia engine-nya beda sendiri kalau nggak salah ya.

Bukan engine-nya segi web kan. Yang pada umumnya kan pakai C8, Chrome gitu ya. Kayak Gecko ya. Kayaknya dia mau nyayangin itu. Oke, coba kita cek lagi bagaimana Bapak Sidik sudah aman koneksi?

Udah, udah, udah. Cuman 20% kayaknya nggak lama juga should be long. Oke. Ini tadi ada yang apa, kita lagi ngobrolin tentang Kotlin terus ada pembahasan tentang multi platform bisa iOS.

Cek-cek-cek, sedikit-sedikit. Kasih piser-piser gitu. Ya, kalau multi platform sebetulnya saat ini pakai Kotlin native ya. Jadi kayak sepert Kotlin yang emang bisa ketika dikompil itu bisa running di iOS maupun di Android dengan the same code gitu.

Kalau di Android, Android itu yaudahlah ya dengan cara yang sama kayak yang sekarang kalau di iOS itu jadi LLVM. Yang enaknya sih sebetulnya kita moding-moding switch tapi pakai Kotlin gitu.

Dan kalau term staff multi platform saat ini sejauh ini mereka udah masuk beta. Jadi harusnya struggling-struggling yang pernah dia yang udah pernah nyoba kayak NBS di alpha itu udah terminimalisir jauh banget lah perubahannya di versi beta gitu ya.

Terutama ketika kita dealing sama konkurensi, sama trading, ada sedikit perbedaan terutama di handling misalnya mutability object di across the street gitu ya.

Itu di alpha sangat-sangat painful banget. Terus kalau di beta kita gak ngeliat itu gitu dan so far kita transisi ke beta itu juga lebih enak.

Dan yang paling mengesankan sebetulnya dari Kotlin multi platform for mobile itu dari experience kita sebetulnya kita bisa bikin kayak core module yang di atasnya itu masih bisa native gitu.

Jadi kalau yang pendekatan cross platform adalah all the things itu disiapin sama si platformnya gitu ya. Berjalan di atas satu layer di atas dan native. Sejauh yang kami tahu kalau Kotlin multi platform itu kita gak centralize business logic.

Simularitas antara dua platform tapi accessibility terhadap core main platformnya itu tetap bisa dengan mudah gitu ya karena di atasnya itu stay native gitu. Terus itu yang menghindari kita kayak bikin channel atau bikin bridge gitu ya di pendekatan cross platform.

Cuman ya trend ofnya kalau yang sejauh ini sejauh ini sebetulnya di learning curve nya sih. Di awal-awal pasti bakalan painful banget dan kita udah ngelaluin itu.

Jadi pas ketika kita udah sekarang udah udah udah udah 4 project kita handling dari alpha. Sekarang kita lagi jalan 4 project. 2 udah selesai 2 udah udah selesai 1 udah selesai udah mau release 1 udah selesai UIT barusan. Terus 2 lagi itu lagi ongoing kita pakai KMM 1 aplikasi perbankan 1 aplikasi bola gitu.

Oke oke wah mantap. Oke kita ganti sedikit pertanyaannya ya lebih ke web sedikit. Nah temen-temen kan familiar ya dengan progressi web app atau PWA.

Jadi itu ada yang punya pengalaman mengembangkan aplikasi web terus kemudian dibundling dan direpping di masukkan ke play store. Ada yang punya pengalaman boleh share mungkin.

Boleh Mas Budi boleh silahkan. Oke seingat gue PWA itu sempat hadir di play store ya sebelum akhirnya muncul app instant. Oh ya sorry kebalik instant app itu maksudnya gue merse antara instant app dengan app clip nya ayos.

PWA ini pertanyaan apa trend kedepannya ya tadi ya?

Ya ya pertanyaan pertama tadi pernah bikin. Pernah bikin engga tapi pernah nonton ya youtube-youtube orang ya cara bikin PWA. Kayaknya lumayan ribet ya kalau menurut gue ya harus bikin service worker ya namanya.

Service worker ya service worker segala macem gitu lah. Nah itu terus abis itu kan nanti kita publish di web gitu kan.

Terus tapi harus pake chrome setelah gue harus pake chrome gitu sih baru dia bisa jadi kayak model app ala-ala kan kayak apa ya dulu Zeflin pernah bikin gitu juga tuh.

Jadi Zeflin lo install langsung add to home screen gitu kan. Tapi ya experience-nya kalau menurut gue tetap web sih bagaimana kan juga walaupun apa window nya dibuang segala macem gitu udah disisain aplikasinya doang ya.

Tetep kayak berasa kaku sih dong. Ya berasa web banget sih.

Permission-nya juga web soalnya. Kebetulan gue pernah sih malah ada pengalaman bikin PWA yang kayak gitu.

Nah kalau ini use case-nya karena emang main-nya itu main product-nya harus di web dan emang resource-nya kurang.

Karena enggak ada resource buat bikin khusus Android buat mobile. Jadi udah di-wrapping doang itu cepet sih. Cepet dan relatif gampang.

Cuma nambahin satu manifest khusus ya udah publish. Tapi ya mungkin kalau dari perspective native dev ya itu emang bukan.

Performa-nya nggak bagus. Tergantung aplikasinya sih. Performa-nya sih ya sama aja kayak performa web-nya normal-normal aja. Tapi lebih ke permission sih. Semua permission-nya ya alurnya sama kayak web.

Jadi nggak kayak permission-nya. Kan beda ya permission-nya apa Android native app. Kalo pengalaman pribadi gue cuman mentok di itu aja. Permission-nya web banget.

Kalo performa ya normal. Ya tergantung isinya apa sih. Kalo cuma buat konten ya kayak artikel baik-baik aja.

Ya kalau sekedar kayak satu text doang tanpa ada navigasi sih sebenernya PWA masih oke-oke aja kalau menurut gue ya.

Tapi lucunya kan Google meluarin tandingannya juga kan. Di tempat yang sama yaitu instant app tadi.

Instant app.

Instant app tuh apa tuh? Belum pernah.

Bukannya kita baru tau nih coba kita lihat ya. Instant app. Gini ya.

Jadi kalau kasus di space-nya gitu kayak dulu, kayak salah satu contohnya kalau mau bayar parkir di Amerika tinggal tab NFC langsung daripada buka web.

Tapi dia jadinya ya nge-launch native app. Maksudnya instant app itu ya sebenernya part of it ya native app gitu.

Cuma kita download-nya cuma yang diperlukan aja.

Ya download specific, specific screen aja gitu sebenernya.

Ya specific screen aja.

Android Instant App ini ya namanya Android Instant App.

Iya Android Instant App.

Oke. Coba kita ini ya share screen ya.

Android Instant App.

Kalo yang platform sebelah namanya App Clip.

Apa? App?

App Clip. Sama.

Oke. Ini cara kerjanya gimana tadi? Boleh diulangi?

Itu diinstall kan tuh.

Oh oke.

Sama-sama pake link.

Sama-sama pake link.

Oh pake link.

Nah tapi link-nya ini kita punya protokol khusus ya.

Kalau PWA kan protokolnya HMV ya kan?

Iya.

Kalau ini deep link sih. Jadi kita bisa dibebas bikin custom protokol gitu.

Wah menarik.

Seru ya.

Jadi nanti download modul yang dibutuhkan aja.

Sebetulnya keinstall.

Sebetulnya keinstall. Oh oke.

Oke oke.

Nah ini udah mulai banyak pertanyaan-pertanyaan ini ya.

Menarik ya. Ada pertanyaan tentang ini apa?

JPEG Compose.

Compose?

Bagaimana dengan cara pembuatan seperti biasanya tanpa JPEG Compose.

Apakah sekarang sudah saatnya beralih ke JPEG Compose?

Coba siapa yang boleh jawab?

Oh oke deh.

Di kantor kita udah ngejalanin 2 project pakai JPEG Compose.

Oke. Maaf, kepotong sedikit.

Buat teman-teman yang belum familiar, JPEG Compose itu apa?

JPEG Compose itu metode pengembangan IWA yang baru.

Yang lebih modern dibandingkan.

Penekatannya premok-premok baru.

Yang kalau kita 12 tahun lebih ya menggunakan XML.

XML ya masih jaman.

Terus akhirnya pendekatan sekarang itu udah mirip-mirip semua.

Sudah deklaratif gitu ya.

Terus of survival base.

Dan harusnya JPEG Compose itu udah selama kita adopsi di 2 project itu

banyak-banyak berubah dari cara berpikir kita

yang simpata imperatif jadi deklaratif.

Terus yang handling state management yang

kalau kita pakai si system kan kita kayak nggak terkontrol gitu ya.

Nggak terkontrol itu perubahan state-nya.

Kalau kita ada satu yang harus terubah,

state-nya titik mana aja kayak terlalu banyak yang kita kontrol gitu.

Dan kalau di JPEG Compose tuh kita so far kita ngedapetin lebih enak gitu.

Karena single source of data dari inner layer

terus kita hinggalin dan ngerubah state-nya.

Terus semua orang yang semua...

Semua yang substrate.

Semua composable yang listen kesitu tuh kayak itu ngelakuin

process updating recomposition sendiri gitu ya.

Terus apa namanya so far so good sih.

Jadi kita udah 2 project.

Kita nggak cuman JPEG Compose tapi kita juga di IOS

kita udah implementasi safe UI.

Jadi udah imbang dua-dua.

Dan kenapa alasannya ini sebetulnya udah suka-nggak suka.

Pasti soon or later itu sama kayak dulu

kita di-encourage suruh pindah dari Java ke Kotlin gitu ya.

Walaupun Java juga masih di-support tapi

pelan-pelan itu kita di suruh pindah.

Dan kita ngambil momentum-nya aja sih sebetulnya.

Jadi masa depannya itu JPEG Compose ya berarti ya?

Ya, kedepannya kayak bakalan...

Investasinya Google pasti kayak sekarang gitu.

Investasinya udah lah ke Kotlin gitu ya.

Instead of dia harus maintaining yang Java gitu.

Dan akhirnya ya udah kalau mau bikin ini

ya udah langsung aja semua di-Kotlinin gitu ya.

Sampai level UI-nya juga udah Kotlin aja.

Dan yang kedua anak-anak juga bosan sih di internal udah.

Ya udahlah kayak ngelakuin.

Udah kayak punya skeleton yang udah ngelakuin 4 years gitu ya.

Bikin aplikasi yang base-nya itu pakai P-System ya.

Akhirnya kita ada challenge baru...

Bosan liat XML terus ya sama XI.

XML terus, baru kekode gitu ya.

Gua sebenernya punya jawaban lain sih.

Boleh, boleh, boleh.

Ya, jadi kalau tadi ada bener aja juga menurut Sidik ya.

Java Compose itu apa.

Tapi sebenernya...

Gua sebelumnya sangat berterima kasih kepada para developer web ya.

Akhirnya developer web lah yang membuka mata developer mobile.

Untuk beralih dari...

Beralih dari impratif skeleton UI.

UI skeleton menjadi deklaratif UI skeleton gitu.

Karena kan deklaratif UI itu udah dari zaman dulu.

HTML deklaratif.

SQL deklaratif.

Ya, SQL deklaratif.

Terus akhirnya kesini-sini tuh kayak developer mobile juga sadar.

Bikin XML atau apalagi SID ya.

Yang sebelah kan itu cuma drag-and-drop, salah drag ganti story ID gitu kan.

Jadi ribet gitu, rusuh gitu.

Nah, yang di Android ini sendiri juga sama.

Gimana bikin XML?

Lebih enak nge-picknya daripada drag-and-drop malah kan kebalikan gitu kan.

Terus akhirnya...

Ya, di satu sisi juga renderingnya lambat.

Karena kan XML mau nggak mau ditransform lagi ke natifnya gitu kan.

Untuk dirender ke...

Kenapa nggak langsung aja bikin yang versi view-nya di bahasanya itu sendiri.

Sebenernya dari zaman dulu bikin aplikasi mobile...

...juga bisa pakai view dari bahasa itu sendiri kayak...

...bikin J2ME gitu ya, Java M-A.

Jadul banget ya.

Terus bikin Blackberry, Blackberry juga kan kita bikin view beneran pakai Java gitu kan.

Nah, dulu Android sebenarnya ada kayak pilihan juga sih.

Kalau nggak salah sekitar 2010 atau 2011 gitu.

Antara mau pakai XML atau stay pakai cara Blackberry.

Jadi kita bikin custom view, tempelnya satu-satu gitu.

Ternyata ribet nih, pakai kayak gitu kan.

Ya udah, taruhin XML-nya malah lemot gitu kan.

Terus pas lihat web, ya pas lihat web...

...Declarative ini kayaknya udah paling benar gitu kan dengan adanya HTML, JavaScript.

Direct Native sebenarnya sih.

Direct Native ya.

Ya, breakpoint-nya sebenarnya Direct Native gitu.

Nah, ketika Direct Native ini muncul...

...akhirnya Flutter muncul dan lain sebagainya.

Ya, gitu.

Jadi udah mulai membuka mata kepada developer-developer-anatist.

Ternyata bikin UI itu yang akan ngoding di bahasanya sendiri...

...depada pakai bahasa lain kan.

XML itu bahasa lain kan.

Kok nggak mau kan XML kan?

Gible dari ininya.

Bahasa asing.

Ini kayaknya XML ini terpengaruh oleh Java.

Java kan amat sangat dekat dengan...

Oh iya, iya.

Betul sekali.

Sebenernya kalau baca di bukunya si Android yang...

...ditulis sama chatnya, "Saya mau pilihan kenapa pakai XML"...

...saat itu tuh yang penasaran gue tuh...

...yang penting bagaimana caranya biar bisa cepat aja dan mudah developer.

Karena Android itu dibangun saat itu kondisinya adalah lebih banyak web developer.

Dan web developer itu familiar dengan HTML.

Jadi bagaimana ngebuat antarmuka itu penulisannya nggak berbeda jauh dengan HTML.

Akhirnya dibikinlah tuh, XML, View System yang basisnya adalah...

...kalau menunggu compile sebetulnya itu ada measure layout sama render gitu kan.

Dan itu udah sangat-sangat kompleks lah.

Cuma poinnya di sini sebetulnya kalau in terms of state management...

...kita tuh udah pernah punya kalau di Android pakai data binding.

Data binding kan sebetulnya of survival object gitu kan.

Jadi once that objectnya dirubah, value yang...

...by state itu bakalan berubah.

Cuman kayaknya data binding itu tidak populer gitu di Android.

Bukan cuma tidak populer sih, Big.

Itu salah satu kesalahan terbesarnya Google sih.

Kenapa harus bikin data binding?

Kayaknya di...

...sama I/O.

Kayaknya...

...menurut gue...

...ya, menurut gue kayaknya salah satu platform yang...

...satu function untuk definisiin objek...

...tapi kita bisa controlling objek itu kayaknya cuma Android ya.

Karena kita punya Find V by ID itu variasinya banyak banget gitu.

Sampai sekarang gitu ya.

Itu kalau pendekatan lama emang challengingnya lah di sana sih.

Oke.

Pertanyaan tambahan sedikit.

Jetpack Compose ini...

...tadi kan Sidiq udah sempet cerita...

...apa, seru banget gitu kan, develop dengan deklaratif dan lain-lain.

Apakah dia hanya meningkatkan developer experience...

...atau juga meningkatkan dari segi performa juga meningkat?

Oke.

Sesuatu kita bilangnya adalah...

...progressive pragmatic gitu ya.

Progressive pragmatic itu artian...

...kita pragmatic secara continue...

...tapi setiap kita belajar dapat knowledge baru...

...kita melakukan improvement dari apa yang udah kita lakukan sebelumnya.

Dan...

...sejauh ini kalau terms of...

...terkait namanya apakah bikin happy developer?

Iya.

Jetpack Compose itu untuk...

...iya, bikin happy developer secara experience, gue akuin.

Kalau, asalnya gini contohnya deh.

Di Android itu kalau kita bikin namanya...

...rounded...

...rounded view gitu ya.

Itu at least kita harus bikin...

...custom di view nya gitu ya.

Kita bikin custom view nya, lalu kita hitung segala macem.

Di...

...Jetpack Compose itu kita udah tinggal manfaatin namanya...

...object namanya modifier gitu.

Itu udah kayak god object lah.

All the things you can do it gitu ya.

Itu tinggal kita sedangin namanya rounded...

...dia udah bisa bikin tuh...

...sebuah UI component bentuknya rounded gitu.

Tinggal kita tentukan aja dia yang apa...

...sudutnya berapa gitu.

Sama juga kayak kita misalkan bikin...

...di Android itu kita terkenal banget kalau bikin list...

...itu sesuatu yang kompleks gitu ya.

Kenapa kompleks? Karena kalau bikin list itu...

...berarti lu harus punya recycle view, lu harus punya...

...adapter nya, harus punya view holder nya...

...lu harus punya view nya gitu ya.

Lalu lu nge-orchestrasi ini tuh gitu ya.

Lalu di Jetpack Compose lu juga punya...

Lazy list.

Lazy column gitu ya.

Lazy column, terus lu buat item nya...

...dari track disitu udah.

Itu sangat-sangat membahagiakan gitu ya.

Membahagiakan.

Dan banyak lah, banyak kelebihan-kelebihan yang...

...gue sama anak DnBest tuh...

...tadi gue bilang progressive technetik gitu.

Kadang-kadang kita yang udah agak maju...

...kita mundurin lagi.

Kayak di Jetpack Compose kita dosinya...

...gimana caranya bikin single UI gitu ya.

Single activity UI nya bisa dipindah-pindahin gitu ya...

...pakai Jetpack Compose.

Itu kita udah pakai navigasinya...

...oh dah ini lagi.

Tapi akhirnya gue balikin lagi ke bawah.

Sekarang bagaimana caranya...

...kita di project start dunia lagi...

...Jetpack Compose sebagai pengganti dari...

...XML.

Ratingnya seperti itu.

Akhirnya ya kita lakuin...

...kita bikin yang...

...literally menggantikan XML...

...kita buang XML...

...kita ganti Jetpack Compose gitu.

Dan akhirnya ya jalan, bisa.

Dan disitu gue selalu bilang sama anak-anak gue...

...kenapa gue bilang ngarahin kesini-kesini...

...tujuan yang berapa?

Kita tuh ada perbandingan...

...bahwa kita mau menuju sesuatu yang major...

...sesuatu yang mungkin kita sepakatin bersama...

...dalam jangka waktu yang panjang.

Tidak, kita udah pernah mencoba...

...beberapa patent ini.

Begitu juga ketika kita implementasi AIP.

Oke.

Wow, seru ya.

Nah, ini ada pertanyaan menarik lagi nih.

Kira-kira alasan Google ngeluarin...

...Kodlin Multiplatform apa ya?

Kayaknya pertanyaan ini...

Benar, benar.

Bukan Google yang ngeluarin kan?

Bukan, bukan.

Bukan, bukan.

KMM itu...

KMM itu dirilis oleh JetBrains...

...si pembuat Kodlin, bukan Google.

Bukan Google.

Yang dari rilisinya tadi ya, Pong?

Yang dari rilisinya tadi.

Sedangkan punya Google adalah Flutter.

Flutter kan.

Iya.

Nah.

Mungkin kalau pertanyaannya...

Bisa kita undang juga GDN-nya.

Iya, GDN-nya coba diundang ya.

Silahkan diundang.

Iya.

Mungkin episode-episode mendatang lah ya...

...kita undang.

Web versus Flutter.

Web versus...

Kodlin versus Flutter.

Terus kitanya nggak ada...

...yang web-nya nggak ada.

Lonton, lonton makan popo.

Kita nonton aja.

Kodlin Multiplatform apakah performanya...

...bisa disamakan dengan Flutter?

Oke, ini kayaknya...

...kayaknya gue jawab yang sebelumnya dulu deh.

Jadi tadi kan kurang tepat ya.

Kodlin Multiplatform itu...

...dikeluarin oleh Google...

...kenal hal sana.

Atau nggak, sebenarnya nggak.

JetBrains ya.

Ya, gitu.

Tapi mungkin pertanyaan lebih tepat gini.

Ketika Google mengeluarkan JT Compost...

...kenapa Google juga masih memperkenalkan Flutter?

Nah, sebenarnya Flutter ini...

...ya sebenarnya kayak salah satu alternatif aja gitu ya...

...sebelum adanya JT Compost.

Jadi semacam tempat latihan kita...

...sebelum beralih ke JT Compost gitu.

Batu lengketan gitu ya.

Iya, nah.

Roda tren.

Iya, iya.

Tapi maksudnya jangan panas dulu ya.

Panas, panas.

Nanti JT Flutter malah panas nih.

Oh iya.

Jadi dia mentor doang dong gitu kan.

Gak, nggak gitu.

Gak star mentor, tetap dipake kok Flutter.

Ada tempatnya masing-masing.

Nah, itu yang pertanyaan kedua.

Kodlin Multiplatform performanya...

...bisa disamakan dengan Flutter.

Ngomongin performa antara crossplatform...

...dengan multiplatform...

...itu dari katanya aja sudah dua hal yang berbeda ya.

Terus itu kayak kita bikin aplikasi pakai satu bahasa.

Terus ujung ke ujungnya bahasanya sama ya.

Jadi kayak misalkan kita bikin aplikasi web JavaScript gitu ya.

PWA apa segala macam.

Itu kan ujung-ujung bahasanya sama.

Dari servicenya, data source, local database dan lain sebagainya...

...sampai ke presentation layer ya.

Kalau kita ngomongin kelihatan struktur...

...itu ujung-ujung pokoknya intinya sama.

Itu namanya crossplatform.

Tapi kalau multiplatform itu sebenarnya bahasa yang sama...

...itu cuma di spesifik area.

Jadi untuk selesaikan salah satu isu yang ada khususnya di mobile ya.

Kalau konteksnya mobile.

Jadi sebagai mobile developer itu kan kita selalu berhadapan...

...dengan masalah kontrak API gitu.

Jadi biasanya gini nih.

Biasanya kalau teman-teman ya di kantornya ada QA nih.

"Gua tes di iOS kok nggak kejadian ya?"

Login screen-nya sukses nih, tapi kalau di Android gagal ya.

Nah, masalah-masalah seperti itu sebenarnya...

...yang pengen di-sock oleh si multiplatform.

Jadi kalau balik lagi ke performa...

...yang namanya multiplatform itu tetap ujung-ujungnya...

...didevelop secara native di presentation layer-nya.

Yang didevelop secara satu bahasa itu cuma area spesifik.

Biasanya itu business model-nya, business logic-nya...

...atau domain layer-nya.

Kalau performa, agak susah sih komparasinya ya.

Karena yang satu itu dari segi building the system-nya...

...jadi satu aplikasi ya, itu lumayan complicated.

Karena kan lo harus menggabungin...

...ini kalau kita ngomongin di mobile ya, ada iOS, ada Android gitu.

Kita harus menggabungin dua engine itu jadi satu...

...dikompel untuk menghasilkan dua aplikasi ya.

Apk dengan IPA gitu.

Tapi memang dia nggak ngebuild pakai satu engine.

Dibuildnya di engine masing-masing nih.

Android dibuild pakai NVM, balik lagi iOS dibuild pakai LLVM.

Tapi kalau yang si cross-platform...

...itu ujung-ujung ngebuildnya semuanya di situ.

Nah, sebenarnya sih secara performance dari segi build system...

...gue, to be honest ya, gue mendukung cross-platform sih...

...dari segi build system.

Karena kencang banget build-nya gitu.

Tapi dari segi sizing dari si aplikasi...

...udah jelas, pemeriksaan ini natif.

Oke. Sekarang pertanyaannya...

Nah, mau ngomong tanya lagi dong.

Untuk bahas performance, kalau di web kan ada tuh...

...misalnya Core Web Vitals bisa pakai Lighthouse...

...bisa langsung dapet instant feedback tentang performa.

Tentang hal apa aja yang lambat di bagian mana...

...mana yang bisa dibenerin.

Nah, kalau di Android gimana tuh caranya?

Ada di IDE-nya. Buat profiling-nya.

Kita ada profiling juga.

Kalau ampe kadang-kadang ya sering buat gimana optimize start-up time ya.

Start-up epic tuh secepat-cepatnya.

Sebetulnya, kalau gue ngelihat mandang performance ya...

...tadi gue belum pernah, gue pakai dua-duanya...

...Clutter dan KMM di Endless.

Endless itu terlalu generic banget gitu ya.

Clutter hayo, KMM hayo, KMM hayo, terus...

...Native 100 AS juga hayo gitu.

Karena kita nge-encourage engineering di sini juga nggak cuma spesifik...

...ke satu framework gitu.

Dan kita nggak pernah bilang bahwa...

...kita pernah komparasi.

Cuman kalau dari segi...

...dari apa namanya, dari segi...

...lihat dari sudut pandangnya...

...cross platform dengan Native Scanner Experience kita...

...adalah kalau KMM kita pakai karena kita berharap...

...buat kita hanya bisa mengisolate...

...modul-modul similaritiesnya itu, kita bilang sih yang modulnya...

...kayak itu data layer atau domain layer...

...or similarities modulnya.

Itu jadi satu, satu tempat yang kita bisa serve...

...buat dua sisi gitu.

Sedangkan sisi atasnya itu kita masih bisa menggunakan sih...

...Native Experience-nya gitu, Native SDK-nya.

Jadi ketika dikompilasi itu harusnya...

...itu mereka mau benar-benar jadi native gitu.

Kalau Clutter kan setahu gue ada...

...kompilasinya yang dia harus ada emulasinya...

...karena di jalan dari emulasinya.

Itu ada...

Ada engine-nya ya?

Ada engine-nya.

Ya.

Dari situ juga...

...kalau gue ngeliatnya gini, dari segi...

...experience development...

...kalau buat...

...pengalaman kita kalau bisa bikin aplikasi yang...

...ini mostly ya, ini kayak tadi yang...

...dihadapkan sama NBS.

Kita ngelihat kalau misalkan buat...

...produk yang masih sifatnya kayak menemukan...

...produk market pick dan untuk butuh speed up...

...gak peduli masalah performance...

...gak peduli masalah stability...

...atau gak peduli masalah...

...hal-hal level...

...yang penting bisa delivering value...

...close platform itu cepet banget.

Itu kita experience...

...ada 2 aplikasi yang sampai sekarang jalan...

...bahkan salah satu aplikasinya dapat scan besar banget.

Cuma ketika...

...case-nya native, biasanya berasa dari...

...organisasi-organisasi yang mereka aku...

...dapat ensuring bahwa...

...mereka terjamin...

...masalah scalability-nya...

...terjamin masalah...

...sustainability dari SDK-nya...

...terus ada jaminan...

...dari platform owner-nya...

...terus...

...mereka berinvest untuk jangka panjang...

...gitu ya...

...dan mereka sudah selesai terkait masalah...

...nanti gue harus...

...produk market pick seperti apa tuh udah gak gitu...

...jadi biasanya kayak golongan enterprise...

...di tengok kita tuh biasanya gitu...

...mereka udah langsung...

...langsung go to native gitu ya...

...dan...

...itu yang kita dapetin...

...sama kita development dari Flutter...

...dan point kedua sebetulnya gini...

...at the end ketika...

...kalau kita nge-gen cause platform tuh...

...kita pernah dapet case dimana...

...sampai kita bisa konklusi...

...wa kalau lo punya aplikasi...

...yang sifatnya hardware kompetitif...

...daripada lo bikin...

...pakai Flutter...

...at the end lo harus bikin...

...channel atau bridge-nya...

...untuk bisa-bisa...

...bisa komunikasi ke low level SDK-nya...

...gitu ya...

...ya lebih baik lo liat di sekalian gitu...

...kalo case yang kemarin tuh akhirnya...

...kita ada satu case kita pake machine learning...

...buat deteksi muka...

...gitu ya...

...itu di Android jalan lancar...

...cuma kendala banget di iOS...

...sama juga aplikasi kita ya mas Andrew ya...

...di Android kita ada satu komponen buat...

...dengan QR code itu...

...akhirnya kita ujung-ujungnya bikin...

...channel, bikin bridge...

...gitu ya...

...yang buat komunikasi ke native-nya gitu kan...

...at the end...

...menguasai satu klatform aja...

...gitu gak cukup...

...ketika lo berhadapan dengan...

...dealing dengan namanya hardware...

...competitif ya apa...

...hardware excessive gitu ya...

...ya spesifik ya...

...at least lo harus bisa...

...iya lo bisa paham di IOC juga...

...lo harus bisa paham ini...

...dan lo harus ngerti juga bahwa...

...flutter adgen order day dia adanya...

...adalah UI toolkit...

...dan pada akhirnya ya...

...bisa jadi, bisa jadi, bisa jadi...

...nanti atasnya flutter bawanya Kotlin...

...kita gak ada yang tau...

...ya jadinya makin gede...

...app size-nya atasnya Flutter...

...bawanya Kotlin...

...tapi itu...

...itu udah jadi satu pipeline...

...nanti itu kayak...

...BnBs kita sering ada pet project...

...jadi kita kalau nyoba-nyoba...

...excessive teknologi baru itu gak cuman...

...serta merta kita langsung jemplung...

...oh kita teknologi baru kita cobain...

...gak se-hustle itu...

...kita ada exercise-nya...

...menarik...

Andrew tadi mau menyapaikan sesuatu...

...maksudnya biasanya memang...

...itu pertanyaan paling sering ditanya sih...

...kalau lagi di Android Gathering ya...

...pasti tanya...

...kalo bisa Flutter...

...meri Flutter aja dong...

...cuma akhir-akhirnya memang...

...ujung-ujungnya tadi kayak seperti Sidik bilang...

...maksudnya mau kita...

...kuasa Flutter juga kalau misalnya...

...mungkin kalau base...

...use case yang kita...

...buat app-nya itu...

...memang udah ada...

...udah ada itunya semua...

...komponen-komponennya ya...harusnya bisa pakai semua...

...pakai Dart aja udah...

...moberes kan...tapi kalau...

...kita butuh sesuatu ya...

...kayak tadi contoh...kayak misalnya...

...Axis Camera... misalnya kita butuh...

...suatu yang agak native-specific ya...

...kita harus tau juga native-nya juga...

...akhirnya yang harus belajar juga gitu...

...ya sebenernya Flutter ini...

...agak unik sih...

...mungkin gue nambahin dikit ya... Flutter ini agak unik sih...

...ya kebetulan kantor gue kan juga...

...ini ya...

...berlakon agnostik juga ya gitu ya...

...jadi kita punya Flutter-nya juga...

...oh bahkan ada Flutter-nya...

...dalam native...

...gitu...

...ya bikin...

...ad module dia...

...on top of native gitu...

...flutter module on top of native ya...

...itu bisa dilakukan oleh Flutter...

...ya sebenernya...tadi...

...ada cross dan cons-nya sih...menggunakan cross platform...

...tadi ya...

...salah satu cross-nya...

...cons-nya itu sebenernya ya...

...lebih ke app size...app sizing...kalo dari...

...segi performance...

...gue sejauh ini sih...

...belom pernah melihat...

...ada lack of...

...performance issue di Flutter juga...

...gitu...

...dan mirip lah dengan Android...tapi...

...ketika dicampur...gitu ya...

...jadi...lu udah punya aplikasi native...

...tapi ada beberapa screen mau diflutterkan...gitu...

...nah disitu masalahnya...

...muncul...karena...

...flutter engine itu kayak harus di...

...apa ya...dipanasin gitu loh...

pasangin dulu sebelum ini kayak lu manasin mobil baru bisa lancar. Sebenernya sekarang udah ada beberapa improvement sih di platernya jadi apa ada yang bikin catch engine segala macem lah gitu tapi ya tetep ada sepersekian millisecond tuh yang bikin lu lag gitu untuk masuk ke screen tersebut gitu sih.

Oke, diluar performance katakanlah native sama flutter dalam hal ini, itu gimana dengan developer experience?

Dari segala masalah developer experience itu ini menyangkut juga pertanyaan waktu gue jadi pembicara di Droidcon kemarin di Singapura ya. Jadi pas satu sesi panel itu pertanyaannya kena banget gitu.

Buat lu sebagai developer lu nanti betting kemana nih apakah ke native ke cost perform gitu ya atau ke BWA gitu kan. Terus kalau gue jawabnya sebetulnya langsung ya gue mau posisikan diri gue berasal dari perusahaan consulting yang kita ngeliatnya lebih depends on gitu ya kan.

Karena kalau lu berbicara masalah software engineering is about trade off gitu kan. Dan gue balikin lagi gue ke fitrahnya gitu. Ketika lu menhadapkan dengan case gak semua tools itu bisa jadi silver bullet.

Tergantung lu punya waktu seberapa banyak, scalability test aplikasi yang lu deliver seperti apa dan trade off dan konsekuensi apa yang lu mau minimize gitu kan secara resiko.

Nah kemarin gue bilang bahwa kalau gue buat sebagai software consulting company kita mau posisikan semuanya kita siapkan. Itu kita ngebalikin lagi bahwa mereka tools yang kita mau berperang itu kita banyak senjatanya gitu ya.

Bila musuhnya pake ini gitu ya customer minta ini oh kita ada nih gitu ya oke siap. Tapi balik lagi ketika kita nentukan ngasih solution ke customer kita walaupun kita sangat-sangat opportunity kita bisa semua gitu.

Depend on your risk case apa. Kalau misalkan kita kasih pertimbangan X kita sudah punya takaran yang kenapa harus X itu. Dan pada akhirnya balik lagi bahwa gak sesederhana kita bilang oh ini pakai platter, oh ini pakai native, oh ini pakai RN, oh ini pakai KNM gitu.

Gak sesederhana kita nyebut ini tapi ada pertimbangan-pertimbangan yang sampai akhirnya kita punya konkursi oh ini kayaknya bagusnya buat ini buat perusahaan ini.

Oke. Case by case basis ya? Ya case by case basis ya. Makannya kalau misalnya kalau misalnya mau pakai JPEG Compost wah keren ya tapi itu tadi ada satu hardware yang gak support maksudnya itu gimana sih Android nya masih awal sama.

Kalau banyak perusahaan sama hardware itu makin udah ratusan device yang susah juga.

Iya itu ya jangan pernah bikin receiver banget. Nanti ya software engineering bisa buat track off, time kita gak bisa ini. Bagus sih kita punya banyak opsi lah intinya kita harus bersyukur kita punya banyak opsi.

Mau ada platter, mau ada KNM, ada native programming ya itu. Berarti balik lagi ke target user nya ya berarti ya. Target user dan kebutuhan.

Kebutuhan mau bikin apa lah gitu. Ya kebutuhan dari siapa yang ngasih lu. Harus pake hardware yang khusus berarti harus mengikuti yang bisa di hardware itu apa gitu kan.

Kalau misalkan nanti target user nya misalkan iPhone 14 ke atas ya pake flutter mau pake react native aman-aman aja kayaknya gitu kan.

Iya. Tapi kalau misalkan iPhone middle, middle end ke bawah kita harus menyesuaikan juga gitu kan.

User gak bakal ngeliat lo, lo makin apa gitu ya. User gak bakal ngeliat lo aplikasi lo makin apa.

Gini user Indonesia tuh paling simple bus, selama aplikasi lo stabil, selama aplikasi lo bisa fulfill kebutuhan mereka, selama aplikasi lo bisa deliver for you mereka udah happy.

Mereka bukan titik user yang harus oh kasih UI yang catchy, kasih animasi yang luar biasa. Kurang satu dik.

Kurang satu dik. Dan selama tidak ngabisin storage lo. Nah gini balik lagi deh kenapa gue bisa bilang kayak gitu, gue merujuk aja dari aplikasi BC ya, lo liat aplikasi BC.

Oh iya. Gak perlu lo ngenampilin sesuatu yang cantik, cemek, animasi bagus, delivery experience nya bagus, tapi lo liat disitu, semuanya fulfill sama mereka.

Funksional, functional, functional, functional, functional. Very pragmatic, but delivered.

Gitu dan stabil, delivered Indonesia itu. Ok guys gue harus berapap, terima kasih.

Dan yang paling penting, thank you, thank you Siddy. Dan yang paling penting tadi storage sih. Kenapa storage? Karena beberapa orang, gue pernah interview beberapa orang gitu ya.

Mereka tuh kadang-kadang sebel Indonesia tuh apa-apa dikit-dikit aplikasi. Mau beli bensin pakai aplikasi.

Iya bener. Mau perpanyakan paspor pakai aplikasi. Masih masing-masing badan merita punya aplikasi sendiri.

Punya. Sekarang aja ya bang, banyaknya yang udah tutup web. Maksudnya udah rencana mau tutup web aksesnya ya.

Iya, dan arahnya mau ke super F semua gitu kan. Sebenernya di satu sisi bagus, tapi di sisi lain tuh ada beberapa user yang mengeluhkan,

ya device-device WoN itu kan storage-nya kan kecil ya. Iya, 32GB diisi foto video. Video sama video TikToknya mereka ya abis dong.

Abis ya. Iya. Padahal kita perpanjang paspor cuma 5 tahun sekali ya harus install aplikasi gitu ya.

Kenapa? Itu abisnya PWA. Maksudnya make sense, yang lebih make sense. Iya.

Jadi sebenernya use the right tool on the right decision atau on the right, apa ya, business use case lah gitu.

Jadi kalau misalkan yang butuhnya cuma sekali tahun muncul atau 10 tahun sekali muncul ya mendingan PWA.

Google Form doang. Iya, mendingan Insta-App aja gitu kan. Mendingan Google Form aja. Iya.

Lebih campan lagi. Iya, kadang-kadang suka mempersulit diri sendiri sih ya. Iya.

Oke, oke, oke. Nah ini ada pertanyaan menarik juga nih dari Dewang Poro, tapi kita nggak bisa jawab.

Tapi nanti kedepan ini. Iya ini harus jadi Flutter. Kita undang lagi ya. Betul, betul, betul.

Soalnya kita agak-agak buta dia, apalagi yang back-end ya. Iya.

Iya. Oke. Nah ini ada pertanyaan yang menyulut nih.

Flutter udah kena pick-like. Pernah itu. Kamu bisa dong jawab.

Ini susah re, ini antar-antar. Iya. Cuma nggak mau berkomentar.

Mungkin Andrew mau komentar. Ya itu, gue selalu jawabannya diplomatis saja lah.

Tadi kita udah kayaknya udah, kalau ditanya komparasi gini kita bilang tergantung use case,

tergantung skill ya. Kalau udah punya, memang udah, udah background-nya reaktif ya.

Dan merasanya lebih oke ya. Betul, betul. Mendingan kesana gitu kan.

Iya, kalau si Dick tadi kan dia menyelesaikan sama klien juga kan. Sama resource yang kita punya di kantor.

Resource bener. Iya. What works daripada nanti tim itu suruh satu tim, suruh belajar Flutter.

Terus akhirnya, padahal projeknya cuma buat bikin sesuatu yang agak sih. Tapi gue pernah punya pengalaman sedikit nih ya.

Gue cerita sedikit pengalaman ada developer web yang beralih ke mobile.

Nah terkadang tuh mindset-nya sih sebenarnya harus dibentuk pertama mindset.

Jadi lu mau pake Flutter kek, mau pake React Native, kan ujung-ujungnya lu bikin aplikasi untuk mobile.

Nah dari segi navigasi antara mobile dengan web itu udah jelas-jelas beda.

Tergantung platformnya ya. Kalau Android ada back, home, dan task manager.

Kalau si iOS cuma home doang gitu kan.

Nah sedangkan yang web kan cuma ada tombol back, forward, sama tambahan close doang ya.

Kalau nge-close web gitu kan. Ya. Dan dari segi...

Ya, dan dari segi apa, routing ya. Routing navigasi antar menu gitu.

Itu juga sebenarnya mindset-nya beda. Jadi sebenarnya gini sih, yang paling penting adalah lu mau pake Flutter atau React Native.

Itu mindset untuk menge-develop aplikasi mobile harus pake mindset mobile.

Jadi kalau misalkan open screen gitu ya, dari sini larinya kemana.

Terus misalkan ada list gitu list of menu jangan didesain pakai table.

Kan aneh dong. Table beneran. Kalau di web kan table beneran ya.

Oke lah gitu. Masa jadinya table juga gitu di Native kan aneh.

Terus misalkan navigasi ini routing antara dari home kemana gitu.

Nah itu dulu ada pengalaman lucu di situ. Jadi dia pakai Flutter atau React Native, gue lupa.

Tapi cara routingnya itu routing yang web gitu. Jadi pakai di-cling, di-slash, slash, slash gitu.

Ya itu aneh sih kalau tiba-tiba masuk ke mobile.

Ya kalau yang pengguna apa, yang mau menggunakan Flutter atau React Native.

Bahkan antara iOS sama Android aja itu UI/UX-nya berbeda kan.

Itu harus masing-masing, harus diperhatikan juga desain guideline-nya kan, kalau nggak salah ya.

Betul, desain guideline-nya.

Karena ada icon-nya di bawah lah, icon-nya di atas, di sebelah sini.

Ada nodes-nya.

Iya. Walaupun codebase-nya mungkin ya dibilang start-up vision sama nggak ya.

Mungkin ada kondisi, ada perbedaan sedikit lah gitu.

Dan itu harus menggunakan masing-masing platform gitu ya.

Termasuk juga web gitu. Jadi kalau misalkan desain aplikasi web,

ya dipikirin juga apakah perlu ada back button-nya atau gimana.

Karena di browser, ya ada back button gitu, jadi kita nggak perlu bikin lagi gitu kan.

Walaupun multi platform ataupun cross platform, masing-masing platform harus kita perhatikan secara mendetail juga.

Oke berikutnya, nah ini panjang juga nih.

Misalkan sudah dihadapkan dengan Android Native, terus dari tim product minta develop iOS.

Apakah keflutter atau crime m? Kalau sudah ada Android Native, mendingan crime m kan?

Waduh jawabannya diplomatis lagi nih jatuhnya nih.

-It's depends. -Siapa dulu nih?

-It's depends ya. -Always depends.

Oke-oke. Kalau gua gini, depends-nya ini benar konteksnya mungkin agak sedikit real ya.

Jadi kalau aplikasi native lu yang di Android ini fiturnya sudah terlalu banyak gitu ya.

Ya jangan di rewrite ke flutter juga sih, karena kan mau nggak mau lu harus melakukan dari awal lagi.

Iya kalau misalkan dokumentasi lu lengkap.

Kalau engineering spek lu mencar-mencar kemana-mana, pusing dong gitu kan, lu rewrite lagi ke flutter gitu kan.

Mendingan nulis langsung nulis swift aja.

Iya mendingan langsung nulis swiftnya aja gitu kan.

Kalau mau jadiin KMM ya paling pindahin dikit-dikit bisnis logicnya ke kotlinbase gitu kan.

Dan si sign, si presentation layer-nya tetap pakai native-nya, Android pakai jtcompose-nya, si iOS ya pakai swift UI-nya gitu kan.

Gitu sih, tapi kalau misalkan aplikasi lu itu scope-nya masih kecil ya, let's say aplikasi curut gitu ya.

Update-relate doang gitu kan, bikin foam, iya baru 1-2 screen gitu.

Ya udah lu rewrite aja ke flutter gitu kan, berarti kan baru 10% matem lah ke market kan gitu.

Masih coba apa sih namanya kalau di startup itu, misalnya tahap MVP ya, atau validasi, masih tahap validasi gitu.

-Product market fit? -Ya product market fit atau validasi market gitu kan.

Ya udah, kalau masih ditahap itu ya lu rewrite aja ke flutter gitu, nggak ada salahnya sih.

Masih relate dengan KMM juga ini, banyak yang tertarik sama KMM. Apakah akan mengadakan swift?

-Mau jawab dulu, silahkan. -Oh iya, silahkan.

Nggak, sama sih. Maksudnya kan tadi gue kenapa bilang KMM juga atau mungkin ya tergantung ya, karena kan kalau tadi skenario aja berarti udah ada Android app yang jalan.

Nggak ada Android app ya.

Tadi kalau kepikiran misalnya Android app yang udah gede banget, udah feature-feature udah banyak, tiba-tiba harus rewrite ulang ya sama kayak tadi si Budi bilang.

Gitu kan, bakal waste of time gitu kan. Mendingan bikin satu lagi udah iOS aja udah bikin kan. Atau pelan-pelan ya memang business logic atau...

-Factor belakangan. -Ya memang itu bisa kita mulai bikin jadi satu, tapi presentation layer-nya beda gitu kan.

Ya jadi sih, gitu sih. Jadi Flutter ya tergantung tadi kalau masih kecil ya bener ya kalau mau memang, tapi dan nggak butuh terlalu scalable, karena memang udah pasti kita pengen udah sampai sini aja dulu ya udah Flutter.

-Yaudah, Flutter. -Ya, oke.

-Kalau ini? -KMM apa?

-Apakah ada... -Tadi kayaknya udah ada jawab, jadi kayaknya masih datang.

-Nggak jawabannya tidak. -Nggak sih, nggak sih, nggak, nggak, nggak ganti.

Ya bener, karena presentation layer-nya tetap pakai masing-masing.

Ya kecuali, sebenarnya ada satu sih, ada satu mungkin om Rizan nanti boleh googling, ada namanya Jetpack Compose for Desktop atau Jetrace Compose gitu.

Nah itu sebenarnya kayak Jetpack Compose perjuangan versinya Jetrace. Bener nggak sih?

Ya, jadi memang Jetrace juga lagi pelan-pelan bikin UI Framework yang bisa jalan di multi-platform.

Tapi gue nggak tahu masa depannya gimana, karena kayaknya antara serius-jak serius gitu ya, gue ngeliatnya kayak belum ada perkembangan ke arah sana.

-Ini ya? -Si.

-Yes, gitu. -Oh, buat bikin aplikasi desktop ya?

Ya, goals-nya sebenarnya mau jadi kayak UI Framework per multi-platform.

-I see. -Jadi bisa desktop, bisa web, bisa macem-macem lah, bisa mobile juga.

Bisa ke mana aja nanti ya, tergantung itunya ya, tergantung...

Tergantung tujuan platform-nya ke mana ya.

Ya, tujuan platform-nya, kalau ini diseriusin ya mungkin tadi bener pertanyaannya, bisa digantiin seriusnya nanti, gitu.

Oke, oke, oke, siap. Pertanyaan berikutnya, kita masih ada beberapa pertanyaan.

Pertanyaan general, generalis atau spesialis, ayo.

Agnostik atau beriman sama satu bahasa, gitu.

Kalau kita ngomong dari pengalaman ya, mendingan di awal-awal mungkin kalau masih belajar, mendingan jadi generalis gak apa-apa.

-Karena kita bisa belajar sebanyak-banyaknya, gitu ya. -Betul.

Kayak dulu ya kita develop ya, apa aja kita develop.

Maksudnya pas belajar, gue pertama kali di college ya dulu dot-net lah, ya kan.

Terus akhirnya kayak C# sih, lebih seriknya misalnya kan.

Terus abis itu IOS ke Java, ya ini kalau kita ngomong language ya.

Maksudnya ini banyak sih spesialis, generalis kan bisa macem-macem ya.

Tapi ya anggapnya kalau kita belajar platform aja lah.

Kalau misalnya kita mau belajar banyak hal, kalau masih memang masih muda ya.

Masih, kalau udah tua jangan, kalau bisa jadi spesialis sih.

-Tapi kalau masih itu... -Masi muda. -Masi muda, masih punya tenaga, jadi generalis boleh aja gitu.

Karena kita bisa minimal, bisa tau wawasan kita, jadi luas juga kan.

Peluang juga lebih banyak kan.

Kalau misalkan kita terlalu mengotak-otakan, "Wah saya anak Android."

Tiba-tiba ada keluhungan IOS, kita gak bisa gitu.

Jadi kalau kita bisa semua, ya udahlah ambil aja dulu gitu kan, belajar sambil jalan.

Tapi kalau terlalu generalis terus, gak pernah jadi spesialis juga...

Kayak gue jadinya.

Resume kita semua bisa ya, dari Photoshop semua bisa ya.

Photoshop, Word semua bisa.

Oh jangan sampe ke situ lah.

Bisa itu perbaiki AC.

Kita masukin aja, Adobe Premiere bisa juga.

Kalau di luar skop, jadi software engineer bagi jadinya generalisnya jadinya.

Bisa bersih-bersih juga kantor, boleh poh.

Mau masak.

Gimana Mas Wood?

Ya kalau gue sih sebenernya kebalikannya Andrew kali ya.

Jadi tadi kalau Andrew ceritanya, pertama jadi generalis gitu kan.

Apa aja di palugada.

Kalau gue kayaknya dulu waktu karir tuh spesialis, jadi spesialis ke backend doang.

Terus habis itu bosan baru ke ini, mobile dan lain sebagainya.

Malah kebalikannya gue dari spesialis ke generalis.

Ya gak salah juga, bener.

Harus tahu semua ya.

Tergantung target, goalnya mau jadi apa.

Kalau generalis kan sebagai MC anggap jadi CTO ya kan.

Ya harus tahu.

Ya itu jadi platform agnostik.

Ya gitu bisa juga.

Karena jadi kayak platform agnostik kan.

Sebenernya tadi gue pengen bahas satu hal sih.

Banyak orang tuh yang kayak, ya ini kan pembahasan kita apa versus apa gitu kan.

Selalu kayak ada yang fanatik di satu hal gitu.

Kenapa lu gak jadi agnostik aja belajar semuanya gitu.

Kenapa, pertama keuntungan jadi agnostik itu adalah

Lu bisa menikmati semuanya.

Dan lu bisa tahu kelemahan, kekurangan dari masing-masing tools.

Dari masing-masing language.

Jadi lu bisa pakai, tadi kalau kata Sidip gak ada silver bullet gitu ya.

Jadi lu bisa pakai tools untuk berbagai kebutuhan.

Terus yang kedua, being agnostik itu enaknya adalah

Kalau misalkan lu lagi kesel sama satu platform.

Lu bisa ngecegin aja sih.

Jadi keuntungannya tuh jadi kayak

Daripada lu harus nyari cross platform atau multi platform yang paling baik.

Kenapa gak belajar dua-duanya supaya diri lu lah yang menjadi multi platformnya gitu.

Atau seorang pelaku agnostik gitu.

Tapi intinya jadi gak ada salah bener spesialis generalis yang mana dulu.

Yang penting jangan jadi ekstrim ya.

Jadi ekstrim generalis sama ekstrim generalis.

Nah, ekstrim itu.

Itu kan yang penting ya.

Maksudnya kita sudah experience pasti sama.

T-shape gak sih?

T-shape kan ada istilah bentuk skill kita tuh kudu kayak huruf T.

Jadi satu bagian yang mendalam di satu area ya makin lebar makin bagus kan yang lurusnya.

Nah yang kesampingnya itu kita harus bisa connect sama apply skill kita ke bidang-bidang lain.

Atau minimal kita bisa kerja bareng.

Kita cukup tahu buat kerja bareng sama orang-orang yang di bidang-bidang lain.

Itu harus se-lebar mungkin.

Makanya kita ada gd-web dan gd-android kan.

Kita jadi biarpun kelihatan.

Tapi kita harus gabung tetap kan.

Kita bisa komunikasi, kita tentu disusing.

Walaupun kelihatannya kita berantam, di luar kita berantam beneran.

Enggak ya.

Waduh, waduh, waduh.

Gak, gak, gak.

Ketauan deh.

Bahkan kita juga, ini di luar teknis ya.

Maksudnya kita belajar backend, front-end dan lain-lain itu kan generalis spesialis.

Kadang-kadang kita sebagai orang teknis juga di inkurasi untuk belajar bisnis kan.

Karena, misalkan, kita mau jadi entrepreneur, misalkan.

Kita harus tahu gimana cara bisnis bekerja, gimana cara marketing, gimana cara ini, cara itu.

Pitching sama calon klien ngomongin API, kliennya ngantuk.

Betul banget.

Betul banget itu. True story.

True story.

Oke, oke, oke.

Nah, ini yang tadi ya.

Oh, ternyata ini beneran ya.

Aduh, ini mana yang dibawa adik?

Oh, ini tadi ya tadi. KMM, KMM.

Oh, waduh.

Ini real case ya.

Kata Andrew.

Kata, jadi Android begini loh.

Mana panggil sih ini?

Waduh, gak dipanggil.

Tolong nanti hasil akhirnya, tolong nanti di comment lagi ya di episode berikutnya.

Saya pengen tahu tadi gimana.

Berhasil atau gagal.

Oke.

Ini ada pertanyaan yang jawabannya singkat.

Apakah performanya sama seperti develop native?

Tidak.

Permungkinan berbeda.

Waduh, waduh.

Waduh, waduh, waduh.

Ini nenek moyangnya dari

Roast Flutter.

Maka tadi itu udah mau bahas-bahas sedikit sih tadi.

Maka tadi itu udah mau bahas-bahas sedikit sih tadi.

Kan udah tadi ngomong performa Flutter itu.

Kan kalau Flutter udah gak terlihat lah ya.

Udah kayak ini.

Ya.

Hybrid kita lewati gak hybridnya?

Ya.

Ya.

Ya kalau bikin ini dipake

di HP yang low-end seperti Xiaomi

sih sebenernya bisa jalan.

Splash screennya doang maksudnya.

Bisa jalan.

Yang lain force close.

Iya.

Memang support-support masih ada.

Masih masih ada.

Ionic pun masih ada.

Bahkan beberapa bank

lokal kita masih ada yang pakai Ionic.

Oh iya.

Saya paham sekali bang.

Saya paham sekali.

Mungkin bisa disebutkan

initialnya. Oh jangan-jangan.

Jangan soalnya saya kaper di sana.

Wah jelas bingung ini.

Wah ini menarik nih.

Harusnya kita tanya Sidik tadi ya.

Tapi

gue kayaknya bisa bantu jawab.

Oh boleh, silahkan.

Tapi ini nanti bisa dikoreksi langsung ke Sidik ya.

Jadi

dia tuh ada kayak tim yang

ngurusin core experience-nya.

Halusnya core experience ya.

Jadi bagian core itu yang kayak business logic-nya

itu tim sendiri.

Nah tapi core ini end-to-end.

Jadi back-end yang

microservice-nya,

terus back-end yang si

mobile-nya itu jenis satu

tim core experience-nya dia.

Terus yang

tim, apa ya namanya?

Gue lupa namanya tim Sidik itu

yang depan itu. Pokoknya kayak

front-liner gitu.

Nah dia bagi dua gitu.

Jadi ada yang core, core experience

sama yang front-liner-nya.

Frontier gitu lah.

Ya, bisa kayak gitu sih.

Tapi nanti ikon firmasi lagi aja.

Oh, berarti formasi tim-nya

agak berubah berarti ya?

Berubah, berubah.

Jadi yang tadinya Android

itu ujung-ujung gitu kan.

IOS ujung-ujung. Ini Android

yang bagian depan sama IOS bagian depan itu

ada. Terus yang share

module tadi nih.

Iya, itu yang

yang megang share module itu

tim-nya beda sendiri.

Apakah dengan

mengadopsi KMM ini

kita bisa

apa ya,

membuat tim yang lebih lean,

lebih ajar, maksudnya lebih sedikit

jumlah ini-nya,

anggotanya, atau

sebenarnya sama-sama aja.

Tambah tapi reshuffle atau gimana?

Iya, tambah tapi reshuffle atau

bisa, bisa. Atau sama-sama.

Sampai mengurangi gitu.

Maksudnya lebih efisien lah, gitu.

Lebih efisien kan ya?

Iya. Gimana ya?

Terus jalan sih, abis itu bisa ya. Kayak kan

BluTone-nya udah sharing kan.

Tinggal presentation akhirnya ya

sendiri-sendiri.

Sama ada...

Kalau bisa ada execution dengan baik ya, harusnya bisa

lebih efisien.

Dan kalau nggak sangat

di NBS ini,

Sini pernah cerita, dia itu bagi

tiga repo gitu. Mirip sih

sebenarnya dengan di kantor gua.

Jadi ada repo untuk

dua main app gitu,

antara Android sama iOS, dan repo

untuk si mono repo-nya.

Mono repo ini yang send module-nya tadi.

Gitu.

Oke, oke.

Ya, kalau komposisi tim ya,

lebih lean apa nggak,

mungkin jadinya gini sih,

yang tadinya cuma megah Android

doang, dia bisa belajar

iOS dan Android

dalam satu waktu gitu ya.

Jadi bisa di...

bukan merikas juga ya

bahasanya.

Merikas.

Kalau merikas, bahasanya agak sensitif

belakangan ini soalnya ya kan.

Jadi, mengesploitasi,

mengesploitasi,

mengesploitasi...

Serba salah.

Oke, oke, oke.

Oke, oke, oke.

Ya, harusnya...

Ngerti lah ya.

Oke.

Oke, pertanyaan terakhir, karena kita udah satu sejam setengah.

Pertanyaan terakhir, pendapat

teman-teman tentang tampilan mobil

yang makin aneh-aneh.

Layar lipat, Dynamic Island,

gimana tuh?

Kalau di Android,

bakal ada

antisipasi untuk layar lipat nggak?

Udah.

Udah ada.

Super portable udah ada.

Kita yang di web, kesusahan.

Di web malah belum ya.

Kita belum.

Yang nasinya mana, ngadep mana. Mana atas, mana bawah.

Kalau lagi dilipet.

Yang tergantung lipetnya juga ya.

Soalnya flip.

Kayak anggapnya kayak flip.

Itu kan dia dari...

Atas bawah.

Setengah gitu.

Ada kalau yang fold, yang itu kan dia

jadi kebuka.

Jadi masih banyak banget sih, maksudnya.

Secara jenis

fold aja banyak tuh dia.

Sebenernya dasarnya flip itu dulu

ini nggak sih? Dasarnya itu dari RTL nggak sih?

Right to left. Kan dulu

awalnya right to left kan web

juga udah ada si RTL kan.

RTL support kan.

Bisa dikembangin dari situ sih. Tapi nggak tahu sih

di web udah ada atau belum.

Cuma di Android udah ada ya.

Support foldable, namanya

foldable API

gitu sih.

Itu nambah kekerjaan seberapa besar?

Kalau mau support itu.

Secara logik gitu-gitu

udah support itu belum?

Belum sih. Gue belum ngalamin sih.

Apalagi yang istilah

Dynamic Island ini baru banget kan.

Dan itu harus. Kalau yang ini

Dynamic Island setelah gue harus pakai

Xcode bener-bener yang latest.

Versi 14.

Masih jarang yang adopsi itu.

Di bekerja.

Iya. Mau beli

barangnya aja masih belum banyak di Indonesia ya.

Masih reorder.

Ketua.

Oke.

Semakin aneh-aneh ya.

Kalau web lebih susah lagi ya.

Gimana caranya ya? Ya nantilah.

Pasti ada.

To web browser harus support API-nya

dulu ya. Kasih tau dulu.

Kalau multi-screen udah ada. Cuma

kalau flip kan gak tau tuh.

Diitung 2 screen atau bukan.

Oh iya. Pas lagi bisa setengah.

Jadi 2 screen atau pas bukan

betul.

Atau dianggap 1 malah nyambung.

Nah sebenernya kalau web kan

kayak kalau kita google slides ya.

Presentasi, present view kan

bisa 2 macam view kan.

Misalnya yang 1 ditembak

ke apa?

Tembak ke projector.

Itu yang cuma slide-nya.

Tapi kalau di presenter view

bisa ada speaker note sama timer-nya

udah bisa kayak gitu.

Cuma kan itu belum bisa

specifically handle display yang

aneh-aneh itu.

Oke deh. Kalau gitu

pertanyaannya juga sudah habis.

Yang lain, ada pertanyaan-pertanyaan

yang lain mungkin kita jawab

ke lain waktu. Iya.

Karena waktunya juga sudah

overtime. Sudah lewat.

Jadi, terima kasih banyak

buat Andrew, buat Budi.

Terima kasih.

Monas,

kalau ada kesalahan kata ya.

Kali-kali ke depannya

harus ada sensor cepat.

Kayaknya harus ada sensor cepat.

Harus ada tombol merah

kalau saya dikit.

Kali-kali kayaknya kita

recorded aja ya.

Seru lah.

Seru lah ya.

Aduh lucu banget.

Mungkin nanti kapan-kapan mampir-mampir lagi ya.

Di IG.

Terima kasih.

Terima kasih semuanya.

Terima kasih juga teman-teman yang sudah

bertanya.

Jadi, buat

teman-teman yang mau follow-follow

bisa ke mana? Andrew atau Budi?

Akurni.

Akurni.

Akurni.

Oke, all social media

gue semuanya sama.

Pake nama lengkap yang ini ya.

Ditambah huruf S

atau tanpa huruf S, silahkan cari aja.

Ada di Instagram, ada di Twitter.

Tapi sekarang udah pada hebat lah.

Bisa Google, misalnya nama kita juga keluar.

Iya.

Waduh, orang lain namanya sama.

Waduh.

Cari aja.

Budi, Octavian, GDE, Android.

Ya, gitu.

Oke deh, kalau gitu

saya Riza dan Eka, pamit.

Kita ketemu lagi minggu depan.

InsyaAllah. Sampai jumpa.

Bye.

Deskripsi asli dari YouTube

Yuk mari kita diskusi dan ngobrol ngalor-ngidul tentang dunia web. Agar tetap up-to-date dengan teknologi web terkini. Topik, tautan dan pertanyaan menarik bisa dilayangkan ke https://bit.ly/ngobrolinweb Kunjungi https://ngobrol.in untuk catatan, tautan dan informasi topik lainnya.

Episode Terkait

Bagikan:

Suka episode ini?

Episode baru setiap Selasa malam. Dengarkan lewat YouTube, Spotify, atau feed podcast favoritmu.

Pilih Cara Langganan

Memuat komentar dari GitHub Discussions...

Jika komentar tidak muncul karena ekstensi privasi / adblocker, kamu bisa berdiskusi langsung di GitHub Discussions .