Lompat ke konten utama
EP 79

Ngobrolin Buku "Refactoring to Collections"

Ringkasan Episode

Bantu Koreksi

Episode ini membahas buku "Refactoring to Collections" karya Adam Wathan, seorang pengembang yang dikenal luas sebagai pencipta Tailwind CSS. Pembahasan diawali dengan latar belakang ketertarikan Ivan terhadap kode yang clean dan maintainable, di mana ia memiliki prinsip bahwa dalam tim bekerja, setiap orang harus dapat digantikan (everyone is replaceable) dan tidak boleh ada "superhero" yang bergantung pada satu orang saja. Buku ini menarik perhatian karena mengajarkan konsep menulis kode tanpa loop dan conditional statement yang berlebihan, mengarah ke gaya pemrograman yang lebih deklaratif daripada imperatif. Buku ini juga menonjol karena menggunakan contoh production code yang nyata, bukan sekadar contoh "Hello World" atau "Animal extends Dog" yang kurang praktikal. Selain membahas inti isi buku yang mencakup penggunaan higher-order function seperti map, filter, dan reduce untuk mengubah kode menjadi lebih bersih dan mudah dipelihara, episode ini juga membahas topik pembelajaran dari buku secara umum. Para pembicara dan audiens sepakat bahwa buku sangat cocok untuk topik-topik "evergreen" yang tidak cepat berubah seiring waktu, seperti konsep dan pola berpikir dalam pemrograman, berbeda dengan tutorial framework yang sering berubah setiap beberapa bulan. Episode ini ditutup dengan rekomendasi buku-buku lain yang menarik seperti "The Phoenix Project," buku-buku karya Adi Osman, serta "Halo Coding" karya Hilman, dengan harapan episode bedah buku ini dapat dilanjutkan secara rutin untuk meningkatkan literasi dan memberikan perspektif baru dalam pembelajaran pemrograman.

Poin-poin Utama

  • Refactoring ke Collection - Mengubah kode imperatif dengan loop dan conditional bertingkat menjadi pendekatan deklaratif menggunakan method collection seperti filter(), map(), dan reduce() membuat kode lebih mudah dibaca dan dimaintain.
  • Kode untuk Manusia - Menulis kode bukan hanya untuk mesin, tapi terutama untuk manusia (diri sendiri dan tim). Kode yang mudah dipahami mengurangi WTF per menit saat membaca dan mempermudah kolaborasi tim.
  • No If, No Loop - Prinsip Never Write Another Loop mengajarkan menghindari explicit for/while loop dan if-else bertingkat. Sebagai gantinya, gunakan higher-order function dan method chaining yang lebih ekspresif.
  • Everyone is Replaceable - Dalam tim kerja, tidak boleh ada superhero yang bergantung pada satu orang. Kode harus ditulis dengan standar yang memungkinkan siapapun untuk mengambil alih dan melanjutkan pekerjaan.
  • Make it Work, Make it Beautiful - Definition of done bukan hanya kode berjalan, tapi juga kode yang sudah rapi dan refactored. Proses: tulis imperatif dulu (make it work), lalu refactor menjadi deklaratif (make it beautiful).
  • Early Return dan Konsistensi - Teknik seperti early return, satu tipe data return, dan konsistensi code style membantu mengurangi kompleksitas kognitif saat membaca kode.
  • Menulis Kode Hanya 25% - Dari 100% waktu development, hanya 25% untuk menulis kode, 50% untuk berpikir/imajinasi, dan 25% untuk testing. Refactoring adalah langkah penting setelah kode berjalan.

(musik)

(tingting)

Selamat malam!

Hello, selamat malam!

Bertemu lagi dengan kita bertiga di hari Selasa Malam.

Trio web-web Selasa Malam.

Karena Selasa Malam waktunya ngobrolin web.

Udah lama kita gak opening ya, kemarin kemarin kita gak pernah opening lagi.

Masa sih?

Waktu di, minggu lalu?

Udah, udah.

Kayaknya enggak deh, enggak ada ngobrolin web yang janjian bareng-bareng gitu, enggak ada.

Selasa Malam waktu nyobrolin gue.

Hei, ada Adrian, halo, halo.

Waktu itu gue bukan Selasa Malam, gue Selasa Sia.

Iya, oh, udah kembali ya, udah kembali ke...

Udah kembali ke...

Udah selesai, sudah ke ruang kerja.

Ruang, ruang bekerja kembali ya.

Kalau di sana, oleh-olehnya apa ya?

(tertawa)

Mbak Pia.

Mbak Pia.

Mbak Pia, yang pemutin.

Kok mute, Ivan.

Cek sound, cek sound.

Aman.

Apa tadi?

Soalnya aman.

Soalnya aman?

Lihat transkrip lengkap (2053 segmen lagi)

Soalnya bagus.

Oleh-olehnya itu, Baklava.

Oh iya, Baklava itu sana.

Ya kan, Yunani dan Turki masih ya...

Mediterania ya.

Pernah dijajah lah.

Jangan dulu ya.

Pernah dijajah sama...

Pers ya?

Pers ya.

Benar-benar.

Kalau makanan asal itu baklava ya?

Ya, campur-campur lah.

Ada baklava-nya, pastry-nya, ada baklava, ada olive oil, banyak banget olive oil.

Olive oil?

Oke.

Has, yang has sana?

Madu.

Nah itu juga has.

Madunya enak.

Hello Audi, bot-nya belum nyalah, mau di nyalahin bot-nya?

Jangan, nanti rusuh.

Emang ada bot apaan?

Nggak, gue kemarin bikin bot kan buat Pak YouTube chatbot.

Jadi kalau ada yang komentar, dia langsung bales komentar gitu.

Wow.

Tapi langsung 30 dolar.

Selesai live streaming langsung 30 dolar.

Live streaming 2 jam.

Berat.

Karena dia standby terus.

Iya, harusnya dilingit ya.

Request inilah.

Request credit lah, kan?

Iya kan masih credit, 30 dolarnya masih potong credit.

Cuman ngeri juga, kalau sekali live streaming 30 dolar kan.

Cuma kalau bisa, kalau ke depannya selalu nyalah, berat.

Paling di random, kalau ada yang komen, di random dulu 1-10 kalau dapat nilai sekian gitu kan.

50 persennya dibales, 50 persen nggak dibales misalkan.

Iya, tiap 15 minit sekali, suruh baca semua komentar.

Terus tering aja satu yang perlu dibales.

Akal-akalan.

Biasanya mati lagi, tidur lagi 15 minit.

Kalau sekarang masih manual, dimatiin dulu.

Nanti kalau misalkan udah diskusi, kita nyalahin lagi.

Oke, jadi seperti biasa malam hari ini kita akan ngobrol santai.

Dan malam hari ini agak berbeda ya.

Ada seri baru.

Kita coba apa ya?

Bukan topik ya.

Kita explore.

Kategori topik baru.

Yang sebenarnya udah cukup lama kita pengen bahas.

Tapi baru kesampaian sekarang.

Mudah-mudahan nanti setelah ini ada buku yang menarik yang bisa kita bahas.

Dan malam hari ini kita akan bahas salah satu buku yang favoritnya Ivan ya.

Mungkin boleh diceritakan dulu, latar belakang.

Kenapa dulu memilih untuk membaca buku ini.

Mungkin bisa buka websitenya kali ya.

Kan ada landing page-nya dia kan ya.

Faktoring to collection-nya si Mas Adamuatan.

- Mas Adamuatana. - Ya jadi justru seri ini kita bedah buku ya.

Kalau bisa sih.

Berharapnya ke depannya kita juga gantian buku yang kita masing-masing suka.

Sama temen-temen di chat kalau ada yang punya buku favorit.

Mungkin misalnya buku ini bagus banget.

Bikin issue aja di GitHub ya.

Bikin discussion deh.

Ya jadi saya suka, maksudnya waktu pertama kali lihat buku ini,

"Wih kok keren."

Maksudnya saya suka dengan kode yang clean.

Clean dan bersih.

Suka dengan kode yang bisa di-maintain.

- Jadi nggak perlu... - Nggak ngerepotin orang.

Dan nggak ngerepotin diri kita sendiri.

Saya punya prinsip satu, kalau kerja dalam tim,

itu prinsip utama saya semua orang harus bisa di-replace.

Termasuk saya.

Everyone is replaceable caranya ya.

Jadi saya nggak mau tim bergantung dengan saya

atau saya bergantung dengan seseorang gitu.

Atau biasanya super hero.

Saya nggak mau ada super hero yang di dalam tim.

Biasanya bentuk tim itu seperti itu.

Jadi tercermin ke dalam bentuk kode-kode yang saya pekiakan.

Sebisa mungkin kodenya gampang di-maintain ya.

Mungkin nggak mesti super clean code.

Apa bahasanya ya?

Kayak bukan clean code trick gitu.

Cara clean code gimana nggak.

Tapi yang penting bisa di-maintain.

Jadi kalau misalnya saya baca kodenya itu mengerti.

Dan mudah dipahami.

Dan bisa saya lanjutkan kalau ada bug.

Contohnya.

Salah satu basicnya saya kalau dalam menulis kode itu pertama early written.

Kedua, less conditional dan less looping.

Kalau bisa loopingnya di higher order function yang kita bahas.

Indah.

Jadi tetap ada tetapi nggak kelihatan.

Caranya berbeda.

Di abstraction.

Iya.

Dan salah satu.

Dan begitu saya lihat buku ini.

Never write another loop again.

Woh, langsung.

This is it.

Saya suka banget kode yang tanpa if dan tanpa loop.

Jadi itu konsepnya.

Nah.

Dan siapa yang nggak tahu Adam Wetan?

Siapa yang nggak tahu Adam Wetan?

Dari dulu kiprahnya di dunia persilatan.

Sudah cukup terkenal.

Tapi buku ini setelah dia mengeluarkan Tailwind atau sebelumnya?

Tailwind, sebelum, jauh.

Sebelum kan, jauh kan.

Nah itu malah tadi lumayan surprise juga.

Lihat lho, ini kan mas-mas Tailwind.

Tiba-tiba ngomongin functional programming.

Wow.

Ini jauh sebelumnya.

Nggak mendorongin dia.

Ternyata track recordnya dia itu juga ya.

Produktif dan versetil.

Kayak bukan soal CSS library doang.

Saya beli buku ini 2019 atau 2018.

Jadi sudah 6 tahun yang lalu.

Tapi ilmu yang saya dapat dari sini masih terus saya pakai dan konsep berpikirnya.

Ini evergreen lah.

Evergreen.

Ini topik-topik yang kayak gini yang cocok sekali dijadikan konten, evergreen.

Terutama konten programming ya.

Karena ke programming kalau kita bikin tutorial Laravel atau Express atau apa-apa.

Next.js routing.

Setiap tahun next.js routing berubah.

Setiap 6 bulan sekali harus update kan.

Kalau yang evergreen seperti ini itu long-lasting.

Jadi ya update-nya nggak perlu sering-sering.

- Ya mungkin butuh ada revisi. - Karena ini ajarin cara berpikir.

Ya sinteksnya kan bisa aja berubah setelah beberapa tahun atau sinteks berubah.

Tapi tadi sih dari hasil skimming sekilas doang.

Mungkin nanti event bisa lebih deep dive.

Ini kan yang diajarin mental modelnya atau cara berpikirnya.

Apa yang perlu di abstraksi.

Biar di fungsinya pas kita panggil tuh nggak banyak loop, nggak banyak kondisional.

Kayak apa aja yang harus di abstraksi dan level-level tingkat-tingkat abstraksinya gimana.

Nah itu kan awet ya.

Maksudnya walaupun meta framework berubah, sinteks bahasanya berubah tetap bisa dipakai.

Ya, jadi mungkin si Mas Adamuatan ini kan terkenal di dunia UI dan CSS kan ya.

Tapi sebelum itu dia lumayan, dia bertumbuhnya di komunitas PHP ya kalau nggak salah ya.

Ya, ekosistem Laravel kayaknya ya.

Laravel, dia Laravel.

Laravel ya.

Dan dia juga sempat yang saya lihat itu pernah lihat trailernya itu dia bikin screencast tentang test driven development pakai Laravel.

Itu juga menarik.

Terus sama buku ini dan kemudian setelah ini baru dia bikin buku yang namanya Refactoring UI.

Nah dari situlah muncul inspirasi untuk Tailwind kalau nggak salah.

Jadi dia bikin buku, judulnya depannya kudua Refactoring ya.

Refactoring to collections, Refactoring UI.

Ya, ntar lagi dia bikin buku Refactoring Yourself, buku itu soft skill.

Self development, motivasi.

Motivasi.

Dia jadi motivation speaker itu loh.

Nah selanjutnya mau bedah bukunya atau mau intisarinya.

Karena saya pernah bikin presentasi untuk intisarinya.

Oh boleh.

Kalau ngeliat sekilas dafarisinya itu sangat fungsional sekali ya.

Ini boleh dilihatin.

Sangat mudah dipahami.

Saya baca ini ya. Nggak sampai 3 jam saya baca ini, selesai.

Habis gitu.

Iya.

Berarti bikin ini dong, bikin penasaran gitu.

Sampai kita bisa nerapin kan tetap butuh waktu kan ya.

Iya.

Maksudnya kalau cuma ngapain buku kan cepet.

Cuma pas kita nerapin dikodingan kita sendiri kan,

mesti mikir dulu buat apa, nge-matching apa yang diajarin di sini kan.

Betul.

Ya kan kayak imperative, declarative kita udah pernah bahas.

Higher order function juga udah pernah bahas.

Map filter reduce juga udah bagian dari fungsional programming.

Padahal sebelumnya kita bahas OOP ya, episode sebelumnya.

Terus yang bagus itu transforming data itu loh, thinking in steps.

Oke oke oke.

Langsung habis itu praktek.

Kalau beli paketnya, itu sekalian ada screen casenya juga dia ngajarin.

Iya ada videonya ya, jadi yang kita dapat itu ada view the package.

Ada 2 paket, ada yang mau bukunya saja, atau yang mau...

Ada yang premium.

...screen casenya, jadi saya beli yang atas.

Ada yang plus, ya plus buku.

Dulu nggak semahal ini loh.

Dulu nggak semahal ini, karena...

Ya kan setengah harga naik.

Selasa ngobrolin.

Bukan, dulu itu ada purchasing parity-nya di Gumroad.

Jadi saya dapat disk-nya 60%.

Itu di-click kayaknya ke Gumroad deh.

Dan saya dapat purchasing parity 60%.

Ini enaknya tinggal di negara dunia ketiga ya.

Tapi udah nggak ada purchasing parity lagi ya?

Iya mungkin, nggak tau ya.

Dulu saya beli yang murah kok.

Jadi saya beli dulu ini bukunya.

Kalau buku punya doang berapa nih?

39 ini ya kalau buku punya doang, 39 dolar.

Dan itu pun di-score 60% karena purchasing parity.

Eh belum tentu, sekarang masih apa nggak?

Nggak, masih pasang duit.

Oh Ivan, beli yang mana?

Yang paling atas.

Oh paling atas, yang paling mahal ya?

Iya.

Tapi karena dulu nggak semahal ini.

Iya, iya, iya.

Nggak 2 juta juga.

Nah, yang menarik lagi dari buku ini adalah yang saya lihat ya.

Ini nih, ada source code yang sudah di jalan di production.

Itu kan agak apa ya, berbeda unik gitu.

Maksudnya nggak semua buku bisa menyediakan itu.

Kadang-kadang buku atau tutorial kan cuman contohnya,

contoh apa ya, contoh dummy gitu loh.

Bukan contoh yang production code gitu.

Iya, contohnya Hello World atau biasanya Restoran.

Kita kemarin sih yang OOP itu kelas semua contohnya animal, dog, plus cat, extent, animal.

Kurang praktikal gitu.

Kalau ini kan ada contoh dari production code gitu kan,

kita bisa lihat juga code yang delete-nya seperti apa,

terus direfactoring jadi bagus.

Yang menerapkan apa hal-hal yang diajarin di buku ini.

Itu yang mahal menurut saya.

Mencari code production yang tidak terlalu bagus,

kemudian bisa direfactoring.

- Itu dia bikin sendiri kali. - Oh iya, bisa jadi sih.

Dia yang bikin cuma dengan pola pikir yang diajarin di situ.

Cuma itu juga menarik sih.

Sekarang gue jadi tertarik dari segi content creation-nya.

Dia ngajarin suatu konsep, kan dia nggak ngajarin sintaksinya sendiri ya?

- Dia lebih ngajarin konsep. - Dia ngajarin konsep cara berpikir.

Sampai bisa jadi production code.

Nah, itu yang mahal.

Itu yang mahal, betul.

Boleh, Ivan langsung summary?

Summary, summary.

Intisari, enak nih.

Kita nggak perlu baca ya, perlu tetap ya.

- Bisa baca nanti. - Bisa baca nanti.

Cuma kisi-kisinya dulu.

Entire screen aja lah ya biar simple hidup saya.

Share.

Bahkan dulu saya masih di-ten up waktu masih ngasih topik ini

dan di PHP Indonesia.

- Oke. - Itu masih ke-biasaan sekarang?

Masih.

- PHP Indonesia masih. - Masih, masih.

Oke.

Pertama, tentunya saya kasih gabar spaghetti code.

Topiknya tentang bagaimana mengubah kodonya menjadi lebih baik.

Kalau refactor into collection topiknya,

mungkin pada nggak ngerti, tapi kalau saya ngasih kata clean code,

orang lebih mudah memahami.

Langsung ada bayangan.

Spaghetti code biar nggak ruput ya, biar nggak ruput.

Terus saya kasih contoh, ini production code ya.

Yang pernah saya pakai dan yang nulis tim saya.

Bentuknya begini.

Oke, kita baca pelan-pelan ya.

Ini saat itu yang nulis seorang senior di perusahaan yang saya pimpin.

Dan dia menuliskan sebuah function untuk mengambil value sesuatu

dari scraping bahasanya, dari sebuah bank.

- Dari web? - Untuk web bank.

Yang untuk mengambil saldo kalau sudah dibayar apa belum.

Jadi dia masukin username, password, submit, dapet saldo, diambil gitu ya.

Ya betul.

Dan yang dia lakukan seperti ini.

Di dalam mungkin ada core blablabla di sini ya.

Masukin form, input, blablabla gitu ya.

Terus output-nya dia ambil di regex.

Terus new result 6, new result 8.

Terus di looping, di dalam looping ada if.

Di dalam if, asli ada if.

Terus kemudian else.

Terus kemudian if lagi.

Terus kemudian if lagi, else lagi.

Else, terus-terus.

- Ini berapa level ya? - Oh ini panjang banget ini.

Kalau saya nggak saya truncate,

ini mungkin panjangnya bisa 200-400 baris ini kalau nggak salah saya.

Pertanyaannya siapa yang bisa maintaining gitu.

- Pak, orangnya sendiri aja kalau udah ngerjain project lain 1 bulan nih.

Ditinggal 1 bulan, dijamin ya.

Kalau ketemu lagi.

- Apa ini gitu ya.

Terus saya nggak ngerti ya.

Terus saya bilang, saya kasih contoh ini the only valid measurement

untuk code quality adalah jumlah WTF per menit gitu ya.

Jadi tugas saya waktu memimpin lead atau tim itu

adalah mengubah spaghetti code menjadi indome code.

Lebih enak kan.

- Indome kan ribetnya.

- Tapi lebih enak, lebih selera Nusantara ceritanya.

- Bubur ayam kok lah.

- Bubur ayam, ancur tuh kodenya.

- Terus saya ambil contoh, ini contoh dari buku ya.

Contohnya karena ini nggak ada animasi,

harusnya pertanyaannya apa yang bisa kita improve dari fungsinya ini.

Terus saya klik, pertama kali bisa kita improve tentu kita bikin camel case.

Atau snake case, up to you lah bagaimana mau code styling kalian ya.

Mau camel case atau mode code style.

Yang penting kalau code stylingnya ngambil satu, setujunya satu.

- Harus sama semua.

- Harus sama semua, konsisten.

Seluruh code base konsisten.

Mau camel case, camel case.

Mau snake case, snake case.

Kalau di WordPress, snake case.

Nah, kita bisa ganti ini jadi camel case.

Kan jadi lebih enak bacanya, ya kan?

Lalu, ini throw di sini buat apa?

Ada gunanya kan.

If else, buat apa? Throw gitu ya.

- Oh iya, bawahnya ada return.

- Nggak perlu, apus.

Lebih bersih sedikit ya.

Lalu supaya sama returnnya.

Jangan satu returnnya array, satu returnnya nul.

Kan susah.

Bukan nggak boleh, tetapi sebisa mungkin konsisten.

Karena get user emails.

Dihindari kalau bisa satu data type lebih mudah nanti ngeceknya di ujungnya.

Yang saat kita gunakan.

- Pada saat pakenya, ya. Pada saat eksplosinya.

- Jadi kita bisa pakai array kosong aja.

Kalau memang nggak dapat ya.

Jadi selanjutnya.

Oh ya, function ini tujuannya adalah mengambil emailnya saja dari object user.

- Dari array budisi object user.

- Iya, itu tujuannya ya.

Oke, terus.

Ini kan kita bisa bikin alerated ya.

Nggak perlu bikin padat-padat begini, ya kan?

- Kalau user kosong, langsung return array.

- Kalau user kosong, kita return empty aja.

Terus kita balik.

Kita proses dan return emailnya.

Terus emailnya kalau nanti ternyata for loopnya ini kosong,

ya udah, emailnya kosong.

Kan lebih pasti kodenya.

Oke, selanjutnya apa?

Kita, ini kan bisa pakai for each ya.

Nggak perlu, ya ini.

- Style-nya.

- Style ya, bisa mau pakai for.

Kata-katanya sih for lebih cepat daripada for each.

Tetapi dalam hal ini supaya gampang dibaca,

saya pakai for each.

Lebih, eh, lebih simple.

Sedikit, ya.

Nah, terus kemudian imperative versus declarative.

Seperti yang pernah kita bahas, imperative itu lebih fokus,

kode kita lebih fokus bagaimana langkah-langkahnya,

sedangkan declarative fokus apa yang kita mau capai.

Contohnya SQL query itu...

- Itu deklaratif.

- Itu deklaratif.

Jadi lebih apa yang kita mau capai, bukan langkahnya.

- Yes.

- Nah, ini imperative programming.

Oke, terus kita lanjut ya.

Bagaimana kita bisa menuju nanti deklaratif.

Terus kemudian,

kondisional ini, kita bisa kita roboh pakai area filter sebenarnya.

- Iya.

- Ya kan?

Jadinya seperti ini.

Kita cari tahu,

kalau user-nya punya email,

dimasukin ke area email.

Begitu doang, ya kan?

Kalau user-nya, jadi user yang nggak punya emailnya nggak perlu dicek.

Sesederhana itu.

Yang kita cek itu user yang punya email.

Lalu, ini kan kita bisa jadi area map.

Kita sudah filter user yang punya email dan kita mapping ke...

ambil emailnya saja.

- Berarti email sama dengan...

- Jadi emails beres sebenarnya, kan?

Nah, hasil akhirnya seperti ini.

Terakhir, ya tentunya kita bikin...

Oke, jadi kalau misalnya kita sudah bikin yang koda di bawah tadi.

Tentu loop-nya ini atas nggak perlu,

karena kalau misalnya filternya ini kosong,

dan di area map juga kosong,

ya pastinya ujung-ujungnya kosong.

- Area kosong, ya.

- Iya, nggak perlu lagi.

Nice, no if, no loop.

Ya kan?

- No loop.

- Terakhir, tambahin...

PHP doc.

Inline doc.

Iya, PHP doc.

Supaya tampang dibaca.

Happy?

Tentu saja belum.

Nah, kan tujuannya kita tadi adalah...

mau deklaratif, seperti ini.

Sebenarnya, kalau di MySQL kan...

"Select email from user what email is not known."

Sama tadi kode yang tadi itu seperti ini contohnya.

Lalu, apa yang bisa kita lakukan?

Makanya tadi kita bisa pakai si...

collection-nya si Laravel.

Tapi ini bukan beratik harus pakai collection-nya si Laravel ya.

Ada banyak collection yang lain.

Ini cara berpikirnya saja.

Yang maksudnya nanti pakai yang namanya...

chain function di chain.

Nah, jadinya seperti ini kode Laravel.

Jadi, collect itu...

mengubah user itu jadi collection.

Iya kan?

Mengubah ini jadi collection.

Dia sudah jadi collection nih.

Terus di filter.

Terus di chaining lagi, di mapping.

Beres, jadi satu...

satu...

satu line.

Beres, jadi dan kode ini udah pasti.

Orang kayaan.

Nah, dan collection ini gak cuma punya Laravel, once again.

Kalau misalnya kalian stop di area map, area filter,

dan kemudian mau di chaining pakai...

callback function di JavaScript, up to you.

Javascript, array data type juga udah...

udah ada kayak filter dan lain-lain.

Bisa di chain.

Kalau mau custom tinggal bikin new set.

Kembali lagi, ini cuma cara berpikir...

dan gak harus pakai Laravel.

Bisa di chain supaya bisa jadi lebih deklaratif.

Dan, misalnya kita pakai, ini plug ini...

ada di mana-mana, ya.

Jadi, sudah kayak...

kalau di Laravel dia ada plug.

Kalau di JavaScript kaya belum ada.

Kalau di WordPress ada array plug atau ada.

Di underscore ada plug juga ada.

Waktu itu ambil data dari filter ya?

Dari property yang...

Iya, jadi ambil data dari property objek itu.

Jadi, simple kan?

Dari user collection, di filter, dan di plug.

Beres.

Dan, diganti sedikit.

Jadi seperti ini, supaya lebih rapi.

Dan, "before", "after".

Enak mana baca?

"Before", "after".

Ya, jadi...

Ini idea dari buku ini.

Dari buku "Refactoring to Collection" ini.

Intisarinya.

Jadi, pola berpikir bagaimana sebuah function kita bisa...

setiap function itu kita bisa bikin jadi lebih deklaratif.

Karena deklaratif itu lebih enak dibacanya.

Ya, itu semua, menurut saya.

Makanya ada refactoring to collection.

Oke.

Sip, itu saja.

Menarik, menarik, ya.

Menarik.

Seru banget, ya. Maksudnya, kodenya itu...

ya, langsung bisa relate ke JavaScript.

Karena mirip-mirip, kan?

Ada filter, ada map.

Kemudian bisa di-chain juga.

Dan sebetulnya kayaknya bahasa apapun...

ya, kayaknya kalau misalnya kita...

Ada, pasti ada.

...programming, terus harus mengolah data yang kayak gitu...

pasti ya mirip-mirip lah.

Mostly data yang kita urus itu berhubungan dengan...

array, looping, conditional, object.

Sebenarnya, kan?

Jadi...

Apa sih yang lain?

Sama aja kalau misalnya HTML juga diubah jadi tree.

Tree juga.

Oke, graph. Mungkin satu lagi berbeda konsep.

Graph, ya.

Tapi intinya...

Graph itu juga sebenarnya collection.

Kalau mau dipikir-pikir node collection.

Dan ada chainingnya.

Jadi, dari graph satu ke graph yang lain.

Tapi...

dasarnya sama.

Kalau kita... makanya kalau back to basic...

waktu kuliah dulu, zaman saya kuliah...

kuliah, kalau nggak salah, anggur ritma pemograman...

dan struktur data.

Akhirnya...

if...

conditional, looping, array...

dan linked list.

Linked list biasa.

Linked list, ya.

Itu kan dasarnya.

Semua...

gitu.

Beritanya.

Pemilihan...

pemilihan struktur data juga penting kan ya.

Jadi, kita nggak bisa sembarangan istilahnya...

bukan struktur data, bukan tipe data.

Tipe data juga.

Tapi struktur data penting gitu.

Apakah sebuah data itu...

bisa kita representasikan sebagai array...

atau object of array, atau apa gitu.

Itu juga tergantung...

itu juga penting gitu.

Karena...

apa yang bisa kita lakukan dengan struktur data itu...

ya kan, kita nggak bisa sembarangan ya.

Misalkan kita pakai struktur data object...

ya, berbeda perlakuannya dengan array kan.

Mungkin nggak bisa diloop, nggak bisa...

difilter, atau apa gitu.

Ya.

Betul.

Nah, ini ada pertanyaan nih, dari November.

Lebih efisien pakai metode chaining...

atau for loop?

Kita...

harus benchmark...

dulu kalau mau...

manusianya atau...

mesinnya.

Ya kan, bobonya bisa...

diukur efisiensinya kan.

Ya, yang bisa diukur efisiensinya...

dengan baik sih mesin ya.

Benchmark performance test kan.

Tapi efisiensi dari DX kan...

bisa juga disebut efisiensi.

Maintain...

kalau untuk maintainable code...

pakai chaining.

Cuma kalau untuk cepet...

cepet-cepetan...

imperatif lebih cepet-cepetan.

Ya, ini ada...

ada faktor...

jam terbang juga kali ya, kalau teman-teman...

yang belum terbiasa.

Dikit banget isinya.

Perbedaan performance-nya.

Oh, ini komparasinya...

kecepatan eksekusi.

Performance dan benefit-nya.

Benefitnya, ya.

Ya, kalau kayak gini-gini kan...

ada faktor jam terbang juga kan.

Nggak mungkin istilahnya...

baru lulus kuliah yang...

diajarkan for loop, if dan...

lain-lain tiba-tiba kita...

berharap...

kode yang dihasilkan seperti yang tadi...

yang after tadi gitu kan.

Karena itu baru akan...

bisa tercapai...

kalau sudah...

berpengalaman atau sudah...

bikin project gitu, ikutan project.

Terus...

apa ya, project-nya...

oh, ini kok kodenya...

gampang banget dibaca gitu.

Gampang dimengerti gitu. Sedangkan kalau...

apa, teman-teman yang mungkin belum...

mengalami atau...

belum mendapatkan kode yang...

seperti itu ya...

jadi nggak relate kan.

Atau...

sebelum lulus kuliah...

nonton ngobrolin web.

Jadi udah tahu.

Nggak...

apa ya...

Ya, mungkin ini bukan solusi...

tapi harapan ya.

Lebih keharapan. Harapannya...

paradigma fungsional...

diajarkan sedikit-sedikit di kampus.

Belum ya? Atau...

pengalaman Mas Tiza belum ya?

Belum.

Kan kita belajarnya prosedural, abis itu OOP.

Udah nggak ada belajar...

bahasa fungsional atau...

paradigma fungsional lain kan.

Saya nggak tahu...

karena kuliahnya sastra.

Sastra sendiri, mungkin...

harus ada deklaratif dan imperatif juga...

sastra itu.

Penggunaan linguistik.

Untuk deklaratif.

Eh, ada sih. Digrammer ada sih.

Cuma...

Karena kadang-kadang...

kalau kita yang sudah terbiasa atau sudah...

dicekokin sama OOP, belajar fungsional setelah...

dicekokin sama OOP itu susah banget.

Karena ada higher order function...

itu yang bikin pusih.

Biasanya di fungsional yang pakai penggunaan higher order function...

itu bikin pusing kalau...

dicempun ke OOP.

Menurut saya ya.

Funksional lebih pusing karena ada monad.

Itu tergantung sudut pandang juga.

Kan monad nggak selalu dipakai...

di setiap kode kan.

Nah, cuma ini...

setelah dilihat tadi...

kalau dipikir-pikir nih...

dari tingkat kesulitannya sendiri kan...

sebetulnya dalam tanda kutip nggak sulit ya.

Itu kan cuma mindahin doang.

Cuma mindahin doang.

Kalau orang...

sudah tahu caranya bikin function...

sudah tahu caranya misalnya...

loop sama apalah...

semua sintaks-sintaksnya...

tahu caranya masukin...

argument ke function terus diproses...

kapan harus pakai if-else...

kapan di-return, kondisionalnya gimana...

itu kan sebetulnya bisa.

Itu bukan hal yang sulit...

sel nulis kayak gitu, itu nggak sulit.

Cuma yang perlu dibiasain adalah...

apa ya, kesadaran nggak sih?

Kayak kalau tadi kan...

presentasinya Ivan...

kayak apa, beneran ngejelasin...

secara gambar...

before, terus kenapa ini bermasalah...

terus after...

kenapa ini lebih bagus.

Nah, dengan harapan ke depannya...

semua anggota timnya Ivan...

misalnya atau semua programmer lah kita...

dengan sadar pas kita...

menghadapi skenario lain...

yang bukan get user email tadi...

kita juga bisa nerapin itu.

Nah, apa?

Kesadarannya itu sih yang...

mahal, yang sulit, maksudnya harus dicari...

kalau cuma minum-minum.

Nah, kalau chainingnya doang kan...

bukan obat sekali...

jadi beres. Cuma maksudnya...

besok ketemu lagi...

kita bikin bakal yang spaghetti lagi...

atau kita dengan sadar, oh iya...

kita jadiin indomie atau bubur ayam...

kalau saya, biasanya...

nulis kode itu...

ini dulu ya, misalnya...

apa yang ada di otak itu...

step 1, step 2, step 3, step 4 itu sudah ada.

Setelah jadi...

testing selesai, baru saya...

refactor. Sebelum di Submit PR...

saya refactor...

ada yang bisa saya pindahin ke...

pindahin ke function...

atau satu function tersendiri, bisa...

ada yang bisa saya...

early return, atau kemudian itu...

biasanya...

sebelum PR saya...

Submit itu...

kode itu sudah kayak...

berapa kali saya looping...

untuk memperbaikinya.

Jadi...

ada step-nya juga.

Jadi, karena...

lebih gampang berfikir untuk...

membuat...

untuk nulis kode itu...

lebih gampang saat kita...

hanya nulis dengan cara...

imperatif.

Karena benar-benar step-by-step.

No doubt.

Jadi, maksudnya pasti.

Lebih gampang, karena kalau kita mau ke sana...

step-nya gimana, ngambil data itu...

dan mem...

apa namanya...

memproses data itu.

Tetapi setelah selesai...

mungkin kita bisa...

lebih...

membersihkan kode-nya.

Refactor lagi, refactor lagi, refactor...

sampai dia...

sebuah fungsi yang compact...

yang terkecil.

Jadi fungsi yang terkecil, jadi bisa...

bisa direfactor secara baik.

Dan...

gampang dibaca.

Less bug.

Dan expected.

Funksional kan expected ya hasilnya.

1 tambah FX sama dengan Y.

Pure function.

Benar-benar pure function.

Jadi, tujuannya adalah...

bagaimana kode kita itu...

di unit terkecilnya itu expected...

hasilnya.

Kalau A tambah B...

itu hasilnya harus C.

Ya, sebisa mungkin...

penghasil terkecil kita...

bisa di expected...

sehingga memaintain ke depannya...

nggak pusing.

Iya.

Jadi, mindset pertama...

yang harus ditanamkan adalah...

yang pertama.

Yang paling, ya salah satu yang...

utama ya.

Kita nulis kode...

bukan hanya buat mesin...

tapi buat orang. Buat kita sendiri...

dan buat teman-teman kita.

Dipastikan...

kode yang kita tulis itu...

setidaknya kita bisa mengerti.

Minimal, itu minimal banget.

Kalau kita sendiri nggak ngerti ya gimana ya?

It works, tapi nggak tahu gimana.

It doesn't work juga nggak tahu kenapa.

It works, bingung.

Bingung juga, iya.

Jadi, setidaknya kita bisa tahu...

karena...

menulis kode itu...

coding itu...

berapa persen ya?

Kita nulis kode itu...

cuma berapa persen? Selebihnya banyakan dibaging.

Benar nggak sih?

Lebih tepatnya...

berhayal.

Berhayal?

Lebih banyak menghayalnya.

Lebih banyak menghayal, iya.

Apa proses menulis kode itu ya?

Sebentar...

kode itu...

menurut saya terkecil...

ininya.

Dari 100 persen...

kalau menurut saya, menulis kode itu cuma 25 persen.

Imaginasi.

50 persennya...

Imaginasi.

25 persennya nulis kode, 25 persennya...

lagi tes dan dibag.

Ya...

Red Green Refactor, ini tes...

development ya.

Ya, jadi kita bikin...

coba tes dulu, tesnya gagal.

Kita bikin implementasinya...

kemudian jangan lupa refactor.

Nah ini, berarti...

kunci yang kedua adalah...

definition of done-nya...

harus direvisi.

Karena biasanya kan...

oh, jalan kok, ya udah selesai gitu.

Kita nggak peduli dengan bagaimana implementasinya...

bagus atau nggak...

bisa dibaca atau nggak.

Yang penting, kode yang kita hasilkan...

jalan.

Dan mungkin jalan, tapi...

dengan kondisi tertentu, kita juga nggak tahu kan.

Jadi...

kalau...

ada quote dari siapa ya...

jadi saya ingat gitu, kayak...

"Make it work...

and then make it beautiful."

Biasanya, kalau udah...

kodenya beautiful, biasanya itu...

secara nggak langsung performanya bagus.

Secara nggak langsung ya, ini kondisi-kondisi tertentu.

Coba saya cari dulu ya.

Nah, ini...

co-pilot...

dipikir-pikir, co-pilot bisa nggak sih...

disuruh baca itu buku tadi...

dikasih gimana caranya lah...

fine-tuning, training, atau apa...

suruh baca buku itu...

biar setiap kita coding...

co-pilot-nya suruh betulin.

Oh iya...

bisa sekarang ya.

Bisa.

Suruh belajar.

Make it work, make it better kali?

Nggak, nggak, nggak.

Ini kayaknya ada.

Nah, ini...

bentar ya, share ya.

Jadi ini ada...

"Make it work, make it beautiful, and then make it fast."

Jadi kalau kita coding, biasanya kan kita bikin...

itu jalan dululah kayak gimana caranya.

Mungkin pakai tadi kan imperatif.

Dibikin menarik...

dibikin bagus dengan cara...

deklaratif.

Kemudian baru dioptimasikan.

Jadi ada 3 tahap gitu ya.

Nah, kalau...

dari quote yang lain...

salah satunya adalah...

yang bikin bahasa fungsional Erlang...

menurut dia...

"Make it work, then make it beautiful."

Oh bukan.

Make it work, then make it beautiful.

You really, really have to make it fast.

90% of the time...

if you make it beautiful, it will already fast.

Itu menarik.

Udah cukup 2 aja gitu.

Menurut dia ya. Kita nggak tahu ini.

Perlu dicoba ya.

Seru ya.

Oke.

Tapi berarti itu kan contoh-contoh...

level-level optimasi lah.

Jadi kayak level buat optimize.

Pertama bare minimumnya nih...

yang mc free banget kan...

harus make it work. Jelas.

Itu semua kan yang oke gitu.

Abis itu ya udah dipercantik.

Dibikin lebih cepat.

Dan kembali kuncinya...

kalau refactoring, kuncinya adalah...

testing.

Jangan coba-coba refactoring tanpa testing ya.

Mereka bunuh diri.

Ras maksudnya apa nih?

Ras already covered this. Apa nih?

Merujuk kemana?

Mungkin Ras udah maksudnya...

udah deklaratif kali ini.

Udah langsung beautiful gitu.

Jadi nggak perlu ini ya.

Karena compiler Ras itu...

sangat bawel.

Jadi kalau kode kita salah sedikit aja...

banyak warning.

Harus perbaiki. Wah ini variable nggak dipakai.

Apus. Oh ini itu. Bener nggak sih?

Oh itu secara nggak langsung berarti...

meng-enforce biar clean code.

Ya.

Clean code.

Zero cost abstraction.

Di NeoVim...

ada refactoring.envim...

yang mengikuti style buku refactoring...

dari Martin Fauler.

Ada ya?

Oh jadi dia kayak linting gitu ya?

Banyak tools, tools.

Banyak tools, tools.

Intinya sih pola berpikirnya.

Pakai tools apapun.

Kalian juga bisa minta...

CGPT atau copilot...

juga bisa minta tolong refactor ini...

juga bisa kok. Namun...

intinya...

ya cara pikirnya aja.

Patternya yang itu...

dipahami. Sehingga waktu...

ketemu kode orang yang...

yang...

spaghetti atau ketemu...

kode orang yang bagus bisa...

langsung bisa baca.

Terus gimana kalau...

kode yang...

ditinggalkan, yang di...

diwariskan ke kita itu kita nggak ngerti?

Sementara orangnya udah desain.

Ya tuh kembali lagi.

Biasanya saya...

Orang baru kayak baru.

Iya orang baru...

Semua bikinannya awal.

Oh ini ya? Yang tadi diawal ya?

Siapa yang komen tuh?

Ganti orang ganti repo ya?

Sampai ekstrim.

Karena nggak bisa baca kodanya.

Tergantung...

kodanya masih working atau tidak.

Kalau work...

if it still work, don't touch it.

If it is working, leave it.

Kalau sudah...

ada masalah, baru...

ada unit test-nya nggak.

Kalau nggak ada unit test-nya, nggak boleh nipegang.

Apalagi kalau sudah jalan...

di production ya.

Jalan di production yang pakai...

company enterprise.

Yang...

apa namanya?

Bahasanya untuk...

secara...

apa?

Kontraknya harus 99.99% uptime, contohnya.

Jadi nggak berani...

nggak berani...

aneh-aneh.

TDD tidak wajib.

Kita nggak bilang wajib kok.

Kita nggak bilang test-nya.

Test first itu wajib.

Yang penting ada test-nya kan.

Mau di depan, di belakang, ya itu urusan kalian lah...

masing-masing ya.

Itu maksudnya SLA.

Service Level Agreement.

User yang seru ngetes.

Iya, tetap...

kita yang ngetes, tetap user yang ngetes.

User kena error, terus nanti...

kita nanya browser-nya apa...

apa, maksudnya...

koneksi internet-nya gimana.

Terus kita berusaha coba reproduce error-nya.

Terus kita fix.

Itu kan sebenarnya kayak TDD juga.

Iya, tapi...

manual, manual.

Cuma perkara...

automatic, pakai library...

atau pakai manusia.

Iya.

Yang berasa itu kalau kita refactor tanpa...

testing dulu, karena kita nggak tahu...

kode yang kita...

refactor itu...

mencapai...

bisa sesuai nggak.

Iya.

Karena bisa aja kita refactor yang ini...

modul yang lain yang rusak.

Ada skenario yang kita nggak inget.

Kita nggak inget, oh iya...

ternyata ini dipakai di...

ini dipakai di situ untuk itu.

Pasti nggak inget. Maksudnya ngapain juga...

nginget-nginget.

Apalagi kalau codebase-nya sudah...

lebih dari 5 tahun...

menulis code-nya entah-entah kemana.

Betul.

Nah, apa...

dan apa... ada yang bilang juga...

TDD itu ya bukan tentang...

testing juga. Itu tentang mindset lagi.

Balik lagi tentang mindset.

Ketika kita menulis kode, itu seolah-olah kita...

mendesain...

API untuk aplikasi kita.

Oh, cara manggilnya gini. Oh, pakai dua...

dua parameter.

Oh, pakai ini. Dah.

Ketika kita implementasi, kita udah kebayang...

harus kita tulis itu seperti apa.

Cuma kalau ini ada...

banyak faktor...

banyak faktor teamwork juga nggak sih?

Jadi kalau misalnya kita di suatu tim...

dan kita mau punya...

mindset kayak gini, apalah...

Gimana cara menge-enforce?

Gimana cara menge-enforce?

Kalau misalnya yang lain...

punya cara pikir yang beda-beda, gimana ya?

Ya, kalau Ivan kan pada saat itu...

berada di posisi sebagai tim lead ya.

Jadi bisa enforce.

Pokoknya kalian harus...

pull request, kodenya seperti ini...

dan harus di-review dulu.

Atau harus re-review saya dulu.

Jadi bisa di-comment atau bisa...

minta tolong dong direfactor...

jadi lebih deklaratif dan lain-lain.

Itu...

kalau seandainya...

kita berada di satu...

perusahaan tapi tidak menerapkan itu...

Gimana itu?

Jadi kan itu harus...

disiplin kan melakukan...

disiplin.

Kita harus teman-teman steam kita nonton...

ngobrolin web.

Itu adalah kesepakatan bersama.

Kesepakatan bersama...

atau diktatorship.

Ya, diktator juga.

Komentnya naikin...

diktatorship.

Jadi diktator juga...

benar-benar perlu.

Dari sisi...

dari sisi team lead...

atau dari sisi...

harus disupport...

sama leadership sih.

Harus disupport.

Nah, Ivan kan...

cukup sering...

berada di satu perusahaan...

konsultan kan ya?

Software house kan ya?

Kan software house itu...

kalau di Indonesia ya, kalau di Indonesia...

identik dengan...

Roro Jonggrang, project cepat...

dan tidak...

melakukan kaedah-kaedah based practice.

Yang penting projectnya jadi.

Pernah juga...

dalam project yang...

yang Roro Jonggrang juga pernah.

Tentunya...

ya itu tadi banyak hal-hal...

yang di-shortcut juga ada.

Tetapi...

ada tetapinya...

bukan kayak one-time bill...

tetapi ada retainer.

Karena mungkin...

mereka butuh kejar launch.

Launching...

dalam tahap tertentu.

Dan kita memilih...

MVP yang mau di-launch itu tahapnya apa?

Contohnya waktu pernah saya...

nge-develop Google SiteKit...

plugin di WordPress namanya Google SiteKit.

Itu Roro Jonggrang...

itu project cepat.

Kita dalam 6 bulan...

6 bulan nge-develop plugin itu dasarnya.

Waktu itu mengejar untuk beta release...

di WordCami Europe.

Nah...

tesnya nggak ada.

Tesnya nggak ada...

pada itu project Google loh.

Tesnya nggak ada, terus kemudian...

fungsional...

fungsional yang dibuild itu ada 4.

Kayak konek ke Google Analytics,

konek ke Google Search Console,

konek ke...

Google Tech Manager,

sama satu lagi konek ke Google...

konek ke Google Adsense.

Itu aja udah 4 integrasi ke...

4 produk besar.

Belum lagi...

ada...

ada...

sedikit sengeta bagaimana...

kita mendefine asitektur...

untuk API keynya.

Anyway...

Long story short, itu adalah...

project rojongerang waktu...

saya...

di project...

Alhasil ya nggak ada tes.

Karena nggak sempat.

Jadi tesnya itu benar-benar manual.

Saya bikin...

tesnya itu...

automatic tesnya itu...

pakai...

apa namanya...

kayak end-to-end testing...

yang sederhana...

yang bisa ngetes di Docker.

Karena butuh...

butuh kompatibilitas...

PHP 5.6...

Sorry, PHP...

5.6 dan PHP 7.4...

zaman itu.

Dan...

WordPress 5 sekian, 5 titik sekian, 5...

Jadi ada beberapa tes kesana...

tes environmentnya. Jadi setiap kali kita...

setelah saya sprint,

iten harus di tes.

Ini pas, ini pas, nggak ada...

fatal error lah. Intinya sih cuma nyari...

total error. Jadi saya bikin...

automation script aja.

Jadi pluginnya bisa diaktifkan, terus bisa di...

jalan... user sebagai...

klik-klik-klik itu jalan.

Itu saya ingat pakai selenium.

Waktu itu saya buat web driver-nya...

dijalankan pakai Docker.

Dan...

Alhasil bisa...

deliver...

cuma capek.

Lalu...

selanjutnya baru direfactor.

Intinya kan mereka mau...

launching beta dulu, dan...

betanya itu juga close beta.

Jadi hanya beberapa orang aja yang dikasih akses.

Lalu... selanjutnya baru mereka...

full refactor. Jadilah...

plugin sidekit saat jaman ini yang sudah...

saya sendiri sudah nggak bisa baca kodenya...

karena saya nggak mengerti lagi...

abstraction-nya.

Tetapi... dan sekarang itu udah full test.

Udah ada...

test coverage-nya luar biasa mereka buat.

Oh, berarti ini kan...

misalnya bikin produk juga kan ya.

Kalau misalkan kayak konsultan...

atau agency gitu kan...

banyak kan bikin sesuai...

requirement dari...

klien kan. Apakah...

klien-klien yang sekarang...

yang... istilahnya yang...

success story-nya bagus lah gitu ya.

Yang success story...

berhasil yang berhasil jalan...

itu apakah ada menyaratkan...

bahwa, oh pokoknya...

kodenya harus bagus...

ada tes-nya dan lain-lain karena nanti...

kodenya akan di hand over ke tim-nya atau ke tim yang lain...

atau ke agency lain.

Ada sebagian yang begitu...

tergantung...

dari klien...

permintaan klien-nya.

Namun dari standar... kalau tempat saya bekerja...

sekarang ini standarnya ada.

Jadi harus punya minimal unit test.

Minimal unit test.

Lalu...

kalau kita nge-build...

website-nya from scratch...

kita punya...

visual regression test.

Itu berarti udah difaktor...

udah diperhitungkan di jam...

jumlah...

main hour kan, dev hour-nya.

Jadi misalnya pertama kali bikin penawaran...

biayanya berapa kan, itu udah dipikirin...

bahwa ada jatah buat...

developer-nya harus bikin unit test.

Nah ini bagus nih, kalau nggak ada unit test...

nggak cair.

Ya, karena kontraknya begitu.

Cuma kan jadi nggak bisa benting...

harga yang ekstrim.

Cuma berarti itu positioning ya.

Tergantung klien-nya.

Klien-nya.

Klien-nya ngerti nggak...

kalau klien-nya nggak ngerti...

nggak ngerti testing dan lain-lain.

Yang kebutuhannya memang punya...

internal team...

biasanya punya internal team...

yang mereka mengerti ya.

Iya, jadi...

apa namanya...

sebenarnya dari estimasinya kita itu...

sudah diperhitungkan...

dan dengan tools-tools...

yang kita punya kan...

kita punya segudang tools...

yang siap pakai.

Jadi setup unit test sendiri nggak dari 0.

Sudah ada framework-nya.

Dan untuk menerus unit test itu...

sebenarnya sudah ada skeletal-nya...

dan sudah tinggal pakai.

Jadi menghemat waktu sebenarnya.

Jadi sebenarnya menulis unit test itu nggak...

Justru menghemat waktu, bukan menghabiskan...

waktu lebih panjang.

Sambil ngerjain sih.

Itu kalau mau ngirit waktu sambil...

Ingat nggak tadi...

yang saya kasih konsepnya...

kalau ada satu tiket...

berfikirnya 50%...

nulis kodnya 25%...

sisanya dibagging sama testing.

Ya udah, testing itu...

pada saya ngedibagging lama-lama...

saya nulis testing-nya.

Biar komputernya aja yang nyari...

dibug-nya.

Itu...

caranya.

Namun kalau nggak terbiasa dengan unit test...

ya pasti akan lama.

Dan itu yang mengakibatkan jadinya...

serasa mahal...

kalau lama.

Ya karena mungkin baru belajar...

baru beradaptasi...

kan butuh adaptasi ya...

atau teranggur selesai semua...

itu malas sih kalau udah selesai...

kita nggak mikirin bagian itu lagi.

Terus kita bikin itu...

karena kita harus...

lusurin lagi kan itu apa...

terus apa ekspektnya...

skenario-nya yang perlu di-test...

ekspekt-ekspektnya apa aja.

Itu saya harus pikir.

- Jadi kalau kita rubah pola...

kita rubah pola berpikirnya ya...

bisa jadi cepat di awal tapi lama di belakang.

- Ya.

- Kalau kita posisinya adalah...

kita...

mungkin bahasanya...

lebih lama di awal...

tetapi sekali selesai ya selesai.

- Selesai.

- Nggak ada embel-embel di belakang...

itu susah.

Jadi ada muncul bug lagi, bug lagi.

Jadi proyeknya itu bisa kayak...

sebuah momentum.

Jadi kayak ini jalan, ini jalan.

Bukan kita phase 1 jalan...

nanti phase 2 jalan, eh ternyata setengah dari...

waktu phase 2...

ngebenarin bug di phase 1.

Akhirnya untuk nge-develop phase 2...

waktunya habis, tinggal setengah.

Ya kan?

Terus waktu phase 3, phase 2...

ngejar untuk...

ngerjain fase 2...

yang...

yang setengah kelar.

Belum lagi karena nge-bug.

Jadi phase 3-nya...

kacau lagi.

Jadinya kita jadi lingkaran...

jadi makin lama...

makin capek, makin lama, makin capek...

makin lama, makin capek...

yang terakhir adalah...

resign.

Atau proyeknya batal, nggak...

nggak launching-launching.

Karena isinya...

bug-driven development.

- Iya, resign. Terus orang baru bilang...

- "Wah ini kodenya ancur, buat lagi dari apa?"

- Iya, kodenya jelek.

Build from scratch.

Biasanya begitu kan?

Pakai deno, pakai boom, pakai...

- Jadi ngerti konsep berpikirnya ya.

Jadi nggak apa-apa.

Jalan itu nggak perlu...

misalnya nge-develop itu nggak perlu...

lari-lari, nggak jelas.

Jadi kalau saya tuh kayak...

misalnya mau dikasih...

suruh ngelit nih.

Biasanya...

untuk onboarding ngelit sebuah proyek aja...

saya butuh 3 hari.

On-boarding-nya.

Karena saya butuh baca...

dokumentasinya dulu.

Saya butuh ngobrol sama...

tim lead sebelumnya.

Ini arsitekturnya seperti apa.

Terus...

kalau capek ya tidur dulu.

Nanti jalan lagi, liat lagi, baca lagi...

dokumentasi.

Belum ngerti kodenya, mengerti...

setup-setup database-nya.

Ngerti...

apa namanya.

Biasanya kalau sebelum...

saya jadi tim lead, saya akan minta...

onboarding-dokumentasi,

engineering-dokumentasi,

terus kemudian...

road-mapping plan selama...

selama setahun gitu.

Ada road-map ya. Biasanya satu proyek sudah ada...

road-map-nya dari klien itu.

Mau ngapain aja secara bisnis.

Yaitu, sudah saya sudah minta...

sebelum saya ngelit.

Dan kalau misalnya saya nggak yakin...

saya bisa bilang...

saya nggak berani.

Nah, itu ngejawab tadi...

dari klien tuh. Tanya kalau...

bisnis logic-nya nggak fix,

berubah-ubah, itu gimana...

bikin TDD-nya?

Nggak tahu maksudnya gitu nggak sih?

TDD di-crease, yang proses bisnisnya...

berubah-ubah, tidak fix, tidak track-up,

apakah setuju?

Nah, berarti...

jangan ini sampai dia fix kan?

Bukan. Function...

Pure function...

Pure function kan tetap.

Mau input-nya A,

keluar-nya B, gitu ya.

Itu kan pure function.

Jadi yang minimal unit test...

harus punya dong.

Minimal.

Terkecilnya kan unit test-nya harus punya.

Mungkin yang bisa... yang nggak jelas itu...

adalah end-to-end testing-nya nanti.

Yang berubah-ubah.

End-to-end testing itu...

End-to-end testing itu...

jarang sih...

saya selama 4 tahun...

3 tahun...

di tempat kerja sekarang...

hanya satu project yang pakai end-to-end testing.

Sisanya nggak ada end-to-end testing.

Biasanya, sisanya unit testing apa sampai integration?

Unit test.

Unit testing sama integration.

Tapi integration-nya pun nggak full coverage.

Hanya...

yang core bisnis...

dan...

yang berintegrasi dengan...

berintegrasi dengan...

biasanya downstream channel bahasanya.

Jadi ada... dia...

menyediakan API untuk ke...

sistem lain...

atau mengambil API dari sistem lain itu...

ada integration test-nya.

Sisanya nggak.

Oh, jadi kebayang kasusnya gini nih.

Misalnya kita bikin situs...

artikel gitu...

atau blog kayak medium ya.

Terus, mungkin...

bisnis decision-nya kan...

itu ubah-ubah. Misalnya client request...

kalau user nggak login, nggak punya akun...

itu boleh lihat artikel...

atau nggak di... apa...

dikasih itu tuh...

kayak apa... sign-up model...

atau nggak... atau mungkin...

boleh baca 3 artikel...

misalnya lah random ya.

Misalnya kalau nggak punya akun, dikasih...

baca 3 artikel, di artikel keempat...

muncul pop-up. Halo, kamu harus...

berlangganan atau apa.

Nah, berarti kan contoh unit test-nya...

yang tetap bisa dibikin...

misalnya check if user authenticated ya.

Kan itu, regardless...

bisnis decision-nya kayak gimana kan...

tetap butuh nge-check user authenticated...

atau nggak. Terus misalnya...

ngetrack pake IP lah...

atau pake local storage...

ngetrack user sudah ngom-visit...

beberapa kali. Itu kan tetap bisa dibikin...

unit test-nya. Nah...

yang itu tadi disebut...

event end-to-end test kan berarti...

ngetest tergantung...

bisnis decision-nya user...

muncul pop-up, suruh sign up-nya tuh...

di paywall ya, login wall...

login wall-nya tuh munculnya...

kalau yang berubah-ubah itu kan...

nggak apa-apa. Tapi kita tetap bisa bikin unit test...

buat kasus-kasus tadi tuh...

check if user authenticated...

check how many hits...

the user itu.

Mungkin contohnya...

gitu kali ya.

Oke.

Nah, ini di-check RAM-nya...

sendiri nih ya. Bahas...

testing, TDD, ada yang...

ini lagi apa...

talikasi...

talikasi...

melantur dari topic pertama...

dari topic ya...

ya nggak apa-apa sih diskusinya...

santai aja sebenarnya. Refactoring...

ada hubungan sama testing juga kan.

Tapi yang mau...

mungkin dua pertanyaan terakhir kali ya...

mengenai buku...

gitu. Yang pertama adalah...

gimana dulu...

bisa terdiscover...

buku refactoring to collection ini.

Kan apa... ada...

kan... kayak Ivan kan...

tadi sempat bilang...

kalau sukanya modingnya, gayanya...

yang clean dan lain-lain. Terus...

kenapa tiba-tiba kok...

jadi ke buku si Adamuatan ini?

Dari mana? Dan dia juga kayaknya bukunya...

ini kan self-publish kan...

bukan ada di toko buku...

atau di Amazon dan lain-lain.

Kalau saya udah jodoh kali ya...

di buku itu yang datang...

tahan bagaimana saya bisa nemu aja.

Mungkin karena PHP. Ada apa...

di ekosistem PHP atau ini.

Nggak ada hubungan sama WordPress.

Sudah kenal Adamuatan sebelumnya atau...

gimana? Sudah follow atau apa?

Sudah follow.

Berarti dia promo-promo...

refactor untuk collections gitu ya.

Atau mungkin...

itu dipost di...

di company saya sebelumnya.

Itu saya lihat, eh saya beli ini.

Mungkin, saya nggak tahu. Intinya dia datang...

buku bisa saya klik, eh tertarik.

Ini dia nih yang saya butuh.

Nah, pertanyaan selanjutnya ini...

buat penonton nih...

buat penonton. Berapa banyak...

teman-teman yang masih belajar dari buku?

Beli buku atau punya...

buku di perpus, terus...

baca... Saya masih baca...

baca buku. Masih. Atau e-book lah...

jaman sekarang e-book lah ya, e-book ya.

Beli e-book atau buku gratis.

Oh, buku bener. Iya.

Nggak betah, eh, baca buku di screen.

Kindle lumayan.

Oh, masih.

Ya, Kindle. Buku elektronik...

apa? Gadget khusus...

Gadget khusus untuk...

baca buku ya.

Oh, banyak juga ya. Adios money...

optimization. Masih...

masih baru sedikit...

nah.

Orali tahunan.

Masih rame ya.

Gue jarang tuh. Jarang, tapi...

terakhir tuh baca yang buku...

beneran niat. Baca pakai Kindle...

di highlight, bikin notes, itu...

You Don't Know JS. Apa?

JDK JS. Oh, itu bagus tuh.

You Don't Know JS itu sebenarnya bisa...

gratisan kan? Kita bisa...

lihat di repo-nya dan kita bisa...

kompal sendiri kan untuk jadi...

IPUP atau PDF dan lain-lain.

IPUP-nya emang gratis juga di download.

Emang maksudnya si author-nya...

menyediakan buat download.

Terus pernah beberapa kali beli...

satu pack soalnya dulu Smashing Magazine...

yang tentang UX-UX gitu.

Cuma kayak nggak selesai terus apa ya?

Buru-buru skimming.

Oh, hanya kebutuhan tertentu gitu ya.

Ya, penasaran aja sih...

abis itu lupa.

Belakangan malah lebih banyak...

belajar dari course.

Karena nggak tau kenapa ya content creator...

yang kayaknya lebih banyak course.

Mungkin menyesuaikan...

attention span. Menyesuaikan dengan jaman ya.

Kayak online course ya video.

Kayak PC Dots yang...

testing JavaScript.

Cuma sebetulnya, ya pengen sih.

Boleh deh 2024, resolusi.

Telat nggak sih bulan April resolusi?

Ya, lebih banyak belajar...

dari buku.

Tapi mungkin kan kita belajar...

suatu tuh macem-macem ya. Kayak misalnya...

contoh yang tadi deh, Next.js.

Routing.

Kalau kayak gitu kan lebih cocok dari...

YouTube atau blog post aja kan.

Tutorial. Karena itu tuh...

cepat berubah. Cuma kalau buku itu...

kayaknya cocok buat yang evergreen lah.

Yang kayak sih refactoring tadi kan.

Koncept, ya.

Kita baca buku itu bukan untuk...

sintaksnya atau fiturnya sendiri.

Maksudnya itu bukan perkara fitur...

PHP, tapi tentang cara mikir...

yang dijelasin dari perspektifnya.

Dari segut pandangnya sih...

autor. Yang unik kan itu ya.

Yang kita beli, bisa dibilang, adalah...

itu cara si penulis buku...

menjelaskan konsep itu ke kita...

dan ngasih berbagai contoh...

sampai kita paham.

Nah, itu mungkin cocok ya...

kalau buku. Karena kita bisa...

ulang-ulang...

sampai paham.

Bisa baca perlahan-lahan juga.

Betul, betul.

Nah, benar nih, buku...

ternyata banyak juga ya...

peminat buku ya. Buku Halo Coding ya.

Hilman ya.

Belum baca.

Bagus, belum baca juga.

Saya dikirimin.

Hilman, oh.

Bisa kita undang nggak ya Hilman ya?

Beda buku selanjutnya, Kang Hilman.

Beda buku ya.

Di Indonesia...

memang masih sedikit sekali...

teman-teman yang...

konten kreator yang melirik buku.

Jadi, waktu...

beberapa bulan yang lalu, waktu saya ke Makassar...

yang Deves ya kalau nggak salah ya...

itu saya sempat...

ketemu sama Hilman dan...

penasaran kan. Kan dia...

yang bikin sekolah coding kan.

Istilahnya online course kan, bikin online course.

Kok tiba-tiba ngeluarin buku gitu kan?

Penasaran, kenapa?

Nanya alasannya.

Ya itu.

Jadi dia akhirnya ketemu...

cara...

menerbitkan sebuah buku yang...

nggak perlu update. Istilahnya nggak...

evergreen. Seperti yang...

Refactor Into Collection ini. Makanya...

akhirnya mengutuskan untuk menulis buku.

Kalau buku kayak tutorial apa...

yang tadi Next.js lah atau apa...

itu kan update-nya harus... kayaknya 6 bulan sekali...

harus dia update kan.

Jadi...

ya menarik sih. Dan...

penasaran juga dengan apa ya...

gimana cara...

kok bisa sampai bikin buku...

proses...

proses kreatifnya seperti apa?

Itu harus disiplin...

ya harus disiplin banget.

Ya harus disiplin banget.

Dan punya apa ya? Punya self disiplin...

yang tinggi. Inspiratif ya...

buku Halo Coding ya.

Saya dikirimin...

bukunya gratis. Terus saya...

ketemu sama dia, minta tanda tangannya.

Wah.

Oh, buku Kubernetes untuk...

ini bukunya Giri ya?

Giri, mas Giri.

Apa-apa-apa.

Susah Kubernetes.

Boleh sih.

Bisa gak sih Kubernetes untuk...

untuk...

SME. Pak Ono, ya Pak Ono.

Gimana...

Kubernetes untuk? Kubernetes untuk SME itu...

masih relevan gak sih?

Ya, jadi mungkin memang yang cocok...

buku untuk diterbitkan adalah...

buku-buku yang filosofis...

tentang teori, konsep...

Wow.

Mainset. Mainset. Mainset.

Mungkin Kubernetes...

konsepnya kali ya? Susah ya.

Karena untuk amulat ya bahasanya.

Jadi mungkin lebih bahas dasar.

Jadi lebih evergreen daripada...

Kubernetes yang advance.

Karena advance itu mungkin...

suatu saat, ya contohnya ya...

kalau saya belajar Kubernetes dulu...

yang awalnya sama yang sekarang...

udah berbeda.

Nah, itu risiko yang berfokus...

pada suatu produk ya.

Iya, ini kan ada produknya.

Tapi sebenarnya gak apa-apa juga sih.

Mungkin ada orang yang emang lebih gampang belajar...

sambil tegang buku fisik gitu.

Dan bahasa Indonesia punggulannya adalah...

bukunya bahasa Indonesia mungkin gak banyak.

Jadi ya tetap berguna.

Tapi ya diharapkan...

setelah si pemula itu...

paham, nguasain dari buku itu...

ya besok-besok Kubernetes-nya apa...

settinganya berubah, pindah-pindah semua...

ya udahlah itu...

udah paham, cari sendiri lah.

Googling sendiri yang berubah apa dan...

perlu adaptasi atau enggak.

Kita bisa coba nanti...

kontak-kontak yang ilman atau...

Mas Giri...

yang di satu grup kita kan...

teranggil kalau dia berkenan ya.

Kita tanya-tanya proses penulisan buku...

kesulitannya apa.

Mudah-mudahan kan...

semakin banyak buku kan...

semakin bagus ya buat kita untuk belajar ya.

Phoenix Project, ini juga salah satu buku yang...

sebenarnya fiksikan.

Fiksikan, novel.

Yang terinspirasi dari buku itu...

akhirnya menerapkan di...

perusahaan sebenarnya.

Padahal itu sebenarnya...

Baru tahu The Phoenix Project, baguskah?

Itu Phoenix Project bagus-bagus.

Beberapa teman yang baca...

Teman-teman yang baca bilang...

mereka menerapkan istilah...

konsep DevOps dan lain-lain...

terinspirasi dari buku Phoenix Project ini.

Tapi dikemas dalam bentuk novel.

Tapi ceritanya...

nggak real sebenarnya.

Tapi mungkin berdasarkan kisah nyata...

atau gimana nggak tahu ya.

Dikemas dalam bentuk menarik...

dalam bentuk fiksik.

Cuma ada hal-hal yang bisa diterapkan dari situ.

Saya jadi merasa...

kategori bodah buku ini...

sangat bagus.

Betul, setuju.

Konon tingkat literasi...

di Indonesia selalu...

apa sih, kayak sepuluh terbawah gitu.

Cuma kayaknya setiap gue...

lihat artikel berita gitu kayak nggak terima.

Emang yang disurvey siapa aja sih?

Yang disurvey orang yang nggak pernah baca doang kali.

Wah, viewer-viewer kita pada...

baca buku ternyata ya.

Oh gitu ya?

Saya nggak nyangka lho seramanya ini.

Kalau nggak ada yang pernah kena...

survey literasi ya.

Setiap kali selalu kayak gitu.

Indonesia selalu...

sepuluh terbawah di Asia.

Di Singapura, Malaysia, Kala.

Kita melihat...

yang disurvey...

yang disurvey yang...

yang disurvey yang nggak...

yang nggak baca buku kali.

Nah, itu biasnya...

Buktinya saya dari kecil tuh...

baca buku komik lho.

Bagon Bol, Kung Fu Boy.

Itu baca buku.

Nah, terus tingkat sekarang?

Itu tuh masuk kategori membaca kan.

Walaupun juburan.

Baca Twitter, baca Instagram gitu.

Baca kan ya.

Eh, jangan salah lho.

Twitter thread itu sekarang mulai panjang-panjang lho.

Walaupun ada yang benar, ada yang nggak.

Itu kan sosial media kan.

Terserah opini masing-masing kan.

Buku juga...

Buku juga belum tentu semua benar.

Bisa aja.

Oh, dulu Mas Diri ngasih pengantar CICD...

dari Buku Phoenix Project ya?

Wah, seru nih.

Beda Buku Phoenix Project berikutnya kali ya?

Featuring Mas Diri ya?

Mas Diri.

One Piece.

Sik.

Ivan, bacanya Dragon Ball.

Saya juga bacanya Dragon Ball.

Baru meninggal ya? Berapa bulan yang...

Akhirnya terima.

Akhirnya terima.

Pas saya lagi di Jepang itu...

Oh, iya. Ikut Pohayat nggak?

Enggak.

Di mana juga nggak tahu dia.

Pohayat balik bahwa nasi...

nasi berkat.

Nasi buhikus.

Oh, iya-iya. Songgoku kan makan nasi ya?

Teman-teman yang hadir...

yang hadir...

gini dong, thumbs up, thumbs down...

atau gimana untuk konsep...

Beda Buku ini perlu kita lanjutin.

Ya, kasih itu dong.

Kasih feedback kira-kira.

Kita adain lagi nggak sih? Perlu kita adain lagi atau nggak?

Sama rekomendasi itu.

Kita kembali ke format awal.

Ya itu finish project tadi.

Ya, rekomendasi boleh.

Ya, kalau nanti ada yang kepikiran.

Oh, buku ini seru juga kali ini.

Kalau udah buku.

Tolong rekomendasikan kita buku.

Ke sini aja.

kesana.in/ngobrolinweb

Disitu ada GitHub Discussion.

Jadi teman-teman langsung...

bikin post aja.

Rekomendasi buku disana.

Buku yang menarik kita baca dan...

kita coba review ya.

Kita coba beda.

Kita paksa baca dulu ya.

Baca dulu.

Misalkan ada...

misalkan ada 6 chapter lagi ya.

Ga refresh.

Refactor to collection lagi.

Bikin buku kekuatan anime...

untuk programmer.

Jadi wibu nanti jangan ya.

Bikin manga, bikin manga, tapi...

ya bayangin kayak...

Subasa atau apa. Cuma kan itu main mula.

Nah, ini programmer.

Cuma lebih gitu...

aku harus bisa memacakan bak ini.

Ada.

Ada efek-efeknya gitu.

Ada itu di Instagram kan...

yang komik untuk programmer.

Ada horror code.

Horror apa gitu.

Instagramnya.

Dulu Bukalapak bikin kayak komik gitu.

Konsep-konsep homograman.

Oh ya?

Saya pernah dapet.

Dia bentuknya komik tipis ya.

Jadi bahas tentang Ejal.

Bahas tentang TDD kalo ga salah. Apa gitu.

Wah keren banget.

Ada dulu.

Di bagi-bagi.

Ga tau deh.

Gugling ga ketemu ya.

Nanti kalo ada deh.

Ada tuh buku...

saya dapet tuh waktu itu.

Bukunya tipis sih.

Cuma berapa lembar.

Tapi ya lucu juga ya.

Masa-masa kemasan. Bener kan?

Ada yang pernah liat kan ya.

Tapi saya lupa judulnya apa.

Di Gugling juga ga ketemu.

Komik Bukalapak.

Ini hal-hal yang selalu di Gugling ya.

Ini hal-hal yang selalu di Gugling ya.

Ya bisa Gugling.

Maksudnya kalo kita Gugling komik Bukalapak ya.

Munculnya orang jualan komik.

Ada tuh dulu.

Ya bukan komik yang tebal

berapa ini ya.

Berapa ratus halaman ya.

Komik strip lagi tuh ya?

Strip ya betul.

Komik strip cuma 3-4 halaman.

Betul.

Tapi itu

lumayan menarik.

Apalagi buat kita yang baru belajar.

Terus ngeliatin kayak gitu kan bagus ya.

Oke.

Wah kayaknya bisa lanjut ya.

Tapi

sekalian memaksa kita untuk

membaca kan ya.

Itu buat memperbaiki hasil

survei tahunan tingkat literasi.

Berarti saya harus komit

menyelesaikan ini dalam 2-3 bulan ke depan.

Tebal banget.

Makasih bikin ya. Beda buku ya.

Seru nih. Ayo.

Beda buku apa ya.

Bukunya si Adi Osmani itu bagus-bagus.

Termasuk salah satu yang

saya tertarik itu buku softskillnya

itu keren banget sih.

Oh dia punya buku softskill juga ya?

Aku cuma tau ya.

Baru delis kan terakhir ya.

Keren ya yang patterns itu.

Ada itu juga ada

softskill books.

Mana dia?

Di perusahaan saya

kalau misalnya mau beli begini kan.

Bisa request.

Request ya?

Ya.

Kalau perusahaan belum begitu

berarti pertama kali harus ajuin ke bosnya.

Saya mau beli buku di support nggak?

Ke perusahaan.

Dan usahakan ke HR-nya

sampai bisa gitu.

Ke semua orang

yang ngumpulin tim.

Kalau kita mau belajar

harus bisa dikasih buku.

Ini gratis ya? Bisa didownload soalnya free.

Sample chapter kali?

Download the books.

Ya bisa.

Oh emang kan dia emang

sebagian bukunya ada yang free,

ada yang berbayar.

Tapi biasanya ya

ini yang saya beli ini

sebenarnya dia

kalau dihitung-hitung ya

dia nggak dapat profit apa-apa dari buku ini.

Yang buku yang saya beliin ini.

Karena yang saya beli itu cuma ongkos kirimnya doang.

Itu belinya di mana?

Smashing Books.

Smashing Magazine.

Oh pas di Eropa, bukan di Indonesia?

Enggak.

Saya purchase online.

Dikirim sampai ke Indonesia?

Iya dikirim. Jadi pertama kali saya

download EPUB-nya sudah dapat.

Tapi nggak suka baca di handphone.

Gak enak.

Terus terakhir

dikirim.

Spill buku satu-satu.

Nanti kita baca. Kalau saya buka

semua nggak enak.

Ini fun fact ya.

Yang topik

Deface waktu saya bawain makasar kan

tentang Image Optimization.

Itu saya ambil beberapa materinya

dari sampel buku yang tadi.

Sampelnya doang ya.

Itu tebal banget ya.

Ternyata.

Spill koleksi.

Tetapi enaknya baca buku ini. Saya nggak perlu baca semua.

Karena dia sudah percaptor.

Sudah kayak yang saya butuhkan

aja. Karena nggak semua butuh juga.

Atau bisa balik-balik.

Pertama kita cuma pengen tahu

ABC. Terus nanti suatu saat

kita mau buka susahin.

Bisa balik ke buku itu lagi.

Jadi intinya ini

bukan tutorial ya.

Penjelasan mendalam.

Penjelasan mendalam tentang WP.

Dan Optimized App WP.

Atau

penjelasan mendalam mengenai

JPEG Excel

dan lain-lain sebagainya.

Jadi hanya butuh

dibaca sebagian.

"Homong-homong, Adi Osmani

kok pakai batik ya?"

Dia orang Indonesia kali.

Oh yang terakhir itu

Developer Experience.

Bukan yang large-scale

app ini.

Ini yang baru.

Coba diset.

Ini ini.

Tapi fokusnya

ke react ya.

Ini

udah masuk bookmark sih.

Coba setunya.

Yang

DX mana?

Gak ada.

Mana?

Sampai bikin

stoic mind.

Sampai nulis buku stoicism.

Menarik juga nih.

Tapi ini bisa dibaca

gratis kan kalau HTML ya?

Betul.

Kalau mau beli buku yang benerannya

baru di ini ya.

Wah banyak yang menarik nih.

Seru-seru-seru. Bisa kita kumpulin

nanti ya. Dijadikan satu

thread, nanti kita bahas satu-satu.

Mantap.

Oke.

Nah, untuk malam ini mungkin udahan dulu kali ya.

Udah satu setengah jam.

Hampir satu setengah jam kita ngobrol.

Malorngi dulu.

Dan mudah-mudahan

kita punya cukup

bandwidth untuk membaca buku dan

ngobrolin

tentang isi bukunya.

Harus disempatkan. Minimal

setahun sekali.

Dibiasakan sedikit-sedikit.

Ternyata teman-teman di sini

banyak juga yang

masih melirik buku sebagai

sumber referensi dari belajar ya.

Saya kaget juga jujur sih. Karena

kirain udah beralih

ke video

atau online course dll. Ternyata

masih cukup banyak. Jadi kita masih satu frekuensi ya.

Oke.

Ya segitu aja untuk malam ini.

Jangan lupa kritik saran seperti tadi

bisa kita lemparkan

kesana.in/ngobrolinweb.

Kita bisa diskusi juga. Teman-teman

kalau ada pertanyaan yang

butuh dijawab, mungkin nanti kita akan

hadain episode

khusus untuk menjawab pertanyaan-pertanyaan

di GitHub Discussion

kalau sudah mulai terkumpul pertanyaannya.

Untuk malam ini, udahan dulu. Terima kasih

banyak untuk atensinya.

Untuk diskusinya. Kita jumpa lagi minggu

depan. Sampai jumpa.

Bye bye.

Sampai jumpa di video selanjutnya.

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://ksana.in/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 .