39 poin oleh xguru 2024-03-25 | 7 komentar | Bagikan ke WhatsApp
  • Model bahasa besar (LLM) telah menciptakan gelombang besar di bidang kreatif karena kini mampu menghasilkan gambar, teks, dan kode
  • Pada awalnya banyak hasil lucu seperti gambar tangan manusia yang salah atau pernyataan fakta yang keliru, tetapi perlahan terus membaik
  • Sebelum model-model ini muncul, argumen utama yang menentang otomatisasi adalah bahwa mesin tidak bisa berpikir kreatif, tetapi kini argumen itu semakin melemah
  • Jadi, ke mana kita harus melangkah sekarang?

Framework: tingkat kapabilitas pengembangan perangkat lunak

  • Pengembangan perangkat lunak lebih dari sekadar menulis kode
  • Citra programmer sering digambarkan sebagai seseorang yang menatap komputer di ruangan gelap sambil sibuk mengetik kode, tetapi kenyataannya mereka menghabiskan lebih banyak waktu untuk pekerjaan lain daripada menulis kode
    • Mengumpulkan kebutuhan dari pengguna bisnis
    • Menyaring kebutuhan agar bisa dimodelkan ke dalam kode
    • Memvisualisasikan solusi dan menyusun rencana bersama anggota tim seperti desainer dan manajer produk
    • Merancang dan mematangkan desain teknis bersama developer lain
    • Menyiapkan infrastruktur, konfigurasi, boilerplate, dan sebagainya
    • Menulis kode yang sebenarnya
    • Debugging, memahami kode orang lain, menulis dokumentasi, dan sebagainya
    • Deployment ke production
    • Menangani isu di production
    • Dan masih banyak pekerjaan lainnya
  • Pernyataan bahwa "AI akan menggantikan developer" berarti AI harus mahir dalam semua pekerjaan di atas
  • Namun jika melihat daftar itu, sebagian mungkin bisa diotomatisasi di masa depan, tetapi sebagian lainnya masih tampak belum bisa diotomatisasi saat ini

Klasifikasi tingkat otomatisasi pada mobil swakemudi

  • Bidang mobil swakemudi telah mengembangkan cara untuk mengklasifikasikan tingkat otomatisasi
  • Klasifikasi ini menjelaskan dengan jelas apa yang bisa dilakukan teknologi saat ini dan menghindari cara pandang hitam-putih
  • Jika klasifikasi seperti ini diterapkan pada pengembangan perangkat lunak berbasis AI
    • Tahap paling rendah adalah yang dulu kita miliki, yaitu tahap ketika AI tidak terlibat dalam pekerjaan. Tentu ada jenis otomatisasi lain seperti compiler dan build process, tetapi itu bukan AI, melainkan otomatisasi deterministik yang ditulis manusia
    • Tahap berikutnya adalah yang kita miliki saat ini
      • Developer mendapat bantuan dengan menggunakan ChatGPT atau GitHub Copilot
      • Developer memakainya untuk menulis test, boilerplate, refactoring, serta memahami kode/error
      • Lewat chat, kita bisa bertanya dan mendapatkan bantuan seolah berbicara dengan sesama developer, tetapi AI tidak punya akses ke komputer sehingga tidak bisa membuat file, menjalankan perintah build, atau melakukan deployment ke production
    • Tahap paling tinggi adalah mendelegasikan sebagian atau seluruh proyek kepada "AI coder"
      • AI coder menerima requirement, menulis kode, memperbaiki error, lalu melakukan deployment produk akhir ke production
      • Dulu saya pikir hal seperti ini baru akan terjadi beberapa bulan lagi, tetapi demo Devin membuktikan bahwa walaupun saat ini baru bisa menangani tugas pengembangan sederhana, ada kemungkinan besar kemampuan ini akan terus meningkat Devin, software engineer AI pertama
  • Selain kemampuan model AI, kita juga perlu memikirkan seberapa akurat solusinya
    • Model-model ini rentan terhadap halusinasi atau cenderung harus diprompt dengan cara tertentu untuk mendapatkan hasil yang diinginkan
    • Ini menimbulkan friksi dalam adopsi dan membuat kebanyakan orang menyerah menggunakan asisten AI pada tahap ini
    • Namun hal ini juga sedang membaik, dan pada model-model terbaru tingkat prompt engineering seperti itu tidak lagi terlalu diperlukan
  • Model juga seharusnya dapat "belajar" dengan menjelajah web alih-alih hanya bergantung pada data pelatihan
    • Ini penting karena versi baru library dan bahasa pemrograman terus diperkenalkan

Framework: pengembangan perangkat lunak yang di-outsourcing

  • Setelah membangun kerangka kemampuan, apa dampaknya pada struktur tim atau organisasi? Perusahaan mengembangkan perangkat lunak dengan berbagai cara:
    • Sepenuhnya in-house
    • Sebagian besar in-house dengan beberapa vendor
    • Sedikit in-house dengan banyak vendor
    • Sepenuhnya vendor
  • AI coder bisa dipandang sebagai vendor/konsultan pengembangan perangkat lunak yang di-outsourcing
  • Penting bagi tim internal perusahaan untuk mengawasi pekerjaan vendor
    • Masalah ini bisa ditangani lewat kontrak, tetapi kontrak biasanya hanya berlaku untuk vendor atau proyek tertentu dan tidak bisa memaksakan tujuan jangka panjang dengan cara ini
    • Akan lebih baik jika tetap ada tim internal kecil yang bisa mengarahkan vendor
    • Demikian juga, meskipun AI coder nantinya bisa disewa seperti instance EC2, tetap lebih menguntungkan jika ada tim internal berisi developer perangkat lunak untuk mengawasi pekerjaan tersebut

Framework: pengembangan perangkat lunak adalah pemodelan kompleksitas

  • Saat berbicara tentang penyelesaian masalah bisnis, kita bisa menggunakan Excel sebagai contoh
  • Excel punya hambatan masuk yang sangat rendah, sehingga bisa dipakai untuk merapikan data, melakukan analisis data, atau mengotomatisasi sebagian proses
  • Namun Excel tidak cocok untuk alur kerja bisnis yang kompleks karena tidak memiliki fitur seperti kontrol akses terperinci, kemampuan integrasi dengan sistem yang tidak didukung, testability, reusability, dan ketergantungan vendor
  • Hal yang sama berlaku untuk solusi "low-code" seperti Power Automate
  • "Apakah pengguna bisnis bisa membuat workflow kompleks seperti ini dengan AI coder tanpa bantuan developer perangkat lunak?"
  • Kalau dipikir-pikir, Excel dan alat low-code sudah ada selama puluhan tahun, lalu mengapa profesi software developer masih tetap ada?
  • Itu karena kita memandang pengembangan perangkat lunak hanya sebagai aktivitas menulis kode
  • Masalah yang kompleks membutuhkan orang yang mampu mengelola kompleksitas tersebut secara efektif dan mengubah masalah bisnis menjadi model digital dalam domain nyata
  • Dengan kata lain, hanya karena seseorang bisa membangun gudang kayu lewat tutorial YouTube tanpa bantuan insinyur sipil, bukan berarti ia juga bisa dan seharusnya membangun gedung 10 lantai dengan cara yang sama
    • Dalam proses mempelajari cara melakukannya dengan benar, orang itu perlahan bisa menjadi insinyur sipil
    • Hanya saja pertanyaannya adalah apakah ia mau menginvestasikan waktu untuk belajar dengan benar, atau lebih memilih merekrut insinyur yang sudah terampil
  • Jadi baik menggunakan Excel maupun AI coder terbaru, jika Anda sedang memodelkan logika yang kompleks, saya tetap menganggap itu sebagai pekerjaan software developer
  • Hanya alat untuk mengekspresikan kebutuhan bisnisnya yang berbeda, entah itu rumus spreadsheet, kode, prompt, dan sebagainya

Framework: ukuran pai

  • Sebagian besar kecemasan seputar topik ini didasarkan pada asumsi bahwa ukuran pasar pengembangan perangkat lunak akan tetap sama, yaitu asumsi bahwa AI coder perlahan akan merebut "pangsa pasar" dari manusia
  • Karena ukuran pasar "penyelesaian masalah bisnis" jauh lebih besar daripada pengembangan perangkat lunak, pengembangan perangkat lunak tidak akan segera hilang

Framework: definisi formal logika bisnis

  • Logika bisnis harus selalu didefinisikan dalam bentuk formal yang jelas
  • Karena itulah bahasa pemrograman, meskipun menggunakan kata-kata bahasa Inggris seperti 'if' dan 'switch', tetap mendefinisikan makna kata-kata itu dengan sangat ketat, dan jika memakai kata yang salah maka program tidak akan berjalan. Jika dipikirkan, hal yang sama juga berlaku untuk rumus Excel atau alur low-code
  • Di masa depan, meskipun AI coder bisa membuat produk perangkat lunak melalui perintah yang diberikan dalam bahasa Inggris percakapan, saya rasa definisi formal dasar untuk logika bisnis yang dihasilkan di backend tetap akan ada
  • Bentuknya mungkin akan sangat berbeda dari bahasa atau framework yang kita gunakan saat ini, tetapi definisi formal logika bisnis itu tetap terdengar sangat mirip dengan "kode"
  • Sampai AI coder bisa menghasilkan logika bisnis semacam ini dalam bahasa Inggris percakapan secara deterministik, akan tetap dibutuhkan orang yang memahami kode yang dihasilkan di backend dan bisa mengubahnya bila perlu. Orang itu adalah software developer

Kesimpulan

  • Sifat pekerjaan akan berubah dan alat yang kita gunakan akan sangat berbeda dari sekarang, tetapi saya rasa dalam masa depan yang dekat pasar untuk software developer akan tetap ada

7 komentar

 
dhlee0305 2024-03-25

Bahkan sebelum OpenAI menjadi terkenal, melihat AI memperluas jangkauannya mulai dari seni—yang dulu dianggap sebagai bidang yang paling lambat mengadopsi AI atau bahkan mustahil untuk diadopsi—membuat saya tiba-tiba berpikir bahwa hal-hal yang sekarang kita anggap hanya bisa dilakukan oleh 'manusia' mungkin tidaklah 'aman'.

 
edunga1 2024-03-25

Seperti isi artikel dan postingan https://id.news.hada.io/topic?id=13557
sekarang porsi developer jelas akan berkurang, dan itu akan makin cepat, bukan?

 
ahwjdekf 2024-03-25

Seiring pentingnya prompt AI makin menonjol dari hari ke hari, akan makin banyak pengguna yang menyadari bahwa definisi spesifikasi yang lebih jelas dan perapian kebutuhan menjadi hal yang esensial, dan pada akhirnya ini tampaknya bisa mengarah ke kondisi yang lebih menguntungkan bagi para developer untuk bekerja ke depannya.

 
colus001 2024-03-25

Menurut saya, kode dibuat untuk manusia, dan fakta bahwa mesin menulis kode berarti manusia tetap dibutuhkan, jadi saya rasa itu bukan arah perkembangan untuk masa depan yang jauh. Saya melihat perkembangannya akan menuju bentuk di mana kita melempar pertanyaan yang kita inginkan ke semacam black box, seperti backend-GPT awal yang sempat dieksperimenkan (https://github.com/RootbeerComputer/backend-GPT), lalu sistem itu mengakses DB untuk memproses data, sementara manusia ikut campur sebagian pada pengalaman sebelum dan sesudahnya.

 
kaistj 2024-03-25

Sepertinya di antara banyak hal yang dibicarakan tentang ChatGPT dan Copilot, prompt engineering juga sering disebut. Saya rasa, bagaimana kita bisa menyampaikan dan berkomunikasi secara efisien dengan AI coder mengenai proses-proses yang biasa kita lakukan untuk pemrograman—seperti berdiskusi, menyampaikan maksud dengan cepat lewat kata-kata, lalu merapikan dan mengonfirmasinya—juga merupakan elemen yang penting ^^.

 
vbmania 2024-03-25

> Ucapan seperti "AI akan menggantikan developer" berarti AI harus mahir dalam semua pekerjaan di atas.

-> Bisa jadi itu adalah prosedur yang diperlukan karena dikerjakan manusia, dan pada akhirnya ketika semua prosedur itu dilalui, saya rasa hasil akhirnya berupa kode bisa memiliki pola tertentu. Mirip seperti dalam baduk, dulu orang mengira hal-hal seperti pembukaan dan joseki itu diperlukan, tetapi ternyata itu hanya metode yang tak terhindarkan bagi manusia untuk memproses informasi dalam batas ranah kognitifnya.