← semua materi
19:00 Tips · 24 Oct 2026 · 19:01

Kenapa Y2K tidak meledak — dan kenapa itu justru bukti kerja besar, bukan hoaks


Isi

Masalahnya nyata, bukan mitos. Banyak sistem tahun 1960–1980-an menyimpan tahun cuma 2 digit (85 = 1985) untuk hemat byte — memori dan storage waktu itu mahal. Konsekuensinya: 00 tidak bisa dibedakan dari 1900. Bukan cuma tampilan tanggal salah; yang bahaya adalah logika yang membandingkan tanggal: if (maturity_date < today), perhitungan umur, jatuh tempo bunga, masa berlaku lisensi, siklus penagihan.

Skala kerjaannya besar. Diperkirakan 25% kegagalan seharusnya sudah muncul sebelum 2000 (tahun fiskal 2000 mulai 1999, dan banyak perhitungan memakai tanggal ke depan). Artinya bug-nya sudah aktif bocor pelan-pelan sebelum deadline.

Kronologi singkat:

Waktu Kejadian
1995–1996 Kesadaran publik naik; audit sistem warisan mulai masif
Jan 1999 Bug muncul lebih awal: meteran taksi Singapura mati, tarif taksi Swedia salah, komputer paspor sementara di 3 bandara Swedia down
Feb 1999 Uji coba di Peach Bottom Nuclear Station, Pennsylvania: teknisi salah mengubah jam di komputer operasi (bukan simulator) → semua komputer PLTN crash, ~7 jam pakai peralatan manual
Nov 1999 Departemen Commerce AS: estimasi total biaya remediasi global ~$100 miliar
Des 1999 10.000 mesin EDC HSBC/Racal di UK berhenti proses kartu (logika "transaksi harus selesai dalam 4 hari kerja" → tanggal 28–31 Des dianggap 1900)
31 Des 1999, 19:00 EST Patch Y2K itu sendiri yang bikin crash: sistem ground control Fort Belvoir down, 5 satelit mata-mata (termasuk 3 KH-11) kehilangan feed. Pull ih 3 jam, normal 2 Jan
1 Jan 2000 Shika Nuclear Plant Jepang: alat monitoring radiasi mati beberapa detik setelah tengah malam
Jan 2000 Port of Santos, Brasil: sistem yang sudah "compliant" gagal baca registrasi customs 3 tahun format lama
29 Feb 2000 Gelombang kedua: bug hari kabisat — kebanyakan minor

Kenapa terasa "tidak terjadi apa-apa"? Karena yang diingat cuma hasil akhirnya. Kerja remediasi (audit kode warisan, ekspansi tanggal ke 4 digit, atau date windowing, plus testing lintas sistem) sudah selesai sebelum deadline. Ini fenomena klasik: kerja pencegahan yang berhasil tampak identik dengan tidak ada masalah sama sekali — dan itu justru bikin orang yang mengerjakannya tidak dapat kredit.

Sisi sebaliknya juga benar: ada kritik valid bahwa skalanya over-estimasi. Banyak sekolah dan UKM nyaris tidak melakukan apa-apa dan tetap aman, karena patch Y2K sudah menumpang di update OS/rutin. Jadi jawaban jujurnya bukan "hoaks" atau "kiamat hampir terjadi", tapi: risiko nyata, dampak paling parah berhasil dicegah, biaya sangat besar, dan sebagian kerjanya memang berlebihan.

Plot twist yang paling berguna buat engineer sekarang: banyak fix pakai date windowing — 00–19 dibaca 2000–2019, 20–99 dibaca 1920–1999. Solusi sementara yang "cukup sampai sistem lama diganti". Sistem lamanya tidak diganti. Hasilnya 1 Januari 2020: parkir meter NYC menolak kartu kredit, unit POS Novitus bermasalah, tagihan utility tercetak tahun 1920, game WWE 2K20 crash saat tahun berganti.


Satu hal yang bisa langsung dipakai

Sebelum pakai solusi sementara, tulis tanggal kedaluwarsanya di komentar kode dan di ticket. Format:

# ponytail: windowing 2-digit year, valid s/d 2019-12-31.
# Upgrade: migrasi kolom ke DATE/timestamptz. Ticket: PROJ-1234
def parse_year(two_digit: str) -> int:
    n = int(two_digit)
    return 2000 + n if n <= 19 else 1900 + n

Tanpa baris itu, "sementara" akan jadi permanen — dan 20 tahun kemudian ada orang lain (mungkin kamu) yang bangun jam 3 pagi karena tanggalnya berhenti masuk akal.


Takeaway

Kerja pencegahan yang sukses tidak terlihat seperti prestasi — ia terlihat seperti hari biasa. Dan "solusi sementara" tanpa tanggal kedaluwarsa adalah utang yang bunganya jatuh tempo dua dekade kemudian.