(Setelah bangun pagi dan melihatnya lagi, ternyata ada kesalahan format pada tulisan sebelumnya, dan karena terlalu panjang saya unggah ulang versi ringkasnya)
Saya sering melihat para pemula ChatGPT melakukan 3 kesalahan umum saat mencoba menyelesaikan ‘masalah kompleks’ bersama ChatGPT
- Berharap ChatGPT akan langsung memberi ‘jawaban yang benar’
- Berharap ChatGPT akan memberi jawaban yang benar ‘sekali jadi’
- Karena harapan ini tidak mudah terpenuhi, mereka kecewa lalu hanya memakai ChatGPT untuk masalah sederhana, memakainya secara pasif saja, atau berhenti memakainya sama sekali
Akibatnya, mereka melewatkan banyak peluang peningkatan produktivitas dengan memanfaatkan AI
Beberapa bulan lalu, ini juga merupakan gambaran diri saya
- Karena kecepatan loading awal aplikasi lambat, saya menganalisis ukuran bundle dan menemukan file JS yang sangat besar. Saya mendapati bahwa sebagian besar dari file 18.500 baris ini sebenarnya bisa dihapus
- Awalnya saya menghapusnya manual sambil memeriksa dengan mata, tetapi sangat membosankan dan saya terus membuat kesalahan
- Lalu saya mulai bekerja dengan ChatGPT. Dalam prosesnya saya sadar bahwa, seperti pemula, saya juga sedang berharap mendapat ‘jawaban yang benar sekaligus’
- Setelah menyadarinya, saya memakai ‘strategi kolaborasi tiga pihak’ dan dengan cepat mengalami kemajuan besar
Perkembangan pekerjaan
Tolong lakukan refactoring untuk saya
- Saya memberikan satu fungsi, menjelaskan cara yang diinginkan, lalu meminta refactoring → gagal. Bahkan tidak bisa dikompilasi
- Bukan memahami struktur kode lalu mengubahnya, tetapi malah menghapus sambil turun baris demi baris
Tolong tulis kode untuk melakukan refactoring
- Saya meminta bukan agar dikerjakan langsung, melainkan agar dibuatkan kode JS untuk refactoring → gagal. Ini juga menghapus sambil turun baris demi baris
- Setelah dipikir-pikir, mungkin ChatGPT belum cukup banyak belajar tentang refactoring skala besar seperti ini
Tolong tulis kode refactoring dengan AST
- Yang saya inginkan bukan menghapus satu per satu per baris, tetapi menghapus per blok. Artinya dibutuhkan pemahaman sintaks kode, jadi saya berpikir AST akan cocok
- Saya memberi ChatGPT peran sebagai engineer yang berpengalaman mengembangkan ESLint, lalu memintanya menulis dengan memanfaatkan AST, dan keluarlah boilerplate berbasis babel yang sangat bagus. Kemajuan besar
- Karena saya tidak punya pengalaman dengan babel, saya belajar bersama ChatGPT sambil menambahkan logika, tetapi akhirnya menemui kesulitan. Menangani logika yang kompleks terasa sulit
Saya sudah mencoba seperti ini dengan AST. Bagian ini tidak berjalan baik, kalau kamu apakah akan mencoba pendekatan bagaimana?
- Saya sadar lagi bahwa saya kembali berusaha mendapatkan jawaban benar sekaligus, lalu mengubah strategi. Ketika saya berhenti berpikir bahwa
traverseharus dilakukan hanya 1 kali, semuanya jadi mengalir lancar - Saya bergerak cepat dengan cara menjalankannya secara sederhana sekali, melihat hasilnya, lalu menumpuk logika sedikit demi sedikit
- Untuk bagian-bagian tertentu yang tidak berjalan baik, saya mengerjakannya sambil bertanya kepada ChatGPT bagaimana mengimplementasikan tujuan spesifik tersebut
- Di bagian akhir, bagian yang sulit dijadikan aturan saya selesaikan dengan mata dan tangan. Pada tahap ini jumlah kodenya sudah jauh lebih sedikit sehingga memungkinkan
Hasil
- Kode 18.500 baris menjadi 1.335 baris, dan ukuran bundle main chunk berkurang sekitar 7,8%
- Karena ukuran file JS dan logika yang dibutuhkan untuk loading awal berkurang, kecepatan loading awal sedikit meningkat
- Saya mendapatkan pengalaman dan kepercayaan diri dari melakukan refactoring kode legacy yang panjang dan kompleks dengan AST
- Saya juga mendapatkan keyakinan bahwa sebagian besar masalah kompleks bisa diselesaikan secara efektif melalui kolaborasi tiga pihak: AI + kode + manusia
Mental model untuk menyelesaikan masalah kompleks secara efektif bersama AI
- Pahami apa yang dikerjakan dengan baik oleh AI, apa yang dikerjakan dengan baik oleh kode, dan apa yang dikerjakan dengan baik oleh manusia.
- Analisis masalah yang ingin diselesaikan, lalu pisahkan area yang cocok untuk AI/kode/manusia.
- Bantu AI agar bisa membuat kode awal dengan baik, jalankan kode itu dalam skala kecil sambil memperbaikinya bersama AI, dan untuk hal-hal yang lebih mudah dikerjakan manusia di tengah proses maupun di akhir, kerjakan langsung sendiri.
2 komentar
Saya membacanya dengan baik.
Tulisan duplikat telah dihapus.