7 Teknik Pemrograman AI yang Diam-diam Membuat Anda Elite

Gambar: Vertigo3d / iStock / Getty Images Plus

Ikuti ZDNET: Tambahkan kami sebagai sumber pilihan di Google.

Intisari ZDNET:

  • Perlakukan AI sebagai developer lain, bukan kotak ajaib.
  • Enkapsulasi sistem desain dan profil pengguna dalam system prompts.
  • Setiap bug yang diperbaiki menjadi pelajaran permanen dalam DNA proyek.

    Sejak era kartu berlubang, saya mengidentifikasi diri sebagai seorang programmer dan ilmuwan komputer. Sisi programmer adalah identitas praktis saya sebagai insinyur, orang yang merakit kode baris demi baris. Sisi ilmuwan komputer adalah teoretisi, ilmuwan, strateg, dan perencana.

    Meski mencintai teori dan sains komputer, saya selalu menikmati sensasi langsung menulis kode. Saya rasa ini mirip dengan bagaimana beberapa pengrajin kayu lebih memilih perkakas tangan daripada mesin, demi pengalaman visceral bekerja dengan kayu.

    Sayangnya, saya jarang punya waktu untuk coding. Pekerjaan harian saya adalah sebagai eksekutif perusahaan, pendiri, edukator, dan penulis. Saya suka membuat produk perangkat lunak, tapi hanya sanggup menyelesaikan satu produk kecil per tahun, menggunakan waktu malam dan akhir pekan yang tersisa.

    Semua itu berubah pada September lalu. Saat itulah saya mulai menggunakan alat vibe coding yang agensif, seperti OpenAI Codex dan Claude Code.

    Sejak September, saya telah membangun dan meluncurkan empat produk utama (add-on keamanan WordPress), membuat aplikasi iPhone fungsional untuk mengelola filamen printer 3D, dan hampir menyelesaikan beta aplikasi manajemen pola jahit yang diminta istri saya. Dua proyek terakhir ini dikembangkan secara simultan untuk iPhone, iPad, Apple Watch, dan Mac.

    Sebagai coder tunggal, AI agensif telah menjadi force multiplier dengan kemampuan yang hampir tak tertandingi.

    Dalam artikel ini, saya akan membagikan tujuh praktik terbaik yang saya terapkan. Praktik ini membantu saya bekerja sama dengan AI sebagai partner dan menghasilkan produk dengan kualitas yang layak untuk penggunaan produksi. Di akhir, saya juga akan berbagi satu praktik terbaik bonus yang sering kali sangat berguna.

    Ini adalah vibe coding. Tapi vibe coding dengan disiplin rekayasa, dan kerangka kerja yang dirancang untuk ketangguhan dan kualitas produk. Jika Anda ingin menggunakan AI untuk membangun aplikasi, ikuti praktik terbaik ini.

    Praktik Utama: Instruksi Tertulis

    Poin-poin di bawah adalah praktik spesifik dan disengaja. Setiap poin berasal dari sesuatu yang sengaja saya bangun ke dalam alur kerja saya.

    Cara saya menerapkan praktik ini adalah dengan menambahkannya ke file "ini" untuk AI, yaitu file CLAUDE.MD dan AGENTS.MD. Saya juga menambahkan file lain untuk mendokumentasikan proyek itu sendiri. Saya akan menjelaskannya lebih dalam seiring pembacaan artikel ini.

    Mari mulai dengan praktik terbaik pertama saya, yang distandarkan ketika saya menemukan bahwa perilaku agent di Xcode tidak andal untuk banyak proses paralel.

    Pastikan membaca hingga akhir, karena praktik bonus yang disebutkan tadi bisa benar-benar mengubah permainan.

    1. Visibilitas Sekuensial di Atas Kecepatan Paralel

    Perusahaan AI menggaungkan kemampuan baru untuk menjalankan banyak agent secara paralel. Namun, sangat sulit mengelola banyak agent yang berjalan paralel, terutama ketika Anda tidak bisa melihat apa yang mereka semua lakukan.

    Lebih buruk lagi, pendekatan ini menyebabkan crash dan hang, membuat proyek terbengkalai. Sampai teknik ini menjadi mudah dikelola dan terlihat, saya hanya ingin menjalankan satu agent dalam satu waktu.

    Keterelolaan harus didahulukan di atas kecepatan, terlebih ketika AI menyembunyikan banyak hal yang biasanya Anda lihat baris demi baris jika mengerjakan semuanya sendiri.

    Aturan saya: "JANGAN gunakan background agents atau background tasks. JANGAN bagi menjadi beberapa agent. Proses file SATU PERSATU, secara sekuensial. Beri pembaruan rutin kepada pengguna di setiap langkah." Dalam aturan ini, "pengguna" adalah saya, karena ini adalah instruksi kepada AI tentang penggunaannya sendiri.

    Mengapa ini elite: Saya belajar ini dengan cara yang sulit. Claude sering kali meluncurkan agent paralel di Xcode. Tapi setelah beberapa kali satu atau lebih agent paralel macet, tidak responsif, harus dimatikan paksa, dan meninggalkan perubahan basis kode setengah jadi dalam keadaan tidak pasti, saya merasa cukup.

    Prinsipnya: Saya memilih lebih lambat namun terlihat, daripada lebih cepat namun buram. Ya, menunggu AI bisa membosankan. Tapi saya akan memilih prediktabilitas dan kemampuan pulih yang baik daripada kecepatan yang gegabah setiap saat.

    2. Pelacakan Migrasi sebagai Artefak Utama

    Dua proyek Apple saya dibangun untuk empat platform masing-masing: Mac, iPhone, Watch, dan iPad. Kapabilitas dan antarmuka perangkat ini cukup berbeda, terutama untuk aplikasi saya yang mengandalkan NFC (hanya tersedia di iPhone) dan fitur lain yang lebih cocok untuk platform berbeda.

    Misalnya, dalam aplikasi pola jahit, ada komponen AI yang sangat kuat untuk memindai dan mengkategorikan PDF yang diimpor dari sistem file Mac, yang merupakan alur kerja yang kurang mungkin digunakan di iPhone.

    Tantangannya adalah, ketika saya mengerjakan satu platform, saya tidak ingin kehilangan jejak perubahan untuk platform lain. Jadi, saya memiliki detail tentang migrasi perubahan yang berlaku lintas platform. Detail ini secara spesifik dikodifikasikan sebagai artefak yang dapat diamati, dilacak, dan dirujuk.

    Aturan saya: "Setiap kali Anda membuat perubahan pada aplikasi yang juga perlu diterapkan ke aplikasi iOS, iPad, Mac, atau Watch, catat di Docs/IOS_CHANGES_FOR_MIGRATION.md. Sertakan: tanggal, file yang diubah, platform mana yang berlaku, apa yang spesifik berubah (nilai lama ke baru, cuplikan kode jika membantu), catatan tentang adaptasi spesifik-platform yang sudah dan/atau masih diperlukan."

    Mengapa ini elite: Saya tidak mempercayai diri sendiri (atau AI) untuk mengingat perubahan antar sesi. Di dalam AI, saya membangun log perubahan terstruktur yang berfungsi sebagai daftar periksa migrasi untuk menyamakan platform lain. Saya menggunakannya sebagai alat operasional untuk mencegah perbedaan (drift) antar platform.

    Prinsipnya: Setiap perubahan menghasilkan tiket technical debt untuk setiap platform yang belum mendapatkannya.

    3. Memori Persisten dengan Organisasi Semantik

    Baik AI maupun saya belajar banyak saat membangun aplikasi ini. Beberapa teknik yang kami coba gagal, yang lain menjadi praktik terbaik. Sebagai bagian dari proses, saya meminta AI membangun basis pengetahuan yang diisi dengan pembelajaran itu. Untuk klasifikasi dan akses yang lebih mudah, saya meminta AI mengatur basis pengetahuan berdasarkan topik, bukan sekadar mencatat di bagian bawah log.

    Aturan saya: Saya meminta AI memelihara MEMORY.md yang bertahan antar percakapan, diorganisir berdasarkan topik (bukan kronologis), dengan file topik terpisah untuk catatan detail. Saya beri AI instruksi ini: "Perbarui atau hapus memori yang ternyata salah atau sudah kedaluwarsa. Jangan tulis memori duplikat."

    Mengapa ini elite: Sesi AI pada dasarnya stateless, tapi saya ingin menyimpan informasi state. Membuang semuanya ke file log akan berantakan dan tidak efisien. Sebaliknya, saya meminta AI membangun dan memelihara basis pengetahuan terkurasi yang dibaca AI saat memulai. Basis pengetahuan ini berisi tanda tangan API, algoritma penilaian, pengukuran tata letak, dan pelajaran berharga (contoh nyata di mana kami butuh waktu untuk mencari cara membuat sesuatu bekerja).

    Prinsipnya: Pelajaran ini dapat diterapkan lebih lanjut dalam pengembangan, atau ke proyek-proyek saudari yang menggunakan struktur dasar sama. Jangan menciptakan roda kembali.

    4. Pencatatan Prompt sebagai Jejak Audit

    Sebaliknya, saya juga ingin AI mencatat setiap instruksi yang saya berikan secara kronologis. Pendekatan ini adalah cara bagus untuk merujuk apa yang dikerjakan sebelumnya, terutama ketika saya mungkin tidak kembali ke proyek selama berhari-hari bahkan berminggu-minggu.

    Selain itu, pendekatan ini memungkinkan kami kembali dan melihat apakah prompt saya tidak memadai atau menyesatkan, atau apakah faktor terkait prompt lain bisa menyebabkan kegagalan atau justru keberhasilan besar.

    Aturan saya: "Setiap sesi, setelah membaca instruksi ini, catat setiap prompt pengguna ke PROMPT_LOG.md. Beri stempel waktu setiap entri dengan tanggal dan jam."

    Mengapa ini elite: Pendekatan ini memberi saya (dan AI) catatan lengkap dan bertanggal dari setiap instruksi yang pernah saya berikan kepada AI di semua sesi. Ini melayani banyak tujuan:

  • Saya bisa merekonstruksi kejadian saat ada yang salah.
  • Saya bisa melihat bagaimana suatu fitur berevolusi melalui prompt.
  • AI dan saya bisa melanjutkan tepat di tempat kami berhenti.

    Ini adalah kontrol versi untuk kolaborasi saya dengan AI.

    Prinsipnya: Jika kita tidak bisa memutar ulang percakapan, kita tidak bisa men-debug kolaborasi. Lebih penting lagi, pendekatan ini memungkinkan kami berdua (AI dan saya) untuk kembali merujuk instruksi spesifik, memutar ulang tindakan tertentu, dan memperbaiki masalah yang mungkin muncul dari prompt yang tidak jelas atau salah.

    5. Profil Pengguna sebagai Kendala Desain

    Kedua aplikasi Apple saya menggunakan fitur serupa, tapi memiliki profil pengguna yang sangat berbeda. Proyek inventaris filamen ditujukan untuk individu dengan kemampuan teknis kuat yang mengelola banyak printer 3D dan jenis filamen.

    Di sisi lain, proyek inventaris pola jahit ditujukan untuk pejahit aktif dengan koleksi ratusan bahkan ribuan pola jahit. Para pejahit ini mahir secara teknis dengan mesin jahit khusus, tapi cenderung lebih menyukai antarmuka aplikasi yang intuitif dibandingkan penggemar printer 3D. Mereka sering kali sangat teliti tentang kualitas koleksi dan informasi mereka.

    Karena saya sering meminta bantuan AI untuk desain dan implementasi, saya merasa menguntungkan jika AI memahami profil pengguna. Ketika AI melakukan sesuatu yang berbeda dari kenyamanan pengguna biasa, saya katakan, "ingatkan saya apa profil pengguna untuk aplikasi ini." Pendekatan ini memaksa AI mengingat info itu dan menyatakannya kembali kepada saya. Dengan begitu, AI segera memperbarui pekerjaannya sambil fokus pada persyaratan dan kendala tersebut.

    Aturan saya: "Pengguna inventaris pola jahit saya sebagian besar berusia di atas 50 tahun. Banyak yang adalah kakek-nenek. Mereka biasanya memiliki keterampilan teknis terbatas. Mereka cenderung memiliki koleksi besar dengan mentalitas kolektor ‘harus menyimpannya’ yang kuat."

    Saya tidak merinci nuansa jenis mesin yang dikenal pengguna ini, tapi menyederhanakannya sebagai panduan untuk AI. Kompleksitas teknis yang bisa dihasilkan pejahit sering kali menakjubkan. Dan yang kritis, kontrasnya: "Aplikasi jahit perlu terlihat lebih mudah didekati daripada aplikasi filamen." Ya, ini stereotip. Tapi stereotip bekerja cukup baik dengan korpus pelatihan AI. Tugasnya selesai.

    Mengapa ini elite: Karena saya mengandalkan AI untuk bantuan desain, saya ingin memberikannya model mental pengguna manusia sesungguhnya. Profil pengguna itu termasuk usia, kenyamanan teknis, dan psikologi kolektor, karena faktor-faktor ini memengaruhi pilihan desain. Saat AI membuat rekomendasi desain, ia memiliki profil untuk orang yang menjadi target produk. Pengaturan ini menggema pendekatan kolaborasi saya secara keseluruhan—anggap AI hanya sebagai developer lain di ujung saluran Slack.

    Prinsipnya: Memberitahu AI siapa pengguna perangkat lunak membantunya memahami cara membangun perangkat lunak.

    6. Sistem Desain Terkodifikasi dalam File Prompt Proyek

    Sebagai mantan direktur kreatif dan desainer, saya tahu betapa pentingnya menciptakan bahasa desain untuk perusahaan atau produk. Meski mungkin tampak aplikasi Apple sudah memiliki bahasa desain sendiri karena berada di platform Apple, masih banyak ruang untuk ketidakkonsistenan.

    Untuk mengurangi kemungkinan ini, saya telah mengkodekan bahasa desain untuk proyek langsung di file instruksi utama proyek, sehingga AI selalu bisa merujuknya ketika membangun desain. Pendekatan ini memberikan antarmuka yang sangat konsisten, menarik, dan mudah dipahami yang bekerja dengan setiap pembaruan atau perubahan selama pengembangan.

    Aturan saya: Saya menanamkan seluruh sistem desain iOS dan macOS langsung di file prompt proyek utama CLAUDE.md. Detail ini mencakup ukuran font spesifik (24pt tebal untuk judul lembar, 15pt medium untuk item daftar), nilai RGB warna tepat, pola komponen (struktur kartu, ukuran badge ikon, gaya tombol), dan implementasi referensi bernama.

    Mengapa ini elite: Setiap tampilan baru yang dibuat AI otomatis cocok dengan yang sudah ada karena token desain ada dalam system prompt dan segera tersedia bagi AI. Saya tidak perlu mengatakan, "buat agar terlihat seperti tampilan lain," dan berharap AI bisa memahami seperti apa "tampilan lain" itu. Data referensi berarti AI memiliki bahasa desain terperinci untuk semua elemen UI.

    Prinsipnya: Konsistensi desain tidak boleh bergantung pada ingatan AI tentang apa yang dibangunnya terakhir kali, atau pada kemampuannya untuk menurunkan petunjuk desain dari kode implementasi sebelumnya.

    7. Pelajaran Berharga yang Dikodekan sebagai Aturan

    Ada banyak sekali cara perangkat lunak bisa gagal. Salah satu jebakan dalam coding untuk Apple adalah Anda terkadang perlu keluar dari antarmuka dan fitur canned-nya. Jika Anda melakukannya (dan bahkan terkadang ketika Anda menulis kode langsung ke desainnya), sesuatu bisa rusak.

    Daripada mendebug ulang semuanya setiap kali, saya meminta AI mengkodekan pelajaran yang didapat, terutama setelah sesi panjang mencoba mencari tahu apa yang rusak. Dengan cara ini, kami bisa membuatnya bekerja lagi nanti. Pendekatan ini sangat kuat jika AI memutuskan untuk membuang blok kode dan membuatnya ulang. Dengan pelajaran yang dikodekan sebagai aturan, AI tahu apa yang tidak boleh dilakukan.

    Aturan saya: Tersebar di seluruh file instruksi AI saya adalah pelajaran dari hal-hal yang salah, dikodekan sebagai aturan permanen. Di akhir setiap sesi, saya meminta AI mencatat pembelajarannya. Hasilnya adalah serangkaian instruksi yang dapat digunakan kembali berdasarkan pengalaman pengembangan kami.

    Berikut beberapa contoh:

  • "Jangan menumpuk lebih dari 4 modifikasi .sheet() pada view yang sama di macOS." Kami belajar ini ketika pemilih PDF diam-diam gagal sebagai sheet ke-7 yang ditumpuk.
  • "NSOpenPanel.runModal() tidak boleh dipanggil dari dalam onAppear sebuah sheet." Kami belajar ini dari sebuah crash.
  • "JANGAN PERNAH gunakan .secondary, .gray, atau putih dengan opasitas rendah untuk teks" di watchOS. Diinstruksikan kepada AI berdasarkan pengujian keterbacaan OLED.
  • "Judul navigasi menggunakan gaya sistem (abu-abu) untuk mempertahankan fungsionalitas tombol kembali." Dipelajari dan diinstruksikan, ketika item toolbar kustom menyembunyikan tombol kembali.

    Mengapa ini elite: Banyak developer memperbaiki bug lalu melanjutkan. Pendekatan saya adalah, ketika kami memperbaiki bug, kami menuliskannya ke dalam DNA proyek sebagai pelajaran. Perbaikan bug menjadi panduan dan batasan yang harus diikuti AI sepanjang hidup proyek. Dengan begitu, sesi mendatang tidak mengalami masalah yang sama. Masalah yang sudah terpecahkan menjadi terkodekan sebagai pagar pengembangan.

    Prinsipnya:

MEMBACA  Jerome Powell Sampaikan Sinyal yang Diinvestor Tunggu-tunggu di Jackson Hole

Tinggalkan komentar