Bagaimana Coding Berbantuan AI Akan Mengubah Rekayasa Perangkat Lunak: Kebenaran yang Tidak Nyaman
(newsletter.pragmaticengineer.com)- GenAI (LLM) meningkatkan produktivitas developer lewat kemampuan menghasilkan dan membantu penulisan kode secara otomatis
- Sejak dulu sudah ada berbagai alat “tanpa perlu coding”, tetapi pada akhirnya proses rekayasa perangkat lunak yang nyata tetap memiliki kompleksitasnya sendiri
- Setelah peluncuran ChatGPT, laju perkembangan alat AI terlihat sangat cepat, tetapi alih-alih mengubah seluruh proses secara revolusioner, perannya lebih banyak memangkas sebagian tahap dalam masalah yang diberikan secara signifikan
Cara penggunaan nyata oleh developer terbagi menjadi dua jalur
- Bootstrappers
- Menggunakan alat seperti Bolt, v0, dan Screenshot-to-code untuk mewujudkan proyek baru atau MVP dengan cepat
- Dari desain (seperti Figma) atau bahkan konsep kasar, AI menghasilkan codebase awal yang lengkap
- Membuat prototipe yang berfungsi dalam hitungan hari hingga beberapa jam
- Meski belum sempurna untuk level production, pendekatan ini kuat untuk validasi ide
- Menekankan validasi cepat dan iterasi berulang
- Iterators
- Memakai Cursor, Cline, Copilot, WindSurf, dan lainnya dalam alur pengembangan sehari-hari
- Menggunakan AI untuk autocomplete kode, refactoring kompleks, serta pembuatan test dan dokumentasi
- Menyerahkan pengujian kompleks, dokumentasi, dan refactoring kepada AI, tetapi terus-menerus memeriksa hasilnya
- Memanfaatkannya layaknya “pair programmer” yang membantu menyelesaikan masalah
- Developer berulang kali memilih, mengubah, dan melengkapi saran AI hingga berkembang menjadi kode yang optimal
Masalah 70%: sulitnya “30% terakhir” - paradoks kurva belajar AI
- AI dapat dengan cepat membuat sekitar 70% kode, tetapi 30% terakhir justru menjadi hambatan besar
- Muncul lingkaran setan ketika memperbaiki bug kecil malah merusak bagian lain
- Terutama bagi non-teknis atau junior, menerima seluruh kode yang disarankan AI sering kali memicu rangkaian masalah
- Mereka kesulitan memahami mengapa perubahan yang disarankan AI menimbulkan masalah
- Developer senior yang berpengalaman dapat lebih cepat menalar penyebab bug, merestrukturisasi kode, serta melengkapi aspek keamanan dan performa yang terlewat oleh AI
- Meski aktif memanfaatkan AI, mereka terus melakukan review dan refactoring untuk menjadikannya “kode yang dapat dipelihara”
- Jika junior/non-developer begitu saja menerima kode buatan AI, ada risiko munculnya “house-of-cards code” yang mudah runtuh di lingkungan operasional nyata
- Paradoks pengetahuan
- Senior dapat dengan cepat mengimplementasikan masalah yang memang sudah mereka pahami bersama AI
- Junior perlu belajar lewat AI, tetapi jika dasar pengetahuannya kurang, mereka akan sangat kesulitan dalam proses debugging dan verifikasi
Pola penggunaan yang efektif
- Penyempurnaan setelah draft AI
- Setelah AI membuat implementasi awal, manusia meninjaunya, melakukan refactoring, dan mengujinya secara langsung
- Tambahkan error handling dan exception case secara manual, lalu perkuat proses test otomatis dan review untuk meningkatkan keandalan
- Perkuat modularitas, error handling, definisi tipe, dan desain arsitektur agar tetap mudah dipelihara
- Menjaga percakapan per unit pekerjaan
- Daripada memberikan konteks besar sekaligus, gunakan prompt terpisah untuk tiap masalah kecil agar mendapat jawaban yang lebih fokus
- Sering meninjau dan melakukan commit atas perubahan, lalu memasukkan feedback dalam siklus yang pendek
- Pendekatan “percaya, tapi verifikasi”
- Biarkan AI membuat draft, tetapi logika penting, error handling, dan isu keamanan tetap ditangani langsung oleh manusia
- Selalu tulis test case dan periksa performa, keamanan, serta kelayakan struktural secara teliti
Implikasi bagi developer
- Mulai dari kecil
- Coba gunakan AI terlebih dahulu pada pekerjaan kecil yang terdefinisi dengan baik dan masalah dengan cakupan yang jelas, lalu telaah kode yang dihasilkan dengan cermat
- Sebelum beralih ke fitur yang lebih besar, pastikan test dan dokumentasi dikelola dengan baik. Setelah itu, perluas cakupan secara bertahap
- Pertahankan modularisasi
- Pisahkan codebase dengan tepat agar kode yang dihasilkan AI tidak bercampur secara struktural
- Pecah file dan fungsi menjadi unit-unit kecil, serta definisikan antarmuka dan aliran dependensi dengan jelas
- Percayai pengalaman
- Gunakan AI sebagai asisten, tetapi jadikan pengalaman sendiri sebagai dasar keputusan akhir
- Sebaiknya curigai kode atau desain yang meragukan, dan tetap berpegang pada standar engineering
Kebangkitan rekayasa perangkat lunak agentic
- Jika sebelumnya alat AI hanya berada di level merespons perintah untuk menghasilkan kode, ke depan ini akan berkembang menuju konsep agentic
- AI agentic dapat merencanakan, mengeksekusi, dan memverifikasi tujuannya sendiri, sehingga bekerja lebih otonom
- Claude (Anthropic), Cline, dan lainnya sudah melampaui sekadar autocomplete, misalnya dengan otomatis membuka browser dan menjalankan test
- Proses debugging juga akan berubah
- Agen dapat sendiri mencari potensi masalah, menjalankan kumpulan test, memeriksa status UI, lalu mengusulkan perbaikan
- Alat masa depan tidak hanya menangani kode
- Mereka dapat memahami dan mengintegrasikan berbagai kanal input seperti screenshot UI, diagram, dan percakapan suara
- Dalam arus ini, tugas developer adalah
- Membiarkan AI bekerja secara kreatif, tetapi tetap menjaganya agar menerima panduan manusia dan beroperasi dalam arsitektur yang sehat
- Membangun feedback loop yang kuat antara manusia dan AI
- Diperkirakan akan muncul model kolaborasi di mana manusia menetapkan kerangka besar dan tujuan, sementara agen menangani pekerjaan detail
- Seperti ungkapan “bahasa pemrograman yang paling penting adalah bahasa Inggris”, kemampuan mengekspresikan kebutuhan dengan bahasa alami yang jelas dan akurat akan menjadi semakin penting
Apakah craftsmanship perangkat lunak akan kembali?
- Berkat AI, prototipe dan demo dapat dibuat dengan cepat
- Namun, ketika pengguna nyata mulai memakai perangkat lunak di beragam lingkungan dan edge case, masalah pun muncul
- Pesan error yang tidak bisa dipahami pengguna
- Lingkungan khusus (edge case) yang memicu crash
- Desain yang sama sekali tidak mempertimbangkan aksesibilitas (Accessibility)
- Isu performa pada perangkat yang lambat
- Detail UI/UX dan sejenisnya menentukan kualitas
- Dari sudut pandang konsumen, untuk menjadi produk yang benar-benar polished, dibutuhkan ketelitian dan perhatian manusiawi
- Jika AI mengurangi pekerjaan berulang, developer bisa lebih fokus pada penyempurnaan detail tersebut
- Mereka dapat mencurahkan lebih banyak waktu pada area yang manusiawi sekaligus profesional, seperti pengalaman pengguna, edge case, dan error handling yang bermakna
Pemikiran tambahan
- Proses rekayasa perangkat lunak mencakup banyak area seperti perencanaan, desain, implementasi, verifikasi, monitoring, dan maintenance, sedangkan saat ini AI terutama sangat mengefisienkan area “penulisan kode”
- Di masa lalu pun ada upaya seperti COBOL, Visual Basic, dan platform no-code untuk membuat “non-developer pun mudah membuat software”, tetapi ketika kompleksitas membesar, developer berpengalaman tetap dibutuhkan
- Semakin alat LLM meningkatkan volume kode secara eksplosif, semakin besar kemungkinan proyek kompleks justru membutuhkan lebih banyak engineer senior
- Developer berpengalaman yang mampu memanfaatkan AI dapat semakin meningkatkan nilainya
- Pada akhirnya, alat AI tampaknya akan berkembang bukan untuk sepenuhnya menggantikan developer, melainkan untuk membuat developer yang memiliki insight dan pengalaman menjadi jauh lebih kuat
Pemikiran tambahan (termasuk komentar Gergely)
-
Dalam rekayasa perangkat lunak, porsi coding itu sendiri sejak dulu tidak terlalu besar
-
Dulu Fred Brooks secara kasar mengelompokkan waktu kerja perangkat lunak menjadi
- ⅓ perencanaan
- ⅙ coding
- ¼ test komponen dan sistem
- ¼ system test (semua komponen secara manual)
-
Dari sudut pandang saat ini, waktu untuk coding (termasuk test) memang bertambah, tetapi perencanaan, code review, monitoring, dan rollout tetap menyumbang porsi penting
- 20% perencanaan
- 40% coding (kode + test)
- 20% code review (kode orang lain)
- 20% kesiapan production + rollout + perbaikan kecil selama periode ini + monitoring + alert
-
Proses membuat software dengan baik
- 1. What: memutuskan apa yang akan dibuat
- Mencakup brainstorming, desain, user testing, kolaborasi dengan product manager dan pemangku kepentingan bisnis, dan sebagainya
- Dalam startup, tahap ini bisa sangat singkat (“buat dulu lalu lihat responsnya”)
- Di perusahaan yang sudah mapan, memutuskan apa yang akan dibuat bisa memakan waktu lebih lama agar pelanggan yang ada tidak kebingungan
- 2. How: merencanakan cara membuatnya
- Mendesain secara konkret bagaimana produk/fitur/layanan akan diimplementasikan
- Memikirkan dampak arsitektur, dependensi, strategi test, dan sebagainya
- Startup mungkin melewati proses ini dan langsung mengeksekusi, tetapi dalam organisasi besar, mengabaikan desain awal bisa memicu masalah lebih besar di kemudian hari
- Sebagian besar tim menjalani tingkat perencanaan tertentu dengan memanfaatkan design doc, RFC, ADR, dan sebagainya
- 3. Build: benar-benar mengimplementasikan fitur
- Menulis fitur atau produk yang diinginkan dalam bentuk kode dan memastikan ia berjalan dengan benar
- 4. Verify: verifikasi
- Sebelum deploy ke production, periksa dengan teliti apakah sistem berjalan sesuai harapan
- Terutama untuk layanan finansial, di mana malfungsi dapat menimbulkan konsekuensi fatal, proses QA dilakukan dengan ketat
- 5. Ship it: rilis
- Merge perubahan dan merilisnya ke pelanggan
- Cara deploy ke production pun beragam
- 6. Monitoring and oncall: monitoring dan oncall
- Jika terjadi masalah pada produk, segera mendeteksi dan menyelesaikannya
- Langkah pasca-insiden juga dilakukan agar gangguan yang sama tidak terulang
- 7. Maintain: maintenance
- Mengumpulkan keluhan dan feedback pengguna, lalu memutuskan bug mana yang diperbaiki dan peningkatan fitur mana yang diprioritaskan
- Ini juga mencakup proses menyaring feedback yang boleh diabaikan
- 8. Migrate: migrasi
- Saat produk berubah besar atau tech stack berganti, migrasi skala besar mungkin diperlukan
- Alat AI saat ini sangat membantu pada tahap “Build”, tetapi kita juga perlu memikirkan seberapa bergunanya ia pada 7 bagian lain yang disebutkan di atas
- 1. What: memutuskan apa yang akan dibuat
-
Sejak tahun 1960-an, impian “non-developer bisa membuat software tanpa developer” terus berlanjut
- COBOL, Visual Basic, dan no-code adalah contohnya
- Website sederhana memang bisa dibuat tanpa coding sama sekali, tetapi untuk produk kompleks, pekerjaan engineering tetap diperlukan
-
Semakin tinggi daya ekspresi, semakin besar pula kompleksitas karena kita harus menginstruksikan AI secara rinci tentang “bagaimana sistem harus bekerja”
-
Semakin banyak kode yang dibuat AI, semakin besar kemungkinan kebutuhan akan engineer profesional yang mampu memelihara, mengelola arsitektur, dan mengendalikannya justru meningkat
-
Developer senior yang belajar bekerja dengan LLM saat ini akan semakin produktif dan dapat memberi nilai lebih besar bagi perusahaan
AI agent: janji besar, tetapi pada 2025 juga masih merupakan 'wilayah yang belum diketahui'
- Dua tahun setelah kemunculan LLM, banyak developer telah mempelajari cara memanfaatkan LLM untuk coding dan rekayasa perangkat lunak
- LLM sangat membantu dalam pekerjaan seperti pembuatan prototipe, berpindah ke bahasa yang belum familiar, memverifikasi akurasi hasil, dan menangkap jawaban yang salah (halusinasi)
- Namun AI agent masih berada di tahap awal
- Saat ini agent yang umum tersedia praktis baru sebatas Devin, dengan biaya tinggi $500 per bulan dan penilaian yang beragam
- Dengan derasnya pendanaan venture, diperkirakan akan muncul lebih banyak alat AI coding agent
- Harganya juga kemungkinan akan turun secara bertahap
- GitHub Copilot tampaknya akan menyediakan Copilot Workspace berbasis agent untuk publik pada 2025
- /dev/agents yang didirikan oleh mantan CTO Stripe juga dijadwalkan meluncur
- AI agent mengejar peningkatan akurasi dengan menerima respons yang lebih lambat (proses “berpikir”) dan biaya yang lebih tinggi
- Seberapa besar pendekatan ini benar-benar meningkatkan akurasi, dan pada kasus engineering seperti apa ia membawa lonjakan produktivitas besar, masih belum diketahui
Kemungkinan meningkatnya permintaan terhadap software engineer berpengalaman
- Software engineer berpengalaman (senior ke atas) bisa jadi akan lebih dibutuhkan daripada sekarang
- Mereka dapat menangani alat AI dengan lebih efektif, mengetahui seperti apa “hasil yang unggul”, dan bisa “memberi instruksi” dengan tepat
- Saat mendeteksi kode yang dihasilkan secara keliru, mereka dapat menilai kapan harus menghentikan proses generasi dan langsung memperbaiki source code sendiri
- Dengan bantuan alat AI, jauh lebih banyak kode akan ditulis, dan makin banyak individu maupun perusahaan akan membuat solusi mereka sendiri
- Tetapi semakin besar kompleksitasnya, semakin dibutuhkan engineer berpengalaman yang mampu mengendalikannya
- Perusahaan teknologi yang sudah ada pun kemungkinan akan membutuhkan orang untuk menangani kompleksitas yang meningkat akibat AI
- Jika software engineer mengembangkan kemampuan untuk bekerja bersama AI, mereka dapat menjadi engineer yang lebih produktif dan lebih bernilai
- Karena dibutuhkan waktu untuk benar-benar “menjinakkan” alat-alat ini, penting untuk aktif bereksperimen dan belajar di tengah lanskap alat yang berubah cepat
11 komentar
Ini tulisan dengan isi yang sangat bagus.
Saya sangat setuju dengan paragraf terakhir, “kemungkinan meningkatnya permintaan terhadap software engineer yang terampil”. Maksudnya, kita menulis dengan baik sejauh yang kita pahami, bukan? ^^
Seperti Expo 52, di area yang baru-baru ini mengalami perubahan besar, Claude yang pintar pun ternyata tidak banyak membantu.
Ia terus menyarankan kode lama yang sudah usang atau hilang, jadi malah terasa mengganggu.
Pada akhirnya, sepertinya AI memang baru bisa dimanfaatkan dengan baik jika "mata untuk menilai"-nya sudah terlatih.
Sedikit di luar topik, tetapi setahu saya /dev/agents bukan agen coding. Memang belum dirilis, tetapi mereka menyebut diri sebagai "OS untuk agen AI".
Secara pribadi saya berpikir—dan bertaruh—bahwa di masa depan (atau, tergantung sudut pandang, dalam jangka menengah), peran sebagai coder akan menyusut dalam peran semua engineer, sementara peran TPM akan membesar.
Karena Cursor menulis kode dengan lebih baik, pekerjaan itu akan didelegasikan kepadanya, dan manusia kemungkinan besar akan mengerjakan sebagian besar tugas di lapisan abstraksi yang lebih tinggi di atasnya.
Terima kasih sudah berbagi. Saya juga baru-baru ini menulis satu artikel terkait, dan ada beberapa kemiripan. https://www.stdy.blog/can-junior-beat-coding-agent/
Ringkasan: masa depan para developer akibat AI (versi optimistis)
?? : sekarang pengembang sudah tidak diperlukan lagi (versi perusahaan ecek-ecek)
Ya ampun wkwkwkwk
1+ wkwkwk
wkwk nilai 100