24 poin oleh GN⁺ 2025-04-05 | 1 komentar | Bagikan ke WhatsApp
  • Dalam beberapa bulan terakhir, penulis bereksperimen menggunakan alat coding berbasis AI baik untuk proyek pribadi maupun pekerjaan kantor
  • Hasilnya sangat positif, dan penulis merasakan waktu pengembangan yang lebih singkat serta peningkatan kualitas hasil
  • Di sisi lain, beberapa pengembang juga membagikan umpan balik negatif bahwa alat AI tidak bekerja dengan baik
  • Dari pengalaman ini, penulis menjadi yakin bahwa pengembangan perangkat lunak dengan memanfaatkan AI memiliki potensi lompatan ke tahap berikutnya dari sisi produktivitas
  • Namun, yang dibutuhkan bukan penerimaan tanpa kritik, melainkan sudut pandang yang tepat dan pendekatan yang seimbang
  • Melalui tulisan ini, penulis membagikan praktik terbaik yang ditemukan dari pengalaman langsung
    agar adopsi alat AI yang bijak bisa sedikit lebih cepat meluas di komunitas pengembang

Kondisi pemanfaatan alat coding AI saat ini

  • Dari pengamatan di Twitter, alat coding AI sangat populer di kalangan pengembang nonprofesional
    • Mereka menggunakan AI untuk mencoba proyek baru dan belajar mengembangkan perangkat lunak dengan gembira
  • Arus ini positif dan membantu menurunkan hambatan masuk ke teknologi bagi kelompok pengguna baru
  • Namun, ini hanyalah salah satu sisi yang menunjukkan potensi alat AI, dan
    • bahkan dalam konteks profesional seperti pengembang senior, AI juga bisa memberikan nilai yang besar

Kekuatan pengembang senior

  • Walaupun masih berada pada tahap awal perkembangan, kesimpulan sejauh ini adalah sebagai berikut:
    • Pengembang senior berada pada posisi terbaik untuk memanfaatkan alat AI secara paling efektif
    • Bukan sekadar menerima bantuan, tetapi mampu mengoptimalkan penggunaannya
  • Intinya adalah sebagai berikut:

    Pengalaman pengembangan dan keahlian menjalankan proyek yang mungkin tampak agak kuno di era AI justru menjadi fondasi
    untuk memanfaatkan alat-alat ini dengan sebaik-baiknya

  • Jika agen pemrograman berbasis LLM dianalogikan,
    • ia mirip seorang senior yang sangat kaya pengetahuan pemrograman, tetapi dalam konteks saat ini seperti junior yang kurang memahami desain
  • Karena itu, untuk menyerahkan pekerjaan nyata kepada mereka,
    • persiapan dan arahan strategis adalah hal yang wajib
    • dan orang yang paling tepat menjalankan peran ini adalah pengembang senior
  • Pada akhirnya, bahkan alat AI yang paling mutakhir pun paling efektif dimanfaatkan ketika berlandaskan praktik dan pengalaman pengembangan tradisional

Tiga elemen kunci untuk sesi coding AI yang sukses

  • Untuk mendapatkan hasil yang baik saat berkolaborasi dengan AI, tiga elemen berikut sangat penting:
    • Dokumentasi kebutuhan yang terstruktur dengan baik (Well-structured Requirements)
    • Guardrail kualitas berbasis alat (Tool-based Guard Rails)
    • Teknik keyframing berbasis file (File-based Keyframing)
  • Sebelum masuk ke penjelasan utama, penulis memperkenalkan contoh proyek nyata yang memanfaatkan AI
    • Proyek green-field: proyek yang dibuat sepenuhnya dari nol
    • Proyek brown-field: proyek yang menambahkan fitur baru di atas codebase yang sudah ada
  • Untuk kedua kasus, fokusnya adalah pada contoh di mana AI hampir sepenuhnya menangani keseluruhan implementasi
    • Bukan AI sekadar sebagai bantuan autocomplete atau asisten percakapan,
      tetapi cara kerja di mode agen yang benar-benar menjalankan pekerjaan nyata
  • Alat yang digunakan adalah Cursor,
    • berbasis model Claude Sonnet 3.7 dari Anthropic
    • menyediakan kemampuan untuk mengubah file proyek secara langsung dan menjalankan perintah terkait

Contoh 1: Platform Problem Monitoring (proyek green-field)

  • Dengan memanfaatkan Cursor dan Claude, penulis mengimplementasikan aplikasi baru bernama Platform Problem Monitoring
  • Aplikasi ini setiap jam terhubung ke server Elasticsearch milik ELK untuk mengumpulkan pesan error,
    lalu mengirim laporan email terstruktur yang merangkum status masalah platform web saat ini
  • Seluruh implementasi dikerjakan oleh AI, dan tidak ada kode yang ditulis langsung oleh penulis
  • Penulis tidak terlalu akrab dengan bahasa Python, tetapi
    • berkat pemahaman luas tentang arsitektur, operasi, dan praktik terbaik, proyek dapat berjalan lancar
    • proyek ini juga menjadi kesempatan untuk menguji seberapa besar AI dapat membantu di tech stack yang tidak familier

Catatan: isu kualitas kode
Dalam diskusi HackerNews, muncul kritik soal kualitas kode seperti konfigurasi logging, parsing konfigurasi kustom, dan race condition
Proyek tersebut ditujukan lebih sebagai prototipe cepat daripada kode produksi, dan
berfokus pada implementasi fungsi ketimbang pemeliharaan jangka panjang atau idiom bahasa

Contoh 2: Process Management UI Integration (proyek brown-field)

  • Contoh integrasi UI ke fitur backend legacy berbasis PHP/Symfony yang sudah ada
  • Backend dijalankan melalui perintah CLI berbasis cron, dan belum memiliki UI
  • Penulis ingin mengintegrasikan fitur ini ke aplikasi Symfony modern
    • dengan memanfaatkan struktur yang ramah UI yang sudah memiliki codebase modern, sistem pengujian, dan style guide
  • Pekerjaan utamanya meliputi:
    • komunikasi dengan sistem legacy melalui HTTP API
    • implementasi transfer data antar sistem
    • penyusunan layar sesuai design system UI
    • implementasi klien API di dalam bundle Symfony bersama
  • Selain file keyframe, seluruh implementasi dikerjakan otomatis oleh AI

Insight utama dari dua proyek tersebut

  1. Proyek green-field: bahkan di tech stack yang tidak familier, AI memungkinkan implementasi aplikasi fungsional
  2. Proyek brown-field: walaupun implementasi UI bukan pekerjaan yang familier, AI membantu menyelesaikan fitur dengan cepat
  • Dari dua contoh ini, penulis merasakan bahwa alat AI dapat membawa perubahan nyata pada produktivitas pribadi dan alur kerja tim secara keseluruhan
  • Namun, agar AI benar-benar menghemat banyak waktu, dibutuhkan investasi setup awal dan pendekatan strategis
    • hasil terbaik bisa dicapai bila dikelola seperti membimbing pengembang junior yang kompeten dengan baik

Pentingnya menulis requirement yang matang

  • Inti dari sesi coding AI yang sukses adalah dokumen requirement yang sistematis dan komprehensif
  • Dalam proyek nyata Platform Problem Monitoring, sebelum memulai sesi penulis menulis dokumen REQUIREMENTS.md
  • Dokumen tersebut terdiri dari total 371 baris, dengan struktur hierarki seperti berikut
    • tingkat paling atas: ringkasan satu baris tentang requirement inti
    • tingkat tinggi: use case dan motivasi pengembangan
    • tingkat menengah: proses dan cara kerja
    • tingkat menengah: arsitektur, tech stack, dan batasan
    • tingkat bawah: langkah kerja spesifik yang dirinci berdasarkan input/output/efek samping
  • Dokumen yang tertata seperti ini memberi AI kerangka yang jelas sehingga dapat menghasilkan output yang lebih akurat
  • Menulis dokumen memang memerlukan waktu dan usaha, tetapi merupakan investasi penting untuk implementasi yang sukses
  • Ada satu adagium terkenal dalam pengembangan perangkat lunak:

    “Enam minggu implementasi dapat menghemat dua jam perencanaan”

    • ini memang sindiran, tetapi memuat kebenaran bahwa inefisiensi pada tahap implementasi berasal dari kurangnya perencanaan
  • Karena itu, proyek harus selalu dimulai dari whiteboard, bukan keyboard, dan prinsip ini berlaku sama saat berkolaborasi dengan AI
  • Dalam praktiknya, sesi Cursor dimulai dengan langkah berikut:
    1. Meminta AI merangkum requirement dengan bahasanya sendiri
    2. Memintanya membuat rencana eksekusi
    3. Mendorongnya mengajukan pertanyaan atas bagian yang belum jelas
  • Hanya setelah tahap verifikasi ini, AI dialihkan ke mode “Agent” untuk mulai mengimplementasikan

Menyiapkan guardrail kualitas berbasis alat

  • Jika dokumen requirement mendefinisikan tujuan akhir, maka guardrail kualitas membantu menjaga jalur terpendek menuju tujuan itu
  • Sama seperti pentingnya sistem umpan balik real-time selama pengembangan, alat analisis statis juga sangat membantu AI
  • Misalnya, jauh lebih efisien mendeteksi null check yang terlewat saat tahap pengembangan daripada menemukannya setelah peluncuran lewat pertanyaan pelanggan
  • Karena itu, sebelum memulai sesi coding AI, penulis selalu menyiapkan alat penjamin kualitas berikut
    • Berdasarkan contoh Makefile:
      • black, isort: formatting kode
      • ruff: linting
      • mypy: pengecekan tipe
      • bandit: analisis keamanan
      • keseluruhan test suite
  • Agen AI berbasis Claude dapat mengenali dan memanfaatkan alat-alat ini
    • Contoh: jika pengecekan tipe gagal, AI akan memperbaiki kode sendiri agar lolos
  • Untuk verifikasi fungsional, penulis juga menyediakan permintaan pengujian API dengan perintah curl
    • proses AI memanggil endpoint secara langsung, memeriksa respons, lalu memperbaiki kode sangat mengesankan
  • Dengan cara ini, guardrail berbasis alat menjadi komponen penting yang membantu AI menghasilkan output yang dapat dipercaya

Teknik keyframing berbasis file

  • AI kuat dalam implementasi kreatif, tetapi bisa kekurangan arah dalam hal struktur kode atau susunan file
    • strategi untuk melengkapinya adalah file-based keyframing
  • Teknik ini terinspirasi dari metode keyframe dalam produksi animasi:
    • animator berpengalaman terlebih dahulu membuat adegan penting (keyframe), lalu bagian sisanya diisi oleh tenaga pendukung
    • pendekatan ini memungkinkan efisiensi kerja tanpa mengorbankan kualitas
  • Dalam proyek coding AI nyata, sebelum implementasi dimulai penulis lebih dulu membuat stub file kosong
    • misalnya: endpoint API, klien API, kelas controller, template Twig, dan sebagainya
  • File keyframe ini memberikan informasi konteks penting kepada AI seperti:
    • cara proyek menyusun file
    • struktur namespace
    • aturan penamaan
    • pola kode yang konsisten
  • Alih-alih menjelaskan semua struktur lewat prompt, akurasi penalaran AI bisa ditingkatkan dengan memberi petunjuk langsung di dalam codebase
  • Pendekatan ini menegaskan kembali prinsip “penamaan” yang tetap penting di era AI
    • karena AI bekerja berbasis bahasa, teks yang memuat maksud dan makna akan menghasilkan hasil yang lebih baik

Penerapan terintegrasi dalam contoh nyata: implementasi UI dashboard kontrak langganan

  • Penulis memperkenalkan contoh praktik yang menggabungkan tiga prinsip inti yang dijelaskan sebelumnya dalam satu proyek:
    • dokumentasi requirement yang matang
    • guardrail kualitas berbasis alat
    • teknik keyframing berbasis file
  • Gambaran proyek

    • tujuan: mengimplementasikan dashboard UI web read-only yang memvisualisasikan informasi kontrak langganan dalam bentuk tabel di dalam platform
    • target: lingkungan multi-codebase (monorepo)
      • backend-app: aplikasi Symfony 5, menyimpan data
      • janus-christophorus: aplikasi Symfony 7, menyediakan UI
      • janus-shared-bundle: mencakup implementasi klien API
      • janus-webui-bundle: mencakup style guide, konfigurasi Tailwind, dan template Twig
  • Struktur requirement

    • membaca data backend melalui API dan menampilkannya di UI frontend
    • selain endpoint API nyata, juga mendukung mode demo (menyediakan data palsu untuk pengujian)
    • UI diimplementasikan agar konsisten dengan style guide
    • setiap layer diimplementasikan dengan komponen berikut:
      • endpoint API
      • klien API
      • kelas service layer presentasi
      • controller dan template Twig
  • Pekerjaan awal untuk sesi AI

    • di semua codebase, file kosong dibuat lebih dulu dengan pendekatan file-based keyframing
    • style guide yang ada, service navigasi, dan fitur serupa disediakan sebagai materi referensi untuk AI
    • di setiap codebase, alat kualitas (seperti PHPStan) dapat dijalankan
      • contoh: menggunakan skrip .dxcli/dxcli.sh quality
  • Cara memanfaatkan prinsip-prinsip yang terintegrasi

    • menyusun requirement: menjelaskan kebutuhan detail dan struktur sistem di dalam prompt
    • memberikan guardrail: menyertakan panduan penggunaan alat pemeriksaan kode
    • memberikan keyframe: membuat file target implementasi lebih dulu agar AI dapat menulis kode di lokasi dan konteks yang tepat
  • Tujuan utama

    • dengan cepat menyediakan UI yang memungkinkan informasi kontrak dipahami secara menyeluruh
    • memberikan struktur dan petunjuk yang jelas agar AI dapat bertanya dan menyusun rencana dalam implementasi nyata
  • Contoh ini menunjukkan dengan baik seberapa kuat sinergi yang bisa dihasilkan ketika alat AI dan pengalaman manusia bekerja sama

Kesimpulan: alat AI + pengalaman manusia = kombinasi terbaik

  • Dengan menyediakan requirement yang matang, guardrail berbasis alat, dan keyframe berbasis file,
    kemampuan kuat AI dapat dimanfaatkan sambil tetap menjaga kualitas kode dan konsistensi arsitektur
  • Praktik pengembangan tradisional ini tetap relevan di era AI, dan
    justru menjadi lebih efektif ketika digabungkan dengan pengalaman dan wawasan pengembang senior
  • Pada akhirnya, AI hanyalah alat, dan
    kita hidup di masa ketika pengalaman serta keterampilan manusia untuk memanfaatkannya dengan benar menjadi lebih penting daripada sebelumnya

1 komentar

 
GN⁺ 2025-04-05
Opini Hacker News
  • Seorang pengembang Python berpengalaman meninjau file tertentu dan menunjukkan bahwa file itu penuh dengan kesalahan khas insinyur perangkat lunak pemula

    • Mulai dari mengatur root logger di level modul, hingga menulis sendiri parser file konfigurasi alih-alih memakai parser bawaan pustaka standar
    • Menunjukkan masalah pada load_json yang memeriksa apakah file ada lalu tetap berjalan seolah-olah file itu pasti ada
    • Menyebut kualitas kode secara keseluruhan rendah
  • Seorang coder hobi dengan pengalaman 25 tahun merasa LLM dan vibecoding menghambat kreativitas

    • Ia senang mempelajari dan memakai alat baru, serta ingin membuat solusi yang punya nilai pasar
    • Dengan memakai LLM, ia bisa mewujudkan apa yang dibayangkan dengan cepat, tetapi kepuasan membuatnya sendiri jadi berkurang
    • Ia mengeluhkan bahwa selama setahun terakhir tidak bisa membuat proyek besar, sehingga kesenangannya berkurang
  • Seorang pengembang yang belum berusia 40 tahun merasa AI berguna sebagai alat yang meringankan pekerjaan

    • Ia mengalami tendinitis parah dan merasakan perbaikan setelah menggunakan pelengkapan kode otomatis
    • Ia khawatir "vibe coding" akan menjadi arus utama, dan cemas hanya pengembang berpengalaman yang akan bisa memahami situasi
  • Seorang pengguna merasa pembuatan kode dengan AI tidak efisien

    • Menulis prompt dan melacak kesalahan kode memakan banyak waktu
    • Ia menyebut menulis kode sendiri memberikan ketenangan pikiran
  • AI dirasa berguna pada proyek baru (greenfield), tetapi tidak efisien pada proyek yang sudah ada (brownfield)

    • Disebutkan bahwa AI kesulitan mengintegrasikan diri dengan kode yang sudah ada
  • Seorang pengembang membuat rencana proyek dalam file Markdown saat memulai

    • Ia menggunakan Rust untuk menjamin ketepatan kode melalui pemeriksaan saat kompilasi
    • Ia puas karena bisa menemukan lebih banyak kesalahan pada kode Rust yang dihasilkan AI
  • Seorang pengguna berpikir pengalaman rekayasa perangkat lunak penting di era AI

    • Ia khawatir pengalaman akan menurun jika terlalu bergantung pada LLM
  • Seorang pengguna mencoba menerapkan konsep "kejutan" dari teori informasi ke LLM

    • Jika kode yang dihasilkan LLM terasa di luar dugaan, kesalahan bisa sulit diidentifikasi
    • Ia ingin membingkai ulang hal itu sebagai "eksplorasi" agar menjadi kesempatan mempelajari topik baru
  • Seorang pengguna mencoba memandu kode buatan AI melalui test-driven development (TDD)

    • TDD berfungsi seperti kontrak sehingga ia bisa memilih antara AI atau penulisan kode manual
  • Seorang pengguna khawatir bentuk AI saat ini tidak sejalan dengan arah masa depan perangkat lunak

    • Ia menyebut keberhasilan Java didukung oleh source code yang disertakan bersama JDK
    • Ia menunjukkan bahwa AI tidak meningkatkan kejelasan dan kemudahan penemuan kode
  • Seorang pengguna merasa perkembangan AI yang sangat cepat bisa terasa melelahkan

    • Pengembang berpengalaman dapat memanfaatkan AI untuk merencanakan aplikasi baru
    • Ia menganggap membangun personal brand itu penting, dan bahwa seseorang perlu membuat aplikasinya sendiri