Data Saya Berbohong Sebelum Saya Menulis Satu Baris Logika pun
Untuk waktu yang lama saya percaya bahwa masalah saya hidup di dalam kode saya. Ketika hasilnya keluar salah, saya berburu menyusuri logika saya, model saya, bagian-bagian pintar yang saya banggakan. Biang keladi sebenarnya hampir selalu duduk satu lapisan di bawah semua itu, diam dan tak terperiksa: data itu sendiri. Tampaknya bersih. Padahal tidak. Dan segala sesuatu yang saya bangun di atasnya dengan setia mewarisi kebohongan itu.
Ini adalah jenis kegagalan paling membosankan yang ada, dan justru itulah yang membuatnya begitu berbahaya. Tidak ada yang mau menghabiskan waktunya mengaudit deretan angka. Maka tidak ada yang melakukannya, dan kebusukan itu mengendap di sana di paling bawah, menopang segalanya.
Mitos tentang data yang bersih
Data pasar mentah tampak rapi dengan menenangkan. Baris yang teratur, stempel waktu yang tertib, angka-angka yang tampak masuk akal berbaris berurutan. Kerapian itu hanyalah kostum. Data dunia nyata, yang dikumpulkan dari sistem nyata yang sesekali rusak, dipenuhi korupsi-korupsi kecil yang tidak mengumumkan dirinya sendiri: celah di mana momen-momen sekadar hilang, entri duplikat, stempel waktu yang melenceng atau tak sejajar, nilai yang membeku dan berulang selama sebuah gangguan, angka-angka mustahil sesekali, seluruh rentang yang secara halus tergeser keluar dari tempatnya.
Tidak satu pun dari ini datang dengan label peringatan. Tampaknya persis seperti data yang baik, karena ia duduk di baris-baris rapi yang sama. Formatnya jujur bahkan ketika isinya tidak, dan format adalah satu-satunya hal yang Anda lihat dalam sekilas pandang.
Sampah masuk, sampah yang penuh percaya diri keluar
Hal yang harus diresapi adalah bahwa sistem tidak tahu datanya salah. Ia tidak bisa. Ia mengambil apa pun yang Anda berikan dan memproses korupsi itu dengan ketekunan yang persis sama seperti yang ia terapkan pada kebenaran, lalu ia menghasilkan sebuah hasil yang bersih, percaya diri, dan tampak profesional yang dibangun di atas kebusukan.
Di situlah seluruh jebakannya, tepat di sana. Keluarannya tampak baik-baik saja. Korupsi tidak merambat sebagai kesalahan yang jelas dan menjerit yang menunjuk Anda ke masalahnya. Ia merambat sebagai jawaban salah yang masuk akal — hasil yang sepenuhnya bisa dipercaya, yang lolos uji insting Anda, yang dengan senang hati Anda jadikan fondasi untuk membangun hal berikutnya. Pada saat kesalahan itu muncul ke permukaan, jika memang pernah, ia sudah terkubur di bawah lapisan-lapisan pekerjaan yang semuanya berasumsi bahwa lantai di bawah mereka kokoh.
Kesalahan yang bersembunyi di balik kemasukakalan
Saya belajar, perlahan, bahwa kesalahan data yang berbahaya bukanlah yang jelas terlihat. Harga nol, satu hari penuh yang hilang, nilai yang jelas-jelas omong kosong — itu semua Anda tangkap, karena absurd di permukaannya. Mereka memicu pemeriksaan kewarasan pertama.
Kesalahan yang sebenarnya menyakiti Anda adalah yang masuk akal. Nilai yang salah tetapi masih berada dalam rentang yang bisa dipercaya. Stempel waktu yang meleset satu unit. Celah yang diam-diam diisi oleh sesuatu di hulu dengan sebuah tebakan. Ini semua berlayar mulus melewati setiap pemeriksaan kewarasan yang Anda punya, karena mereka tampak persis seperti data yang sah — mereka tak terbedakan dari kebenaran tanpa secara khusus pergi memverifikasinya terhadap sesuatu yang lain. Korupsi yang paling mahal adalah jenis yang cukup sopan untuk terlihat benar.
Saya men-debug lantai yang salah dari gedung
Untuk waktu yang sangat lama hingga memalukan, insting saya ketika sesuatu keluar dengan aneh adalah pergi mencari bug di dalam logika saya — di bagian sistem yang menarik dan canggih, bagian yang menurut saya layak dipikirkan. Bug itu hampir tidak pernah ada di sana. Ia ada di bawahnya, di dalam data, di dalam suatu asumsi tentang input yang sekadar tak pernah saya repotkan untuk diverifikasi.
Saya, pada dasarnya, sedang menggeledah lantai-lantai atas sebuah gedung untuk mencari sumber retakan yang menjalar di sepanjang fondasi. Saya akan memeriksa kode yang elegan itu berulang kali, tidak menemukan apa pun yang salah dengannya, dan menjadi semakin bingung — karena memang tidak ada yang salah dengannya. Ia dengan benar memproses input buruk menjadi keluaran buruk, persis seperti yang dirancang. Logikanya tak bersalah. Tanah tempatnya berpijak itulah yang bersalah.
Kualitas data bukanlah tugas yang bisa Anda selesaikan
Salah satu kesadaran yang lebih merendahkan hati adalah bahwa Anda tidak membersihkan data sekali lalu beralih. Itu fantasi. Data baru terus berdatangan, dan ia datang dengan korupsi-korupsi baru. Sebuah sumber diam-diam mengubah formatnya. Sebuah penyedia di hulu mengalami gangguan lalu mengisi ulang celahnya dengan sesuatu yang meragukan. Sesuatu yang andal selama berbulan-bulan rusak dengan cara yang baru pada suatu Selasa biasa.
Kualitas data, saya akhirnya memahami, bukanlah pembersihan sekali jalan yang Anda centang dari daftar. Ia adalah disiplin yang berkelanjutan — sebuah sikap kecurigaan yang terus-menerus terhadap setiap input, yang dipelihara selamanya, karena saat Anda berhenti mengawasi adalah persis saat sebuah korupsi yang baru dan kreatif berjalan masuk tanpa ditantang.
Validasi tanpa ampun, jangan percaya apa pun
Perbaikan praktisnya adalah memperlakukan setiap input sebagai bersalah hingga terbukti bersih. Periksa celah. Periksa duplikat. Periksa nilai-nilai mustahil, stempel waktu yang gagal bergerak maju dengan stabil, rentang mencurigakan di mana sebuah angka berhenti berubah dengan cara yang tak pernah dilakukan data nyata. Dan yang terpenting, bangun pemeriksaan-pemeriksaan ini langsung ke dalam pipeline, sehingga korupsi tertangkap dengan lantang di pintu depan, di detik ia tiba, alih-alih ditemukan berbulan-bulan kemudian sebagai keanehan tak terjelaskan dalam suatu hasil yang tak lagi bisa Anda telusuri.
Ini pekerjaan yang membosankan, defensif, dan sangat tidak glamor. Ini juga pekerjaan yang menentukan apakah segala sesuatu di hilir dibangun di atas batu karang atau di atas pasir. Kegagalan yang lantang di pintu adalah sebuah hadiah. Kegagalan yang senyap yang Anda warisi dan jadikan fondasi pembangunan adalah sebuah bencana yang lambat.
Pelajaran yang lebih dalam: fondasi menentukan langit-langit
Prinsip yang mendasari semua ini sederhana dan tak kenal ampun. Tidak ada kecemerlangan sebesar apa pun pada model di atas yang bisa mengompensasi kebusukan pada data di bawahnya. Kualitas dari segala sesuatu yang Anda bangun dibatasi, secara mutlak, oleh kualitas dari apa yang Anda berikan untuk diolahnya. Anda tidak bisa bernalar untuk keluar dari input yang buruk; Anda hanya bisa menghasilkan kesalahan yang lebih percaya diri dan lebih rumit di atasnya.
Maka kerja kasar yang membosankan dan tak berterima kasih untuk menjamin input yang bersih bukanlah sesuatu yang di bawah martabat pekerjaan yang sebenarnya, seperti yang dulu saya perlakukan. Ia adalah fondasi dari pekerjaan yang sebenarnya, dan seluruh struktur di atasnya hanya akan sejujur dasar itu. Dulu saya ingin melewatinya begitu saja untuk sampai ke bagian-bagian yang menarik. Sekarang saya paham bahwa bagian-bagian yang menarik itu tak berharga jika bagian membosankan di bawahnya sedang berbohong.
— Tidak ada sinyal, tidak ada imbal hasil, bukan nasihat investasi.