41 poin oleh GN⁺ 2025-01-06 | 3 komentar | Bagikan ke WhatsApp
  • "Eksperimen membingungkan yang mengubah cara berpikir tentang analisis kode oleh AI"
  • Menyaksikan situasi ketika AI yang ada sering gagal saat menganalisis codebase React
  • Menyadari bahwa penyebabnya adalah cara analisis yang hanya melihat per baris, seperti ketika developer junior pertama kali membaca kode

Masa bootcamp dan perbedaan pola pikir senior

  • Saat masih junior, sering membaca file secara berurutan, baris demi baris, lalu cepat kehilangan arah
  • Developer senior saat melihat PR berskala besar menggunakan pendekatan seperti berikut
    • Memeriksa file inti terlebih dahulu
    • Mengelompokkan perubahan berdasarkan fitur
    • Memahami arsitektur keseluruhan terlebih dahulu, lalu meninjau implementasi detailnya
  • Diputuskan untuk menerapkan pendekatan ini pada AI

Eksperimen

  • Mencoba metode mengelompokkan file berdasarkan fungsi, lalu lebih dulu memberi AI informasi konteks tentang grup tersebut
  • Dalam kode contoh, mendefinisikan interface FileGroup dan memproses file dengan mengelompokkannya menurut fitur terkait dan ukuran file
  • Menyusun prompt untuk AI per grup, seperti panduan tentang "area fitur apa ini dan hal apa yang perlu menjadi fokus peninjauan"

Momen perubahan yang mengejutkan

  • Sebelumnya AI hanya memberi respons sederhana seperti "terdapat logika autentikasi token JWT"
  • Lalu mulai memberikan wawasan setingkat developer senior seperti "dampaknya terhadap koneksi WebSocket" dan "kemungkinan race condition pada PR yang baru saja digabung"
  • AI mulai menunjukkan temuan dengan mempertimbangkan konteks seluruh sistem

Apa yang benar-benar berubah

  • Kuncinya bukan memakai model machine learning yang lebih kompleks, melainkan memberi AI urutan berpikir seperti developer senior
    1. Konteks lebih dulu: mulai dari memahami keseluruhan sistem
    2. Pattern matching: mengelompokkan file yang serupa untuk menemukan logika yang berulang
    3. Analisis dampak: mengenali pengaruh perubahan terhadap keseluruhan sistem
    4. Memahami histori: menelusuri alasan atau konteks perubahan kode di masa lalu

Efek samping yang tak terduga

  • Bukan hanya memperbaiki titik yang diinginkan, tetapi juga menangkap insight seperti berikut
    • Mengidentifikasi blok kode duplikat akibat copy-paste
    • Memperingatkan pola penanganan error yang tidak konsisten
    • Menemukan potensi bottleneck performa
    • Mengusulkan perbaikan arsitektur berdasarkan pola penggunaan

Mengapa ini penting

  • IDE berbasis AI belakangan ini berfokus pada pembuatan kode secara otomatis
  • Namun, sekadar memberi saran tanpa konteks seluruh sistem bisa berbahaya, seperti "developer junior yang baru bergabung"
  • Hal yang benar-benar penting adalah "pemahaman kode yang mendalam"

Pertanyaan yang masih tersisa

  • Masalah menentukan kapan konteks (informasi historis) harus diperbarui dan kapan harus dipertahankan
  • Cara merespons ketika ditemukan pola-pola yang saling bertentangan
  • Cara menandai hasil analisis dengan tingkat ketidakpastian tinggi kepada pengguna

Arah selanjutnya

  • Sedang memikirkan apakah AI juga bisa diajari kepekaan berikut seperti developer senior
    • Kemampuan mendeteksi utang teknis lebih awal
    • Kapabilitas mengusulkan perbaikan arsitektur secara proaktif
    • Kemampuan mendeteksi masalah keamanan dari pola penggunaan
    • Kepekaan memahami aturan informal di dalam tim
  • Tujuan akhirnya bukan sekadar menghasilkan "lebih banyak kode", tetapi mengajarkan "cara memahami keseluruhan kode secara mendalam seperti developer senior"

3 komentar

 
savvykang 2025-01-06

Pertanyaan yang layak diajukan untuk analisis dan perbaikan codebase bukankah sudah cukup baku? Penulisnya tampak terlalu bersemangat.

 
yangeok 2025-01-06

Sepertinya konteksnya mirip dengan saat menjelaskan keseluruhan proyek dari Cursor ke Notepad.

 
GN⁺ 2025-01-06
Pendapat Hacker News
  • Orang-orang di komentar bersikap kritis. Tulisan ini membahas hasil singkat dan positif tentang kemungkinan alat baru, serta memuat pemikiran yang jujur dan masuk akal

    • Narasi "Senior vs Junior Developer" mungkin agak dibesar-besarkan, tetapi inti tulisannya sangat bagus
    • Saya jadi bertanya-tanya apakah orang-orang marah karena merasa terancam
  • Ini contoh lain dari hal menakjubkan yang bisa dilakukan LLM. Namun, membangun sistem yang bekerja secara konsisten dan akurat untuk semua masukan sangatlah sulit

    • Ada contoh analisis file sistem autentikasi
    • String yang di-hardcode ini memang berperan penting, tetapi tidak istimewa sampai bisa dihasilkan dengan akurat dan konsisten untuk setiap PR
    • Perlu menyiapkan evaluasi melalui berbagai codebase dan PR nyata
  • Sepertinya ada pelajaran untuk sistem agen yang lebih baik dalam penulisan kode

    • Menginstruksikan Claude/chatGPT dan lainnya agar tidak menghasilkan kode. Biarkan mereka membuat struktur awal dulu, lalu menulis kode setelahnya
  • Saya merasa seperti alien saat membaca baris pertama tulisan itu. Saya memang perlu membaca seluruh tulisannya, tetapi membaca kode yang sudah ada secara berurutan terasa aneh

    • Ada banyak persepsi keliru tentang "junior developer"
  • Menekankan pentingnya unsur manusia. Tanpa pemahaman kontekstual terhadap codebase, sulit mengetahui arti peringatan dari AI

    • Sulit memahami apa yang dimaksud dengan "shared pattern" dan mengapa itu memicu race condition
    • Hubungan antara perubahan autentikasi dan PR "retry logic" juga tidak jelas
  • Sulit mencegah AI mengarang API yang sebenarnya tidak ada. Saat berhasil, hasilnya bagus, tetapi sebagian besar waktu tidak berjalan baik

    • AI bekerja baik ketika banyak orang sudah menulis kode yang sedang ia tulis
  • Konteks dan pemahaman kode penting untuk meningkatkan kualitas kode yang dihasilkan LLM

    • Produk Bismuth membagi proyek ke area-area logis sesuai permintaan pengguna, lalu menelusuri codebase dengan mengambil informasi simbol
    • Hanya sebagian produk pesaing yang menyediakan kemampuan pencarian sedalam ini
  • Seperti keluhan John McCarthy, ini adalah cerita, bukan eksperimen atau pembuktian

    • Semoga komunitas memanfaatkan pemikiran kritis dan pelatihan
  • Hasilnya mengesankan. Ada kritik soal gaya dan konsistensi, tetapi hasilnya terlihat berguna

    • Dari judulnya saya mengira isinya tentang AI yang mengabaikan pekerjaan orang lain dan hanya menonjolkan pekerjaannya sendiri
  • Rasanya bagian penting dari teknik ini hilang dari tulisan. Implementasi getFileContext() dan shouldStartNewGroup() tidak ada