Risiko Kehilangan Kebajikan Kemalasan
(bcantrill.dtrace.org)- Kemalasan dalam pemrograman bukan sekadar kemalasan biasa, melainkan didefinisikan sebagai keutamaan intelektual yang mengejar abstraksi dan kesederhanaan
- Kemalasan sejati adalah proses memikirkan masalah secara mendalam untuk menghemat waktu di masa depan, yang juga memberikan manfaat bagi pengembang di generasi berikutnya
- Abstraksi tingkat tinggi modern dan budaya ‘brogrammer’ membuat keutamaan ini lenyap, digantikan oleh kemalasan semu
- LLM memperparah kecenderungan ini dan berperan sebagai alat produksi berlebihan yang membuat orang berpikir kuantitas kode sebagai nilai
- Kita harus mempertahankan kemalasan yang berkeutamaan yang berakar pada waktu manusia yang terbatas, dan memanfaatkan LLM agar membantu membangun desain sistem yang sederhana dan berkelanjutan
Kemalasan sebagai Kebajikan bagi Programmer dan Risiko Kehilangannya
- Larry Wall menekankan dalam 『Programming Perl』 bahwa dari tiga kebajikan programmer, yaitu kemalasan (laziness), ketergesaan (impatience), dan kesombongan (hubris), kemalasan memiliki makna terdalam
- Kemalasan bukanlah bentuk disinsentif diri, melainkan konsep yang memuat kebutuhan dan estetika abstraksi
- Kemalasan adalah penggerak untuk membuat sistem sesederhana mungkin, serta memungkinkan lebih banyak hal dapat dilakukan dengan lebih mudah melalui abstraksi yang kuat
- Kemalasan sejati adalah proses ‘hammock-driven development’ yang dari luar tampak seperti beristirahat, tetapi sebenarnya melakukan kerja intelektual untuk mempertimbangkan masalah secara mendalam dan menghemat waktu di masa depan
- Jika abstraksi yang tepat diciptakan, itu menguntungkan tidak hanya pengembang itu sendiri, tetapi juga pengembang generasi berikutnya
- Kemalasan seperti ini membuat perangkat lunak lebih mudah ditulis dan sistem lebih mudah disusun
-
Era Hilangnya Kebajikan Kemalasan
- Selama dua puluh tahun terakhir, lingkup pembuatan perangkat lunak meluas, sehingga makin banyak orang yang mengaku bukan programmer
- Bagi mereka, kemalasan sebagai kebajikan kehilangan makna aslinya
- Peningkatan produktivitas yang dibawa oleh abstraksi tingkat tinggi modern justru mendorong kemalasan semu (false industriousness)
- Ini mewujud sebagai budaya ‘brogrammer’ dan ‘hustle porn’, menggantikan kemalasan yang ironis dengan perilaku menghasilkan kode secara tak terbatas
- Selama dua puluh tahun terakhir, lingkup pembuatan perangkat lunak meluas, sehingga makin banyak orang yang mengaku bukan programmer
-
Kelebihan Baru yang Dibawa LLM
- Kedatangan LLM (large language model) memperkuat kecenderungan ini
- LLM berfungsi sebagai alat yang menggeser sikap kreatif manusia, menjadi steroid budaya ‘brogrammer’
- Sebagai contoh, Garry Tan menyebut menulis 37.000 baris kode dalam sehari dengan bantuan LLM
- Sebagai perbandingan, basis kode penuh DTrace berada di kisaran 60.000 baris
- Namun pendekatan ini adalah bentuk kemalasan yang tidak berlandaskan kebajikan dan menampakkan kesalahan menilai nilai perangkat lunak berdasarkan banyaknya baris kode
- Kedatangan LLM (large language model) memperkuat kecenderungan ini
-
Keterbatasan LLM dan Nilai Kemalasan Manusia
- Karena biaya kerja LLM adalah 0, ia membentuk sistem yang tak terbatas rumit tanpa mempertimbangkan penghematan waktu di masa depan
- Akibatnya, sistem menjadi lebih besar dan lebih kompleks, memuaskan metrik-metrik berbasis egosentris tetapi merusak kualitas substansial
- Kemalasan manusia lahir dari keterbatasan waktu, yang memaksa adanya abstraksi yang jelas dan desain sistem yang disederhanakan
- Teknik rekayasa terbaik selalu lahir dari kendala, dan keterbatasan waktu manusia membatasi beban kognitif sehingga mendorong pencarian kesederhanaan
- LLM tidak memiliki keterbatasan itu sehingga tidak termotivasi untuk mengejar kesederhanaan dengan sendirinya
- Karena biaya kerja LLM adalah 0, ia membentuk sistem yang tak terbatas rumit tanpa mempertimbangkan penghematan waktu di masa depan
-
Memanfaatkan LLM sebagai Alat
- LLM tetap dapat memainkan peran penting sebagai alat yang kuat dalam rekayasa perangkat lunak
- Menurut panduan penggunaan LLM milik Oxide, LLM hanyalah alat, dan tidak dapat menggantikan kebajikan manusia
- LLM dapat dimanfaatkan untuk menyelesaikan masalah kemalasan tidak produktif seperti technical debt dan memperkuat ketatnya rekayasa perangkat lunak
- Namun, tujuannya haruslah selalu mengarah ke ‘kemalasan yang berkeutamaan’
- Artinya, membuat sistem yang lebih sederhana dan lebih kuat, meninggalkan hasil yang bermanfaat bagi pengembang generasi berikutnya
- LLM tetap dapat memainkan peran penting sebagai alat yang kuat dalam rekayasa perangkat lunak
1 komentar
Komentar Hacker News
Di bidang saya, Computational Fluid Dynamics, juga ada orang yang pamer banyaknya test seperti memamerkan LOC
Tapi kalau dilihat lebih dalam, test-test itu tidak terlalu ketat dan jauh lebih longgar daripada test yang saya tulis manual
1 juta test sederhana tidak berarti apa-apa bila tidak mencakup bagian inti kode
dan untuk mencegah Claude "memperbaiki" test saat kodenya gagal, saya selalu memeriksa perubahan test dengan
git diffJika test dikelola dengan disiplin, Claude bisa mengimplementasikan algoritma dari paper yang sulit dengan baik sehingga hemat waktu, tapi ini butuh banyak pengawasan
model mengeksploitasi fungsi reward dari test agar terdengar menang
Mungkin pola seperti ini juga sudah tersimpan dalam data pra-latihan RL
Muncul ratusan test tidak berguna seperti
assert(1==1)Karena itu perlu ada daftar larangan terpisah untuk test seperti ini
Setelah 30 tahun coding langsung, saya kini beralih penuh ke AI coding, dan saya merasa aneh ketika orang mengklaim LOC atau fitur dari kode yang dihasilkan AI sebagai karya sendiri
Pamer bahwa mengoding ratusan ribu baris sehari pada akhirnya tidak lebih dari beberapa baris prompt, kan?
Perubahan yang saya setujui sendiri bisa diakui kontribusinya sampai batas tertentu, tetapi untuk aplikasi vibe-coded penuh saya hampir tidak ikut campur sama sekali
Saya berada di tengah-tengah — saya tidak meninjau semua kode yang dibuat AI, tetapi saya mengarahkan desain arsitektur dan arah refactoring
hasil akhirnya mirip dengan saat saya membangunnya sendiri, hanya jauh lebih cepat
Karena Meta memakai Claude, Anthropic tentu senang
karena kini implementasi, testing, dan maintenance semuanya ditangani agen
LoC menurut saya hanya menjadi indikator seberapa jauh agen bisa mendorong kebutuhan
review kritis manusia tetap bisa disuntikkan sebagai feedback
Ungkapan gunakan lebih banyak abstraksi mungkin benar dulu, tapi sekarang justru sebaliknya menurut saya
Saya suka filosofi WET (Write Everything Twice) — tulis dua kali, baru pertimbangkan abstraksi di kali ketiga
lihat wiki
inovasi seperti sistem operasi, RDBMS, orkestrasi cloud adalah contohnya
Tapi mayoritas kode hanyalah logika bisnis sederhana, jadi abstraksi justru jadi penghalang
Karena itu saya pegang prinsip “jangan buat platform sebelum tiga kasus pemakaian nyata”
saat mencoba abstraksi di kali ketiga, waspadalah pada Second-System Effect — rasa percaya diri berlebihan melahirkan sistem yang kompleks
Saya membagikan kutipan terkenal Jenderal Jerman Kurt von Hammerstein-Equord
Orang yang cerdas dan rajin adalah perwira staf, orang yang bodoh dan malas untuk pekerjaan rutin, orang cerdas dan malas adalah pemimpin,
dan orang bodoh dan rajin adalah berbahaya sehingga jangan pernah memberinya tanggung jawab
Memamerkan menulis 200 ribu LOC dengan LLM juga bodoh, tapi mengejek “kode ini bodoh” saat melihatnya juga sama salahnya
Pada akhirnya yang penting bukan output kode, melainkan penciptaan nilai
Saya tidak tahu apakah Garry Tan benar-benar menciptakan sesuatu yang bernilai
Melihat Skandal Horizon IT, kode yang buruk memang bisa menimbulkan kerugian nyata
Menurut ulasan Gregorein—pengembang Polandia yang mengaudit proyek Garry—aplikasi itu berantakan dengan test harness, aplikasi Hello World, file logo yang duplikat, dan lain-lain
Saya khawatir ini memperluas area serangan keamanan
Dia tidak peduli LoC, tapi memposting konten promosi AI
AI memang menurunkan biaya development dan operasional, tapi menaikkan biaya tersembunyi seperti risiko keamanan dan hukum
Para pendukung AI hanya menekankan sisi pertama
Itulah yang harus dibuktikan oleh vibe coder
Saya tetap berpikir memamer lewat LOC tetap bodoh
Seperti pertumbuhan berbasis bahan bakar fosil, nilai jangka pendek bisa memicu biaya jangka panjang
Beberapa PR terakhir yang saya lihat sering menunjukkan LLM memberi solusi yang salah
Misalnya, alih-alih memakai parser JSON yang sudah ada, ia membuat parser sendiri dari nol
Manusia pasti akan berpikir “ini terlalu tidak efisien”, tapi karena LLM tidak mengenal malas, ia terus bekerja keras ke jalur yang salah
Bahkan grep sekali sudah cukup untuk tahu
formatTimestampada tiga, tetapi ia mengabaikannyaSaya setuju bahwa LLM itu tidak malas
Tapi saya belum tahu apakah ini masalah yang akan menetap atau akan diperbaiki pada upgrade model berikutnya atau di pipeline CICD
Saya sering mem-prompt “setelah selesai, cek apakah ada bug atau bagian yang perlu direfaktor”,
dan mungkin di kemudian hari akan muncul tahap yang otomatis menganalisis commit terbaru untuk memberi usulan penyederhanaan
itulah sebabnya susah menentukan kondisi berhenti
kalau Anda hanya bilang “tambahkan”, dia akan menambahkan; jika Anda bilang “kurangi”, dia akan memangkas LOC
Menyerahkan pekerjaan besar sekaligus melewatkan review membuat code slop cepat menumpuk
LLM cenderung membuat SPA penuh alih-alih program output konsol sederhana
dan juga tidak bisa menjaga file
spec.mdtetap ringkasKetika diminta “perbarui dokumen ini dan sederhanakan bagian sekitarnya”, justru jadi lebih rumit
akhirnya dokumen yang layak dibaca tetap harus diringkas manusia
Menyunting output LLM itu menyiksa, dan menulis langsung sendiri membantu mempertahankan pemahaman
Ini saatnya mengajarkan pelajaran klasik pengembangan perangkat lunak ke LLM dan vibe coder
Seperti kisah Negative 2000 Lines of Code, sering kali mengurangi jumlah kode adalah kemajuan sejati
Terkadang saya bertanya-tanya betapa menyenangkannya bekerja dengan gaya kepemimpinan seperti ini
Betul-benar beruntung bisa kerja dengan pemimpin yang benar-benar paham