Programmer di Era AI: Pergeseran Peran dari Pembuatan Kode ke Pengendalian Nondeterminisme
(velog.io)Ringkasan
- Seiring AI mengotomatiskan sebagian besar penulisan kode, peran inti developer bergeser dari implementasi langsung ke perancangan, verifikasi, dan kontrol.
- Esensi programmer bukanlah mengetik banyak kode, melainkan mengisi detail dari kebutuhan yang ambigu dan mengabstraksikannya ke bentuk yang dapat digunakan ulang.
- Daripada menginstruksikan AI soal cara implementasi secara rinci, pendekatan yang lebih efektif adalah memberikan tujuan dan konteks lalu mendelegasikan penilaian.
- Pekerjaan AI sebaiknya tidak diproses sekaligus; kualitas akan lebih baik bila output dipisah menjadi spesifikasi, pengujian, implementasi, refactoring, dan verifikasi.
- Karena output AI bersifat nondeterministik, dibutuhkan harness yang deterministik seperti test, compiler, linter, dan verification gate.
- Developer masa depan diperkirakan akan lebih dekat ke perancang sistem dan engineer harness yang menghubungkan agen AI dengan sistem verifikasi, bukan sekadar penulis kode.
Pendahuluan
Identitas developer yang diguncang AI
-
Dengan AI yang dapat menghasilkan ratusan baris kode hanya dari instruksi bahasa alami, standar terhadap kemampuan developer yang sudah ada pun berubah.
-
Dulu, kemampuan menulis kode dengan cepat dari editor kosong dianggap sebagai daya saing utama developer.
-
Kini, ketika pengetahuan dan metode implementasi disediakan oleh AI, muncul pertanyaan seperti berikut.
- Apakah tetap bisa disebut development jika tidak menulis kode secara langsung?
- Jika AI menangani detail implementasi, peran apa yang tersisa bagi developer?
- Apakah pengetahuan computer science tradisional dan sejarah pemrograman masih diperlukan saat ini?
-
Artikel ini menjelaskan persoalan tersebut dengan berfokus pada konsep detail, abstraksi, nondeterminisme, dan harness.
Makna sejarah pemrograman
- Pengetahuan pemrograman masa lalu bukan sekadar daftar teknik, melainkan proses ketika developer saat itu memecahkan masalah dan menciptakan lapisan abstraksi baru.
- Machine code, assembly, structured programming, object-oriented programming, dan framework lahir untuk menyembunyikan kompleksitas lapisan di bawahnya.
- Meski tidak lagi memakai teknologi lama itu secara langsung, memahami sejarahnya membantu melihat bagaimana peran developer berulang kali berubah.
Pembahasan
1. Developer adalah orang yang mengonkretkan detail
-
Perencanaan umumnya hanya menyajikan tujuan produk dan arah besarnya, tetapi tidak merinci seluruh kondisi yang diperlukan untuk implementasi nyata.
-
Misalnya, bahkan fitur sederhana seperti ‘mengubah nickname’ pun memiliki detail seperti berikut.
- apakah string kosong diperbolehkan
- cara menangani karakter spesial dan emoji
- penanganan error jaringan dan keterlambatan respons
- perilaku saat pengguna keluar dari layar ketika proses edit berlangsung
- lokasi dan cara menampilkan pesan error
-
Pekerjaan developer adalah mengubah celah-celah seperti ini menjadi aturan logis dan penanganan pengecualian yang konkret.
-
Karena itu, keahlian developer terletak bukan pada sekadar implementasi fitur, melainkan pada kemampuan mengubah kebutuhan yang ambigu menjadi perilaku sistem yang lengkap.
2. Abstraksi adalah proses menyembunyikan detail yang sudah diselesaikan
-
Untuk mengurangi pekerjaan berulang, developer membungkus masalah yang sudah pernah diselesaikan menjadi function, module, library, framework, dan sebagainya.
-
Inti dari abstraksi adalah sebagai berikut.
- Menyembunyikan perilaku internal yang berulang.
- Mengekspos hanya fungsi yang dibutuhkan dari luar.
- Menentukan batas antara bagian yang boleh berubah dan bagian yang harus tetap.
-
Ketika abstraksi yang kokoh terakumulasi, terbentuklah lapisan baru, dan developer di lapisan atas dapat bekerja tanpa harus mengetahui seluruh implementasi di bawahnya.
-
Lingkungan development saat ini berjalan di atas lapisan abstraksi yang dibangun oleh generasi developer sebelumnya.
3. Kedalaman yang dibutuhkan developer berbeda tergantung posisinya
-
Tidak semua abstraksi sudah selesai.
-
Lapisan yang dapat menyembunyikan implementasi internalnya secara stabil dapat dianggap sebagai ‘abstraksi yang selesai’.
-
Lapisan yang detail internalnya terus muncul dalam bentuk masalah performa atau error termasuk ‘abstraksi yang masih berjalan’.
-
Teknologi yang sama pun statusnya bisa berbeda tergantung peran developer.
- Bagi web developer umum, browser adalah lapisan yang relatif matang.
- Bagi developer browser engine, proses rendering adalah detail yang harus ditangani langsung.
-
Kedalaman yang dibutuhkan developer bukan berarti mengetahui semua teknologi, melainkan cukup untuk memahami kebocoran dan keterbatasan pada lapisan yang menjadi tanggung jawabnya.
4. AI muncul sebagai lapisan abstraksi baru
- AI dengan cepat menjalankan penulisan kode dan implementasi berulang yang sebelumnya harus ditangani langsung oleh developer.
- Karena itu, AI mulai berfungsi bukan hanya sebagai alat produktivitas, tetapi sebagai lapisan baru yang mengabstraksikan proses development itu sendiri.
- Namun, fakta bahwa AI dapat menghasilkan kode tidak berarti interpretasi kebutuhan, desain struktur, verifikasi kualitas, hingga tanggung jawab operasional ikut terselesaikan secara otomatis.
- Justru karena biaya implementasi turun, pentingnya biaya untuk merakit dan memverifikasi kode yang dihasilkan menjadi semakin besar.
5. Instruksi detail dapat membatasi performa AI
-
Penulis mencoba membangun side project UI aksesibilitas hanya dengan AI tanpa mengetik kode secara langsung.
-
Pada awalnya, penulis memberikan metode implementasi yang spesifik kepada AI, tetapi AI menjadi terpaku pada metode itu dan berulang kali menambahkan penanganan pengecualian.
-
Akibatnya, kode menjadi kompleks, berbagai efek samping muncul, dan pendekatan standar yang lebih tepat baru diterapkan belakangan.
-
Kasus ini menunjukkan bahwa metode awal yang diberikan pengguna dapat menjadi anchor yang membatasi penilaian AI.
-
Daripada terlalu rinci mengarahkan solusi dan struktur kode, lebih efektif memberikan hal-hal berikut.
- latar belakang dan tujuan masalah
- konteks sistem saat ini
- hasil yang wajib dipenuhi
- batasan yang tidak boleh diubah
6. Yang perlu didelegasikan bukan instruksi, melainkan tujuan dan konteks
-
Semakin tinggi kemampuan AI, semakin efektif pendekatan delegasi berbasis tujuan dibanding cara yang menentukan prosedur detail secara langsung.
-
Dalam pendekatan delegasi ini, developer tidak lagi menentukan sepenuhnya ‘bagaimana mengimplementasikan’, tetapi menyampaikan dengan jelas ‘mengapa ini dibutuhkan’ dan ‘apa yang harus dicapai’.
-
Namun, jika diberi otonomi penuh, AI bisa lebih fokus pada perubahan kode itu sendiri daripada pada maksud pengguna.
-
Karena itu, perlu ada pembatasan prosedur kerja agar AI terlebih dahulu melakukan tindakan berikut.
- menganalisis maksud permintaan
- menanyakan informasi yang kurang
- menyajikan rencana solusi
- mengeksekusi setelah ada persetujuan pengguna
-
Intinya bukan sekadar memberi larangan, tetapi menentukan dengan jelas output yang diperbolehkan pada tahap saat ini.
7. Satu pekerjaan sebaiknya hanya menetapkan satu output
-
LLM memiliki keterbatasan pada jumlah output dan cakupan penalaran yang bisa ditangani dalam satu respons.
-
Jika penulisan test dan implementasi diperintahkan sekaligus, sumber daya bisa terfokus pada tujuan akhir berupa penyelesaian kode sehingga kualitas test menurun.
-
Penulis memisahkan pekerjaan TDD sebagai berikut.
/red: hanya menulis test yang gagal/green: menulis implementasi minimal yang lolos test/refactor: memperbaiki struktur kode sambil mempertahankan test
-
Jika output pada tiap tahap dibatasi menjadi satu, masalah seperti AI melewati prosedur antara atau menanganinya secara formalitas dapat dikurangi.
-
Ini berarti inti desain prompt bukan menjelaskan perilaku secara panjang lebar, melainkan mendefinisikan hasil yang harus dihasilkan dalam satu pekerjaan.
8. Dokumen Markdown dan skill menjadi kode baru
-
Jika spesifikasi, test, implementasi, verifikasi, dan commit dipisah menjadi skill masing-masing, maka dapat dibangun pipeline seperti berikut.
- penulisan spesifikasi
- pembuatan test yang gagal
- implementasi fitur
- refactoring
- verifikasi
- commit
-
Karena tiap skill memiliki input, output, dan constraint, ia bekerja mirip function.
-
Dokumen Markdown yang mencatat skill dan aturan bukan sekadar manual, tetapi berfungsi sebagai aturan eksekusi yang menentukan perilaku AI.
-
Prinsip desain software yang sudah ada juga dapat diterapkan dalam proses ini.
- single responsibility principle, yaitu memberi hanya satu tanggung jawab pada satu skill
- modularisasi, yaitu memisahkan pengetahuan dan aturan ke file terpisah
- open-closed principle, yaitu memperluas lewat file pengetahuan eksternal tanpa mengubah skill inti
-
Platform-nya saja yang berpindah dari IDE ke dokumen Markdown; tindakan memecah dan menghubungkan pekerjaan tetap termasuk pemrograman.
9. Risiko inti AI coding adalah nondeterminisme
-
Program tradisional pada umumnya mengembalikan output yang sama untuk input yang sama.
-
AI dapat menghasilkan kode dan penilaian yang berbeda meski menerima permintaan yang sama.
-
Jika AI melakukan refactoring skala besar, meskipun fitur tetap berjalan, masalah berikut masih tersisa.
- meninjau akurasi kode yang berubah
- menilai apakah kode yang dihapus memang tidak diperlukan
- kemungkinan munculnya efek samping baru
- tanggung jawab maintenance dan deployment
-
AI memang meningkatkan kecepatan pembuatan kode, tetapi tidak otomatis menyediakan stabilitas hasil maupun tanggung jawab atasnya.
-
Di lingkungan production, yang lebih penting daripada kemampuan menghasilkan adalah kemampuan mengendalikan cakupan perubahan dan memverifikasi hasilnya.
10. AI kuat pada masalah dengan langit-langit rendah
-
Masalah yang dapat ditangani AI dengan mudah umumnya adalah ‘masalah yang terdefinisi dengan baik’, di mana kebutuhan dan cara penyelesaiannya sudah cukup dikenal.
-
Masalah seperti ini dapat diselesaikan dengan mengombinasikan elemen abstraksi yang sudah matang seperti library, framework, dan pattern yang sudah ada.
-
AI unggul dalam mengombinasikan kode dan pola pemecahan masalah yang telah terakumulasi oleh manusia secara probabilistik.
-
Sebaliknya, masalah dengan tingkat kesulitan tinggi seperti berikut masih memerlukan penilaian manusia tambahan.
- masalah dengan kebutuhan yang belum lengkap
- aturan domain yang kompleks
- interaksi dalam sistem berskala besar
- situasi pengecualian di lingkungan operasional
- persoalan yang menggabungkan keamanan, performa, regulasi, dan tanggung jawab
-
Nilai dari implementasi sederhana memang tidak hilang, tetapi implementasi itu sendiri kemungkinan akan makin bergeser menjadi wilayah yang bahkan dapat dikerjakan pengguna umum.
11. Detail yang harus ditangani developer berpindah ke kontrol AI
-
Dulu developer menulis kode yang deterministik untuk melindungi sistem dari input pengguna dan lingkungan operasional yang sulit diprediksi.
-
Di era AI, kita harus membuat produk yang deterministik dengan memanfaatkan AI yang nondeterministik.
-
Detail yang perlu ditangani developer berpindah ke area berikut.
- menetapkan cakupan kerja agar AI tidak terpaku pada tujuan yang salah
- mendefinisikan format input dan output per tahap
- mengelola konteks dan dokumen pengetahuan
- membatasi cakupan perubahan berskala besar
- merancang prosedur pemulihan saat error terjadi
- memverifikasi kualitas dan keamanan hasil
-
Semakin otomatis pekerjaan implementasi sederhana, semakin besar porsi pekerjaan developer yang berkaitan dengan penanganan pengecualian dan kontrol.
12. Hasil AI harus diverifikasi dengan alat yang deterministik
-
Mengandalkan AI lain untuk memverifikasi hasil yang dibuat AI tidak cukup untuk menjamin reliabilitas.
-
Untuk menilai apakah output sistem benar, dibutuhkan standar jawaban yang jelas, yaitu oracle.
-
Jika AI yang nondeterministik juga membuat standar verifikasi secara sembarang, ada kemungkinan hasil yang benar justru diubah secara salah atau standar verifikasinya terdistorsi.
-
Karena itu, standar verifikasi harus disusun sebisa mungkin dengan alat yang deterministik.
- compiler dan type checker
- automated test
- linter dan static analysis
- schema validation
- standar performa dan keamanan
- prosedur persetujuan dan pembatasan cakupan perubahan
-
Penilaian AI bisa dipakai sebagai sarana bantu, tetapi keputusan lolos atau tidak pada akhirnya harus dihubungkan ke standar yang dapat direproduksi.
13. Harness menjadi infrastruktur inti development berbasis AI
-
Harness adalah perangkat verifikasi yang ditempatkan per tahap agar AI tidak menumpuk error atau keluar dari cakupan selama proses kerja.
-
Komponen utamanya adalah sebagai berikut.
- pipeline yang memisahkan tahap pekerjaan
- format input-output per tahap
- automated test dan static analysis
- verification gate yang menghentikan proses saat gagal
- pembatasan file dan cakupan yang boleh diubah
- prosedur persetujuan dan review oleh manusia
-
Harness mencegah error kecil di satu tahap membesar pada tahap berikutnya.
-
Kemampuan memanfaatkan AI nantinya mungkin dinilai bukan dari sekadar kemampuan menulis prompt yang bagus, tetapi dari kemampuan mengikat output yang tak terduga ke dalam sistem yang stabil.
Kesimpulan
Developer tidak hilang, tetapi perannya bergeser
-
AI dengan cepat mengotomatiskan penulisan kode sederhana dan implementasi berulang.
-
Namun, untuk menghasilkan hasil setingkat produk, peran berikut tetap dibutuhkan.
- mendefinisikan masalah dan tujuan
- merancang struktur sistem
- memisahkan tahap kerja dan output
- mengoordinasikan alur antar agen AI
- membangun standar verifikasi dan harness
- memegang tanggung jawab akhir atas hasil operasional
-
Pekerjaan developer kemungkinan besar akan berubah ke arah berkurangnya porsi mengetik kode secara langsung, dan meningkatnya peran dalam mengorganisasi serta mengendalikan kode yang dihasilkan AI menjadi sebuah sistem.
Menulis prompt adalah bentuk baru dari pemrograman
- Proses membuat instruksi yang digunakan berulang menjadi skill dan aturan lalu menghubungkannya sebagai pipeline mirip dengan merancang function dan module.
- Dokumen Markdown dapat berfungsi sebagai lapisan kode baru yang mendefinisikan konteks, perilaku, dan format output AI.
- Developer perlu mendokumentasikan pengalaman serta standar penilaian implisitnya, lalu mengabstraksikannya ke bentuk yang dapat digunakan ulang oleh AI.
- Ini bukan hanya mengabstraksikan sistem yang ada, tetapi juga mengabstraksikan cara kerja dan proses penilaian developer itu sendiri.
Kompetensi inti developer masa depan
- kemampuan mendefinisikan masalah secara akurat
- kemampuan mendelegasikan pekerjaan dengan berpusat pada tujuan dan konteks
- kemampuan memecah pekerjaan kompleks menjadi output-output kecil
- kemampuan menyusun skill dan agen sebagai pipeline
- kemampuan merancang standar verifikasi yang deterministik
- kemampuan membangun harness untuk mengendalikan risiko hasil yang nondeterministik
- kedalaman teknis untuk memahami hasil yang dihasilkan AI dan memikul tanggung jawab akhir
Evaluasi keseluruhan
- AI bukan menghilangkan esensi development, melainkan mengubah lapisan abstraksi yang harus ditangani developer.
- Jika developer sebelumnya menangani detail kode dan sistem, developer masa depan harus menangani detail yang muncul dari perilaku dan output AI.
- Biaya menghasilkan kode akan menurun, tetapi pentingnya verifikasi, perakitan, operasi, dan kontrol kemungkinan akan semakin besar.
- Esensi programmer bukanlah aktivitas mengetik itu sendiri, melainkan kemampuan menemukan detail, mengabstraksikannya, dan menyusunnya menjadi sistem yang dapat dipercaya.
Belum ada komentar.