Kita sudah tahu bahwa ChatGPT memiliki keterampilan wawancara coding untuk "mendapatkan pekerjaan" di perusahaan teknologi ternama. Namun, wawancara kerja terkenal sebagai “prediktor buruk” terhadap kinerja di tempat kerja. Jadi, bagaimana kinerja ChatGPT dalam menjalankan tugas sehari-hari sebagai pekerja teknologi? Apakah profesi rekayasa perangkat lunak berada dalam ancaman nyata?

Sebagai pengembang aplikasi seluler, saya ingin memahami kemampuan ChatGPT dalam merancang dan memprogram aplikasi berskala besar. Bisakah ini menyatukan keseluruhan proyek dan mengubah pengembangan aplikasi seluler menjadi pengalaman “pilih petualangan Anda sendiri” yang interaktif? Bisakah ChatGPT mendemokratisasi pengembangan aplikasi — menempatkan keterampilan berharga ini di tangan rata-rata orang awam yang memiliki ide orisinal?

ChatGPT Mengkodekan Aplikasi

Untuk mengevaluasi keterampilan pengembangan aplikasi ChatGPT, saya memutuskan untuk memandunya melalui pengembangan aplikasi iOS “klien Reddit” berfitur lengkap. RedditGPT harus memiliki kemampuan untuk memuat daftar postingan dari subreddit yang ditentukan pengguna bersama dengan “tampilan detail postingan” lengkap dengan komentar dan banyak lagi. Sepanjang tantangan ini, saya mengasumsikan pengalaman pengkodean yang minimal dan menghindari menulis satu baris kode pun — setiap cuplikan kode yang menjalankan aplikasi harus ditulis seluruhnya oleh ChatGPT.

Membuat ChatGPT berada di jalur awal yang benar ternyata merupakan aspek yang paling rumit dan memakan waktu dalam latihan pemrograman. Setelah puluhan kali pengulangan, saya akhirnya dapat menampilkan daftar postingan Reddit sederhana (ditampilkan di bawah) dengan perintah “buat aplikasi SwiftUI yang menampilkan daftar postingan teratas dari reddit.com” diikuti dengan lima perintah koreksi kesalahan berikutnya . Melalui eksperimen selama berjam-jam, saya memahami keunikan ChatGPT dan mengembangkan taktik untuk menjaga percakapan tetap pada jalurnya. Misalnya, menjaga kode tetap abstrak, termodulasi, dan mematuhi pola desain aplikasi standar industri (dalam hal ini MVVM) memungkinkan ChatGPT untuk fokus pada bagian fungsionalitas yang lebih sempit — lebih mirip dengan spesialisasi chatbot dalam pertanyaan wawancara pengkodean.

Sebagai pengembang aplikasi iOS berpengalaman, saya merasa prosesnya sangat menyiksa. Namun, setelah ratusan permintaan tersebar di lusinan percakapan, saya akhirnya menggunakan ChatGPT untuk membangun aplikasi iOS yang layak dan berfitur lengkap! Berikut adalah "percakapan lengkap saya" dengan bot obrolan AI generatif bersama dengan "basis kode proyek akhir".

Yang mengesankan, ChatGPT berhasil membangun aplikasi iOS yang kompleks, interaktif, dan mendukung web dengan 500+ baris kode fungsional. Ia bahkan menyarankan struktur file yang masuk akal berdasarkan kode yang ditulisnya. Meskipun sasaran utama saya adalah mencapai 100 perintah dalam satu obrolan berkelanjutan, perjalanan saya tiba-tiba terhenti setelah 80 perintah ketika jawabannya menjadi tidak koheren meskipun berulang kali mundur dan berulang. Namun demikian, menurut saya kemampuan ChatGPT yang sangat menjanjikan terlihat jelas dalam video di atas.

Poin Penting

Bergulat dengan ChatGPT selama lebih dari 20 jam selama tantangan ini, saya terus-menerus kagum pada betapa mampunya model bahasa besar (LLM) mengingat tidak adanya perancah formal yang diterapkan di sekitar tugas terbuka untuk menulis aplikasi iOS klien Reddit berfitur lengkap. Berdasarkan pengalaman ini, berikut adalah tiga kesimpulan saya saat kami berupaya mengoptimalkan penggunaan AI generatif secara kolektif.

1: Konteks

Memberikan konteks saat ChatGPT melakukan iterasi pada basis kode kompleks seperti aplikasi RedditGPT sangatlah penting. Meskipun ChatGPT memiliki tampilan belakang yang mengesankan setidaknya 1.000 kata, penting untuk menyertakan klarifikasi prosa dan cuplikan status basis kode saat ini secara rutin. Tanpa ini, ChatGPT sering kali menyarankan kode yang bertentangan dengan proyek lainnya dan gagal dikompilasi.

Rekayasa cepat berupaya menyelaraskan tujuan LLM dengan tujuan pengguna dengan melampirkan konteks lengkap, serangkaian asumsi, dan petunjuk mengenai hasil yang diinginkan dalam perintah. Saya suka menganggap komponen konteks yang disediakan ini sebagai modul masukan. Keduanya merupakan 1) masukan tambahan dan 2) modifikasi pada masukan pengguna yang mengoptimalkan penyelarasan sasaran. Misalnya, satu modul masukan yang berguna untuk tantangan ini adalah daftar kelas yang tersedia dalam kode yang ada. Faktanya, ChatGPT sudah melakukan banyak pekerjaan berat untuk Anda sebagaimana dibuktikan dengan eksplorasi dalam injeksi cepat.

2: Halusinasi

Kecenderungan ChatGPT untuk “berhalusinasi” realitas yang meyakinkan namun salah telah “didokumentasikan dengan baik”. Selama latihan ini, saya berulang kali mengamati bahwa ChatGPT merujuk pada simbol yang tidak ada, pustaka pihak ketiga yang tidak diimpor, atau kode ganjil yang diperoleh langsung dari tutorial online.

Oleh karena itu, saya mendapati diri saya mengembangkan rutinitas di mana saya akan memasukkan kode baru, mencoba mengkompilasi aplikasi yang diperbarui, dan 1) meminta ChatGPT dengan kesalahan apa pun yang muncul, atau 2) membuat cadangan beberapa perintah setelah ChatGPT sepertinya telah menggali dirinya ke dalam lubang yang tidak dapat melarikan diri. Secara umum, validasi dan pasca-pemrosesan keluaran LLM dapat dianggap sebagai modul keluaran. Seperti dijelaskan di atas, saya berperan sebagai validator keluaran manual tetapi jelas terlihat bagaimana proses ini dapat diotomatisasi. Misalnya, salah satu modul keluaran ChatGPT adalah filter moderasi konten yang mencegahnya menghasilkan keluaran yang kontroversial atau tidak menyenangkan.

3: Umum

Terlepas dari kekurangan ChatGPT yang mencolok, tingkat kemajuan dalam kemampuan dan skala LLM selama beberapa tahun terakhir sangatlah mencengangkan. Melihat percakapan lengkap saya dengan ChatGPT, ia mampu melakukan segalanya mulai dari menghasilkan kode dari awal hingga men-debug kesalahan kompiler hingga menyarankan dan menerapkan peningkatan tingkat tinggi hingga menyarankan struktur file agar mudah dirawat.

Meskipun ChatGPT bersifat umum, hal ini mengorbankan presisi dan kinerja dalam kasus penggunaan yang sempit dan tepat seperti pengembangan aplikasi. Aplikasi yang dibangun di atas LLM dapat mengatasi hal ini dengan penyempurnaan — melatih model dengan kumpulan data khusus domain tambahan untuk meningkatkan kualitas, kecepatan, dan konsistensi hasil. Pemangkasan pasca-pelatihan adalah "topik penelitian" terbaru lainnya yang menjanjikan potensi pengurangan ukuran model sebesar 90%+ dan pengurangan biaya pelatihan.

Kesimpulan

Jadi, apakah ChatGPT akan menggantikan insinyur perangkat lunak dalam beberapa tahun ke depan? Hampir pasti tidak. Namun, LLM akan terus memperluas kemampuan teknik yang lebih besar. Untuk saat ini, model-model ini lebih baik digunakan sebagai alat atau asisten (mis. Github Copilot), menyerahkan pemecahan masalah penting tingkat tinggi kepada teknisi. Sama seperti kalkulator yang merupakan alat yang sangat diperlukan bagi ahli matematika, LLM akan bertindak sebagai pengganda kekuatan bagi insinyur perangkat lunak. Hubungan simbiosis antara LLM dan insinyur akan menjadi semakin penting seiring dengan berkembangnya cakupan dan kompleksitas perangkat lunak.

AI Generatif adalah inovasi disruptif yang berpotensi mengubah seluruh industri di tahun-tahun mendatang. Terdapat peluang yang hampir tak terbatas untuk rangkaian modul masukan, modul keluaran, dan model yang telah disesuaikan dan dipangkas untuk diterapkan pada aplikasi tertentu. vertikal. Inilah yang akan mengubah LLM dari sekedar jalan pintas menjadi seperangkat alat baru yang revolusioner. Dengan sendirinya, LLM tidak menghasilkan pengembang aplikasi yang hebat, tetapi mereka dapat dan akan diubah menjadi pengembang aplikasi yang hebat.

Eksperimen di atas menawarkan gambaran sekilas yang menggiurkan tentang masa depan di mana kekuatan kreatif yang lengkap dapat diakses oleh semua orang. Hambatan masuk bagi ekonomi kreator mulai berkurang karena konsumen konten yang sebelumnya pasif akan menjadi kontributor aktif. Alat-alat baru ini akan mempunyai dampak yang besar terhadap perekonomian seperti halnya menjamurnya komputer pribadi.

Salah satu hal yang benar-benar membedakan kami dari primata adalah kami pembuat alat. Saya membaca sebuah penelitian yang mengukur efisiensi penggerak berbagai spesies di planet ini. Condor menggunakan energi paling sedikit untuk bergerak sejauh satu kilometer. Dan, manusia datang dengan penampilan yang agak tidak mengesankan, sekitar sepertiga dari daftar tersebut. Itu bukanlah pertunjukan yang terlalu membanggakan untuk mahkota ciptaan. Jadi, itu tidak terlihat bagus. Namun, kemudian seseorang di Scientific American memiliki ide untuk menguji efisiensi penggerak seseorang yang mengendarai sepeda. Dan, seorang lelaki yang mengendarai sepeda, seorang manusia yang mengendarai sepeda, menghempaskan condor itu, benar-benar keluar dari puncak tangga lagu.

Dan itulah arti komputer bagi saya. Bagi saya, komputer adalah alat paling luar biasa yang pernah kita temukan, dan komputer setara dengan sepeda bagi pikiran kita.

~Steve Jobs

Siapa tahu — AI generatif mungkin merupakan sepeda pikiran terakhir yang perlu dibuat oleh manusia. (petunjuk: AGI 😉)