Alasan Mengapa Prinsip Pemrograman Klasik Lebih Penting dari Sebelumnya

Bayangkan sebuah dunia di mana Anda tidak perlu lagi menulis kode. Anda cukup menulis spesifikasi fungsional dalam bahasa manusia, dan AI akan secara ajaib mengubahnya menjadi aplikasi yang berjalan sempurna. Jika ada yang salah, Anda tinggal memperbarui spesifikasinya, menjalankan ulang "kompiler" AI, dan voila—kode baru tercipta tanpa Anda perlu menyentuh satu baris pun di dalamnya.
Inilah impian dari gerakan "Specs-to-Code". Namun, sebagai praktisi yang telah lama berkecimpung di dunia arsitektur sistem, saya harus menyampaikan kenyataan pahitnya: visi ini sering kali berakhir menjadi bencana teknis. Apa yang kita lihat di lapangan bukanlah efisiensi murni, melainkan apa yang disebut buku The Pragmatic Programmer sebagai Software Entropy (Entropi Perangkat Lunak).
Semakin sering kita membiarkan AI melakukan iterasi tanpa pengawasan arsitektur yang matang, semakin cepat kualitas kode tersebut membusuk. Tanpa fondasi yang kuat, AI hanya akan menghasilkan sampah yang lebih cepat dari yang bisa kita bersihkan. hipotesis saya sederhana: di era AI ini, dasar-dasar teknik perangkat lunak (software fundamentals) justru jauh lebih krusial dibandingkan sebelumnya.
Kode Tidaklah Murah—Kode Buruk Justru Semakin Mahal
Ada narasi populer yang menyesatkan bahwa "kode itu murah" karena AI bisa memproduksinya secara instan. Matt Pocock berpendapat sebaliknya, dan saya sangat setuju: kode yang buruk adalah beban paling mahal yang bisa Anda miliki saat ini. Mengapa? Karena AI bekerja paling optimal pada basis kode yang dirancang dengan baik.
Jika basis kode Anda berantakan, AI akan mengalami disorientasi. Untuk memahami ini, mari kita merujuk pada definisi klasik dari John Ousterhout dalam A Philosophy of Software Design:
"Complexity is anything related to the structure of a software system that makes it hard to understand and modify the system."
Basis kode yang buruk adalah sistem yang sulit diubah. Di era di mana kita ingin memanfaatkan AI untuk bergerak secepat kilat, kemampuan untuk menjaga kode agar tetap mudah dimodifikasi adalah aset strategis. Kode yang bersih bukan lagi sekadar masalah estetika; itu adalah prasyarat agar AI bisa memberikan bantuan yang akurat.
Teknik "Grill Me": Menutup Celah Konsep Desain
Masalah terbesar saat bekerja dengan AI bukanlah kemampuannya menulis sintaks, melainkan kesenjangan pemahaman. Frederick P. Brooks dalam The Design of Design menjelaskan konsep Design Concept—sebuah ide tak berwujud yang melandasi apa yang sedang kita bangun. Masalah muncul ketika Anda dan AI tidak berbagi "ide tak berwujud" yang sama.
Untuk menjembatani celah ini, saya merekomendasikan teknik "Grill Me". Teknik ini sempat viral dengan meraih lebih dari 13.000 bintang di GitHub karena efektivitasnya yang brutal. Alih-alih langsung memberikan perintah, mintalah AI untuk mewawancarai Anda secara agresif sebelum mulai menulis kode.
Instruksikan AI seperti ini: "Wawancarai saya secara tanpa henti mengenai setiap aspek dari rencana ini sampai kita mencapai pemahaman bersama. Telusuri setiap cabang desain dan selesaikan dependensi antar keputusan satu per satu."
Jangan kaget jika AI kemudian mengajukan 40 hingga 100 pertanyaan kepada Anda. Proses ini memang melelahkan, namun mencapai pemahaman bersama (shared understanding) jauh lebih berharga daripada menghasilkan rencana cepat yang hanya akan gagal di tengah jalan.
Membangun Bahasa Universal (Ubiquitous Language)
Dalam Domain Driven Design (DDD), ada konsep bernama Ubiquitous Language atau bahasa universal. Sering kali, AI menjadi terlalu bertele-tele (verbose) karena ia mencoba menebak istilah yang Anda gunakan.
Solusi teknisnya sederhana namun transformatif: buatlah sebuah file Markdown yang berisi glosarium istilah yang disepakati antara Anda dan AI. Dengan memiliki "jangkar pengetahuan" ini, Anda akan melihat perubahan signifikan dalam cara AI merespons.
Reduksi Kebisingan: AI akan berhenti menggunakan seribu kata jika satu istilah yang tepat sudah didefinisikan.
Akurasi Penalaran: Melalui thinking traces AI, kita bisa melihat bahwa bahasa yang konsisten membuat logika AI jauh lebih tajam dan selaras dengan perencanaan.
Batas Kecepatan Anda adalah Laju Umpan Balik (TDD)
AI memiliki kecenderungan berbahaya untuk "melaju melampaui jangkauan lampu depan" (outrunning your headlights). Ia bisa menghasilkan ribuan baris kode dalam hitungan detik, tetapi tanpa validasi, ia sebenarnya sedang meluncur menuju kegagalan sistemik yang mustahil untuk didebug.
Dalam rekayasa perangkat lunak, ada satu hukum tetap yang harus Anda pegang:
"The rate of feedback is your speed limit."
Inilah mengapa Test-Driven Development (TDD) menjadi jauh lebih relevan saat ini. TDD berfungsi sebagai "rem" yang menjaga agar AI tetap berada di jalur yang benar melalui langkah-langkah kecil yang terukur. Dengan memaksa AI menulis tes terlebih dahulu, kita memastikan bahwa setiap kemajuan yang dibuat adalah langkah yang valid, bukan sekadar halusinasi kode yang terlihat meyakinkan namun rusak di dalamnya.
Arsitektur "Deep Modules" vs "Shallow Modules"
Salah satu tantangan terbesar bagi pengembang manusia di era ini adalah beban kognitif. AI sangat mahir dalam menciptakan modul-modul dangkal (Shallow Modules)—banyak modul kecil yang fungsionalitasnya sedikit tetapi memiliki antarmuka yang rumit dan saling tumpang tindih. Ini adalah mimpi buruk bagi otak manusia.
Peran strategis Anda adalah memaksa AI untuk membangun Deep Modules (Modul Dalam). Sebagaimana diajarkan Ousterhout, modul yang baik adalah modul yang menyembunyikan kompleksitas besar di balik antarmuka yang sederhana.
Di sinilah metafora "Grey Box" menjadi penting. Dengan merancang batas-batas (boundaries) yang kuat dan modul yang dalam, Anda bisa memperlakukan implementasi di dalamnya sebagai "kotak abu-abu". Anda tidak perlu meninjau setiap baris kodenya secara obsesif selama antarmukanya bersih dan tes fungsionalnya lulus. Prinsipnya adalah: Desain antarmukanya, delegasikan implementasinya.
Kesimpulan: Anda adalah Sang Strategis
Di medan perang pengembangan perangkat lunak saat ini, AI adalah seorang Sersan Taktis yang luar biasa dalam mengeksekusi perintah di lapangan. Namun, ia tetap membutuhkan Anda sebagai Pemimpin Strategis yang memegang peta besar dan menentukan arah arsitektur.
Sesuai nasihat Kent Beck, menginvestasikan waktu pada desain sistem setiap hari adalah kewajiban. Bergantung pada pendekatan Specs-to-Code tanpa memedulikan fundamental adalah bentuk de-investasi yang akan menghancurkan masa depan sistem Anda.
Di dunia di mana AI bisa menulis ribuan baris kode dalam sekejap, pertanyaannya bukan lagi seberapa cepat Anda bisa mengetik, melainkan: "Apakah Anda sudah membangun struktur yang cukup kuat untuk menampung semua kode itu?"
Ingin Menguasai Strategi Arsitektur di Era AI?
Jangan biarkan tim Anda terjebak dalam tumpukan kode yang tidak terkelola. Kuasai prinsip desain sistem, Clean Code, hingga Domain Driven Design untuk memastikan AI bekerja untuk Anda, bukan sebaliknya.
Tingkatkan kompetensi IT Anda dan daftar pelatihan dan sertifikasi di Inixindo Bandung Sekarang!
Referensi Utama:
- Frederick P. Brooks: "The Design of Design" mengenai konsep Shared Design Concept.
- John Ousterhout: "A Philosophy of Software Design" mengenai kompleksitas dan Deep Modules.
- The Pragmatic Programmer: Mengenai konsep Software Entropy.
- Domain Driven Design (DDD): Mengenai konsep Ubiquitous Language.
- Kent Beck: Mengenai pentingnya investasi harian pada desain sistem.