Lifestyle

Apakah AI adalah akhir dari rekayasa perangkat lunak atau langkah selanjutnya dalam evolusinya?

59
apakah-ai-adalah-akhir-dari-rekayasa-perangkat-lunak-atau-langkah-selanjutnya-dalam-evolusinya?
Apakah AI adalah akhir dari rekayasa perangkat lunak atau langkah selanjutnya dalam evolusinya?

Pertama kali saya menggunakan chatgpt untuk kode, kembali pada awal 2023, saya diingatkan “Cakar monyet”Sebuah kisah horor klasik tentang jimat terkutuk yang menghibiskan keinginan, tetapi selalu oleh jalan yang paling jahat-hasil yang diinginkan tiba setelah menuntut biaya brutal di tempat lain. Dengan literalitas humor yang sama, chatgpt akan mengimplementasikannya yang saya minta, sementara juga mengacak-acak kelainan yang tidak terkait dengan garis-garis yang tidak terkait. Perbukaannya adalah tipikal yang terjadi secara tipikal. Garis -garis yang dapat digunakan dalam campuran, tetapi melepaskan kekacauan terasa seperti jalan memutar.

Ketika saya mulai menggunakan alat yang dibantu AI awal tahun ini, saya merasa sangat cocok. Pengalaman itu seperti pemrograman pasangan dengan magang yang tidak sopan-kompeten namun aneh hormat, masih sedikit terlalu bersemangat untuk menyenangkan dan membuat perubahan besar di perintah saya. Tetapi ketika ditugaskan dengan perubahan yang lebih terlokalisasi, itu memakukan pekerjaan dengan efisiensi yang patut ditiru.

Caranya adalah menjaga ruang masalah dibatasi. Baru -baru ini saya mengambil selusin baris kode, masing -masing berjalan selama 40 milidetik secara berurutan – waktu menumpuk – dan menjalankan semuanya secara paralel sehingga seluruh pekerjaan selesai pada saat yang dulu hanya memakan satu. Di satu sisi, ini seperti menggunakan printer 3D presisi tinggi untuk membangun pesawat: gunakan untuk menghasilkan bagian-bagian khusus kecil, seperti segel hidrolik atau cincin-O, dan memberikannya dengan sempurna; Tanyakan untuk sesuatu yang kurang terlokalisasi seperti kokpit seluruh, dan Anda mungkin mendapatkan ruang kematian berbentuk kokpit dengan dasbor nonfungsional dan kenop acak dengan sembarangan digantung bersama. Tanaman model saat ini cukup fleksibel untuk pengguna dengan pengalaman pengkodean yang tidak banyak no untuk membuat produk dengan kualitas yang bervariasi melalui apa yang disebut-dalam kata kunci miliaran dolar-pengkode getaran. (Google bahkan merilis aplikasi terpisah untuk itu yang disebut Opal.)

Namun, orang bisa berpendapat bahwa pengkode getaran tidak sepenuhnya baru. Sebagai alat untuk nonprofesional, ia melanjutkan garis keturunan yang panjang dari aplikasi tanpa kode. Sebagai mode pemrograman yang melibatkan korteks prefrontal yang lebih sedikit daripada refleks tulang belakang, programmer jujur ​​mana pun akan mengakui telah terlibat dalam praktik tidak terhormat yang dikenal sebagai “Shotgun Debugging.” Seperti memelintir kubus Rubik tanpa berpikir dan berharap warnanya secara ajaib selaras, seorang programmer, digoreng otak setelah berjam-jam debugging tanpa hasil, mulai dengan sewenang-wenang mengutak-atik kode-menghapus garis acak, menukar beberapa variabel, atau membalik kondisi boolean-menjalankan kembali program, dan berharap untuk hasil yang benar. Baik debugging getaran dan senapan adalah bentuk-bentuk glasir intuitif, mengganti firasat dan keberuntungan untuk penalaran dan pemahaman yang disengaja.

Kami telah menggunakan mesin untuk menghilangkan beban kognisi, tetapi untuk pertama kalinya, kami membongkar kognisi itu sendiri ke mesin.

Seperti yang terjadi, itu tidak dianggap sebagai bentuk yang baik untuk seorang programmer yang menghargai diri sendiri untuk terlibat dalam debugging senapan. Segera, saya datang untuk melihat bahwa bentuk yang paling produktif dari pengkodean yang dibantu AI mungkin merupakan editorial-seperti bagaimana esai ini terbentuk. Editor saya menugaskan bagian ini dengan beberapa poin penuntun, dan penulis-benar-benar Anda-mengajukan rancangan yang dapat diservis bahwa tidak ada editor yang tidak sadar akan menjalankan apa adanya. (Sebelum “Prompt dan Berdoa,” ada “ditugaskan dan tunggu.”)

Demikian juga, seorang pembuat getaran-yang bertanggung jawab, yaitu-harus mengasumsikan semacam editor. Blok kode yang luas yang diproduksi oleh AI pertama membutuhkan pengeditan struktural, diikuti oleh penyempurnaan tingkat garis. Melalui voli petunjuk-seperti putaran suntingan berturut-turut-editor-coder meminimalkan delta antara visi dan output mereka.

Seringkali, apa yang menurut saya paling berguna tentang alat -alat ini bahkan bukan menulis kode tetapi memahaminya. Ketika saya baru -baru ini harus menavigasi basis kode yang tidak dikenal, saya memintanya untuk menjelaskan aliran dasarnya. AI menghasilkan diagram alur tentang bagaimana komponen -komponen utama bersatu, menyelamatkan saya sepanjang sore dengan spelunking melalui kode.

Saya memiliki dua pikiran tentang seberapa banyak getaran yang bisa dilakukan. Penulis dalam diri saya merayakan bagaimana hal itu dapat merusak jenis keangkuhan tertentu di Lembah Silikon – para insinyur yang memuakkan yang sering ditunjukkan terhadap peran nonteknis – dengan membantu mengaburkan batas yang palsu itu. Tetapi insinyur dalam diri saya melihat bahwa sebagai layanan bibir yang mudah, karena membangun aplikasi yang tidak trivial, tingkat produksi tanpa pengalaman rekayasa perangkat lunak dunia nyata selama bertahun-tahun sangat sulit.

Saya selalu berpikir metafora terbaik untuk basis kode besar adalah kota. Dalam basis kode, ada saluran pipa literal – saluran pipa data, antrian acara, dan broker pesan – dan aliran lalu lintas yang memerlukan perutean yang kompleks. Sama seperti kota dibagi menjadi distrik karena tidak ada orang atau tim yang dapat mengelola semua kompleksitas, demikian juga sistem yang dibagi menjadi satuan seperti modul atau layanan mikro. Beberapa bagian sudah sangat tua sehingga lebih aman untuk tidak menyentuhnya, jangan sampai Anda meledakkan sesuatu – seperti bom yang belum meledak yang masih terkubur di bawah kota -kota Eropa. (Tiga bom era Perang Dunia II dijinakkan Di Cologne, Jerman, baru musim panas ini.)

Jika mengembangkan fitur produk baru seperti membuka lounge maskapai baru, proyek yang lebih terlibat seperti membangun terminal kedua. Dalam hal itu, membangun aplikasi melalui pengkodean getaran seperti membuka toko pop-up di concourse-intinya adalah mandiri dan tidak memerlukan integrasi.

Pengkodean getaran cukup baik untuk program mandiri, tetapi masalah yang paling mirip dalam rekayasa perangkat lunak bukan tentang membangun unit individu tetapi menghubungkannya untuk beroperasi. Adalah satu hal untuk merenovasi satu unit apartemen dan yang lain untuk menghubungkan sistem pemadam kebakaran dan kekuatan darurat di semua lantai sehingga mereka mengaktifkan dalam urutan yang tepat.

Kekhawatiran ini melampaui interior. Pengenalan satu simpul baru ke dalam sistem terdistribusi dapat dengan mudah mengganggu jaringan, seperti halnya keberadaan bangunan baru dapat membentuk kembali lingkungannya: profil aerodinamisnya, bagaimana ia mengubah sinar matahari untuk bangunan tetangga, rute lalu lintas pejalan kaki, dan banyak hal yang tidak berhasil.

Kekhawatiran keamanan seputar pengkodean getaran, menurut perkiraan saya, adalah sesuatu yang menjadi seorang bogeyman.

Saya tidak mengatakan ini adalah beberapa keahlian yang tinggi, melainkan jenis yang diam-diam dan diperoleh dengan susah payah-tidak hanya mengetahui cara mengeksekusi, tetapi mengetahui apa yang harus ditanyakan selanjutnya. Anda dapat membujuk hampir semua jawaban dari AI saat coding getaran, tetapi tantangan sebenarnya adalah mengetahui urutan pertanyaan yang tepat untuk mencapai tempat yang Anda butuhkan. Bahkan jika Anda telah mengawasi renovasi interior, tanpa berdiri di lokasi konstruksi menonton beton dituangkan ke dalam fondasi, Anda tidak dapat benar -benar memahami cara membuat bangunan. Tentu, Anda dapat menggunakan AI untuk menyatukan sesuatu yang terlihat fungsional, tetapi seperti yang dikatakan perangkat lunak: “Jika Anda berpikir arsitektur yang baik itu mahal, cobalah arsitektur yang buruk.”

Jika Anda percaya Linus Torvalds, pencipta Linux, ada juga masalah “selera” dalam perangkat lunak. Arsitektur perangkat lunak yang baik tidak hanya disusun dalam satu pukulan tetapi muncul dari suara mikro yang tak terhitung jumlahnya-dan selera, sesuatu yang tidak bisa dilakukan oleh model. Intuisi semacam itu hanya dapat dikembangkan sebagai akibat dari kerusakan saraf spesifik dari sejumlah peringatan 3 pagi.

Mungkin analogi ini hanya akan berjalan sejauh ini. Beberapa bulan yang lalu, AI dapat beroperasi dengan andal hanya pada satu file. Sekarang, dapat memahami konteks di beberapa folder dan, saat saya menulis ini, di beberapa basis kode. Seolah -olah AI, ditugaskan dengan langkah catur berikutnya, berubah dari melihat papan melalui mata pion tunggal untuk mensurvei seluruh permainan dengan wawasan strategis. Dan tidak seperti selera artistik, yang memiliki parameter yang jauh lebih banyak, “rasa” dalam kode mungkin hanya jumlah pola desain yang dapat diserap oleh AI dari buku perangkat lunak O’Reilly dan bertahun -tahun Berita peretas perseteruan.

Saat aplikasi teh baru -baru ini Snafu mengekspos puluhan ribu lisensi pengemudi penggunanya – kegagalan yang menjadi paduan suara on line komentator dengan cepat disalahkan pada Getaran-coding -Rasanya seperti skeptis getaran yang telah didoakan. Seperti biasa, kita dapat mengandalkan influencer AI pada X untuk menghiasi garis waktu dengan pengambilan brilian mereka, dan pada strain tertentu dari para kritikus teknologi – mereka yang memiliki kebiasaan yang mengeras pengejaran ambulans ritual – untuk secara refleks membuat pengacakan penggunaan AI. Dalam inversi aneh dari peran mereka yang biasa sebagai mencambuk anak laki-laki, insinyur perangkat lunak tiba-tiba diangkat menjadi penjaga keamanan, menguangkan saat ini untuk meninju-coders yang ceroboh yang melanggar domain profesional mereka.

Ketika terungkap bahwa coding getaran kemungkinan Bukan penyebabnyainsiden itu mengungkapkan lebih sedikit tentang coding getaran daripada tentang dorongan abadi kami untuk mengkotomi kecelakaan teknis menjadi underdog dan pengganggu, penipuan dan penipu, korban dan pelaku.

Dengan risiko muncul untuk melegitimasi pedagang AI hype, masalah keamanan di sekitar coding getaran, menurut perkiraan saya, adalah sesuatu dari seorang bogeyman-atau setidaknya efek bersih mungkin non-negatif, karena AI juga dapat membantu kami menulis kode yang lebih aman.

Tentu, kita akan melihat gulungan Blooper dari “App Slop” dan cuplikan kode tidak aman dibagikan secara online, tetapi saya curiga banyak dari kelemahan itu dapat diperbaiki dengan hanya menambahkan “Jalankan audit keamanan untuk permintaan tarik ini” ke daftar periksa. Sudah, alat otomatis menandai kerentanan potensial. Secara pribadi, menggunakan alat -alat ini telah memungkinkan saya menghasilkan tes yang jauh lebih banyak daripada yang biasanya ingin saya tulis.

Lebih lanjut, jika model cukup baik, ketika Anda bertanya, “Hei, saya memerlukan database di mana saya dapat menyimpan lisensi pengemudi,” AI mungkin merespons:

“Tentu, tetapi Anda lupa mempertimbangkan keamanan, Anda idiot. Inilah kode yang mengenkripsi nomor SIM dengan menggunakan AES-256-GCM. Saya juga mengatur sistem manajemen kunci untuk menyimpan dan memutar kunci enkripsi dan mengkonfigurasinya sehingga mendekripsi apa pun memerlukan kematian dua orang. Bahkan jika seseorang berjalan dengan data, mereka masih membutuhkan kematian.

Dalam pekerjaan saya, saya seorang insinyur perangkat lunak senior yang bekerja di backend terutama, pada pembelajaran mesin sesekali, dan di Frontend – jika saya harus – dengan enggan. Di beberapa bagian peran, AI telah membawa rasa mudah yang cukup besar. Tidak ada lagi penguraian API dokumen ketika model dapat memberi tahu saya secara langsung. Tidak ada lagi ritual mempermalukan dari stack overflow moderator yang menganggap pertanyaan saya tidak layak untuk ditanyakan. Sebaliknya, saya sekarang memiliki programmer yang tidak menilai pertanyaan-pertanyaan bodoh karier saya.

Evolusi rekayasa perangkat lunak adalah kisah abstraksi.

Tidak seperti menulis, saya memiliki sedikit keterikatan pada blok kode dan akan dengan mudah membiarkan AI mengedit atau meregenerasi mereka. Tapi saya melindungi kata -kata saya sendiri. Saya tidak menggunakan AI untuk menulis karena saya takut kehilangan saat -saat jarang kepuasan ketika saya berhasil mengatur kata -kata di mana mereka ditahbiskan.

Bagi saya, ini melampaui kesalehan sentimental karena, sebagai penulis yang tidak menulis dalam bahasa ibunya – “Exophonic” adalah istilah mewah – saya tahu seberapa cepat suatu bahasa yang diperoleh dapat terkikis. Saya telah melihat efek korosifnya secara langsung dalam pemrograman. Bahasa pertama yang saya pelajari lagi setelah AI tiba adalah Ruby, dan saya memiliki pemahaman yang lebih lemah tentang poin -poinnya yang lebih baik daripada bahasa lain yang saya gunakan. Bahkan dengan bahasa yang pernah saya kenal dengan baik, saya dapat merasakan kelancaran saya mundur.

David Heinemeier Hansson, pencipta Ruby on Rails, baru -baru ini mengatakan bahwa dia tidak membiarkan AI menulis kode untuknya dan menyatakannya dengan tepat: “Saya benar -benar dapat merasakan kompetensi menguras jari saya.” Beberapa tugas sepele tetapi rutin yang pernah saya lakukan dengan anestesi umum sekarang memberi saya migrain karena memikirkan melakukannya tanpa AI.

Bisakah AI berakibat fatal bagi rekayasa perangkat lunak sebagai profesi? Jika demikian, dunia setidaknya dapat menikmati schadenfreude menonton profesi yang menghancurkan pekerjaan mengotomatiskan dirinya menjadi tidak relevan. Sementara itu, paradoks Jevons – efisiensi yang lebih besar memicu lebih banyak konsumsi – akan menang, meniadakan perolehan produktivitas apa pun dengan volume pekerjaan yang lebih tinggi.

Cara lain untuk melihat ini adalah sebagai perkembangan alami dari pemrograman: evolusi rekayasa perangkat lunak adalah kisah abstraksi, membawa kita lebih jauh dari logam telanjang ke lapisan konseptual yang lebih tinggi. Jalan dari Bahasa Majelis ke Python ke AI, untuk diilustrasikan, seperti Movin G dari memberikan instruksi seperti “Putar tubuh Anda 60 derajat dan pergi 10 kaki,” untuk “Belok kanan di 14th Street,” untuk hanya memberi tahu GPS, “Take Me Home.”

Sebagai seorang programmer dari apa yang nantinya akan dilihat sebagai generasi pra-chatgpt, saya tidak bisa tidak bertanya-tanya apakah sesuatu yang vital telah tertinggal saat kita naik ke tingkat abstraksi berikutnya. Ini bukan hal yang baru – ini adalah siklus yang akrab lagi. Ketika C datang pada tahun 1970 -an, pemrogram perakitan mungkin melihatnya sebagai hilangnya kontrol yang lebih baik. Bahasa seperti Python, pada gilirannya, harus terlihat sangat lambat dan membatasi programmer C.

Oleh karena itu mungkin waktu termudah dalam sejarah untuk menjadi pembuat kode, tetapi mungkin lebih sulit dari sebelumnya untuk tumbuh menjadi insinyur perangkat lunak. Seorang pembuat kode yang baik dapat menulis kode yang kompeten, tetapi seorang pembuat kode yang hebat tahu bagaimana menyelesaikan masalah dengan tidak menulis kode sama sekali. Dan sulit untuk memahami pemahaman fundamental ilmu komputer tanpa sadar tanpa jam asrama yang disiksa menghabiskan waktu, katakanlah, algoritma Dijkstra atau pohon merah-hitam. Jika Anda pernah mencoba mempelajari pemrograman dengan menonton video dan gagal, itu karena satu -satunya cara untuk menginternalisasi adalah dengan mengetiknya sendiri. Anda tidak bisa mencelupkan bola basket dengan menonton gulungan sorotan NBA.

Juri masih keluar tentang apakah pengkodean yang dibantu AI mempercepat pekerjaan sama sekali; setidaknya satu studi yang dipublikasikan dengan baik menyarankan itu mungkin lebih lambat. Saya percaya itu. Tetapi saya juga percaya bahwa agar AI menjadi eksponen sejati dalam persamaan produktivitas, kita membutuhkan keterampilan yang akan saya sebut semacam pemutus sirkuit mental: kemampuan untuk memperhatikan ketika Anda telah menyelinap ke dalam autopilot yang tidak ada artinya dan melompat keluar dari itu. Kuncinya adalah menggunakan AI cukup untuk melewati hambatan dan kemudian beralih kembali untuk melatih materi abu -abu Anda lagi. Kalau tidak, Anda akan kehilangan kernel pemahaman di balik tujuan tugas.

Pada hari -hari yang optimis, saya suka berpikir bahwa sebagai atrofi kemampuan tertentu, kami akan beradaptasi dan mengembangkan yang baru, seperti yang selalu kami lakukan. Tapi sering ada pesimisme yang merayap yang kali ini berbeda. Kami telah menggunakan mesin untuk menghilangkan beban kognisi, tetapi untuk pertama kalinya, kami membongkar kognisi itu sendiri ke mesin. Saya tidak tahu ke arah mana hal -hal akan berubah, tetapi saya tahu selalu ada keangkuhan tertentu untuk meyakini bahwa generasi sendiri adalah yang terakhir untuk mengetahui bagaimana caranya Sebenarnya memikirkan.

Apa pun keuntungan yang dibuat, ada rasa kehilangan yang nyata dalam semua ini. Di tahun 2023 -nya New Yorker esai “Seorang pembuat kode mempertimbangkan hari -hari berkurang dari kerajinan“James Somers memakukan perasaan ini setelah menemukan dirinya” ingin menulis pidato “untuk pengkodean sebagai” menjadi mungkin untuk mencapai banyak tujuan yang sama tanpa pemikiran dan tanpa sepengetahuan. ” Sudah kurang dari dua tahun sejak esai itu diterbitkan, dan sentimen yang diartikulasikannya hanya tumbuh lebih resonan.

Untuk satu, saya merasa kurang termotivasi untuk mempelajari bahasa pemrograman baru untuk bersenang -senang. Kesenangan mempelajari sintaks baru dan cap mendapatkan kelancaran dalam bahasa niche seperti Haskell atau Lisp telah berkurang, sekarang AI dapat memuntahkan kode dalam bahasa apa pun. Saya bertanya-tanya apakah motivasi untuk belajar bahasa asing akan terkikis jika aplikasi translasi otomatis menjadi ada di mana-mana dan tanpa cacat.

Insinyur perangkat lunak senang mengeluh tentang debugging, tetapi di bawah gerutuan, selalu ada kebanggaan yang tenang dalam berbagi cerita perang dan solusi pintar mereka. Dengan AI, apakah akan ada ruang untuk ShopTalk semacam itu?

Ada dua jenis insinyur perangkat lunak: perencana kota dan miniatur. Perencana kota adalah tipe “gambaran besar”, lebih fokus pada sistem yang beroperasi pada skala daripada dengan keributan atas detail kode yang halus – pada kenyataannya, mereka mungkin jarang menulis kode sendiri. Miniaturists membawa perawatan horologis untuk jam tangan yang bagus untuk cara kerja kode dalam. Modalitas pengkodean baru ini mungkin merupakan keuntungan bagi perencana kota, tetapi membuat ladang tidak ramah bagi miniatur.

Saya pernah mendapat hak istimewa untuk melihat doyen yang hebat dalam aksi. Di perguruan tinggi, saya mengikuti kelas dengan Brian W. Kernighan, legenda hidup yang dikreditkan dengan membuat “halo, dunia” menjadi tradisi pemrograman dan anggota tim Bell Labs asli di belakang UNIX. Tepat di depan mata kita, dia akan hidup-kode di terminal telanjang, menggunakan editor kode Spartan yang disebut VI-bukan Vim, ingatlah-untuk membangun parser untuk pohon sintaks yang kompleks. Dia tidak hanya tidak membutuhkan alat modern seperti IDES, dia juga menjawab email menggunakan klien email yang berjalan di terminal. Ada estetika tertentu untuk itu.

Tak lama, pemrograman dapat dilihat sebagai campuran dari gerakan mengetik dan mantra yang dulunya memenuhi syarat sebagai kerajinan. Sama seperti kita melihat dengan kagum pada geng Bell Labs lama, karya yang tidak berkepala dari masalah konkurensi secara manual atau menulis kode server web dari awal dapat dianggap heroik. Seringkali, kita mungkin masih melihat romantika lama yang melekat pada setiap penekanan tombol – suatu tindakan yang bermartabat, ahli, dan tanpa harapan.

56 Komentar

Ikuti topik dan penulis Dari cerita ini untuk melihat lebih banyak seperti ini di umpan beranda pribadi Anda dan untuk menerima pembaruan email.

Exit mobile version