Peran kemampuan developer dalam coding agentik
(martinfowler.com)- Seiring semakin cakapnya asisten coding berbasis agen, respons yang muncul sangat beragam, dan sebagian bahkan mengklaim bahwa "dalam 1 tahun developer tidak akan lagi dibutuhkan"
- Yang lain menyuarakan kekhawatiran tentang kualitas kode yang dihasilkan AI dan cara mempersiapkan developer junior menghadapi lingkungan yang berubah ini
- Selama beberapa bulan terakhir, penulis menggunakan asisten coding berbasis agen seperti Cursor, Windsurf, dan Cline, dan alat-alat ini sangat efektif untuk mengubah codebase yang sudah ada
- Penulis sangat terkesan dengan integrasi IDE-nya, termasuk menjalankan pengujian dan memperbaiki error secara otomatis, mendeteksi dan memperbaiki error lint/kompilasi, pencarian web, hingga fitur pratinjau browser
- Pengalaman kolaborasi antara developer dan AI sangat mengesankan serta membantu penyelesaian masalah dan implementasi fitur dengan cepat
- Namun tetap diperlukan intervensi, koreksi, dan penentuan arah secara terus-menerus dari developer
- Dalam banyak kasus, hasilnya bahkan tidak sampai menjadi commit nyata, dan AI masih kurang mampu menulis kode secara mandiri untuk pekerjaan yang tidak sepele
- Karena itu, keterampilan dan pengalaman developer tetap penting, dan harus terus dilatih ke depannya
Momen-momen ketika developer harus turun tangan langsung
- Alat AI menunjukkan kinerja yang konsisten lemah di area tertentu, dan hal ini berulang kali terkonfirmasi
- Sebagian bisa diredam sebagian dengan prompt tambahan atau aturan kustom, tetapi kontrol penuh tetap tidak mungkin
- LLM sering kali tidak mengikuti instruksi prompt dengan tepat
- Semakin panjang sesi coding, konsistensi hasil makin menurun
- Karena itu, contoh-contoh di bawah adalah isu yang sangat mungkin terjadi terlepas dari prompt atau pengaturan
- Kesalahan AI dibagi ke dalam 3 kategori berdasarkan radius dampaknya
- a. Penurunan kecepatan pengembangan dan waktu menuju commit
- AI justru memperlambat pekerjaan
- Dalam beberapa kasus lebih tidak efisien dibanding coding tanpa bantuan
- b. Menimbulkan friksi pada alur kerja tim
- Menyebabkan benturan atau masalah kolaborasi dalam satu iteration
- c. Menurunkan maintainability kode dalam jangka panjang
- Awalnya tampak tidak bermasalah, tetapi menimbulkan masalah saat perubahan atau ekspansi di masa depan
- a. Penurunan kecepatan pengembangan dan waktu menuju commit
- Semakin besar radius dampaknya, semakin panjang feedback loop yang dibutuhkan tim untuk menyadari dan memperbaiki masalah tersebut
Radius dampak: keterlambatan waktu hingga commit
- Kategori ini terdiri dari kasus-kasus di mana AI lebih mengganggu daripada membantu
- Karena ini adalah bentuk kegagalan yang paling jelas, biasanya tidak menjadi masalah besar
- Dalam kebanyakan kasus, developer dapat menyadari dan menghentikannya sebelum tahap commit
-
Kode yang tidak berjalan
- Kode yang dihasilkan AI pada dasarnya tidak berfungsi
- Developer perlu memperbaikinya sendiri, atau mengakhiri sesi AI dan menyelesaikan masalah secara manual
- Developer berpengalaman dapat dengan cepat menilai letak kesalahannya dan mengambil tindakan
-
Diagnosis masalah yang salah
- AI salah menilai penyebab masalah dan mencoba solusi ke arah yang keliru
- Berdasarkan pengalaman sebelumnya, developer bisa menarik AI kembali ke jalur yang benar
Contoh: error build Docker disalahartikan sebagai masalah pengaturan arsitektur sehingga konfigurasinya diubah
Penyebab sebenarnya adalah penyalinannode_modulesyang dibangun pada arsitektur yang salah
Karena ini masalah yang sering terjadi sebelumnya, penulis dapat cepat mengenali dan membetulkannya
Radius dampak: alur kerja tim dalam satu iteration
- Kategori ini mencakup kasus ketika friksi dalam tim muncul selama periode iteration akibat kurangnya review atau intervensi developer
- Berkat pengalaman di berbagai tim sebelumnya, penulis dapat menyadari dan menyesuaikan masalah seperti ini sebelum commit
- Developer baru pun bisa mendapatkan pelajaran ini lewat trial and error bersama AI
- Namun, jika kecepatan coding meningkat karena AI, tim mungkin tidak mampu menanggung masalah-masalah ini
-
Pekerjaan awal yang berlebihan
- AI cenderung mencoba mengerjakan keseluruhan fitur secara luas sekaligus, alih-alih implementasi bertahap
- Akibatnya, jika pilihan teknis tidak tepat atau kebutuhan fitur dipahami keliru, banyak pekerjaan bisa terbuang sia-sia
Contoh: saat migrasi stack frontend, AI mencoba mengubah seluruh komponen UI sekaligus
Seharusnya penerapan dilakukan bertahap mulai dari satu komponen yang terintegrasi dengan backend
-
Menyelesaikan tanpa analisis akar masalah
- AI mencoba menyelesaikan masalah tanpa menganalisis akar penyebabnya, hanya memperbaiki error yang tampak di permukaan
- Akibatnya, anggota tim lain yang kemudian menangani masalah itu harus menganalisis ulang tanpa konteks
Contoh: saat terjadi error memori pada build Docker, AI hanya menaikkan pengaturan memori alih-alih mencari penyebabnya
-
Memperumit workflow developer
- Cara build/menjalankan yang dihasilkan AI menurunkan pengalaman developer
- Jika langsung di-commit, ini juga berdampak buruk pada workflow anggota tim lain
Contoh: menyediakan perintah terpisah untuk menjalankan frontend dan backend
Contoh: fitur hot reload tidak ada
Contoh: pengaturan build yang rumit membuat developer dan AI sama-sama bingung
Contoh: gagal mendeteksi error Docker lebih awal, lalu mencoba menanganinya di tahap akhir build
-
Kebutuhan yang disalahpahami atau tidak lengkap
- Jika kebutuhan fitur tidak dijelaskan dengan jelas, AI bisa salah paham dan mengimplementasikan fitur ke arah yang keliru
- Idealnya ini diluruskan lewat intervensi awal, tetapi baik pada AI yang otonom maupun developer yang ceroboh, biaya perbaikan lanjutan akan meningkat
- Implementasi yang keliru ini sering baru ditemukan belakangan saat story berjalan, sehingga menimbulkan banyak pekerjaan revisi dan biaya komunikasi
Radius dampak: penurunan maintainability jangka panjang
- Inilah radius dampak yang paling samar dan berbahaya
- Pada awalnya kode berjalan tanpa masalah, tetapi belakangan menjadi sulit diubah dan diperluas
- Masalah seperti ini sering kali baru ditemukan setelah beberapa minggu hingga beberapa bulan
- Khususnya di area ini, lebih dari 20 tahun pengalaman pengembangan penulis paling banyak berperan
-
Kode pengujian yang bertele-tele dan duplikatif
- AI cukup baik dalam membuat pengujian, tetapi masalah berikut sering muncul:
- Membuat fungsi test baru alih-alih mengintegrasikannya ke test yang sudah ada
- Menambahkan terlalu banyak assertion bahkan untuk bagian yang sudah tercakup
- Hal yang bisa disalahpahami developer pemula: lebih banyak test ≠ test yang lebih baik
- Semakin banyak duplikasi, semakin sulit pemeliharaannya, dan saat kode berubah kemungkinan gagalnya banyak test sekaligus meningkat
- Penulis mencoba meredamnya dengan perintah kustom, tetapi hal ini masih sering terjadi
- AI cukup baik dalam membuat pengujian, tetapi masalah berikut sering muncul:
-
Kurangnya reusability
- Kode yang ditulis AI sering kali kurang modular sehingga sulit digunakan ulang
Contoh: tidak mengenali komponen UI yang sudah ada lalu membuat implementasi duplikat
Contoh: memakai inline style secara berlebihan alih-alih CSS class
- Kode yang ditulis AI sering kali kurang modular sehingga sulit digunakan ulang
-
Kode yang terlalu kompleks atau bertele-tele
- AI sering menghasilkan kode lebih banyak dari yang diperlukan, sehingga bagian yang tidak perlu harus dibuang secara manual
- Hal ini meningkatkan biaya pemeliharaan dan menaikkan kemungkinan error saat ada perubahan
Contoh: saat mengubah CSS, banyak style duplikat harus dihapus satu per satu
Contoh: membuat web component yang tidak perlu rumit hanya untuk menampilkan data JSON
Contoh: saat refactoring, AI gagal mengenali rantai dependency injection yang sudah ada,
lalu meneruskan nilai yang sudah di-inject lagi sebagai parameter lain sehingga desain jadi lebih rumitvalue = service_a.get_value(); ServiceB(service_a, value=value)
Kesimpulan: bisakah AI menulis semua kode sebagai pengganti kita?
- Berdasarkan pengalaman sejauh ini, AI yang secara otonom menulis 90% dari seluruh kode dalam 1 tahun ke depan adalah sesuatu yang secara realistis mustahil
- Namun, sebagai alat bantu penulisan kode, ada kemungkinan AI dapat membantu hingga 90% pada tim dan codebase tertentu
- Faktanya, penulis mendapat bantuan AI sekitar 80% pada proyek dengan kompleksitas menengah berukuran 15K LOC
Cara mencegah kesalahan AI
-
Hal yang bisa dilakukan di tingkat developer individu
- Selalu review kode yang dihasilkan AI dengan cermat
- Hampir tidak pernah ada kasus tanpa bagian yang perlu diperbaiki
- Segera hentikan jika sesi AI mulai membingungkan
- Ubah prompt, atau beralih sepenuhnya ke pekerjaan manual (juga disebut "coding buatan tangan")
- Waspadai solusi yang tampak meyakinkan dan selesai seperti mukjizat dalam waktu singkat
- Bisa jadi ada biaya maintainability jangka panjang yang tersembunyi
- Praktikkan pair programming
- 4 mata dan 2 otak memberikan penilaian yang lebih baik
- Selalu review kode yang dihasilkan AI dengan cermat
-
Strategi respons di tingkat tim dan organisasi
- Manfaatkan secara aktif alat pemantauan kualitas kode yang sudah ada
- Contoh: Sonarqube, Codescene
- Saat menggunakan alat AI, duplikasi kode, code smell, dan semacamnya perlu diawasi lebih ketat
- Siapkan pre-commit hook dan code review terintegrasi di IDE
- Perkuat strategi shift-left untuk menangkap masalah sejak awal pengembangan
- Bangun kembali kebiasaan kualitas kode yang baik
- Bagikan contoh masalah yang timbul dari kode AI ("log kesalahan") dalam retrospektif mingguan tim
- Manfaatkan aturan kustom secara aktif
- Sebagian besar alat AI memungkinkan pengaturan set aturan yang dikirim bersama prompt
- Tim dapat mengurangi kesalahan AI dengan memperbaiki ruleset bersama-sama
- Namun, semakin panjang sesi, kemungkinan aturan diabaikan juga meningkat
- Bangun budaya tim yang berlandaskan kepercayaan dan komunikasi
- Adopsi AI adalah perubahan baru, dan perlu disadari bahwa semua orang masih pemula
- Tekanan seperti "karena ada AI, kerjakan lebih cepat" akan meningkatkan risiko kualitas
- Tim yang memiliki rasa aman secara psikologis akan lebih aktif berbagi masalah dan belajar
- Manfaatkan secara aktif alat pemantauan kualitas kode yang sudah ada
4 komentar
Orang yang memakai alat itu, terlepas dari tingkat kemampuannya, tetap saja semuanya adalah developer.... Agak terasa janggal kalau diiklankan seolah-olah ke depannya developer tidak lagi dibutuhkan.
Saya tidak tahu bagaimana nantinya ke depan, tapi untuk saat ini rasanya masih kurang cocok untuk dipakai secara umum... Belakangan saya mencoba Cursor, dan bahkan path import file yang dasar pun tidak bisa dikenali dengan benar. Meski begitu, cukup mengejutkan bahwa ia bisa sampai tingkat tertentu memprediksi apa yang ingin saya buat.
Saat terjadi error memori saat build Docker, alih-alih bertanya sejak awal mengapa begitu banyak memori digunakan, yang dilakukan adalah menaikkan pengaturan memori
-> Ini... karena dalam tak terhitung banyaknya kasus sebelumnya memang selalu dilakukan seperti ini.
-> AI saat ini adalah kita di masa lalu
Komentar Hacker News
Akhir-akhir ini saya memakai Cursor untuk sebagian besar pengembangan. Tulisan ini sangat mirip dengan pengalaman saya
Saya memakai AI seperti ini: sebagai alat bantu menulis di IDE, dan ia menjawab saya seperti rubber duck yang sangat keren dan canggih
Saya benar-benar tidak paham
Contoh: saat terjadi error memori selama Docker build, alih-alih bertanya sejak awal kenapa begitu banyak memori dipakai, ia malah menaikkan pengaturan memori
Skill developer tetap penting — kalau tidak bisa mengemudi, Anda tidak bisa menyetir. Tapi bagaimana dengan energi developer? Sebelum AI, saya hanya bisa coding sekitar 2 jam per hari (waktu menulis kode yang sebenarnya). Namun dengan Claude Code, saya bisa coding dengan mudah selama 5 jam tanpa henti. Rasanya seperti naik sepeda listrik alih-alih sepeda biasa. AI terasa seperti metafora sepeda untuk pikiran dari Steve Jobs — ia tidak menggantikan saya, tetapi sekarang saya bisa melaju jauh lebih cepat dan lebih jauh
Diagram ini sangat relatable — tim kami mencentang semua item yang ada di sini. Bahkan tanpa memakai AI sekalipun! Bayangkan saat kami akhirnya memakainya...
Bagi saya, yang jelas justru ini: memakai AI untuk hal-hal di sekitar
Saya memang harus banyak mengarahkan AI, tetapi saya optimistis bahwa prompt yang lebih baik akan menghasilkan agen yang lebih baik
Saya ingin mengawali dengan mengatakan bahwa alat AI tidak selalu buruk untuk hal-hal yang saya daftarkan
Apakah Martin Fowler sekarang menyewakan ruang di situs webnya?