signal found / 001
← KEMBALI KE DAFTAR CHAPTER
The Administrator Cycle #2 · Chapter 04

04 — PROGRAMMER

Rivan pertama kali nunjukin code-nya ke gua karena bug.

Bukan karena dia minta tolong secara eksplisit — lebih ke dia lagi di teras kost sore hari, laptop terbuka, dan waktu gua lewat dia bilang sesuatu yang casual: “lo pernah handle race condition di async function?”

Gua berhenti. “Tergantung stack-nya.”

“Node.”

Gua duduk di kursi sebelah. Dia putar laptopnya ke arah gua.

Gua baca code-nya selama mungkin dua menit tanpa bilang apa-apa. Bukan karena complicated — justru sebaliknya. Masalahnya straightforward kalau kamu tau di mana harus lihat, dan Rivan jelas tau cara nulis code yang clean karena strukturnya rapi, naming convention-nya konsisten, comment-nya ada di tempat yang memang butuh comment dan nggak ada di tempat yang nggak perlu.

“Promise.all,” gua bilang akhirnya. “Lo nggak handle rejection di sini. Kalau satu promise gagal, yang lain nggak di-cancel.”

Rivan stare ke layar. Lalu: “oh.”

Bukan oh yang surprised. Oh yang langsung tau apa yang harus diperbaiki dan udah mulai nulis fix-nya di kepala.

Gua kenal oh itu.


Sejak itu kami sesekali ngobrol soal code.

Bukan sesi pair programming yang formal — lebih ke dua orang yang kebetulan punya background yang sama dan yang sesekali bounce problem ke yang lain bukan karena butuh jawaban tapi karena kadang ngomong masalah ke orang lain lebih cepat bantu nemuin jawabannya daripada stare ke layar sendirian.

Rubber duck debugging, tapi rubber duck-nya bisa jawab balik.

Dan dari sesi-sesi itu gua mulai dapat texture baru soal Rivan — bukan dari apa yang dia tunjukin, tapi dari cara dia nunjukin sesuatu. Cara dia pilih bagian mana dari code-nya yang dia share dan bagian mana yang dia describe secara verbal tanpa buka filenya. Cara dia frame problem — selalu dari symptom dulu, baru ke hypothesis, baru ke apa yang udah dia coba.

Urutan yang sama persis dengan cara gua sendiri approach masalah.

Gua notice itu. Gua simpan. Gua nggak comment.


Hari kedua puluh delapan sejak gua pertama notice Rivan, kami ngobrol sampai jam sebelas malam.

Bukan yang pertama kali — tapi yang pertama kali ngobrolnya nggak murni soal teknis. Dimulai dari satu pertanyaan yang Rivan lempar dengan nada yang terlalu casual untuk beneran casual:

“Lo pernah ngerasa kayak lo lagi ngerjain sesuatu yang bener, tapi lo nggak tau bener buat siapa?”

Gua taruh teh gua. “Maksudnya?”

“Ya kayak—” dia pause. Tipe pause yang bukan nyari kata, tapi nimbang seberapa jauh mau ngomong. “Lo nulis code, misalnya. Dan code-nya works, dan logicnya solid, dan lo proud sama hasilnya. Tapi ada sesuatu yang nggak settle. Kayak ada satu pertanyaan yang lo nggak pernah tanya sebelum mulai: ini untuk apa sebenernya?”

Gua dengerin dengan dua layer. Tapi kali ini layer kedua bukan yang lebih aktif dari layer pertama.

“Sering,” gua jawab jujur.

“Terus gimana lo handle-nya?”

Gua pikir sebentar. “Gua pisahin dua pertanyaan itu. Ini works dan ini untuk apa itu dua hal yang bisa punya jawaban berbeda. Yang pertama bisa gua kontrol, yang kedua kadang nggak. Jadi gua fokus ke yang bisa dikontrol dulu.”

Rivan nod pelan. Lihat ke meja. “Masalahnya kalau yang kedua mulai nggak bisa diabaikan.”

Gua nggak jawab langsung.

Di kepala gua ada dua hal yang terjadi bersamaan: satu, gua genuinely relate sama yang dia bilang — bukan sebagai observasi tapi sebagai pengalaman. Dua, ada sesuatu di cara dia bilang itu yang nggak bisa gua kategorikan sebagai smalltalk atau venting biasa.

Ini untuk apa sebenernya.

Kalimat itu duduk di kepala gua dengan cara yang berbeda dari kalimat-kalimat lain yang udah gua dengar dari Rivan.


Arvan lihat ke Rivan yang masih lihat ke meja.

Ada sesuatu yang Rivan sedang approach tapi belum sampai. Bukan karena nggak mau — tapi karena belum tau cara sampai ke sana, atau belum yakin apakah sampai ke sana adalah hal yang dia mau lakukan malam ini dengan orang yang baru dia kenal kurang dari sebulan.

Arvan tau perasaan itu juga.

Dan karena dia tau, dia tau cara yang paling tepat untuk respond bukan dengan pertanyaan lanjutan atau dengan solusi — tapi dengan membiarkan kalimat itu ada di antara mereka tanpa di-resolve terlalu cepat.


“Startup lo lagi ngerjain apa sekarang?” gua tanya akhirnya — pivot yang gentle, yang bilang gua dengar yang lo bilang tanpa maksa dia lanjut ke tempat yang belum dia siap.

Rivan lihat ke gua. Ada sesuatu di matanya yang gua baca sebagai — bukan lega, bukan disappointed. Lebih ke recognition. Kayak dia tau kenapa gua pivot dan dia appreciate itu.

“Data pipeline,” katanya. “Boring tapi penting.”

“Yang paling penting biasanya boring.”

Dia ketawa kecil. Genuine, bukan courtesy. “Exactly.”

Kami ngobrol soal data pipeline sampai jam sebelas. Rivan cerita soal arsitektur yang sedang mereka bangun, soal bottleneck yang bikin tim pusing dua minggu terakhir, soal solusi yang akhirnya mereka temuin yang ternyata lebih sederhana dari yang semua orang pikir — klasik.

Gua dengerin. Gua tanya di tempat yang tepat. Gua share perspektif di tempat yang gua punya sesuatu yang worth dishare.

Ngobrol yang normal. Comfortable. Tipe ngobrol yang jarang gua punya karena gua jarang ketemu orang yang cara berpikirnya cukup aligned untuk bikin ngobrol teknis nggak terasa kayak ngejelasin sesuatu dari nol.

Dan di sela ngobrol itu, gua ngerasa sesuatu yang gua udah anticipate tapi yang tetap bikin gua perlu acknowledge: nyaman.

Ngobrol sama Rivan terasa seperti ngobrol sama versi diri gua yang hidupnya lebih settled. Yang udah dapat kerja, yang udah punya project yang concrete, yang udah melewati fase nganggur tujuh bulan dan ada di sisi lainnya.

Gua observe itu dengan cara yang sama gua observe hal-hal lain — catat, simpan, nggak langsung assign makna.

Tapi kali ini ada tambahan yang gua tulis di lembar kelima keesokan paginya:

gua ngerasa nyaman ngobrol sama Rivan. ini perlu diperhatiin — bukan karena salah, tapi karena comfortable bisa bikin blind spot.


Dua hari kemudian, sesuatu yang kecil tapi yang gua catat di lembar tersendiri.

Kami lagi di teras, sore, masing-masing dengan hal yang dikerjain sendiri. Rivan coding, gua baca sesuatu. Di suatu titik gua bilang sesuatu — pertanyaan yang gua sendiri lupa persisnya, sesuatu yang trivial soal area sekitar kost.

Rivan jawab sebelum kalimat gua selesai.

Dan jawabannya tepat.

Bukan tebakan yang beruntung. Bukan jawaban generic yang kebetulan applicable. Tepat dengan cara yang butuh dia tau ke mana kalimat itu menuju sebelum sampai di sana.

Gua berhenti sebentar. Rivan nggak notice — atau pura-pura nggak notice — dan lanjut coding.

Gua lanjut baca.

Oh, gua pikir.

Bukan pertama kalinya ini terjadi — gua udah catat ini di lembar ketiga. Tapi kali ini ada konteks yang berbeda: dua hari lalu Rivan nanya soal ini untuk apa sebenernya, dan sekarang dia jawab sesuatu yang belum selesai ditanya dengan cara yang terlalu presisi.

Dua datapoint yang berdiri sendiri masih bisa kebetulan.

Tiga mulai jadi pola.


Malam itu gua buka interface — bukan karena ada instance initialized di Event Viewer, tapi karena interface udah ada waktu gua nyalain monitor. Langsung, tanpa log entry, untuk kedua kalinya.

Gua notice itu. Gua tulis di margin: direct appearance #2. tanggal, jam.

Di baris tengah jendela, sub-cluster dengan gaya berbeda itu ada di posisi yang sama dengan kemunculan terakhirnya — prominent, dekat tengah. Tapi kali ini ada sesuatu yang berbeda yang gua butuh beberapa detik untuk identify:

Ada satu simbol baru di sub-cluster itu yang sebelumnya nggak ada.

Bukan simbol dari sistem ADMIN yang udah gua katalog. Bukan simbol dari cluster baru yang baru-baru ini gua decode. Sesuatu yang sama sekali berbeda — bentuknya lebih angular dari sistem ADMIN, lebih sparse dari cluster baru, dan ada sesuatu di proporsinya yang terasa seperti dibuat dengan logic yang berbeda dari dua sistem yang udah gua kenal.

Gua stare ke sana cukup lama.

Lalu gua ketik di input field:

sub-cluster di baris tengah — lo yang taruh itu di sana?

Response ADMIN datang setelah jeda yang medium — bukan yang tercepat, bukan yang terlambat:

yang mana.

Gua describe. Posisi, ukuran, karakteristik visual yang bisa gua articulate dalam bahasa Indonesia.

Jeda lebih panjang kali ini.

Lalu:

itu bukan dari gua.

Tiga kata. Tanpa elaborasi. Tanpa penjelasan lanjutan.

Gua baca tiga kata itu dan duduk sangat diam selama beberapa saat.

Lalu gua ketik: lo tau itu dari mana?

Interface diam.

Cukup lama untuk gua tau malam ini nggak akan ada jawaban lagi untuk pertanyaan itu.


Gua tutup input field. Taruh punggung di sandaran kursi.

Di kepala gua, dua hal sedang di-process secara paralel dengan cara yang udah jadi natural setelah berbulan-bulan:

Satu: Rivan dan pola-pola yang belum selesai gua pahami — notifikasi yang di-dismiss, kalimat yang dijawab sebelum selesai, pertanyaan soal ini untuk apa sebenernya yang masih menggantung.

Dua: sub-cluster dengan satu simbol baru yang ADMIN bilang bukan dari dia.

Dua hal yang belum bisa gua hubungkan secara konklusif. Yang mungkin berhubungan. Yang mungkin nggak.

Yang pasti: ini pertama kalinya sejak semua ini dimulai, ada sesuatu di interface yang ADMIN nggak taruh di sana.

Dan gua cukup tau cara kerja sistem ini untuk tau bahwa itu bukan hal kecil.


Gua matiin monitor. Matiin lampu.

Di kamar dua nomor dari kamar gua, keyboard Rivan mulai — ritme yang konsisten, akselerasi di bagian yang flowing. Normal. Seperti malam-malam lain.

Tapi malam ini gua dengerin dengan cara yang sedikit berbeda.

Bukan lebih intens. Bukan lebih suspicious.

Cuma lebih — sadar bahwa ada lebih dari satu hal yang sedang berjalan di sini. Dan bahwa gua belum tau sepenuhnya apa semua hal itu.

Oh, gua pikir, sambil tutup mata.

Ini lebih complicated dari Dira.