Kenapa Resolusi Tahun Baru Itu O(n!) dan Pasti Gagal
Tiap pergantian tahun timeline gue selalu penuh sama manusia-manusia ambis yang nulis list panjang resolusi tahun baru. Mereka ngetik dengan penuh semangat: mau rajin ngegym, baca 50 buku setahun, belajar bahasa baru, dapet kerjaan gaji dua digit, sama ngurangin screen time.
Gue bacanya cuma bisa senyum getir. Bukan karena gue jahat, tapi secara matematis, yang mereka lakuin itu murni bunuh diri komputasi.
Coba kita analisis pake Big O Notation. Kalo lu punya satu goal, effort buat nyelesaiinnya mungkin cuma O(1) atau paling parah O(n) kalo butuh waktu linear. Tapi resolusi tahun baru? Itu beda cerita bro.
Resolusi tahun baru itu sifatnya saling interdependen. Lu mau rajin ngegym (butuh waktu dan energi), di saat yang sama lu mau baca 50 buku (butuh waktu luang dan fokus), dan lu juga mau push rank di karir lu (butuh waktu, energi, dan mental sehat). Ini tuh kayak lu nyuruh server jadul nge-run 10 docker container berat secara bersamaan tanpa nambah RAM.
Jadinya apa? Bottleneck.
Kompleksitas dari nyoba ngurusin semua resolusi itu sekalian nggak cuma linear, tapi bisa eksponensial O(2^n) atau bahkan faktorial O(n!). Kenapa? Karena variabel kegagalan di satu hal bakal ngaruh ke hal lain. Lu capek lembur buat karir, besoknya lu skip gym. Karena lu skip gym, mood lu ancur. Mood ancur bikin lu males baca buku. Gitu aja terus sampe akhirnya lu nemu diri lu rebahan main sosmed sambil ngerasa jadi manusia paling gagal di bumi.
Orang tuh suka lupa kalo resolusi awal tahun itu sebenernya bentuk dari technical debt motivasional. Lu berhutang pada diri lu di masa depan pake energi yang belom tentu lu punya. Pas Januari, lu ngerasa lu bisa bayar utang itu karena lu lagi hype. Begitu masuk Februari, lu sadar bunga utangnya (baca: realita kehidupan) udah numpuk.
Terus solusinya apa dong? Jangan bikin resolusi?
Bukan gitu. Kalo lu beneran niat mau upgrade diri, jangan pake pendekatan greedy algorithm yang mau ngambil semua di depan. Pake pendekatan dinamis. Fokus aja ke satu hal kecil, misal benerin jam tidur dulu. Kalo jam tidur lu udah stabil (udah masuk O(1) alias jadi habit), baru lu tambahin fungsi baru di idup lu.
Idup ini bukan hackathon 24 jam di mana lu harus deliver semua fitur sekaligus. Idup ini long-term project. Kalo lu commit perubahan drastis dalam satu waktu, yang ada lu malah dapet merge conflict parah di otak lu. Mending push kecil-kecil tapi konsisten.
Udah ah gue mau tidur siang dulu. Maintenance server otak.