Kami bermigrasi dari Enzyme dalam 2 minggu. Seharusnya butuh waktu lima tahun.

Tim Teknik AsanaEngineering Team
7 Agustus 2026
3 menit baca
facebookx-twitterlinkedin
Sorotan Teknik Asana

Baru-baru ini kami menggunakan AI untuk menyelesaikan pekerjaan teknis selama bertahun-tahun dalam sekitar satu sprint. Berikut cara dan alasan hal ini mengubah cara kami berpikir tentang apa yang mungkin dilakukan.

Masalah lima tahun

Pada tahun 2022, kami mulai memindahkan rangkaian pengujian frontend Asana dari Enzyme, pustaka pengujian kami yang sudah tua, ke React Testing Library (RTL). Enzyme telah kehilangan dukungan komunitas, tidak berfungsi dengan baik dengan versi React yang lebih baru, dan mendorong pengujian yang terkait erat dengan detail implementasi, bukan dengan apa yang sebenarnya dilihat dan dilakukan pengguna. RTL mendorong kami menuju model yang lebih baik: uji perilaku, bukan bagian internal.

Migrasi ini mengalami progres yang stabil selama bertahun-tahun. Beberapa proyek multi-insinyur selama bertahun-tahun ditangani oleh staf untuk itu. Tim produk mengurangi bagian yang menjadi tanggung jawab mereka. Semua pekerjaan itu penting. Namun, dengan kecepatan saat itu, kami masih membutuhkan waktu sekitar lima tahun untuk menyelesaikannya.

Jadi, kami sengaja menetapkan gol yang tidak masuk akal: bagaimana jika kami menyelesaikan seluruh migrasi dalam satu minggu.

Kami hampir berhasil. Butuh waktu teknis sekitar satu setengah minggu. Enzyme kini benar-benar hilang dari codebase.

Bagaimana sebenarnya prosesnya

Pendekatannya begitu sederhana hingga hampir memalukan. Kami menggunakan Codex OpenAI dengan model frontier pada penalaran ekstra-tinggi, menjalankan hingga empat agen sekaligus, masing-masing mengarah ke direktori yang berbeda. Kami mencegah mesin tidur, membiarkan agen berjalan sepanjang hari dan semalaman, dan memeriksa setiap pagi dan sore untuk meninjau kemajuan dan membuka permintaan perubahan.

Berikut prompt lengkapnya:

/goal Kami ingin memindahkan repo dari tes Enzyme ke tes gaya Pustaka Pengujian React. Ikuti norma dan praktik terbaik yang ada di codebase. Migrasikan semua file di/directory yang menggunakan enzyme agar menggunakan pustaka pengujian react. Uji perubahan Anda dengan [test command]. Umumnya, bias untuk memigrasikan file yang mudah dikonversi terlebih dahulu.

Lima kalimat. Itu saja.

Kami juga mencoba pengaturan yang lebih mewah: membagi pekerjaan menjadi tiket yang dilacak, meminta agen menyimpan file catatan yang terus diperbarui, memintanya untuk membuat sub-agen agar dapat lebih paralel, menulis prompt yang jauh lebih terperinci tentang konvensi RTL. Hampir semuanya membuat segalanya menjadi lebih buruk. Kesederhanaan menang.

Mengapa prompt lima kalimat sudah cukup

Ini adalah bagian yang paling penting, dan ini adalah ide yang sama dengan yang baru-baru ini ditulis OpenAI dalam Harness engineering: kualitas output agen sangat bergantung pada kualitas lingkungan yang Anda berikan.

Basis kode kami telah mengandung selera yang baik selama bertahun-tahun β€” keputusan awal untuk mengadopsi RTL, pembantu pengujian yang dirancang dengan baik, konvensi yang jelas, contoh nyata yang dapat dijadikan acuan. Model ini tidak memerlukan penjelasan dari kami; semuanya sudah ada untuk dibaca. Kami hanya menyediakan gol dan membiarkan agen berjalan.

Tugas itu sendiri juga memiliki bentuk yang tepat agar ini berhasil: definisi yang rapi dan dapat diverifikasi tentang selesai (tidak ada lagi Enzyme), dan loop umpan balik yang cepat β€” pemeriksaan tipe, linting, tes, CI β€” yang dapat segera mendeteksi kesalahan. Harness yang baik, masalah yang didefinisikan dengan baik, dan hanya sedikit bimbingan yang diperlukan.

Apa yang menghalangi

Sebagian besar friksi bukan kesalahan model β€” itu kesalahan kami:

  • Beberapa dokumen internal dan panduan agen yang baru-baru ini ditulis masih mengarahkan ke Enzyme sebagai pola yang diutamakan, secara aktif mengarahkan agen ke arah yang salah. Dokumentasi yang sudah usang bukan lagi sekadar gangguan kecil; ini adalah materi pelatihan yang menyesatkan bagi setiap agen yang membacanya.

  • Alat yang lambat dan tidak stabil (langkah lint yang terkadang memakan waktu lebih dari sepuluh menit, ketidakcocokan antara CI dan pemeriksaan lokal) adalah hal yang menurut kami paling memerlukan intervensi. Agen jarang menjadi penyebab kemacetan β€” infrastruktur kami sendiri yang menjadi penyebabnya.

Harness adalah produknya sekarang

Salah satu pelajaran yang lebih jelas dari proyek ini: AI tidak menghilangkan kebutuhan akan selera teknis, melainkan memperkuatnya. Contoh yang rapi dan kesepakatan yang jelas dalam basis kode menghasilkan output yang rapi dan berbentuk baik. Pola yang canggung juga disalin. Hal yang sama berlaku untuk dokumen kami β€” panduan yang sudah usang menjadi beban dengan cara yang tidak pernah terjadi ketika hanya manusia yang membacanya.

Sisi lain yang menggembirakan adalah hal ini juga berkembang ke arah lain. Contoh yang baik menyebar. Dokumen yang jelas mengarahkan agen dengan benar. Berinvestasi dalam "harness" β€” dokumen, konvensi, dan umpan balik seputar kode β€” akan membuahkan hasil di setiap migrasi mendatang, bukan hanya migrasi ini.

Apa selanjutnya

Kami yakin dengan apa artinya ini bagi Asana, dan tahu ini juga bisa terasa tidak nyaman β€” banyak identitas teknis yang terkait dengan penulisan kode secara manual. Harapan saya adalah ini akan memberi kita kebebasan untuk lebih peduli tentang keahlian, bukan sebaliknya, dan menjadi lebih ambisius tentang backlog migrasi, penulisan ulang, dan masalah kinerja yang sudah berjalan lama, yang diam-diam kita asumsikan akan selalu memakan waktu bertahun-tahun.

Tidak semua masalah tersebut akan berubah dari bertahun-tahun menjadi seminggu. Tetapi beberapa akan berubah. Pertanyaan yang layak diajukan bukan hanya "apakah kita menggunakan AI di sini?" Pertanyaannya adalah "apakah kita benar-benar sudah mencoba mengarahkan agen untuk menangani ini selama akhir pekan dan melihat hasilnya pada hari Senin?"


Beberapa detail tambahan, untuk yang penasaran:

  • Seluruh migrasi membutuhkan waktu teknis sekitar satu setengah minggu, yang tersebar selama dua minggu kalender.

  • Biaya penggunaan model sekitar $11 ribu, dengan biaya infrastruktur $1 ribu lagi

  • Untuk menempatkan $12 ribu itu dalam perspektif (perhitungan sederhana): pada akhirnya, pekerjaan tersebut memberikan manfaat di luar migrasi Kerangka Kerja awal itu sendiri. Selama proses berlangsung, kami juga meningkatkan cakupan pengujian, memperbaiki pengujian yang buruk, dan membersihkan infrastruktur pengujian lama. Kami memperkirakan bahwa menyelesaikan seluruh ruang lingkup tersebut secara manual akan menghabiskan biaya sekitar $6 juta dalam upaya teknis penuh.

  • Kami menemukan beberapa keberhasilan tak terduga di sepanjang prosesnya, termasuk membersihkan Kerangka Kerja pengujian pra-Enzyme yang bahkan lebih tua, yang kami lupakan masih tersembunyi di bagian-bagian codebase.

Postingan ini merupakan bagian dari kolaborasi dan kemitraan berkelanjutan antara Asana dan OpenAI yang mengeksplorasi cara Codex dapat melakukan pekerjaan rekayasa yang lebih besar dan lebih ambisius.