AI Coding Assistant: dari Tab Completion ke Coding Agent

Saya sudah memakai editor AI dari sejak beberapa tahun lalu (seperti yang sudah saya tuliskan di sini di tahun 2022). Awalnya hanya sekedar membantu melengkapi kode berikutnya dengan TAB completion, lalu berikutnya saya mulai memprogram dengan memberikan langkah spesifik menggunakan komentar di tengah-tengah fungsi (misalnya: use linear search to find matching elements).

Sekarang saya sudah mulai menggunakan AI Agents, walau cara lama kadang tetap dipakai karena masih berguna untuk algoritma kompleks. Dengan mode agent, kita bisa mendeskripsikan apa yang kita inginkan, misalnya: “buat halaman advanced tutorial, dengan layout yang sama dengan basic tutorial, tapi hanya bisa diakses member premium”, dan AI akan merencanakan semua langkahnya, lalu melakukan apa yang kita minta.

Ketika saya mencoba mode agent ini beberapa bulan lalu, kualitasnya masih agak random, kadang bagus, kadang sangat ngaco. Tapi berbagai model LLM baru sudah muncul yang memang ditraining dengan kemampuan agentic, dan sekarang hasilnya sangat bagus.

Dengan menggunakan Coding Agent (selanjutnya saya sebut agent saja), saat ini ada trend vibe coding, di mana kita memprogram dengan sekedar bahasa inggris dan mengikuti flow saja, tanpa harus melihat kode dengan detail. Sekedar contoh game yang saya vibe code: http://assembly-blocks.pages.dev/ Saya tidak menulis sebaris kode pun. Bahkan saya belum melihat implementasi dalamnya seperti apa, yang penting jalan (karena ini bukan program penting).

Contoh game hasil vibe coding
Lanjutkan membaca AI Coding Assistant: dari Tab Completion ke Coding Agent

Coding dengan LLM

Sejak ChatGPT dirilis, sudah ada banyak kekhawatiran: sepertinya pekerjaan coding akan digantikan AI. Sekarang sudah sekitar 2 tahun sejak ChatGPT dirilis dan di awal tahun ini ada demo “First AI software Engineer” yang membuat orang terkagum-kagum, tapi ternyata demonya tidak benar dan sampai sekarang perkembangan AI sebagai software engineer belum sesuai ekspektasi yang ada di video demo tersebut.

Orang ini membuat banyak software engineer panik, tapi kemudian hilang kabarnya (sebagai catatan: ini joke, devin masih ada, walau sampai saat ini tidak sebagus hypenya)

Sebagian orang berpendapat bahwa LLM sekarang ini akan mentok sampai level tertentu, dan sebagian lagi berpendapat bahwa LLM masih akan terus berkembang dan akan segera menggantikan software engineer, dan bahkan akan sampai level AGI (Artificial General Intelligence) yang akan bisa menyelesaikan segala macam masalah di bidang apapun.

Lanjutkan membaca Coding dengan LLM

Coding dengan TabNine, Copilot, dan ChatGPT

Saat ini ada beberapa tool pembantu coding berbasis AI. Sejak ada Tabnine yang menyediakan autocomplete dengan AI, saya langsung berlangganan, dan ketika Github meluncurkan Copilot, saya juga langsung memakainya. Saat ini saya sudah menggunakan Tabnine lebih dari setahun dan Copilot selama beberapa bulan, dan ingin menceritakan pengalaman serta tips menggunakan tool-tool ini.

Meme (sumber asli tidak diketahui)

Penggunaan tool asisten programmer berbasis AI tentunya juga menimbulkan pertanyaan: apakah di masa depan programmer akan tergantikan oleh AI? Saya akan membahasnya sedikit di akhir tulisan ini.

Coding di HP dengan NeoVIM dan plugin Copilot
Lanjutkan membaca Coding dengan TabNine, Copilot, dan ChatGPT

Logging

Di tulisan ini saya ingin membahas mengenai kenapa kita butuh logging dalam aplikasi, dan bagaimana praktik terbaik untuk melakukan logging.

Kenapa butuh logging

Kita memerlukan log supaya tahu apa kesalahan yang mungkin terjadi ketika program berjalan. Meskipun program dirancang sempurna, tetap ada banyak hal kemungkinan error yang bisa terjadi ketika aplikasi berjalan. Error ini bisa karena banyak hal, tapi bisa dibagi menjadi dua yang utama:

  • karena masalah pada runtime environment (lingkungan eksekusi program), misalnya: disk space habis, jaringan putus, disk error, dsb
  • karena logika program yang salah, atau ada library yang memiliki bug tertentu

Sering kali kita tidak bisa mengakses sistem di mana software kita berjalan, jadi tidak bisa langsung menginspeksi masalahnya apa. Contoh kasusnya:

  • Pada aplikasi desktop/game yang berjalan di komputer client
  • Pada aplikasi server yang berjalan di sistem production

Log level

Mencatat semua aktivitas program di log akan membuang banyak CPU dan disk space. Jadi kita perlu memberi tag level ketika melakukan logging.

Sistem log yang baik dapat diset agar hanya log pada level tertentu yang disimpan atau ditampilkan. Tergantung kebutuhan, level log bisa diset saat aplikasi berjalan (runtime) jika ada masalah.

Lanjutkan membaca Logging