Perjalanan Koding

Postingan kali ini berisi pengalaman saya di dunia koding dan teknologi. Tulisan ini dipicu oleh pertanyaan yang sering muncul di benak saya: "kok gue jadi begini?". Awalnya saya hanya berencana menulis dua bab, namun karena terasa terlalu banyak lompatan waktu (time skip), akhirnya berkembang menjadi lebih dari dua.

Dari Shitpost ke Coding

Cerita ini bermula pada tahun 2011-2012, momen di mana saya cukup aktif dalam komunitas meme & rage comics. Selain menikmati karya orang lain, saya juga gemar membuat meme sendiri menggunakan aplikasi Adobe Flash yang bernama Rage Maker.

Gambar Aplikasi Rage Maker
Aplikasi Rage Maker

Rage Maker menyediakan berbagai aset atau bahan meme dan rage faces mentah yang siap disusun di atas kanvas. Aplikasi ini bisa diakses secara online melalui browser maupun offline melalui instalasi. Karena koneksi internet saat itu masih 3G, saya akhirnya lebih memilih menggunakan versi offline agar tidak ada gangguan.

Berawal dari Kemalasan

Masalah muncul ketika saya ingin menggunakan gambar-gambar baru yang tidak tersedia di menu bawaan. Proses memuat gambar secara manual dari penyimpanan komputer terasa sangat melelahkan jika dilakukan berulang kali. Di titik inilah, sebuah pertanyaan sederhana muncul di benak saya:

"Bagaimana caranya agar aset gambar ini langsung muncul di menu tanpa harus saya cari manual?"

Troubleshooting

Rasa penasaran itu membawa saya "masuk" ke dalam folder instalasi aplikasi. Saya mengamati isi folder tersebut dan mulai mencari di mana sebenarnya aset gambar yang muncul di menu tersebut disimpan. Itulah momen pertama saya melakukan reverse engineering sederhana—mencoba memahami struktur di balik apa yang terlihat di layar.

Hipotesis

Awalnya, saya menggunakan logika paling dasar. Saya melihat folder yang berisi gambar-gambar rage faces yang muncul di menu aplikasi. Kalau saya masukkan gambar baru ke sini, pasti otomatis muncul di menu, pikir saya.

Experiment

Saya mencoba memindahkan salah satu gambar meme terbaru, saya buka kembali aplikasinya, dan... nihil. Gambar tersebut tidak muncul.

Observasi Ulang

Kegagalan itu memaksa saya mengamati lebih teliti. Di antara sekumpulan folder gambar, ada satu file yang tampak asing bagi saya pada saat itu: sebuah file berformat .xml.

Mulai Mengenal XML

Karena penasaran, saya memberanikan diri membukanya menggunakan Notepad. Di sanalah momen "Aha!" yang sesungguhnya terjadi. Di dalam file XML tersebut, saya melihat struktur teks yang rapi—barisan kode yang berisi daftar nama file gambar dan kategori yang sama persis dengan yang ada di menu aplikasi.

Logical Reasoning

Saya menyadari satu hal penting: folder hanyalah tempat menyimpan aset, ada instruksi yang memberitahu aplikasi untuk menampilkannya, yaitu XML.

Dengan rasa takut akan merusak aplikasinya, saya mencoba meniru pola di file tersebut:

  1. Saya menyalin satu baris kode—saya lupa tag aslinya, sebut saja <image> yang sudah ada.
  2. Saya mengubah atribut namanya sesuai dengan file gambar terbaru yang saya masukkan ke folder tadi.
  3. Saya simpan (save), dan memuat ulang Rage Maker.

Berhasil! Gambar meme terbaru saya muncul di menu bawaan.

Momen sederhana itu adalah pertama kalinya saya mengenal koding dan memahami konfigurasi data. Saya tidak hanya menggunakan aplikasi; saya baru saja memberikan instruksi pada komputer untuk melakukan apa yang saya mau.


Pembuatan Aplikasi Pertama

Keberhasilan mengubah file XML itu memicu lonjakan kepercayaan diri yang luar biasa—sebuah fenomena yang dikenal sebagai fase Dunning-Kruger. Dalam pikiran saya saat itu: Buat menu sudah bisa, kalau saya bisa buat kanvas, itu berarti saya bisa mereplikasi aplikasi Rage Maker.

Tersesat di Pencarian

Dengan ambisi besar untuk membuat replika aplikasi tersebut, saya berhenti membuat meme dan mulai berselancar di Google menggunakan kata kunci "orang awam" seperti “how to make meme generator” atau “how to make comic generator”. Hasilnya? Mengecewakan. Internet hanya memberikan saya daftar aplikasi pembuat meme lainnya, bukan cara membuatnya.

Mulai Mengenal Stack Overflow

Saya pun mencoba mengganti strategi dengan menggunakan istilah teknis yang saya lihat di aplikasi, yaitu canvas. Pencarian "how to make canvas for editing" akhirnya membawa saya ke sebuah situs yang kelak akan menjadi teman setiap developer: Stack Overflow. Di urutan teratas, muncul sebuah istilah yang benar-benar baru bagi saya, yaitu HTML Canvas.

Mulai Mengenal HTML

Jujur saja, saat itu saya tidak tahu apa perbedaan antara XML dan HTML. Bagi mata awam saya, keduanya terlihat identik—penuh dengan tanda kurung sudut (< >). Namun, prasangka itu patah saat saya mulai mencoba kodenya. HTML bisa membuat sesuatu "hidup" di browser.

Percobaan Eksekusi

Di sinilah proses belajar yang sesungguhnya terjadi. Saya mulai belajar untuk dekomposisi—memecah logika fitur aplikasi yang kompleks menjadi instruksi-instruksi kecil. Saya mulai dari membuat elemen kanvas sebagai fondasi utama, mempelajari cara menampilkan teks di kanvas tersebut, dan memecahkan misteri bagaimana cara memuat gambar dari penyimpanan komputer dan merendernya ke dalam kanvas.

Mulai Mengenal JavaScript

Pada momen inilah saya mengenal JavaScript. Awalnya, saya pikir JavaScript adalah hal yang sama dengan HTML, namun perlahan saya sadar bahwa jika HTML adalah kerangkanya, maka JavaScript adalah "otak" yang membuat semuanya bergerak.

Keberhasilan Pertama

Setelah melalui berbagai percobaan, saya berhasil mereplikasi fitur-fitur tersebut, termasuk menambahkan menu. Meskipun hasilnya tidak sesempurna aplikasi Rage Maker, ada kepuasan luar biasa saat melihat aplikasi buatan sendiri berjalan di browser.


Dari Web Based ke Desktop

Setelah berhasil membuat aplikasi di browser, sebuah pertanyaan baru muncul:

"Sekarang saya punya aplikasi yang berjalan di browser, tapi bagaimana cara membuatnya menjadi versi instalasi seperti Rage Maker?"

Saat Internet Tidak Membantu

Saya menghabiskan waktu berjam-jam di internet mencari cara mengubah aplikasi yang berjalan di browser, menjadi aplikasi yang dapat diinstal, namun saat itu, informasi yang saya cari seolah bersembunyi. Rasa kesal karena buntu di internet justru memicu langkah impulsif: saya harus punya buku fisik.

Saya bergegas meminta uang dan pergi ke penjual buku terdekat. Sesampainya di tempat, tanpa basa-basi saya hanya mengatakan satu hal ke penjual buku: "Bang, saya mau buku untuk membuat program.". Si Abang pun menunjukkan rak khusus kategori tersebut.

Di rak kategori tersebut, mata saya tertuju pada satu istilah yang terdapat pada salah satu cover buku. Istilah yang terasa tidak asing, yaitu pemrograman. Tanpa pikir panjang dan tanpa membandingkan dengan buku lain, saya langsung mengambil buku itu dan membayarnya. Buku itu adalah pemrograman C++ yang ditulis oleh Abdul Kadir.

Buku Pemrogramman C++ oleh Abdul Kadir
Buku Pemrogramman C++ oleh Abdul Kadir

Mulai Mengenal C++

Begitu saya mempelajari C++ pertama kali, saya mengalami culture shock. Apa yang ada di buku benar-benar berbeda dengan ekspektasi saya. Tidak ada cara instan membuat GUI, sintaksisnya terasa asing, pengenelan OOP dan menajemen memori yang membingungkan, semuanya terasa sangat kaku dibanding XML, HTML, dan JavaScript. Karena kesulitan tersebut, ditambah kesibukan saya di tahun ajaran baru sebagai siswa kelas 3 SMP, saya sempat meninggalkan dunia koding sejenak.

Saat Kebosanan Menyerang

Setelah meninggalkan dunia koding, kehidupan saya menjadi "normal" kembali, seperti mengurus halaman meme & rage di Facebook, menulis di blog, membaca manga, menonton film & anime, dan bermain game. Namun, tidak semua hal itu selalu menyenangkan, hal ini saya rasakan saat bermain game. Di momen inilah muncul keinginan untuk berhenti sekadar menjadi pemain dan mulai menjadi pencipta game.


Game Development

Keinginan untuk menciptakan, bukan sekadar memainkan game, membawa saya ke Game Maker, sebuah game engine dengan bahasa pemrograman yang jauh lebih bersahabat, mempunyai sintaks yang serupa dengan bahasa PHP dan Python. Game Maker ini menyediakan GUI instan, dan cara kerjanya hampir mirip dengan HTML Canvas. Berbekal fondasi logika yang sudah saya bangun sebelumnya, semuanya terasa jauh lebih mudah.

Mengenal Library

Beberapa bulan kemudian, saya sudah mencapai tahap di mana saya mampu membangun berbagai genre game—mulai dari kuis, arcade, fighting, hingga visual novel dan RPG. Namun, tantangan baru muncul saat saya ingin melangkah lebih jauh: membuat fitur online multi-player.

Karena fitur ini tidak tersedia secara bawaan di Game Maker saat itu, saya mulai mengenal konsep Library. Saya mulai bereksperimen dengan library eksternal untuk meningkatkan kualitas grafis game dan mengintegrasikan konektivitas online.

Mengenal Client & Server

Ambisi membuat game online ini tanpa sengaja mengenalkan saya ke teknologi web. Saya mulai menyentuh hosting CPanel, server Apache, database MySQL, dan skrip PHP.

Meskipun saat itu fokus utama saya tetaplah pengembangan game, pengenalan tech stack ini seolah menjadi sebuah "spoiler"—sebuah bocoran awal tentang dunia pengembangan web yang nantinya akan menjadi bagian besar dalam perjalanan saya.

Mulai Membuat Library

Di titik ini, rasa penasaran membawa saya untuk mempelajari cara membuat library sendiri. Berbekal dokumentasi dari Game Maker, saya mulai bereksperimen. Di sinilah buku C++ karangan Abdul Kadir yang dulu membuat saya pusing akhirnya menunjukkan kegunaannya. Saya menggunakan C++ untuk membangun DLL (Dynamic Link Library) sebagai jembatan untuk menghadirkan fitur-fitur yang tidak tersedia secara bawaan.

Tamparan Realita

Keberhasilan membuat library sendiri sempat membuat saya besar kepala; saya merasa sudah mampu membangun apa pun tanpa kesulitan. Namun, anggapan itu seketika runtuh saat saya "ditampar" oleh realita yang selama ini sering saya abaikan di sekolah: matematika dan fisika itu nyata dan sangat diperlukan.

Saat harus menangani sistem kolisi (tabrakan) yang kompleks atau kalkulasi gerakan objek, saya menyadari bahwa kode hanyalah alat untuk menjalankan logika matematika. Di situlah buku C++ tersebut dan pelajaran sekolah mulai menampakkan urgensinya. Saya mulai memahami bahwa menjadi seorang pengembang bukan sekadar masalah menghafal sintaks, melainkan seberapa dalam kita memahami ilmu pengetahuan di baliknya (domain expertise).

Solusi atas Kelemahan

Dalam pengembangan game, hambatan terbesar saya tetaplah aset visual. Saya sudah mencoba belajar menggambar secara manual, tetapi akhirnya saya harus menerima kenyataan bahwa seni rupa adalah kelemahan terbesar saya. Alih-alih menyerah, saya mencari jalan alternatif melalui Software 3D.

Saya mulai mengenal Blender sebagai solusi. Di dunia 3D, saya tidak memerlukan kemampuan motorik tangan untuk menghasilkan garis manual yang indah; saya bisa menggunakan logika ruang, manipulasi vertex, dan perhitungan matematika untuk menciptakan bentuk. Ini adalah cara saya "menipu" keterbatasan dalam menggambar dengan memanfaatkan kemampuan teknis 3D.

Model Karakter Anime 3D - Muhammad Edwin Setiawan
Model karakter anime 3D

Di titik ini, saya mulai memandang diri sebagai seorang digital enthusiast. Saya menyadari bahwa teknologi bukan sekadar alat, melainkan sarana untuk mempermudah dan menutupi kelemahan manusiawi. Saya juga meyakini bahwa teknologi adalah bidang yang sangat mungkin dipelajari secara otodidak, asalkan kita memiliki silabus yang jelas sebagai panduan.

Eksplorasi Akhir Pengembangan Game

Setelah menemukan solusi untuk aset visual, saya mulai mengasah kemampuan dalam mengembangkan game 2.5D (isometrik), 3D, hingga game berbasis web. Saya juga mulai mengeksplorasi berbagai engine lain seperti RPG Maker, GDevelop, hingga Unity 3D.

Game 3D pertama saya
Game 3D pertama saya dari halaman komunitas Game Maker Indonesia di Facebook

Namun, sebuah kesadaran baru muncul: menjadi seorang indie game developer menuntut peran ganda sebagai seniman sekaligus engineer dalam satu kepala. Selain beban mental tersebut, tantangan fisik pun hadir—seorang pengembang game membutuhkan spesifikasi komputer yang memadai untuk terus produktif.

Karena keterbatasan spesifikasi perangkat saat itu, saya akhirnya memutuskan untuk berhenti menjadi indie game developer. Meski begitu, hasrat saya dalam dunia teknologi tidak padam; saya tetap aktif sebagai blogger dan anggota komunitas Game Maker Indonesia. Momen ini juga bertepatan dengan kelulusan SMP saya, yang kemudian menjadi perjalan baru sebagai seorang developer.


Dari Personal ke Bisnis

Setelah lulus SMP, saya mengambil langkah unik: masuk ke SMK jurusan Akuntansi. Ini adalah pilihan strategis untuk memahami logika bisnis. Ilmu akuntansi memberikan domain expertise baru dalam perjalanan saya sebagai developer, saya melihat celah otomatisasi pada proses manual yang membosankan seperti jurnal dan laporan neraca. Saya mulai menciptakan alat bantu yang mengubah alur kerja finansial manual menjadi sistem otomatis.

Gambar aplikasi VBA
Aplikasi VBA
Gambar aplikasi POS
POS sistem (web based)

Era Android dan Mikrokontroler

Memasuki kelas 2 SMK, tren Android mulai meledak. Saya sempat mempelajari Android Studio (Java), saya akhirnya berkesimpulan bahwa aplikasi berbasis Web jauh lebih demokratis dan universal.

Selain itu, saya juga sempat mempelajari microcontroller (Arduino). Di fase inilah saya mulai mendalami sisi teoritis yang lebih dalam dengan mempelajari silabus computer science secara mandiri untuk memahami bagaimana sistem bekerja di level fundamental.

Gambar arduino uno
Arduino

Kini, fokus saya bergeser dari sekadar "membuat aplikasi" menjadi mengoptimasi kode agar bersih, skalabel, dan mengikuti standar industri seperti penggunaan Git dan best practices pengodean.

Penutup: Adaptasi di Era AI

Di era AI sekarang, saya melihat teknologi ini sebagai akselerator. AI membantu saya menutupi keterbatasan saya dengan lebih efisien, sehingga saya bisa fokus pada arsitektur sistem yang kompleks. Dari seorang remaja yang hanya ingin memodifikasi file XML untuk meme, saya memandang pemrograman sebagai alat untuk memecahkan masalah nyata dan membangun masa depan yang lebih efisien. Untuk melihat proyek lama saya, silahkan kunjungi Google Drive saya.

Komentar Dukung Saya