- Pada 2019, sebagian besar software engineer masih sulit membayangkan bagaimana machine learning dapat membantu pekerjaan mereka
- Namun pada 2024, antusiasme terhadap cara AI membantu penulisan kode sudah meluas
- Banyak engineer telah mencoba autocompletion berbasis ML, baik di alat internal perusahaan maupun produk komersial
- Artikel ini memperkenalkan peningkatan terbaru berbasis AI di tengah perubahan berkelanjutan pada alat pengembangan perangkat lunak internal Google
- Juga membahas perubahan tambahan yang diperkirakan akan terjadi dalam 5 tahun ke depan
- Juga disajikan metodologi untuk membangun produk AI yang memberikan nilai bagi pengembangan perangkat lunak profesional
- Tim ini menangani lingkungan pengembangan perangkat lunak tempat engineer Google menghabiskan sebagian besar waktunya, seperti IDE, code review, dan pencarian kode
- Hal ini menunjukkan bahwa peningkatan semacam ini dapat berdampak langsung pada produktivitas dan kepuasan developer
Tantangan
- Karena teknologi AI berkembang sangat cepat, tantangan yang terus ada di bidang ini adalah sulitnya memprediksi ide mana yang harus dieksplorasi lebih dulu
- Sering kali terdapat kesenjangan yang cukup besar antara demo yang secara teknis memungkinkan dan produk yang berhasil dikomersialkan
- Ada tiga pedoman dalam pendekatan untuk menerapkan ide ke produk:
- Menentukan prioritas berdasarkan kelayakan teknis dan dampak: mengerjakan ide yang kelayakan teknisnya sudah terbukti dan diperkirakan akan memberi dampak tinggi yang dapat diukur pada alur kerja engineer
- Belajar dengan cepat untuk meningkatkan UX dan kualitas model: fokus pada iterasi cepat dan mengekstrak pelajaran sambil menjaga produktivitas dan kenyamanan developer. Pengalaman pengguna sama pentingnya dengan kualitas model
- Mengukur efektivitas: karena tujuannya adalah meningkatkan metrik produktivitas dan kepuasan, metrik tersebut harus dipantau secara luas
Menerapkan LLM ke Pengembangan Perangkat Lunak
- Seiring munculnya arsitektur transformer, mulai dieksplorasi cara menerapkan LLM pada pengembangan perangkat lunak
- Penyelesaian kode inline berbasis LLM adalah aplikasi AI untuk pengembangan perangkat lunak yang paling populer
- Menggunakan kode itu sendiri sebagai data pelatihan merupakan penerapan yang alami dari teknologi LLM
- UX terasa natural bagi developer. Ini karena autocompletion tingkat kata telah lama menjadi fitur inti IDE
- Dampaknya dapat diukur secara kasar, misalnya melalui rasio karakter baru yang ditulis oleh AI
- Karena alasan-alasan ini, masuk akal jika aplikasi LLM ini menjadi yang pertama diterapkan
- Blog sebelumnya menjelaskan cara meningkatkan pengalaman pengguna melalui code completion dan cara mengukur dampaknya
- Sejak saat itu, pertumbuhannya terus cepat, serupa dengan lingkungan perusahaan lain
- Tingkat adopsi di kalangan software engineer mencapai 37%, dan membantu menyelesaikan 50% karakter kode
- Peningkatan utama datang dari sisi model maupun UX
- Siklus ini penting untuk belajar dari perilaku nyata, bukan dari formulasi sintetis
- Fitur berbasis AI pada alat coding (misalnya IDE) ditingkatkan dengan memanfaatkan data log dari berbagai alat serta data penggunaan yang menangkap preferensi dan kebutuhan pengguna
- Rasio kode yang dihasilkan dengan bantuan AI terus meningkat
- Ini didefinisikan sebagai jumlah karakter yang diterima dari saran berbasis AI dibagi dengan jumlah total karakter yang diketik manual ditambah karakter yang diterima dari saran berbasis AI
- Perlu dicatat bahwa karakter yang berasal dari copy-paste tidak dimasukkan ke dalam penyebut
- Digunakan log berkualitas tinggi dalam jumlah besar tentang aktivitas rekayasa perangkat lunak internal yang telah dikurasi selama waktu yang lama dari berbagai alat
- Data ini memungkinkan representasi edit kode yang terperinci, hasil build, edit untuk menyelesaikan masalah build, operasi copy-paste kode, modifikasi pada kode yang ditempel, code review, edit untuk menangani masalah dari reviewer, serta pengajuan perubahan ke repositori
- Data pelatihan adalah korpus kode yang disejajarkan dengan anotasi spesifik tugas pada input maupun output
- Penerapan penting berikutnya adalah penyelesaian komentar code review (saat ini lebih dari 8% ditangani dengan dukungan berbasis AI) dan penyesuaian otomatis kode yang ditempel ke konteks sekitarnya (saat ini mencakup sekitar 2% kode di IDE)
- Penerapan tambahan mencakup memberi instruksi edit kode ke IDE dalam bahasa alami dan memprediksi perbaikan untuk kegagalan build
- Aplikasi lain juga dimungkinkan, seperti memprediksi saran keterbacaan kode yang mengikuti pola serupa
- Secara bersama-sama, aplikasi yang telah diterapkan ini merupakan aplikasi yang sukses dan banyak digunakan di Google, serta memberikan dampak yang dapat diukur pada produktivitas di lingkungan industri nyata
Hal-hal yang Dipelajari
- Dari pekerjaan sejauh ini, dipelajari beberapa hal berikut:
- Dampak tertinggi dicapai dengan UX yang menyatu secara alami ke dalam alur kerja pengguna. Dalam semua contoh di atas, saran diberikan kepada pengguna sehingga mereka dapat lanjut ke langkah berikutnya dalam alur kerja dengan satu tap atau klik. Eksperimen yang mengharuskan pengguna mengingat untuk memicu fitur tidak berhasil diperluas
- Melalui saran berbasis AI, diamati bahwa penulis kode semakin menjadi reviewer. Penting untuk menemukan keseimbangan antara biaya review dan nilai tambah. Biasanya kompromi ini diselesaikan melalui target tingkat penerimaan
- Karena metrik offline sering kali hanya merupakan proksi kasar bagi nilai pengguna, iterasi cepat melalui eksperimen A/B online adalah kunci. Ada keuntungan besar dari mengekspos fitur berbasis AI ke alat internal karena ini memudahkan rilis dan iterasi, pengukuran data penggunaan, serta riset UX untuk bertanya langsung kepada pengguna tentang pengalaman mereka
- Data berkualitas tinggi dari aktivitas engineer Google di seluruh alat perangkat lunak, termasuk interaksi dengan fitur kami, sangat penting untuk kualitas model
- Sambil memanfaatkan perbaikan UX dan model untuk menghilangkan bottleneck di tahap tengah, penting untuk mengoptimalkan konversi dari peluang (sebagian besar aktivitas pengguna, ditunjukkan di bagian atas funnel di bawah) menjadi dampak (dukungan AI yang diterapkan, di bagian bawah funnel)
What's Next
- Didorong oleh keberhasilan sejauh ini, fokus saat ini adalah menggabungkan model fondasi terbaru (seri Gemini) dengan data developer (bagian dari DIDACT yang disebutkan di atas) untuk mendukung aplikasi lama dan baru dalam penerapan ML ke rekayasa perangkat lunak di Google
- Di seluruh industri, code completion berbasis ML telah memberi bantuan besar bagi software developer
- Masih ada peluang untuk meningkatkan code generation, tetapi manfaat tahap berikutnya diperkirakan akan datang dari dukungan ML pada aktivitas rekayasa perangkat lunak yang lebih luas seperti testing, pemahaman kode, dan pemeliharaan kode
- Yang terakhir ini terutama sangat menarik di lingkungan enterprise
- Peluang-peluang ini memberi masukan bagi pekerjaan kami yang sedang berlangsung
- Dua tren yang terlihat di industri disorot:
- Interaksi manusia-komputer telah bergeser ke bahasa alami sebagai modalitas umum, dan sedang beralih ke penggunaan bahasa sebagai antarmuka untuk tugas rekayasa perangkat lunak serta sebagai gerbang bagi kebutuhan informasi software developer yang terintegrasi ke IDE
- Otomatisasi berbasis ML untuk tugas berskala besar, mulai dari diagnosis masalah hingga penerapan perbaikan, mulai menunjukkan bukti kelayakan awal
- Kemungkinan ini didorong oleh inovasi dalam agent dan penggunaan alat, yang memungkinkan pembangunan sistem yang menggunakan satu atau lebih LLM sebagai komponen untuk menangani tugas yang lebih besar
- Untuk memperluas keberhasilan di atas menuju kemampuan generasi berikutnya ini, komunitas praktisi dan peneliti yang mempelajari topik ini dapat memperoleh manfaat dari benchmark bersama yang membantu mengarahkan bidang ini ke pekerjaan rekayasa yang praktis
- Sejauh ini benchmark terutama berfokus pada code generation (misalnya HumanEval)
- Namun, di lingkungan enterprise, benchmark untuk tugas yang lebih luas seperti migrasi kode dan debugging production bisa sangat bernilai
- Benchmark untuk perbaikan bug (misalnya SWEBench) dan prototipe yang menargetkan benchmark tersebut (misalnya Cognition AI) telah diumumkan
- Komunitas didorong untuk berkumpul dan mengusulkan lebih banyak benchmark agar dapat mencakup tugas rekayasa perangkat lunak yang lebih luas
Opini GN⁺
- Evolusi AI yang cepat: Karena teknologi AI berkembang pesat, penting untuk terus mempelajari dan menerapkan teknologi terbaru.
- UX dan kualitas model: Pengalaman pengguna dan kualitas model adalah faktor penting dalam keberhasilan alat AI.
- Pentingnya data: Data berkualitas tinggi sangat menentukan performa model AI.
- Kemungkinan masa depan: AI berpotensi memainkan peran yang lebih besar dalam berbagai aspek rekayasa perangkat lunak.
- Tren industri: Antarmuka bahasa alami dan otomatisasi tugas berskala besar akan memimpin masa depan pengembangan perangkat lunak.
1 komentar
Komentar Hacker News
Saat digunakan dengan tepat, AI punya dua peran: 1) menghemat waktu developer dan mengurangi beban kognitif lewat perbaikan yang tidak kontroversial. 2) membuat pengguna lebih pintar dan lebih berpengetahuan lewat saran. Misalnya, ada kalanya fitur code completion bekerja dengan baik.
Ada klaim menarik bahwa alat AI "gagal berkembang" ketika pengguna harus memicu fitur tersebut sendiri. Sedang memikirkan bagaimana AI di dalam IDE bisa berguna dengan mengusulkan ide pada level desain dan level konseptual.
Terlihat adanya fenomena bahwa penulis kode makin berubah menjadi reviewer karena saran berbasis AI. Penting untuk menemukan keseimbangan antara biaya review dan nilai tambah yang dihasilkan.
Merasa penggunaan GPT-4 untuk membuat React UI dan Python UI dalam hitungan menit, lalu me-review kodenya untuk memahami cara kerjanya, itu bermanfaat.
Karena RAM manusia terbatas, ide perlu dituangkan ke media eksternal. Saran dari AI membantu mempercepat tahap awal.
Sulit menyangkal bahwa LLMs (model bahasa besar) berguna untuk pemrograman. Tantangan utamanya adalah UX yang tepat agar semuanya terasa lebih mulus. Pernah mencoba fitur autocomplete, tetapi sebagian besar sarannya buruk sehingga dinonaktifkan.
Merasa lebih berguna menggunakan aplikasi desktop ChatGPT untuk mengajukan pertanyaan soal kode. Namun, harus menjelaskan detailnya setiap kali terasa merepotkan.
Tren peningkatan porsi penulisan kode yang dibantu AI hingga 50% terasa menarik.
AI memberi tahu cara melakukan tugas yang diminta, tetapi tidak memberi tahu bahwa itu ide yang buruk. Kualitas kode yang dihasilkan ML bergantung pada data pelatihan.
Penasaran berapa lama sampai AI sepenuhnya menggantikan software engineer Google.
Tujuan akhir AI adalah mengoperasikan sistem, melakukan debugging aplikasi, mengelola data store, dan menulis kode aplikasi berdasarkan umpan balik pengguna serta deskripsi kebutuhan.
Bereksperimen dengan alat AI itu baik, tetapi jika orang lain menyalinnya secara membabi buta, dampaknya bisa negatif. Sulit menemukan nilai jual utama dari penulisan kode dengan LLM.