17 poin oleh GN⁺ 2026-02-09 | 1 komentar | Bagikan ke WhatsApp
  • Menengok kembali perjalanan pemrograman selama 25 tahun sejak masa kuliah, dengan fokus pada manusia, relasi, dan pengalaman alih-alih teknologi itu sendiri
  • 10 menit melihat source HTML yang dipelajari secara tidak sengaja di lab komputer kampus menjadi titik awal dari perjalanan panjang membuat dan memelihara situs web pribadi
  • Eksperimen kecil yang melompat ke reset vector prosesor 8086 untuk me-reboot sistem menanamkan pada seorang teman sikap belajar yang berawal dari rasa ingin tahu
  • Debugging spaghetti code, kegagalan realistis animasi di set-top box, dan peringkat tinggi di kompetisi CTF menunjukkan rangkaian trial and error serta pertumbuhan yang terus berulang
  • Seiring waktu, penulis merasakan perubahan cara pandang bahwa kemampuan memecahkan masalah bukanlah bakat, melainkan hasil dari pengalaman, dan menyimpulkan bahwa yang akhirnya tersisa adalah profesionalisme, etika, dan cara memperlakukan orang lain

Awal Mula Web: Melihat Source (Viewing the Source)

  • Sesaat setelah masuk universitas pada 2001, saat menjelajah web di lab komputer pada sore hari, penulis pertama kali benar-benar berhadapan dengan web ketika mengetik susam.com di address bar
  • Seorang senior yang dilihat dari samping membuka menu View > Source di Internet Explorer dan menjelaskan bahwa situs web adalah teks yang ditulis dalam HTML
  • Ia membuka Notepad, menulis HTML sederhana seperti <BODY><FONT COLOR="RED">HELLO</FONT></BODY>, lalu mendemonstrasikan bagaimana hasilnya ditampilkan di browser
    • Saat itu tag FONT masih digunakan secara luas, dan kebiasaan menulis tag HTML dengan huruf besar adalah hal yang umum
  • Ia menunjukkan perubahan ukuran dan warna font, perataan tengah, perubahan warna latar, dan secara singkat memperkenalkan cara kerja web
  • Penjelasan itu hanya berlangsung sekitar 10 menit, tetapi sejak saat itu World Wide Web tiba-tiba terasa kurang misterius dan jauh lebih menarik
  • Setelah selesai menjelaskan, senior tersebut tidak mengembalikan kursinya dan terus memakai web seperti biasa, sehingga karena kursi terbatas penulis harus kembali ke asrama
  • Domain susam.com ternyata sudah dipakai oleh bisnis kuliner Turki, sehingga tidak bisa didaftarkan, dan kemudian penulis memilih domain .net
  • Pertemuan singkat ini menjadi titik awal dari perjalanan panjang membuat dan mempertahankan situs web pribadi hingga bertahun-tahun kemudian

Reset Vector (The Reset Vector)

  • Kejadian ini berlangsung saat kuliah, ketika penulis sedang membuat program kontrol lift dalam bahasa assembly pada mesin MS-DOS berbasis Intel 8086 di lab komputer
  • Penulis teringat materi kuliah bahwa saat 8086 di-reset, CS:IP akan disetel ke FFFF:0000
  • Muncul rasa penasaran tentang apa yang akan terjadi jika melompat ke alamat tersebut di DEBUG.EXE, lalu penulis mencobanya sendiri
    • Segera setelah menjalankan perintah C:\>DEBUG -G =FFFF:0000, sistem langsung reboot
  • Seorang teman yang selalu menjadi peringkat pertama setiap semester melihatnya dan sangat terkejut, lalu bertanya bagaimana penulis bisa terpikir melakukan hal seperti itu
  • Seminggu kemudian, ia datang ke asrama dan mengaku bahwa meskipun nilainya selalu nomor satu, ia tidak punya rasa ingin tahu untuk mengingat fakta kecil lalu mengujinya sendiri
  • Ia menyatakan tidak akan lagi menargetkan peringkat pertama, dan akan belajar dengan cara mengeksplorasi, bereksperimen, dan menikmati apa yang dipelajari
  • Setelah itu nilainya tetap berada di kelompok atas, tetapi benar-benar tidak pernah lagi menjadi nomor satu
  • Satu eksperimen melompat ke titik masuk reset prosesor menjadi pemicu yang mengubah sikap belajar seseorang dari kompetisi menjadi eksplorasi

Serangan Man-in-the-Middle dan Pekerjaan Engineering Pertama (Man in the Middle)

  • Setelah lulus kuliah, di pekerjaan pertama penulis ditempatkan di tim dukungan teknis produk e-banking, dengan tugas menjalankan installer untuk mendistribusikan komponen tertentu
  • Installer yang ditulis dengan Python sering gagal karena asumsi terhadap lingkungan target terlalu rapuh, sehingga pada minggu pertama penulis menstabilkannya dan menulis panduan pengguna langkah demi langkah
    • Respons terhadap panduan pengguna bahkan lebih baik daripada perbaikan kodenya
  • Penulis merasa pekerjaan dukungan yang repetitif punya keterbatasan dan menginginkan pekerjaan pengembangan yang lebih serius, lalu beberapa kali meminta pindah tim
  • Pada akhirnya penulis diperkenalkan pada kesempatan wawancara dengan tim Archie (architecture) di kota lain
  • Tim Archie menangani web framework dan komponen arsitektur inti yang menopang keseluruhan produk e-banking
    • Routing API, autentikasi dan otorisasi, pengelolaan cookie, dan lainnya diimplementasikan sendiri dengan Java Servlet dan JSP
    • Struktur ini dibuat sebelum munculnya framework open source seperti Spring atau Django
    • Karena digunakan di lingkungan perbankan, pengujian keamanan yang ketat dan audit berkala adalah keharusan
  • Dalam wawancara telepon pada 2006, penulis bisa menjawab pertanyaan keamanan seperti SQL injection dan penanganan XSS, tetapi mengakui tidak mengenal istilah MITM (man-in-the-middle)
  • Pewawancara menjelaskan, “Pelajari PKI dan MITM secara mendalam. Kami akan mengimplementasikan fitur tanda tangan digital di produk corporate banking.”
  • Selama beberapa minggu berikutnya, penulis mempelajari dokumen RFC, public key infrastructure (PKI), dan materi tentang standar kriptografi kunci publik secara intensif
    • Pada awalnya terasa sulit dan membebani, tetapi seiring waktu mulai dipahami sebagai sistem yang intuitif dan elegan
  • Sekitar sebulan setelah pindah ke kota baru, penulis menyelesaikan fitur tanda tangan digital menggunakan library open source Bouncy Castle
  • Setelah itu, penulis terus mengembangkan berbagai bagian penting dari produk tersebut dan memperoleh pengalaman bahwa kode yang ditulisnya masuk ke sistem matang yang digunakan ratusan bank dan jutaan pengguna
  • Manajernya adalah mentor yang luar biasa, dan dukungannya menjadi fondasi rasa percaya diri untuk waktu yang lama
    • Sekitar 20 tahun kemudian produk itu masih beroperasi, dan sesekali saat membuka browser developer tools sebagai pelanggan, penulis menemukan jejak kode yang dahulu ia tulis

Spaghetti Code

  • Sekitar 2007–2008, penulis ikut dalam pekerjaan proof of concept (PoC) untuk pengembangan widget pada OpenTV set-top box
  • Saat menulis kode dalam lingkungan C yang sangat terbatas, muncul masalah widget yang sesekali crash
  • Karena logika yang kusut dan operasi pointer yang serampangan, kodenya menjadi spaghetti code yang sulit dipahami bahkan oleh penulisnya sendiri
  • Penulis menyerahkan kode dalam bentuk tarball kepada lead sekaligus arsitek dari tim beranggotakan empat orang itu
  • Masalah yang tidak bisa dipecahkan penulis selama beberapa jam, berhasil diidentifikasi sang arsitek hanya dalam 5 menit setelah menerima kodenya, tepat sebagai bug pointer di file tertentu
    • Begitu satu baris itu diperbaiki, crash langsung hilang
  • Dari pengalaman ini, penulis menyadari bahwa meskipun sebelumnya merasa dirinya cukup hebat, jalan untuk menjadi software developer yang baik masih sangat panjang
  • Setelah bertumbuh selama bertahun-tahun, kini penulis memiliki kemampuan menangani kompleksitas perangkat lunak yang tidak bisa dibandingkan dengan masa itu

Widget Televisi Beranimasi (Animated Television Widgets)

  • Dalam proyek lain pada periode yang sama, penulis menangani pengembangan widget untuk platform set-top box berbasis Java ME (Micro Edition)
  • Proyek ini berjalan dalam struktur kolaborasi tiga pihak
    • Perusahaan penulis: berperan sebagai vendor perangkat lunak
    • Perusahaan telekomunikasi besar: pemilik merek layanan televisi DTH
    • Produsen set-top box: penyedia hardware dan platform
  • Pihak operator telekomunikasi bertanya apakah widget bisa diberi efek animasi seperti slide in dan slide out
  • Dalam rapat mitra, produsen set-top box menegaskan bahwa set-top box tersebut tidak mendukung animasi dan itu tidak mungkin
  • Penulis menilai bahwa jika widget bisa digambar, maka animasi seharusnya mungkin dilakukan dengan sedikit demi sedikit mengubah posisinya lalu menggambarnya ulang berulang kali
    • Berdasarkan prinsip itu, penulis membuat demo yang berjalan normal di emulator
  • Saat demo dibagikan di rapat berikutnya, produsen set-top box bereaksi keras dan meminta pekerjaan segera dihentikan
    • Alasannya, hal itu bertentangan dengan posisi resmi mereka yang sebelumnya menyatakan fitur tersebut mustahil
  • Perwakilan operator telekomunikasi ikut campur dan menegur keras, mengatakan bahwa “mereka menunjukkan bahwa fitur yang Anda bilang mustahil ternyata bisa dibuat,” lalu mempertanyakan
    bagaimana mungkin pihak produsen tidak memahami kemampuan produknya sendiri
  • Namun saat diuji pada hardware nyata, animasi yang mulus di emulator muncul sebagai patah-patah yang sangat jelas di layar TV
  • Selama beberapa minggu penulis mencoba menyesuaikan frame rate, mengubah metode buffering, dan mengoptimalkan rendering loop
    • Hal ini mengungkap batasan bahwa performa hardware embedded yang terbatas memang tidak sanggup menangani komputasi dan rendering tersebut
  • Pada akhirnya operator telekomunikasi memutuskan bahwa lebih baik tidak ada animasi daripada animasi yang setengah matang, dan fitur itu pun dibuang
  • Hasil akhirnya menunjukkan bahwa penilaian produsen set-top box ternyata benar secara praktis

Berkah yang Baik (Good Blessings)

  • Pada 2009, setelah bekerja sekitar satu tahun di RSA Security, penulis mencari pekerjaan yang terasa lebih intelektual dan lebih berpusat pada matematika serta algoritme
  • Kepala ilmuwan RSA Laboratories, Dr. Burt Kaliski, secara langsung menawarkan pertemuan dan memberi saran tentang arah karier
  • Berdasarkan saran itu, penulis bergabung dengan tim baru dan bekerja di sana selama 6 tahun berikutnya
    • Pengembangan parser generator, spesifikasi dan implementasi bahasa formal
    • Pengembangan mesin pengindeksan dan query untuk database skala petabyte
    • Hampir setiap hari mempelajari hal baru dan melewati masa paling menyenangkan dalam karier
  • Bertahun-tahun kemudian, penulis menyadari bahwa pertemuan singkat itu telah mengubah lintasan kariernya dan mengirim email ucapan terima kasih
  • Balasan Dr. Kaliski memuat kalimat berikut
    • Bahwa seperti orang lain telah berinvestasi pada kariernya, ia juga ingin memberi dorongan kepada orang-orang yang sedang bertumbuh
    • Mewariskan berkah yang baik dari satu generasi ke generasi berikutnya

Papan Skor CTF (The CTF Scoreboard)

  • Pada 2019, penulis bukan lagi engineer junior awal 20-an, melainkan staff engineer menengah yang telah bertahun-tahun mengembangkan sistem jaringan dan database tingkat rendah berbasis C/C++
  • Kariernya kemudian beralih ke tahap baru, memimpin pengembangan microservices berbasis Go dan Python
    • Peralihan ini relatif alami karena penulis sudah menggunakan Python dan Go lewat proyek pribadi
  • Dalam rangka bulan kesadaran keamanan siber pada Oktober, perusahaan mengadakan kompetisi CTF (Capture the Flag) internal
    • Isinya berbagai puzzle teknis seperti SQL injection, kriptografi lemah, binary reversing, dan eksploit stack overflow
  • Meski merasa terbebani oleh pemecahan masalah yang kompetitif dan dibatasi waktu, penulis tetap ikut, lalu dalam sekitar 8 jam berhasil menyelesaikan sekitar 90% soal dan menempati peringkat 1
  • Selama kompetisi berlangsung, rekan-rekan sesekali datang ke mejanya, melihat progresnya, dan mengungkapkan keterkejutan, sehingga hal itu menjadi bahan pembicaraan di kantor
  • Penulis tanpa sengaja mendengar percakapan dua rekan engineer muda yang sangat dihormatinya tentang hasil tersebut
    • Ketika salah satunya memuji pencapaiannya, yang lain menjawab, “Ya wajar saja, dia sudah lebih dari 10 tahun pakai C.”
  • Saat muda, keberhasilan memecahkan masalah seperti ini dianggap sebagai tanda ‘kepintaran’, tetapi kini penulis merasakan perubahan bahwa hal itu secara alami dipahami sebagai hasil dari pengalaman
  • Walaupun pencapaian teknis dianggap datang berkat pengalaman, ke depan penulis ingin meninggalkan kesan baik lewat profesionalisme, etika, dan cara memperlakukan rekan kerja

Refleksi Keseluruhan

  • Perjalanan komputasi selama 25 tahun ini adalah alur yang berawal dari rasa ingin tahu lalu berlanjut ke eksperimen, kolaborasi, rasa syukur, dan refleksi
  • Dibanding pencapaian teknis yang mencolok, hubungan dengan orang-orang dan proses belajar yang terbentuk di sepanjang perjalanan justru bertahan lebih lama
  • Pengalaman di setiap periode saling terhubung dan terakumulasi menjadi pertumbuhan berkelanjutan serta sikap rendah hati
  • Inti dari karier pengembangan perangkat lunak pada akhirnya adalah bukan kodenya sendiri, melainkan kisah tentang orang-orang yang telah belajar dan bekerja bersama

1 komentar

 
GN⁺ 2026-02-09
Opini Hacker News
  • Dulu ada kepercayaan bahwa kalau pekerjaan diserahkan kepada orang, mereka akan menyelesaikannya dengan baik sendiri
    Tapi sekarang engineer junior dituntut merancang sistem sekelas Twitter dan menghafal penyelesaian soal Leetcode
    Hal seperti ini dulu dianggap prosedur yang tidak berguna, dan ada harapan LLM akan menghapus budaya semacam ini

    • Ada tanggapan bercanda, “Kalau LLM akan menghapusnya, apakah junior juga termasuk?”
    • Sekarang spesialisasi makin parah, seperti hanya mengerjakan frontend atau hanya backend. Banyak juga yang cuma React atau cuma Go
  • Saya juga memulai dengan cara yang mirip
    Saat kelas 3 SD, saya melihat buku “Make Your Own Web Page! A Guide for Kids” di bazar buku sekolah dan meminta ibu membelikannya
    Waktu itu saya mengira internet seperti sesuatu yang hanya untuk perusahaan, lalu benar-benar tenggelam setelah tahu bahwa saya bisa membuat halaman web sendiri
    Saat belajar HTML, saya merasa seperti menjadi hacker, dan guru saya begitu terkejut sampai menelepon orang tua saya
    Setelah itu saya belajar pemrograman lewat “Sams Teach Yourself C in 24 Hours”, buku ActionScript untuk Flash MX 2004, dan buku C++
    Sekarang saya punya karier yang lumayan berkat semua itu, dan baru-baru ini saya mendapatkan lagi buku tersebut di eBay lalu membacanya sambil tersenyum

  • Saya tertawa terbahak-bahak pada bagian saat pegawai operator berkata kepada penanggung jawab set-top box, “diam saja”
    Seluruh situasinya adalah adegan yang absurd tapi lucu. Orang sering terobsesi pada hal yang tidak perlu lalu malah menyulitkan diri sendiri

    • Penanggung jawab set-top box cukup berkata, “di hardware nyata sulit membuatnya berjalan mulus”
      Tidak perlu sampai membuat dirinya terlihat bodoh. Tetap saja, tulisannya benar-benar sangat lucu
  • Saya paham soal installer yang ditulis dengan Python yang selalu butuh campur tangan manual karena asumsi lingkungannya salah
    Saya juga pernah menghabiskan setengah hari untuk menyiapkan lingkungan pengembangan SDR. Neraka dependensi masih terus ada
    Pada akhirnya memang berjalan, tapi benar-benar berantakan

    • Python itu nyaris setingkat bencana untuk urusan packaging yang bisa dieksekusi
      Cocok saat lingkungannya bisa dikendalikan dengan container seperti di server side, tapi selain itu saya sama sekali tidak ingin memakainya
    • Beberapa tempat kerja lama saya bahkan butuh dua hari hanya untuk menyiapkan lingkungan pengembangan
      Isinya campuran software komersial kuno dan proyek OSS telantar, lalu setiap beberapa bulan rusak secara acak dan membuat pengembangan terhenti
      Pada akhirnya ada perusahaan yang memilih menjalankan instance EC2 berbasis AMI untuk tiap developer, tapi bahkan CLI untuk mengelolanya pun sering rusak
      Benar-benar masa yang “menarik”
  • Saya juga sekarang sudah masuk tahun ke-20 dalam karier, tapi mungkin karena hanya berkutat di web development, saya tidak punya banyak kisah lucu

  • Semakin tua, saat kita menyelesaikan masalah teknis orang juga tidak lagi terkesan
    Meski begitu, kalau suatu hari saya masih ngoding saat sudah tua, mungkin saat itu orang akan terkesan lagi

  • Dari kalimat “melompat ke reset point prosesor”, saya merasa bukan cuma CPU-nya, tapi sikap belajar orang itu juga seperti ikut di-reset

    • Saya benar-benar penasaran pengalaman seperti apa yang dia alami sendiri, dan bagaimana kelanjutannya setelah itu
  • Kalau tertarik pada DevOps, saya merekomendasikan Davide Bianchi, "Tales from the Machine Room"

  • Katanya dulu domain “susam.com” tidak bisa dibeli, tapi sekarang sedang dijual
    Mungkin bahkan bisa didapat lebih murah dari harga normal. Tentu saja .net juga tidak masalah, tapi kalau ada ikatan emosional, layak dicoba
    Terima kasih sudah membagikan kisah-kisah yang bagus

  • Pengalaman bekerja di industri software sebelum era LLM adalah sesuatu yang hanya bisa dipahami kalau mengalaminya sendiri