Frustrasi seorang software engineer selama setahun dengan race condition fitur pencarian berujung pada solusi yang tidak konvensional: bergabung dengan perusahaan tersebut untuk memperbaikinya sendiri. Developer yang mendirikan Trieve (sebuah perusahaan teknologi pencarian) ini telah berurusan dengan hasil pencarian yang bermasalah di platform dokumentasi Mintlify yang didukung oleh perusahaannya sendiri.
Masalah yang Tidak Kunjung Hilang
Masalahnya adalah race condition klasik dalam fungsi pencarian. Ketika pengguna mengetik dengan cepat, sistem terkadang menampilkan hasil untuk query sebelumnya alih-alih istilah pencarian mereka saat ini. Ini terjadi karena query pencarian yang di-debounce tidak dibatalkan dengan benar ketika query baru dimulai. Bagi seseorang yang perusahaannya menyediakan teknologi pencarian yang mendasarinya, melihat pengguna mengalami hasil yang buruk terasa seperti pengingat konstan akan pekerjaan yang belum selesai.
Developer tersebut telah mengangkat masalah ini melalui saluran vendor normal, tetapi hal itu tidak pernah menjadi prioritas bagi tim yang sibuk mengelola lebih dari 30.000 situs dokumentasi.
Detail Solusi Teknis:
- Masalah: Kondisi race pada query pencarian yang di-debounce
- Akar masalah: Query pencarian sebelumnya tidak dibatalkan ketika query baru dimulai
- Solusi: Menambahkan AbortController untuk membatalkan query sebelumnya
- Hasil: Hasil pencarian kini selalu sesuai dengan input pengguna saat ini
- Platform yang terpengaruh: Situs dokumentasi Mintlify (30.000+ situs)
Komunitas Berbagi Frustrasi Serupa
Cerita ini sangat beresonansi dengan developer lain yang menghadapi gangguan sehari-hari yang serupa. Banyak yang berbagi kisah mereka sendiri tentang bug yang persisten di layanan populer. Seseorang menyebutkan berurusan dengan Google Maps yang terus beralih kembali ke mil alih-alih kilometer - pengaturan yang harus mereka ubah sekitar 500 kali selama 20 tahun. Yang lain menunjuk pada masalah seperti Google Flights yang mengubah mata uang saat bepergian, atau fitur dasar yang hilang seperti tandai semua sebagai dibaca untuk voicemail di perangkat Apple .
Ini adalah level epik yang saya cita-citakan dalam hidup
Diskusi tersebut mengungkapkan bagaimana masalah-masalah kecil namun persisten ini dapat mendorong orang ke tindakan ekstrem, dengan beberapa orang bercanda tentang melamar pekerjaan di perusahaan teknologi besar hanya untuk memperbaiki masalah kesayangan mereka.
Masalah Serupa yang Dilaporkan Komunitas:
- Google Maps : Pengaturan kilometer/mil kembali ke default sekitar 500 kali selama 20 tahun
- Google Flights : Mata uang berubah-ubah selama sesi perjalanan
- Apple Wallet : Kartu yang sudah kedaluwarsa tidak terhapus otomatis (sudah diperbaiki oleh karyawan yang mengundurkan diri setelah mengimplementasikan fitur tersebut)
- Apple Voicemail : Tidak ada fungsi "Tandai semua sebagai sudah dibaca"
- Situs web pemesanan: Masalah scrolling dan loading pada sidebar filter
Perbaikan Teknis
Setelah masuk ke dalam perusahaan (melalui apa yang tampaknya adalah akuisisi), solusinya ternyata sangat mudah. Menambahkan AbortController ke fungsi pencarian yang di-debounce memungkinkan sistem untuk membatalkan query sebelumnya ketika query baru dimulai. Perubahan sederhana ini memastikan hasil pencarian selalu sesuai dengan apa yang sedang diketik pengguna.
Perbaikan ini menyoroti frustrasi umum dalam pengembangan perangkat lunak: terkadang masalah yang paling mengganggu memiliki solusi yang relatif sederhana, tetapi prioritas organisasi dan hambatan akses mencegah mereka untuk diatasi.
Keunggulan Open Source
Pengalaman tersebut memperkuat preferensi developer terhadap perangkat lunak open source, di mana siapa pun dapat mengirimkan perbaikan untuk masalah yang mereka temui. Dalam sistem tertutup, bahkan perbaikan sederhana dapat tetap tidak ditangani untuk periode yang lama, menciptakan frustrasi berkelanjutan bagi pengguna yang berpotensi dapat menyelesaikan masalah tersebut sendiri.
Cerita ini telah menginspirasi orang lain untuk mempertimbangkan pendekatan serupa, meskipun beberapa mempertanyakan etika dan legalitas bergabung dengan perusahaan secara khusus untuk membuat perubahan yang menguntungkan pemberi kerja lain. Sebagian besar setuju bahwa transparansi dan pengungkapan yang tepat akan menjadi penting dalam situasi seperti itu.
Race condition: Bug perangkat lunak yang terjadi ketika waktu kejadian mempengaruhi perilaku program, sering menyebabkan hasil yang tidak dapat diprediksi.
Debounced search: Teknik yang menunda eksekusi pencarian sampai pengguna berhenti mengetik, mengurangi permintaan server yang tidak perlu.
Referensi: I couldn't submit a PR, so I got hired and fixed it myself