Satuan 1 / 12

Kecerdasan Buatan untuk Tim Perangkat Lunak: Model Kerja dan Batasannya

Keuntungan:

  • Kemampuan untuk menjelaskan cara kerja asisten pengkodean sebagai model bahasa dan konsep token, jendela konteks, halusinasi
  • Kemampuan untuk membedakan tugas perangkat lunak di mana AI kuat dan lemah dengan peta mental
  • Kemampuan untuk menerapkan siklus kerja dasar usulan-produksi-verifikasi pada tugas mereka sendiri

Hari-hari seorang pengembang perangkat lunak jarang dihabiskan untuk "menulis kode dari awal". Waktu nyata; Membaca kode yang ditulis oleh orang lain, mencoba mereproduksi bug, memindai log (baris log yang dihasilkan oleh aplikasi saat berjalan), menulis tes, menulis PR (permintaan tarik - permintaan penggabungan di mana perubahan kode diserahkan untuk tinjauan tim) penjelasan dan memperbarui dokumentasi. Kecerdasan buatan (AI) adalah pengganda kecepatan yang dapat menyentuh hampir semua pekerjaan yang tidak terlihat ini. Namun syarat pertama untuk menggunakannya dengan aman adalah memahami dengan benar apa itu dan apa yang bukan.

Dalam unit ini, pertama-tama kami menjelaskan teknologi yang mendasari asisten pengkodean dalam bahasa sederhana; lalu kita membuat peta mental tentang kekuatan dan kelemahan model; Terakhir, kami menetapkan disiplin kerja dasar yang akan kami gunakan di seluruh modul: mengusulkan, memproduksi, memverifikasi. Ketiga langkah inilah yang menjadi tulang punggung sebelas unit berikutnya.

Catatan: Modul ini merupakan pelatihan umum. Dalam perangkat lunak yang sangat penting bagi keamanan (pemrosesan pembayaran, layanan kesehatan, autentikasi, infrastruktur penting), keluaran AI bukanlah pengganti peninjauan dan persetujuan oleh insinyur yang berkualifikasi. AI adalah asisten; Penandatangannya adalah insinyurnya.

Apa yang Sebenarnya Dilakukan Asisten Coding?

Sebagian besar asisten pengkodean dibuat berdasarkan model bahasa besar (LLM—AI yang dilatih pada teks dan kode dalam jumlah besar yang memprediksi “potongan” berikutnya yang paling mungkin terjadi). Model tidak "memahami" kode seperti manusia; Ini menghasilkan kelanjutan yang paling mungkin dari konteks yang Anda berikan, berdasarkan pola yang dipelajari dari sejumlah besar contoh. Mekanisme yang tampaknya sederhana ini memberikan hasil yang sangat baik dalam praktiknya — karena sebagian besar perangkat lunak terdiri dari pola berulang: permintaan HTTP, perulangan, pemeriksaan nol, pola pengujian.

Ada tiga istilah yang penting di sini. Token adalah unit terkecil yang diproses model dengan membagi teks; Ini kira-kira terdiri dari beberapa huruf atau bagian dari sebuah kata. Jendela konteks adalah jumlah token yang dapat "dilihat" oleh model sekaligus; Kode, pesan kesalahan, dan instruksi Anda harus sesuai dengan jendela ini. Prompt adalah semua instruksi dan konteks yang Anda berikan kepada model. Kualitas keluaran yang Anda peroleh bergantung langsung pada dua hal ini: semakin baik konteks dan semakin jelas instruksi yang Anda berikan kepada model, semakin baik pula hasil yang akan Anda peroleh. Masukan yang buruk menghasilkan keluaran yang buruk, meskipun model tersebut cerdas — aturan klasik perangkat lunak “sampah masuk, sampah keluar” juga berlaku untuk AI.

Peta Kekuatan dan Kelemahan

Untuk mengarahkan AI ke pekerjaan yang tepat, kita perlu mengetahui di mana ia unggul dan di mana ia tersandung. Menghafal peta ini akan membuat Anda bertanya-tanya di setiap misi berikutnya, "Haruskah saya mengalihdayakan pekerjaan ini ke AI atau melakukannya sendiri?" Ini memungkinkan Anda menjawab pertanyaan dalam hitungan detik.

Kelebihannya adalah: Menghasilkan kode boilerplate, menerjemahkan dari satu bahasa ke bahasa lain, menulis ekspresi reguler (regex), mendeskripsikan suatu fungsi, membuat kerangka pengujian, menafsirkan pesan kesalahan, menyusun dokumentasi, menyarankan nama variabel/fungsi, dan pemfaktoran ulang kecil (meningkatkan struktur kode tanpa mengubah perilakunya).

Kelemahan: Mengetahui aturan bisnis spesifik perusahaan Anda, mengingat seluruh basis kode Anda, benar-benar menjalankan dan memverifikasi kode, mengetahui versi perpustakaan terbaru secara pasti, mendeteksi kerentanan keamanan dengan jaminan seratus persen. Hal yang paling berbahaya adalah halusinasi: model menciptakan fungsi, perpustakaan, atau API yang tidak ada (antarmuka yang memungkinkan pertukaran data antar aplikasi) dalam bahasa yang sangat meyakinkan. Risiko ini sebenarnya dapat dimanfaatkan untuk keuntungan Anda, karena kodenya, tidak seperti teks biasa, dapat diuji untuk melihat apakah kode tersebut “berfungsi” — namun jangan lewatkan langkah verifikasi.

Jenis misi

Peran AI

peran pria

Menghasilkan boilerplate/kerangka

menghasilkan rancangan

Menyesuaikan, ulasan

Deskripsi kode

Memberikan ringkasan singkat

Memverifikasi bagian penting dalam kode

tes menulis

Kasus menunjukkan

Mengonfirmasi cakupan dan akurasi

Logika yang kritis terhadap keamanan

ide yang bermanfaat

Keputusan dan tanggung jawab sepenuhnya ada pada manusia.

Penggunaan API/perpustakaan

Menghasilkan sampel

Memverifikasi keberadaan dan versi

keputusan arsitektur

Macam pilihan

Memilih dan mempertahankan dengan mengetahui konteksnya

Langkah demi Langkah: Siklus Kerja Dasar

  1. Perjelas tugasnya. Jika Anda tidak dapat menulis apa yang Anda inginkan dalam satu kalimat, modelnya juga tidak bisa. Semakin awal ketidakpastian meresap ke dalam input, semakin besar pertumbuhan outputnya.
  2. Berikan konteks. Tambahkan kode yang relevan, pesan kesalahan lengkap, versi bahasa/kerangka kerja, dan batasan ke prompt. Jangan katakan "perbaiki ini", katakan "Python 3.11, FastAPI 0.110; fungsi ini memberikan kesalahan 500, meledak ketika isi permintaan kosong".
  3. Peran dan format pengenaan. Kerangka kerja seperti "Anda adalah pengembang Go senior; cukup berikan kode dan alasan dua kalimat" akan memfokuskan keluaran.
  4. Minta yang kecil. Bagi menjadi beberapa langkah, bukan satu permintaan besar; Verifikasi setiap langkah secara terpisah. Perubahan besar berisiko karena sulit diverifikasi dan rentan menyembunyikan kesalahan.
  5. Memeriksa. Jalankan, uji, baca secara visual. Kode AI yang belum diverifikasi adalah "sketsa", bukan "solusi". Ini adalah langkah yang paling tidak bisa dinegosiasikan dalam siklus ini.

Tiga Kasus Mini

Kasus 1 — Penghematan waktu memang nyata namun tidak terlalu besar. Saat tim membuat kerangka titik akhir CRUD (Buat-Baca-Perbarui-Hapus) baru dengan AI, waktu draf pertama berkurang dari sekitar 40 menit menjadi 8 menit. Namun, setelah ditinjau dan diuji, total waktunya adalah 25 menit; jadi keuntungan sebenarnya adalah dari 40 menjadi 25, sekitar 38%. Angka ini, yang diukur dibandingkan ekspektasi “kita telah mempercepat 10 kali lipat”, merupakan pencapaian yang berkelanjutan.

Kasus 2 — Halusinasi itu mahal. Pengembang menggunakan panggilan request.get_json() yang disarankan AI tanpa validasi; Tidak ada metode seperti itu (tepatnya respon.json()). 20 menit hilang ketika kode tidak dapat dikompilasi. Pertanyaan sederhana "apakah metode ini benar-benar ada?" verifikasi akan mengatur ulang kerugian.

Kasus 3 — Konteks yang baik menggandakan keluaran. Untuk bug yang sama, satu pengembang hanya menulis "Saya mendapatkan kesalahan" dan pengembang lainnya menambahkan pelacakan tumpukan lengkap, versi, dan sampel masukan. Yang terakhir mendapatkan solusi yang tepat pada percobaan pertama; Yang pertama menghabiskan tiga putaran. Perbedaannya bukan pada modelnya, tetapi pada inputnya.

Empat Templat yang Dapat Disalin

Perintah startup yang kuat dan bertujuan umum:

Peran: Anda adalah pengembang {{bahasa}} berpengalaman. Tugas: {{what_want}}Konteks:- Kerangka/versi: {{framework_and_version}}- Batasan: {{performa, gaya, aturan ketergantungan}}Aturan:- Jangan gunakan pustaka/fungsi yang tidak ada; Jika Anda tidak yakin, tandai sebagai "verifikasi". - Pertama berikan rencana singkat, lalu kode, lalu 2 kalimat pembenaran. - Menghasilkan kode yang dapat diuji dan berfungsi.

Untuk menyaring ketidakpastian kembali ke dalam model:

Sebelum menyelesaikan tugas di bawah ini, daftarkan MINIMAL 3 poin yang menurut Anda hilang atau tidak jelas sebagai pertanyaan. JANGAN menulis kode sebelum saya membalas. Tugas: {{tugas}}

Untuk memeriksa sendiri hasilnya:

Anda telah menghasilkan kode berikut. Sekarang ubah peran Anda dan kritik kode ini: - Sebutkan 3 kasus (kasus tepi) yang mungkin tidak berfungsi. - Apakah ada API/fungsi yang dapat Anda buat? Tandai.- Berikan versi yang diperbaiki.Kode:{{kode}}

Untuk memecah keputusan menjadi beberapa pilihan:

Sarankan 2-3 pendekatan solusi untuk {{problem}}. Untuk masing-masing: deskripsi singkat, plus/minus, kapan harus memilih. Berikan dalam bentuk tabel. JANGAN memilihkan untukku; cukup perjelas pilihannya.

Perintah lemah / Perintah kuat

Lemah: "Perbaiki bug pada kode ini." (Kesalahan yang mana? Bahasa yang mana? Perilaku apa yang diharapkan?)
Kuat: "Python 3.11 / FastAPI 0.110. Titik akhir berikut mengembalikan 500 dengan KeyError ketika isi permintaan kosong; Saya ingin mengembalikan 400 dan pesan bermakna pada isi kosong. Pertama jelaskan alasannya, lalu berikan fungsi yang dikoreksi, lalu tulis tes untuk skenario ini. [kode]"

Versi yang kuat; Ini memberikan bahasa, versi, kesalahan aktual, perilaku yang diharapkan, dan format keluaran. Model tidak lagi harus memprediksi.

Kesalahan umum

  • Percaya tanpa verifikasi. Kesalahan paling umum dan paling mahal. Jangan katakan "terselesaikan" sampai kode dikompilasi dan diuji.
  • Mengajukan pertanyaan tanpa konteks. Jawaban tanpa versi, teks kesalahan, dan batasan bersifat umum dan sering kali salah.
  • Satu permintaan besar. Tidak dapat meminta dan meninjau produksi 300 baris sekaligus membuat kesalahan tidak terlihat.
  • Salah mengira rasa percaya diri sang model sebagai bukti. AI dengan yakin dapat mengatakan sesuatu yang salah; Nada bukan merupakan indikator keakuratan.
  • Menempelkan rahasia perusahaan secara acak. Kunci pribadi, data pelanggan, atau kode sumber pribadi tidak boleh dimasukkan ke alat yang tidak disetujui (kita akan mempelajari topik ini di unit 10).
Tip: Perlakukan setiap keluaran AI sebagai “ini adalah draf.” Kebiasaan mental tunggal ini menghilangkan sebagian besar risiko yang akan Anda lihat di seluruh modul.

Singkatnya

Asisten pengkodean adalah model bahasa yang memprediksi fragmen berikutnya yang paling mungkin terjadi; Ia tidak memahami kodenya, ia menghasilkan pola. Itu sebabnya dia kuat dalam pekerjaan yang berulang dan diformulasikan; Ini harus digunakan dengan hati-hati untuk pekerjaan yang memerlukan verifikasi yang spesifik untuk konteks Anda. Risiko terbesar adalah halusinasi, dan satu-satunya penawarnya adalah verifikasi. Disiplin yang akan kita ikuti di seluruh modul jelas: memperjelas tugas, memberikan konteks, meminta hal-hal kecil, memvalidasi setiap hasil.

Tugas aplikasi

Tuliskan tiga tugas perangkat lunak yang Anda lakukan dalam seminggu terakhir (misalnya perbaikan bug, pengujian, pembaruan README). Lihatlah “peta kekuatan dan kelemahan” untuk masing-masing dan jelaskan dalam satu kalimat apa peran Anda dan AI jika Anda meminta AI melakukan hal ini. Kemudian berikan salah satu tugas ini kepada AI dengan templat “start prompt” di atas dan jalankan serta verifikasi hasilnya; Catat berapa menit yang Anda hemat dan berapa banyak kesalahan yang harus Anda perbaiki.

daftar periksa

  • [ ] Saya menyadari bahwa LLM menghasilkan pola, bukan kode "memahami".
  • [ ] Saya dapat menjelaskan konsep token, jendela konteks, dan prompt dalam satu kalimat.
  • [ ] Saya dapat membedakan jenis tugas yang AI-nya kuat dan lemah.
  • [ ] Saya tahu apa itu halusinasi dan satu-satunya penawarnya adalah verifikasi.
  • [ ] Saya mengadaptasi siklus "usulkan, produksi, verifikasi" ke tugas saya sendiri.
  • [ ] Saya dapat menunjukkan perbedaan antara perintah kuat dan perintah lemah dalam contoh nyata.