36 poin oleh GN⁺ 2025-01-08 | 1 komentar | Bagikan ke WhatsApp
  • Tulisan yang merangkum pengalaman pemrograman menggunakan LLM (model bahasa besar) selama 1 tahun terakhir
  • LLM meningkatkan produktivitas, dan sulit untuk kembali ke pemrograman tanpa menggunakannya
  • Fokus utamanya pada lingkungan pemrograman Go, sambil mengembangkan alat bernama sketch.dev

Latar belakang

  • Berawal dari rasa penasaran terhadap teknologi baru.
  • Terpikat oleh kemampuan LLM untuk menghasilkan jawaban kompleks atas pertanyaan atau menulis kode pemrograman
  • Memberikan rasa antusias dan kemungkinan yang mirip dengan saat internet pertama kali muncul
  • Memastikan keuntungan bersih yang didapat ketika alat ini menghasilkan kode yang “umumnya benar”, lalu berupaya memanfaatkannya secara nyata

Kasus penggunaan utama

  1. Autocomplete

    • Produktivitas meningkat dengan menangani pekerjaan coding yang sering berulang melalui autocomplete
    • Terutama, model FIM (Fill-In-the-Middle) sangat penting dalam pekerjaan sehari-hari
  2. Pengganti pencarian (Search)

    • Menjawab pertanyaan pemrograman tertentu (misalnya mengatur opasitas tombol di CSS) dengan lebih akurat daripada mesin pencari
    • Jawaban LLM bisa saja salah, tetapi keterbatasan ini diterima sambil tetap dimanfaatkan
  3. Pemrograman berbasis percakapan (Chat-driven Programming)

    • Area yang paling sulit sekaligus paling bernilai.
    • Mengambil alih pekerjaan awal seperti membuat file baru atau mencari library.
    • Tujuan pemrograman percakapan adalah mengurangi ketidaknyamanan saat ini dan membuat kemampuan LLM lebih ramah bagi pengguna

Inti dari pemrograman percakapan

  • Mengapa menggunakan percakapan?

    • Berguna untuk menyediakan draf pertama ketika energi menurun seiring berjalannya hari
    • Melihat draf awal lalu memperbaikinya lebih efisien daripada menulis dari nol
  • Cara bekerja dengan LLM

    1. Menetapkan tujuan tugas yang jelas dan ringkas
    2. Membaca, memverifikasi, dan memperbaiki kode
    3. Memanfaatkan error compiler untuk menyelesaikan masalah dengan cepat
  • Menulis pengujian yang efektif

    • LLM sangat antusias dalam menulis test dan dapat membangun lingkungan pengujian yang lebih menyeluruh
    • Selain test berbasis contoh, juga dapat diperluas ke fuzz test

Contoh: sampler kuartil

  • Tujuan: Menulis algoritme dalam bahasa Go untuk melakukan sampling kuartil pada aliran data
  • Proses
    1. Menulis draf pertama melalui LLM
    2. Memperbaiki kode sambil membetulkan error kompilasi
    3. Menulis ulang kode test agar strukturnya lebih mudah dibaca

Kemungkinan struktur kode baru

  • Paket yang lebih kecil, lebih banyak test

    • Paket kecil memberikan konteks kode yang lebih jelas sehingga lebih berguna bagi LLM maupun manusia
    • Meningkatkan kemungkinan pengujian yang independen dan kompilasi yang berhasil
  • Contoh: wrapper API

    • Disarankan menggunakan wrapper tipis yang hanya mengimplementasikan bagian yang diperlukan, alih-alih library resmi yang besar
    • Mengurangi biaya pemeliharaan dan pembelajaran

Arah ke depan: sketch.dev

  • IDE Go untuk LLM
    • Menyediakan lingkungan pemrograman yang berpusat pada LLM
    • Mendukung umpan balik pengujian otomatis, perbaikan error compiler, integrasi modul Go, dan lain-lain
    • Memperkuat kolaborasi antara manusia dan LLM untuk menyediakan lingkungan yang lebih produktif

1 komentar

 
GN⁺ 2025-01-08
Opini Hacker News
  • Penulisnya sudah merupakan insinyur perangkat lunak kelas dunia, mantan karyawan Google, sekaligus salah satu pendiri/CTO Tailscale. Kesan yang muncul adalah LLM membuatnya lebih produktif.

    • LLM berguna saat menyusun draf ide baru.
    • Dulu implementasi diambil dari basis data, tetapi sekarang LLM membuatnya secara real-time.
  • LLM mengurangi energi awal yang dibutuhkan untuk memulai pekerjaan.

    • Menurunkan hambatan saat mencoba hal baru.
    • Memang tidak memiliki kedalaman setingkat manusia, tetapi memiliki pengetahuan yang luas.
    • Berguna bagi orang yang melakukan berbagai macam pemrograman.
  • Saat menggunakan LLM, sebaiknya hanya dipakai pada bidang yang benar-benar kita pahami.

    • Hanya bisa menghemat waktu jika kita dapat dengan mudah mengidentifikasi bagian yang salah.
    • Membantu dalam pencarian.
  • LLM memiliki potensi sebagai alat pengembangan perangkat lunak.

    • sketch.dev memberikan contoh yang rapi pada percobaan pertama.
    • Dibutuhkan LLM yang dilatih sesuai dokumentasi resmi bahasa pemrograman.
    • Upaya memanusiakan LLM terasa tidak nyaman.
  • Mirip dengan menggunakan mesin pencari.

    • Penting untuk memakai kata kunci yang tepat.
  • Tidak merasa punya dorongan untuk menggunakan LLM.

    • Menikmati proses menulis kode secara langsung.
    • LLM dapat meningkatkan biaya.
  • Bagi orang yang bukan programmer, LLM sangat membantu.

    • Sangat mempersingkat waktu penulisan kode.
    • Berguna untuk proyek pribadi.
  • LLM berguna untuk menulis aplikasi sederhana.

    • Jika menjelaskan produk dengan fitur minimum, LLM dapat menghasilkan kode.
    • Utang teknis bisa menumpuk dengan cepat.
  • LLM membantu orang yang memprogram sebagai hobi.

    • Membantu menyiapkan struktur proyek dan menghasilkan kode.
    • Namun, instruksi yang ambigu dapat menimbulkan masalah.
  • LLM terutama digunakan untuk pelengkapan otomatis dan pencarian.

    • ChatGPT berguna untuk mengoptimalkan kode yang sudah ada.