Refleksi setelah sebulan bersama Devin
(answer.ai)Apa itu Devin
- Pada Maret 2024, muncul sebuah perusahaan AI baru yang menggalang pendanaan Seri A senilai total 21 juta dolar AS dengan dukungan dari berbagai pemimpin industri teknologi seperti Founders Fund, bersaudara Collison, dan Elad Gil
- Tim perusahaan ini diperkenalkan sebagai kumpulan peraih medali emas IOI, dan disebut memiliki kemampuan untuk menyelesaikan sendiri masalah pemrograman yang kompleks
- Produk mereka, Devin, diklaim dapat bercakap-cakap layaknya rekan kerja manusia, serta secara otonom menangani seluruh proses rekayasa perangkat lunak seperti mempelajari teknologi baru, men-debug kode yang sudah ada, men-deploy seluruh aplikasi, dan melatih model AI
- Dalam video demo yang dipublikasikan, Devin menyelesaikan bounty Upwork sendiri, serta memasang dan menjalankan proyek PyTorch[1]
- Pihak perusahaan mengklaim bahwa berdasarkan tolok ukur SWE-bench, Devin sepenuhnya menyelesaikan sekitar 13,86% isu GitHub nyata, dan menekankan bahwa ini sekitar 3 kali lebih baik dibanding sistem sebelumnya
- Pada awalnya, akses hanya tersedia bagi pengguna terpilih, dan ekspektasi bahwa alat ini akan merevolusi pengembangan perangkat lunak menyebar melalui SNS
- Tim Answer.AI sering bereksperimen dengan alat pengembangan AI, dan mereka merasa punya firasat bahwa Devin mungkin menunjukkan sesuatu yang berbeda dari yang sudah ada
- Mereka kemudian merangkum pengalaman penggunaan setelah langsung menerapkan Devin di lingkungan kerja nyata untuk mencoba berbagai tugas
Contoh keberhasilan awal
- Tugas pertama yang dicoba adalah mengambil informasi dari database Notion ke Google Sheets
- Devin menelusuri dokumentasi API Notion dan Google, lalu memandu secara berurutan pengaturan kredensial yang diperlukan di Google Cloud Console
- Bukan sekadar memberikan cara memakai API, Devin juga menunjukkan menu dan lokasi tombol yang perlu diklik, sehingga sangat mengurangi waktu untuk pekerjaan yang merepotkan
- Kode yang ditulis Devin agak bertele-tele, tetapi tetap berjalan dengan baik
- Dari pengalaman ini, tim bisa melihat sekilas potensi AI yang menangani “glue code” sebagai pengganti manusia
- Anggota tim lain juga dapat berinteraksi dengan Devin hanya melalui ponsel, dan berhasil membuat aplikasi untuk melacak posisi masa lalu Jupiter dan Saturnus
Perluasan pengujian
- Terdorong oleh keberhasilan awal, mereka mencoba pemanfaatan asinkron seperti meminta Devin menulis dokumentasi, atau melakukan debugging saat tim sedang mengerjakan desain
- Namun seiring waktu, mulai terlihat masalah bahwa Devin bisa terjebak di jalan buntu teknis bahkan pada tugas yang tampak sederhana, atau menghasilkan kode rumit yang tidak berguna
- Terutama, mereka sering menghadapi situasi ketika Devin dengan nekat mencoba tugas yang sebenarnya tidak mungkin dilakukan (misalnya menempatkan beberapa aplikasi sekaligus dalam satu deployment di Railway), sehingga “berhalusinasi (hallucination)” tentang fitur yang tidak ada
- Masalahnya bukan sekadar gagal, tetapi membuang waktu karena terus mencoba solusi yang sebenarnya mustahil
Pengamatan mendalam terhadap masalah
- Mereka mulai bertanya-tanya mengapa Devin terlihat sangat kompeten pada beberapa tugas, tetapi gagal pada tugas lainnya
- Selama satu bulan penggunaan, mereka mencoba total 20 tugas yang diklasifikasikan ke dalam tiga kategori berikut
- (1) Membuat proyek baru
- (2) Tugas riset
- (3) Analisis dan modifikasi proyek yang sudah ada
- Hasilnya, dari 20 tugas, 14 gagal, 3 berhasil (termasuk contoh keberhasilan awal), dan 3 tidak konklusif
- Tidak ada pola yang jelas untuk membedakan kegagalan dan keberhasilan, sehingga bahkan tugas yang tampak mirip pun bisa gagal dengan cara yang tak terduga
- Contoh detailnya dirangkum dalam lampiran di bagian akhir artikel
1. Membuat proyek baru
- Dari video demo perusahaan dan contoh keberhasilan awal, mereka mengira Devin akan bagus dalam membuat proyek baru secara penuh
- Namun dalam praktiknya, Devin sering membuat struktur kode yang terlalu rumit, atau bahkan gagal menyelesaikan web scraping yang sederhana
- Misalnya, tugas mengunggah data sintetis ke Braintrust gagal karena kode buatan Devin terlalu kompleks dan tidak bisa keluar dari error
- Upaya mengintegrasikan Spiral.computer dengan AI note taker Circleback juga akhirnya ditinggalkan karena Devin mengembalikan kode rumit seperti spaghetti
- Tugas mengambil informasi 25 makalah terbaru dari penulis tertentu di Google Scholar juga tidak berhasil dijalankan dengan baik karena terjebak pada parsing HTML
2. Tugas riset
- Tugas investigasi dasar seperti menelusuri dokumen sederhana masih bisa dilakukan sampai tingkat tertentu
- Namun untuk masalah yang lebih kompleks, misalnya merangkum transkrip sambil mempertahankan timestamp secara akurat, Devin tidak benar-benar memahami isi yang relevan dan hanya mencantumkan contoh-contoh yang melenceng
- Permintaan untuk membuat tema minimal DaisyUI juga pada praktiknya hanya menggunakan warna tema bawaan apa adanya, sehingga hasilnya tidak benar-benar berfungsi
3. Analisis dan modifikasi kode yang sudah ada
- Keterbatasan Devin paling menonjol saat harus memahami konteks kode yang sudah ada dan melakukan pemeliharaan
- Saat menangani proyek nbdev, Devin mencoba pendekatan yang tidak efisien, seperti menambahkan skrip Python yang tidak perlu untuk tugas yang sebenarnya cukup dilakukan dengan mengedit notebook
- Dalam tugas review keamanan, Devin juga menunjuk kerentanan yang tidak ada atau gagal mengidentifikasi masalah utama dengan tepat
- Saat mendiagnosis error SSH key forwarding, Devin hanya menggali skrip itu sendiri dan sama sekali tidak mempertimbangkan kemungkinan bahwa masalahnya ada di tempat lain
- Bahkan saat mengimplementasikan fitur pengecekan konflik antara input pengguna dan database, mereka membuang waktu memperbaiki kode buatan Devin, lalu akhirnya lebih cepat jika dikerjakan sendiri dalam 90 menit
Retrospektif tim
- Setelah pengujian intensif selama satu bulan, evaluasi berikut muncul di dalam tim tentang Devin
- “Untuk tugas kecil yang terdefinisi dengan baik, malah lebih cepat dikerjakan sendiri, dan untuk tugas besar, kemungkinan Devin gagal tinggi sehingga kegunaannya sangat terbatas” (Johno Whitaker)
- “Awalnya terasa mungkin jika sedikit demi sedikit diperbaiki, tetapi pada akhirnya semakin banyak bagian yang harus disentuh, dan saya merasa lebih baik mengerjakannya sendiri dari awal” (Isaac Flath)
- “Ada masalah kompatibilitas, seperti tidak bisa terintegrasi dengan baik dengan alat internal AnswerAI dan kurang mampu memanfaatkan dokumentasi serta contoh yang diberikan. Sebaliknya, alat seperti Cursor lebih baik daripada Devin karena memungkinkan umpan balik berkelanjutan dalam unit kecil” (Hamel Husain)
- Ciri khas Devin adalah bergerak secara otonom melalui langkah-langkah besar, tetapi akibatnya biaya yang harus dikeluarkan manusia untuk meluruskan arah yang salah menjadi cukup besar
- Sebaliknya, mereka menyimpulkan bahwa alur kerja di mana developer memimpin dan AI membantu (seperti Circleback, Cursor, dan lainnya) jauh lebih stabil
Kesimpulan
- Pengalaman bekerja dengan Devin memungkinkan mereka melihat sekilas gambaran masa depan yang dituju oleh alat pengembangan AI otonom
- Khususnya, UI percakapan berbasis Slack dan kemampuan mengatur lingkungan secara otomatis di dalam container Docker terasa mengesankan dari sisi pengalaman pengguna
- Namun, kasus yang benar-benar berjalan mulus hanya 3 dari 20, dan terutama bahkan tugas yang mirip pun sering kali gagal dengan cara yang rumit
- Karena sifatnya yang “otonom”, ketika pekerjaan berjalan salah, prosesnya bisa terus berjalan lama ke arah yang keliru
- Berdasarkan pengalaman sejauh ini, hype di SNS atau valuasi perusahaan yang tinggi sering kali tidak berujung pada produktivitas atau tingkat penyelesaian yang nyata
- Tim Answer.AI berencana tetap mempertahankan pandangan bahwa bentuk AI yang membantu proses pengembangan adalah yang paling praktis untuk ke depannya
Lampiran: daftar tugas yang menggunakan Devin
- Di bawah ini adalah ringkasan singkat proyek-proyek yang diserahkan kepada Devin beserta hasilnya
- Tugas-tugas tersebut dibagi ke dalam empat kategori
- (1) Membuat proyek baru
- (2) Riset
- (3) Analisis kode yang sudah ada
- (4) Modifikasi proyek yang sudah ada
1. Membuat proyek baru
-
Planet Tracker
- Status: Success
- Description: Aplikasi untuk memverifikasi klaim tentang posisi masa lalu Jupiter dan Saturnus
- Reflection: Mereka hanya bercakap dengan Devin lewat Slack dari ponsel, dan Devin menangani sebagian besar pekerjaan secara otonom hingga berhasil diselesaikan
-
Migrating data from Notion into Google Sheets
- Status: Success
- Description: Mengimpor dokumen Notion ke Google Sheets secara otomatis
- Reflection: Devin memandu hingga pengaturan Google Cloud Console langkah demi langkah, sehingga untuk pertama kalinya mereka merasakan “pengalaman yang benar-benar baru”
-
Multi-app deploys on Railway
- Status: Inconclusive
- Description: Mereka ingin menempatkan beberapa aplikasi sekaligus dalam satu deployment Railway agar berbagi DB yang sama
- Reflection: Pada kenyataannya, Railway tidak mendukung cara ini sehingga pada dasarnya mustahil. Devin terus mencoba dan melanjutkan pendekatan yang berhalusinasi
-
Generate synthetic data and upload it to Braintrust
- Status: Failure
- Description: Mereka ingin membuat data sintetis untuk diunggah ke platform Braintrust
- Reflection: Kodenya terlalu rumit dan tidak bisa menyelesaikan error, sehingga implementasi dilanjutkan langkah demi langkah dengan Cursor
-
Create an integration between Circleback and Spiral.computer
- Status: Failure
- Description: Dokumentasi untuk masing-masing sudah diberikan, tetapi Devin membuat kode spaghetti yang terlalu kompleks sehingga upaya ini ditinggalkan
-
Web scraping Papers by Following Google Scholar Links
- Status: Failure
- Description: Tugas mengambil informasi 25 makalah terbaru dari penulis tertentu, sambil melewati makalah berbayar
- Reflection: Pekerjaan berhenti karena terjebak dalam loop tak berujung pada parsing HTML
-
Create minimal HTMX bulk upload example app
- Status: Failure
- Description: Mereka ingin menyusun ulang contoh HTMX secara sederhana untuk FastHTML
- Reflection: Kode contoh tidak berjalan dan justru menambahkan elemen-elemen yang tidak perlu sehingga membingungkan
-
Create a DaisyUI Themes to match FrankenUI Theming
- Status: Failure
- Description: Mereka ingin menyatukan penggunaan tema DaisyUI dan FrankenUI
- Reflection: Pemetaan tidak dilakukan dengan benar dan terlalu banyak kode besar ditambahkan, sehingga sulit dimanfaatkan secara praktis
2. Perform Research
-
Research How to make a discord bot
- Status: Success
- Description: Meneliti cara membuat bot Discord dengan Python yang merangkum pesan lalu mengirimkannya lewat email
- Reflection: Devin sempat merangkum rencana ke dalam file Markdown, dan meski kode akhirnya tidak sempurna, itu membantu memahami konsep
-
Research on Transcript Summarization With Accurate Timestamps
- Status: Failure
- Description: Mereka ingin mencari cara membuat ringkasan sambil mempertahankan informasi timestamp
- Reflection: Devin hanya mencantumkan topik terkait secara garis besar, dan tidak bisa menawarkan arah penyelesaian masalah yang nyata
-
Create a minimal DaisyUI theme as an example
- Status: Failure
- Description: Mereka meminta contoh minimal tema DaisyUI
- Reflection: Tema yang sebenarnya tidak diterapkan, dan warna tema bawaan tetap digunakan apa adanya
3. Analyze Existing Code
-
Performing a security review of a code base
- Status: Inconclusive
- Description: Meminta review repo GitHub di bawah 700 baris dari sudut pandang kerentanan keamanan
- Reflection: Sebagian memang benar, tetapi Devin terlalu agresif menunjuk isu keamanan, termasuk kerentanan yang sebenarnya tidak ada
-
Review blog posts and make a pull request with improvements
- Status: Failure
- Description: Meminta Devin meninjau posting blog dan membuat PR sesuai sumber berbasis Quarto
- Reflection: Gagal karena Devin tidak bisa mempelajari struktur Quarto sehingga metadata dan front matter menjadi kacau
-
Review an application and identify potential areas of improvement
- Status: Failure
- Description: Mereka meminta usulan perbaikan yang komprehensif untuk aplikasi pencatatan waktu yang dibuat sebelumnya
- Reflection: Sebagian besar usulnya tidak efektif
-
Debug why ssh key forwarding is not working in a setup script
- Status: Inconclusive
- Description: Masalah SSH key forwarding yang tidak berjalan saat menyiapkan server lewat skrip
- Reflection: Devin terus menyelidiki skripnya saja dan tidak menyadari bahwa penyebab masalah bisa berada di tempat lain
4. Modify An Existing Project
-
Making changes to a nbdev project
- Status: Failure
- Description: Mereka ingin menambahkan API untuk Apple Shortcuts ke aplikasi pelacakan waktu yang dibuat dengan FastHTML + nbdev
- Reflection: Alih-alih langsung mengedit notebook, Devin mencoba memodifikasi notebook lewat skrip Python sehingga kompleksitas meningkat
-
Migration of Python Project To nbdev
- Status: Failure
- Description: Mereka ingin memigrasikan proyek Python yang sudah ada ke nbdev
- Reflection: Bahkan konfigurasi dasar nbdev pun tidak bisa diatur dengan benar, sehingga proyek menjadi kacau
-
Integrate Styling Package Into FastHTML
- Status: Failure
- Description: Mereka mencoba memasang MonsterUI ke proyek berbasis nbdev
- Reflection: Gagal karena Devin tidak benar-benar memahami struktur repo nbdev
-
Add feature to check for conflicts between user input and database
- Status: Failure
- Description: Mereka ingin menambahkan UI yang memberi tahu saat input pengguna bertabrakan dengan nilai di DB pada aplikasi yang sudah ada
- Reflection: Butuh banyak waktu untuk terus memperbaiki upaya Devin, sehingga jauh lebih cepat jika mereka mengimplementasikannya sendiri dalam 90 menit
-
Generate LLMs context file with the contents of every fasthtml gallery example
- Status: Failure
- Description: Mereka meminta agar semua contoh galeri fasthtml dibuat menjadi file teks untuk LLMs
- Reflection: Menarik bahwa Devin membuat setiap contoh sebagai file Markdown terpisah, tetapi cara penulisannya tidak sesuai dengan dokumentasi nyata dan menambahkan dependensi yang tidak perlu, sehingga banyak masalah muncul
1 komentar
Komentar Hacker News
Kreator OpenHands menekankan bahwa AI belum mencapai tingkat untuk menggantikan software engineer. Kode yang ditulis AI perlu ditinjau secara menyeluruh seperti kode dari engineer junior. Namun, jika AI dimanfaatkan dengan baik, produktivitas dapat meningkat secara signifikan. Sekitar 20% codebase OpenHands ditulis atau dikembangkan bersama oleh AI. AI berguna untuk tugas sederhana seperti menyelesaikan merge conflict atau memperbaiki error linter. Disebutkan juga bahwa AI membaik setiap minggu dan persaingannya sangat ketat
Pengguna yang memakai alat coding AI setiap hari menilai pendekatan agent seperti Devin mencoba melakukan pekerjaan terlalu banyak. Alat coding AI seharusnya menjadi alat untuk developer, bukan pengganti developer. GitHub Copilot berguna untuk melengkapi kode yang berulang, dan Aider dapat menangani pekerjaan editing tingkat lebih tinggi. Namun alat-alat ini masih belum sempurna, dan saat memecahkan masalah bisa membuat perubahan yang tidak perlu
Masalah AI agent seperti Devin adalah kecerdasannya berhenti pada level tertentu. Kadang ia bisa menyelesaikan pekerjaan yang akan memakan waktu beberapa jam bagi engineer menengah atau senior hanya dalam beberapa menit, tetapi juga bisa melakukan kesalahan sederhana. Salah satu kualitas penting engineer junior adalah bisa diarahkan, dan AI agent punya keterbatasan karena tidak bisa dibimbing seperti itu
Ada sikap skeptis terhadap klaim bahwa AI dapat menggantikan engineer manusia. AI cocok untuk tugas kecil yang berulang, tetapi tidak cocok untuk pekerjaan kompleks seperti mengelola infrastruktur atau melakukan deployment aplikasi. Disebutkan bahwa mereka tidak akan percaya sampai benar-benar melihat klaim bahwa AI bisa menggantikan manusia terbukti dalam praktik
AI agent seharusnya dapat meminta masukan manusia saat diperlukan, tetapi Devin tidak melakukannya dengan baik dalam situasi "soft stop". Developer manusia akan meminta bantuan setelah beberapa jam, tetapi AI bisa terjebak dalam loop tak berujung
Mirip dengan pembuatan gambar AI, alat coding AI pada awalnya menunjukkan hasil yang mengagumkan, tetapi masih memiliki banyak kesalahan. Namun, diperkirakan dalam beberapa tahun ke depan akan ada kemajuan yang luar biasa. Alat seperti Midjourney bisa memberikan hasil yang berbeda dari harapan, dan akan dibutuhkan kemampuan yang memungkinkan pengguna melakukan iterasi dengan cepat
Dari ulasan penggunaan Devin, agent ini dinilai tidak memenuhi harapan. Agent mudah diimplementasikan, tetapi sulit dibuat benar-benar berguna. Keterbatasan Devin memunculkan kekhawatiran tentang perkembangan sistem agent
Devin mencoba melakukan terlalu banyak hal, dan ada nilai dalam menghasilkan artefak kode dalam kapasitas yang terbatas. Penting untuk berfokus pada elemen tertentu dalam development loop. Perusahaan seperti Factory AI mengambil pendekatan ini dan produknya mendapat perhatian
Devin mengesankan saat memahami format kode dan pengaturan local test, tetapi bisa menambahkan perubahan yang tidak perlu dan merusak hal lain. Perubahan seperti ini tidak bisa dibatalkan begitu saja sehingga perlu pembersihan tambahan. Devin menunjukkan potensi workflow agent, tetapi tidak menghemat waktu sehingga tidak direkomendasikan
Pengguna yang banyak memakai Cursor merasa sistem ini harus dipaksa ke arah tertentu. Ada kalanya LLM memberikan snippet kode yang berguna, tetapi jika mulai bergerak ke arah yang salah, sarannya harus dihentikan dan dipaksa ke arah lain. Cursor sangat berguna terutama untuk refactoring, serta menghemat banyak pengetikan dan waktu.