Membereskan Jejak Para Pengembang Rockstar AI
(codingwithjesse.com)- Di masa lalu, masalah codebase sulit dipahami yang ditinggalkan oleh para “pengembang rockstar” kini berkembang menjadi beban pemeliharaan bagi seluruh tim seiring meluasnya kode hasil generasi LLM
- Pengembang rockstar cepat mengadopsi teknologi baru, paradigma baru, dan arsitektur baru, serta menyelesaikan pekerjaan sulit dengan cepat, tetapi kurang peduli menulis kode yang bisa dipahami dan dikerjakan bersama oleh orang lain
- Agen LLM dapat membuat puluhan ribu baris kode dalam waktu singkat tanpa mengingat pekerjaan sebelumnya, dan tidak terlalu memedulikan apakah hasilnya selaras dengan keseluruhan sistem atau menjadi lebih mudah dipahami
- Semakin banyak kode yang dihasilkan, kompleksitas sistem dapat meningkat tajam, dan ini bisa memicu alur kerja yang kembali bergantung pada LLM hanya untuk memahaminya
- Untuk membangun perangkat lunak yang tahan lama, LLM perlu dibatasi pada pembuatan potongan kode kecil, manusia harus memimpin desain, dan arsitektur perlu disederhanakan agar sesuai dengan kompleksitas masalah
Struktur yang Ditinggalkan Pengembang Rockstar
- Pengembang rockstar bergabung ke tim lalu mengajukan ide-ide kuat tentang teknologi baru, paradigma baru, dan arsitektur baru
- Mereka menulis ulang sebagian besar arsitektur inti perusahaan, serta memperkenalkan proses build, alat, dan bahasa baru
- Mereka menolak banyak pull request dan menaikkan standar yang dituntut dari rekan tim, sementara orang lain tidak bisa menunjukkan apakah mereka benar-benar memahami kode tersebut
- Pekerjaan paling sulit diberikan kepada pengembang rockstar, dan ia menyelesaikannya lebih cepat daripada siapa pun
- Anggota tim lain bergerak lebih lambat karena harus mempelajari library baru dan menyesuaikan diri dengan cara kerja pengembang rockstar
- Beberapa tahun kemudian, pengembang rockstar pergi dari tim karena menginginkan proyek yang lebih besar dan lebih sulit di perusahaan lain
Menghadapi Dampaknya
- Anggota tim yang tersisa mengambil alih proyek milik pengembang rockstar dan menghadapi situasi yang terasa sangat membingungkan di dalam kode
- Aliran data sulit diikuti, sampai terasa seolah-olah seseorang sedang berusaha menutupi sebuah pembunuhan
- Mereka mulai dari memperbaiki bug sederhana, tetapi hanya untuk menjalankan kode di laptop saja butuh seminggu
- Separuh kode ditulis dalam bahasa yang tidak mereka pahami, dan separuh lainnya menggunakan library yang belum pernah mereka dengar
- Mereka memberi tahu atasan bahwa kode itu perlu ditulis ulang, tetapi usulan itu ditolak hanya karena kode tersebut ditulis oleh pengembang rockstar
- Saat tersesat dalam kode yang berantakan, mereka membayangkan pergi sambil melihat-lihat lowongan kerja
Membersihkan Peninggalan Rockstar
- Banyak tim dan agensi perlu merapikan codebase yang ditinggalkan oleh pengembang rockstar seperti ini
- Proses memahami dan menyelamatkan codebase yang kompleks diibaratkan seperti mengurai rangkaian lampu kusut agar bisa dipakai lagi
- Para pengembang rockstar suka menulis kode, belajar, dan memakai paradigma baru, serta mendorong kemampuan mereka sampai batasnya
- Mereka berusaha menulis kode secerdas mungkin dan fokus bergerak secepat mungkin
- Menulis kode yang bisa dikerjakan bersama orang lain menjadi prioritas paling rendah bagi pengembang rockstar
Munculnya Kecerdasan Buatan
- Dalam beberapa tahun terakhir, banyak tim mengalami situasi seolah-olah kewalahan oleh pasukan pengembang rockstar
- Setiap kali seseorang memulai chat baru, muncul risiko seakan-akan menambahkan satu lagi pengembang rockstar ke tim
- Agen tidak mengingat apa yang dikerjakannya kemarin, tetapi dapat menghasilkan puluhan ribu baris kode dalam hitungan menit
- Agen mengejar penyelesaian pekerjaan dengan kecepatan yang secara manusiawi mustahil
- Mereka tidak peduli apakah kode yang dihasilkan cocok dengan kode lain dalam sistem, atau apakah sistem menjadi lebih mudah dipahami
- AI memiliki kotak peralatan praktik terbaik yang mungkin tidak sesuai dengan konteks
- Bahkan ketika kompleksitas sudah lebih besar daripada manfaatnya, AI tetap bersikeras pada pengamanan berlebihan ala “belt and suspenders”
- Saat diminta melakukan code review, AI menghasilkan daftar panjang perbaikan yang banyak poinnya sulit disetujui
- Makin banyak orang merasa bahwa tanpa memakai LLM, mereka akan tertinggal selamanya
- Penulis menilai bahwa membiarkan LLM menulis semua kode justru pada akhirnya akan membuat kita tertinggal
Membereskan Jejak Ratusan Rockstar AI
- Membersihkan tumpukan kode hasil generasi yang berantakan bahkan tidak semenikmati merapikan kode dari satu pengembang rockstar
- Setidaknya, pengembang rockstar masih memiliki semacam niat desain dan usaha untuk melakukan yang terbaik
- Tumpukan kode berantakan yang dibuat lewat vibe coding bukan hasil karya satu pengembang buatan saja
- Itu menjadi codebase yang dibentuk dari banyak chat dan banyak konteks, masing-masing menghasilkan satu fitur atau satu perbaikan bug
- Ini mirip dengan codebase yang ditulis oleh ratusan pengembang rockstar yang berbeda-beda
- Dalam beberapa kasus, utang teknis menjadi terlalu besar hingga mencapai tingkat yang tidak mungkin dilunasi
Membangun Perangkat Lunak yang Tahan Lama
- Ada berbagai cara menggunakan LLM agar tidak bertindak seperti pengembang rockstar
- Manusia dapat memimpin rekayasa, dan LLM diarahkan untuk hanya menghasilkan potongan kode kecil setiap kali
- Kita harus memastikan perangkat lunak ditulis dengan cara yang mudah dipahami dan dikerjakan oleh semua anggota tim
- Jika LLM tersesat tanpa memahami apa yang dilakukannya dan mengapa, kita perlu memperlambat laju
- Bergerak lebih lambat demi menjamin kualitas perangkat lunak yang dihasilkan itu tidak masalah
- Tidak masalah untuk terus menyederhanakan arsitektur sampai sesuai dengan kompleksitas masalah, sambil mencegah overengineering
- Terkadang, tidak masalah membiarkan LLM tetap berada di kotak peralatan dan menulis kode sendiri secara langsung
- Jiwa craftsmanship akan selalu berada di tangan manusia, dan itu adalah ranah yang tidak bisa dialihdayakan ke mesin
2 komentar
Komentar Hacker News
Kalimat terakhir bahwa keahlian craftsmanship akan selalu tetap berada di tangan manusia dan tidak akan pernah bisa dialihdayakan sepenuhnya ke mesin terasa agak mengkhawatirkan.
Di industri lain pun craftsmanship tidak mati, tetapi tersingkir oleh alternatif yang jauh lebih murah dan mudah didapat. Sepatu kulit buatan tangan masih bisa dibeli, tetapi hanya sedikit orang yang mau membayar lebih dari $1000, dan lukisan yang dikerjakan berminggu-minggu juga masih bisa dibeli, tetapi kebanyakan orang membeli hiasan dinding dan pernak-pernik di HomeGoods.
Perbedaan utamanya adalah asumsi bahwa sesuatu itu sekali pakai, dan sayangnya perangkat lunak juga makin diperlakukan seperti produk lain yang “sekali pakai”. Untuk aplikasi hitung mundur yang sederhana, mungkin tidak masalah jika dibuang, tetapi perangkat lunak yang menopang proses kerja jangka panjang tidak boleh diperlakukan seperti itu.
Jika fokusnya pada craftsmanship dalam perangkat lunak, masalahnya bisa terlihat seperti “sesuatu yang saya butuhkan” versus “sesuatu yang bergaya butik, mahal, dan tidak perlu”. Padahal sebenarnya ini harus dipahami sebagai “sesuatu yang dapat dipelihara dan andal” versus “sesuatu yang boleh dibuang”.
Terlepas dari apakah tren ini menguntungkan penyedia model besar seperti OpenAI atau Anthropic, itu bukan inti yang ingin disampaikan di sini.
Meja murah yang datang dalam kotak pipih dan saya rakit sendiri dengan obeng juga diproduksi massal di pabrik, tetapi desainnya bisa jadi memuat jauh lebih banyak craftsmanship dari para ahli dibanding barang kustom. Strukturnya adalah biaya desain awal yang tinggi, lalu produksi massal dengan biaya marjinal rendah.
Perangkat lunak pada dasarnya sudah seperti itu sejak awal. Saat saya mengunduh Firefox, bukan seorang pengrajin yang membuat browser web khusus untuk saya; yang terjadi adalah server CDN di sebuah pusat data menyalin byte dari cache.
Yang diancam AI adalah penggantian craftsmanship berbasis investasi awal yang dalam industri lain belum pernah tergantikan secara besar-besaran. Yang lebih berhasil digantikan AI justru perangkat lunak “kerajinan tangan” kelas bawah, wilayah yang sampai sekarang praktis tidak ada karena secara ekonomi terlalu tidak layak.
Karena itu ada daya ungkit yang jauh lebih besar untuk investasi kualitas.
Saya juga sulit setuju bahwa perangkat lunak itu sekali pakai dalam arti yang sama. Jika masalahnya sementara, kodenya bisa dibuang dan dibuat ulang saat masalah lain muncul. Tetapi jika masalahnya berkelanjutan, kodenya akan tetap ada.
Sekrup dulunya adalah barang langka yang dibuat khusus, dan membuat satu sekrup yang bagus membutuhkan waktu dan upaya yang luar biasa besar. Bahkan apa yang sekarang kita sebut machine screw hanya bisa dibuat oleh orang yang sangat terampil dengan kerja yang amat berat.
Namun mesin bisa memindahkan craftsmanship. Jika Anda membuat satu sekrup yang benar-benar bagus, mesin dapat mentransfer kualitas sekrup itu ke banyak sekrup baru.
Di zaman modern, hampir semua jenis dan kualitas sekrup telah menjadi barang habis pakai yang nyaris setara, dan sekrup yang dulu mungkin harus dipahat berhari-hari atau berminggu-minggu dengan tangan kini dibuat miliaran jumlahnya.
Saya melihat AI seperti bubut tanpa leadscrew. Pada awalnya kita tetap harus membuat sekrup dengan tangan, lalu setelah itu kita bisa memindahkan kualitas yang mampu kita hasilkan ke sekrup-sekrup baru sebanyak yang kita mau. Jika kita bisa membuat sekrup yang lebih baik, kita bisa memasukkannya ke bubut dan membuat lebih banyak sekrup yang lebih baik. Tetapi pada dasarnya tetap ada batas kualitas sekrup yang bisa saya buat sendiri. Jika yang bisa saya buat hanya sesuatu yang bengkok, bergelombang, dan berantakan, itulah juga yang akan keluar dari mesin.
Pengembang perangkat lunak menciptakan kekayaan intelektual yang unik, bukan memproduksi unit perangkat lunak. Ini lebih mirip penulis buku atau musisi.
Dalam perangkat lunak tidak ada padanan untuk manufaktur per unit. Yang ada hanya menyalin dan memindahkan bit.
Jadi, “craftsmanship” dalam konteks perangkat lunak berarti seberapa besar perhatian diberikan untuk merancang sesuatu yang bagus. Selama kita belum sampai pada titik di mana kualitas perangkat lunak yang kita pakai tidak lagi penting, ini tidak akan hilang, dan saat ini belum ada tanda-tanda kita bergerak ke arah itu.
Perbandingan yang lebih tepat mungkin adalah insinyur yang membuat dan memelihara peralatan manufaktur di pabrik sepatu. Memang satu tingkat lebih jauh dari konsumen, tetapi craftsmanship jelas tetap ada di sana.
Saya suka pekerjaan memperbaiki kode AI atau kode hasil outsourcing. Minggu lalu saya tahu ada klien yang mencoba membuat alat internal untuk departemennya dengan vibe coding, dan hasilnya adalah sampah Next.js raksasa yang butuh 10GB memori hanya untuk kompilasi, punya ribuan error lint, dan bahkan log pengembangan yang berisik ikut masuk ke Git.
Sekarang kami yang harus membereskannya, jadi kejadian seperti ini praktis adalah pekerjaan gratis senilai 10.000 sampai 50.000 euro yang terus berulang. Kalau tahu apa yang dilakukan, ini sangat mudah; kalau tidak, mustahil. Silakan bawa lebih banyak lagi.
Saya bekerja di bidang respons insiden untuk UKM, dan beberapa tahun terakhir beban kerjanya meningkat sampai sulit ditangani, sementara rekening bank terasa seperti tumpukan emas naga.
Saya selalu berpendapat bahwa keamanan harus diintegrasikan dan direncanakan sejak awal; saya sama sekali tidak ingin melihat insiden pelanggaran.
Tapi fakta bahwa orang-orang dengan keahlian yang samar-samar kini bisa memuntahkan aplikasi dalam satu jam benar-benar menjadi durian runtuh bagi orang seperti saya.
Pola pikir seperti ini bisa dilihat sebagai mesin slot manusia tempat orang terus memasukkan uang.
Saya ingin tahu apakah para klien datang sejak awal untuk meminta bantuan membawa proyek ke lingkungan produksi, atau apakah mereka menjadikan itu pilihan terakhir setelah pendekatan AI mereka gagal total.
Saya juga ingin tahu apakah ada pola umum bagaimana proyek-proyek seperti ini runtuh, atau apakah kegagalannya biasanya lebih halus.
Dalam hidup, aku pernah bertemu beberapa orang yang benar-benar layak disebut luar biasa pintar. Tipe orang yang bikin kita berpikir, “Gimana caranya bisa sepintar ini?”
Ada dua hal yang sering terlihat pada orang yang sangat pintar, dan biasanya keduanya saling eksklusif. Yang pertama, mereka tidak sadar seberapa pintarnya diri mereka. Bagi mereka, hal itu sederhana, atau itu topik yang mereka kuasai, jadi mereka berasumsi siapa pun yang punya gelar ilmu komputer pasti juga tahu, ingat, dan paham. Aku pernah melihat teman-teman yang lancar membahas matematika kriptografi lalu merasa, “Aku memang lulus mata kuliah itu, tapi aku tidak bisa bilang benar-benar memahami topik yang barusan kamu jelaskan”
Yang kedua, ada orang-orang yang nyaris terus-menerus sadar, sampai terasa menyakitkan, bahwa mereka lebih pintar daripada kebanyakan orang di sekitar mereka. Sebagian jadi bersikap jahat, sebagian lagi hanya lelah dikelilingi orang-orang yang relatif “bodoh”. Aku agak bisa berempati dengan yang kedua ini. Bayangkan hidup dengan segala sesuatu terasa jelas, gamblang, dan mudah diselesaikan, lalu harus melihat umat manusia terus mengulang pilihan-pilihan bodoh padahal jawabannya sudah diketahui sejak lama
Melihat orang panik ke sana kemari, atau melakukan X padahal jelas hasil buruk -Y akan keluar kalau melakukan X, rasanya bikin gila. Kebanyakan dari kami hanya belajar untuk tidak mengatakannya keras-keras
Dalam hubungan keluarga dekat, ini terasa sangat tidak sehat. Aku merasa melihat terlalu banyak sampai rasanya bisa membunuh orang dengan omelan
Tapi tak satu pun dari mereka adalah developer 10x yang menumpuk kekacauan besar hingga tim dan aku harus membereskannya selama berbulan-bulan
Sesulit apa pun berusaha, tetap sulit menjalin hubungan dengan kebanyakan orang, dan mereka juga sangat sulit memahami kita. Perbedaan pengalaman hidupnya sangat besar, dan sering kali sulit dijembatani
Mungkin tidak semua developer bisa menghasilkan output yang sama, tapi siapa pun bisa menjadi lebih cerdas dengan caranya sendiri jika memutuskan untuk terus berpikir melampaui rata-rata budaya yang ada
Kebanyakan orang tidak menyadari bahwa mereka bisa melakukan itu
Dua kalimat ini sangat terasa buatku
“Mengikuti aliran data terlalu sulit sampai rasanya seperti ada seseorang yang sedang berusaha menutupi pembunuhan”
“Butuh waktu seminggu hanya untuk menjalankan kode itu di laptop”
Aku selalu merasa cuma aku yang kesulitan memahami aliran data atau menyiapkan environment development yang layak. Sindrom penipu dan kadang lingkungan beracun yang mendorong “kecepatan” juga tidak membantu
Senang rasanya tahu ternyata bukan cuma aku
Claude Code di CLI membuat pekerjaan menjalankan aplikasi dan men-debug dependensi acak atau masalah terkait Docker jadi jauh lebih mudah dibanding dulu. Dulu aku harus mempelajari arsitekturnya sambil sekaligus memperbaiki hal-hal yang tidak jalan di mesinku
Pada kode AI, ini lebih parah lagi. Karena saat itu orang cuma menghasilkan sesuatu yang tampak masuk akal
Aku agak iri pada orang-orang yang harus membereskan peninggalan orang lain. Setidaknya rasanya seperti memecahkan teka-teki
Pekerjaanku sekarang benar-benar membosankan. Tugasnya cukup sederhana sampai junior pun bisa melakukannya, tapi entah kenapa tetap butuh developer level menengah. Bukan berarti aku menganggap diriku terlalu bagus untuk pekerjaan ini, atau bahwa developer level menengah tidak seharusnya mengerjakan hal seperti ini. Hanya saja aku tidak bisa memaksa diriku untuk peduli pada kode yang dibuat perusahaan ini. Kodenya tua, berdebu, dan bahkan tidak dipakai oleh orang penting. Pelanggannya memakai alat ini hanya karena dulu pernah membelinya, dan mereka tidak cukup peduli untuk menggantinya karena alat ini memang tidak menarik
Aku dijanjikan bahwa pekerjaan yang lebih sesuai dengan pengalamanku akan segera datang, tapi rasanya pelanggan seperti itu tidak akan datang ke perusahaan yang mandek seperti ini
Tidak mengherankan kalau perusahaan ini kehilangan pelanggan dan karyawan. Tapi aku harus membayar cicilan rumah. Hari ini aku diberi tahu bahwa kontrakku mungkin tidak akan diperpanjang, dan rasanya itu sama saja dengan diancam agar menunjukkan lebih banyak rasa memiliki dan mengerjakan lebih banyak hal dengan gaji yang sama
Sayangnya aku memang harus bertahan sampai menemukan posisi baru yang benar-benar menarik. Aku juga tidak butuh banyak uang dan sama sekali tidak peduli pada hal seperti “pertumbuhan”. Aku cuma butuh cukup untuk bertahan hidup
Mungkin komentar ini jadi sangat tidak relevan, maaf. Aku tidak punya tempat lain untuk meluapkannya
Aku di level L63, tapi pekerjaan yang kulakukan sebenarnya masih bisa dikerjakan oleh L60~L61, dan aku sering merasa seperti berada di salah satu Bullshit Jobs yang dibicarakan David Graeber. Kompensasinya memang besar, tapi setelah saham bonus masukku habis, aku sadar aku cuma bertahan di pekerjaan itu demi stabilitas
Rasanya seperti menjadi salah satu engineer yang berjemur di teras kantor Hooli sambil menunggu stock vesting. Aku sudah 9 tahun berkarier, dan itu tidak terasa seperti pilihan terbaik untuk karierku saat ini
Bedanya, aku tidak punya kewajiban finansial besar, jadi keputusannya jauh lebih mudah
Produk-produk sampah buatan perusahaan sampah hidup dari kemalasan dan ketiadaan selera kebanyakan orang, lalu para marketer memonetisasinya
Sekarang malah jadi lebih buruk karena seluruh bidang ini sedang mengalami LLM-isasi, diperkuat 100 kali lipat. Ini membuat kode jadi mustahil dipelihara, dan yang lebih parah, membuat kita semua jadi lebih bodoh
Aku sungguh berharap kita tidak pernah menemukan ini
Aku penasaran apakah maksudnya sekadar diminta lembur dan mengerjakan tugas-tugas tidak penting, atau benar-benar ada kesempatan untuk ngoding lebih banyak, atau malah ada ekspektasi mendadak untuk membuktikan bahwa kamu lebih bernilai
Bukan mau meremehkan apa yang kamu alami. Kalau yang dimaksud itu yang terakhir, aku penasaran apakah sebenarnya masih ada sesuatu yang bisa dicoba
Beberapa bagian awal terasa mengena. Dulu sepertinya aku adalah developer rockstar, lalu aku sadar itu bukan hal yang baik.
Mungkin aku bisa menyelesaikan pekerjaan 10 kali lebih cepat daripada rekan-rekan kerjaku. Tetapi pada satu titik aku sadar itu bukan karena aku 10 kali lebih produktif daripada orang biasa, melainkan karena cara kerjaku membuat orang-orang biasa di sekitarku hanya menjadi 1/10 seproduktif biasanya.
Setelah itu aku memperlambat ritmeku, dan itu menjadi perubahan positif bagi hidupku secara keseluruhan. Menjadi pemain tim memang tidak memberi mobilitas naik yang sama di industri gila ini, tetapi dampaknya luar biasa baik untuk kesehatan mental.
Dalam kasusku, biasanya itu berupa abstraksi berlebihan untuk hal-hal yang sebenarnya tidak perlu, atau membuat sesuatu untuk use case yang pada kenyataannya tidak pernah terjadi. Jadi setiap kali pikiranku mulai mengarah ke abstraksi berlebihan, aku berusaha mengingat YAGNI dan KISS.
Tulisan ini nilainya terlalu rendah.
Aku juga tidak begitu paham apa yang sebenarnya ingin disampaikan, dan ini cuma terlihat seperti tulisan menepuk punggung sendiri.
Sebagian besar dari apa yang disebut sebagai sejumlah besar kode buruk yang ditinggalkan oleh “developer rockstar” sebenarnya adalah hasil dari kompleksitas yang perlahan menumpuk seiring waktu karena harus menyesuaikan diri dengan perubahan requirement.
Selain itu, orang sering mengira mereka sedang “refactor demi keterbacaan”, padahal kenyataannya mereka sering hanya “menulis ulang kode sambil memahaminya dalam proses”.
Aku mengharapkan lebih banyak isi atau contoh nyata. Sekitar 90% tulisan ini dipakai penulis untuk mengeluh dan mendefinisikan masalah, lalu di paragraf kedua dari belakang muncul solusi samar yang terasa asal dilempar. Hampir tidak ada relevansi atau kegunaan nyata.
Mendorong keras dua production engineer untuk membangun infrastruktur di sekitar dua proyekku yang menghasilkan keuntungan jelas merupakan tindakan yang sangat bodoh.
Seharusnya aku membuat semuanya seperti spaghetti code ala bos 10x lalu pindah ke Anthropic dan mendapatkan paket kompensasi 9 digit; aku pasti bisa menghasilkan jauh lebih banyak uang. Betapa bodoh dan bodohnya aku.
Setidaknya itulah kesimpulan yang kudapat dari sini.
Kode yang ditulis biasanya harus dipelihara oleh seseorang selain penulisnya. Jadi jika kamu menulis kode yang tidak bisa dipahami siapa pun, pada akhirnya itu akan berujung pada gagal dipelihara.
Yang dioptimalkan bisa berbeda-beda: kode yang mudah dipahami tim, kecepatan, keunggulan teknis, dan sebagainya.
Tetapi bahkan jika kamu mengoptimalkan keunggulan teknis, kalau tidak ada orang lain di tim yang bisa memahami kode itu, itu tetap gagal.
Aku pernah melihat kode yang terlalu direkayasa.
Pendapat di Lobste.rs
Tulisan ini nyaris tidak punya saran yang benar-benar berguna
Istilah “developer rockstar” memang selalu terasa meragukan, tetapi developer yang benar-benar hebat itu memang ada. Hanya saja, mereka tidak bertindak seperti yang digambarkan di tulisan ini; mereka bekerja semaksimal mungkin dalam lingkungan yang ada, memperbaiki codebase, tidak membawa masuk hal baru yang belum teruji seperti mainan, dan saat pergi justru meninggalkan keadaan yang lebih stabil lewat testing, deployment yang discrpt otomatis, linting, dan sebagainya
Di sini AI terasa seperti hanya ditambahkan untuk mengatakan bahwa perilaku seperti ini akan menjadi lebih buruk, dan itu mungkin saja, tetapi tampaknya belum cukup terbukti. Selama puluhan tahun bekerja sebagai konsultan, saya sudah sering merapikan codebase yang berantakan; kadang penyebabnya memang orang yang kebablasan, tetapi lebih sering tim yang memang belum tahu cara yang lebih baik. Dalam kedua kasus itu, saya tidak pernah berpikir, “pasti ini ulah developer rockstar/ninja/buzzword”
Jadi sekarang bukan cuma harus membereskan sampah yang ditumpahkan chatbot ke atas kepala kita, tapi juga harus membereskan orang-orang yang tidak peduli soal itu
Rasanya jadi hanya menunggu gelembung ini pecah
Kalau pada 2026 saya bergabung ke sebuah perusahaan dan mendapati mereka masih memakai create-react-app, saya penasaran apa perilaku yang benar-benar dianjurkan. Apa maksudnya saya harus diam saja?
Kalau itu proyek lama, berarti Anda menemukan utang teknis. Semua orang punya. Cara terbaik untuk meyakinkan orang agar memperbaikinya adalah dengan membuat alasan bisnis yang masuk akal. Kalau masih berjalan, apakah itu benar-benar risiko? Dibanding utang teknis lain, prioritasnya di mana? Risiko implisit apa yang ditanggung jika tidak di-upgrade? Seberapa besar usaha yang dibutuhkan untuk upgrade?
Jika usahanya kecil dan rekan kerja juga menginginkannya, ada juga cara untuk mengerjakannya begitu saja tanpa minta izin. Namun itu paling berhasil ketika ada dukungan dari orang-orang yang terdampak perubahan ini, dan ketika tidak mengganggu hasil kerja Anda sendiri. Mungkin bukan sesuatu yang dilakukan pada minggu pertama masuk kerja
Biasanya selalu lebih baik bertanya dan memahami mengapa keadaan jadi seperti sekarang, daripada langsung mengatakan “seharusnya begini”. Setiap codebase yang punya sejarah adalah hasil dari ribuan keputusan yang belum Anda ketahui. Anda perlu membekali diri dengan pengetahuan dan empati
Saya sudah membencinya sejak 2020, bahkan saat itu masih terlihat keren
“Agen tidak mengingat apa pun yang mereka lakukan kemarin” adalah masalah yang bisa dipecahkan. Bisa memakai pendekatan memori dan sebagainya. Belum tentu baik secara umum, tetapi terus membaik
“Ia tidak peduli apakah kode ini cocok dengan kode lain dalam sistem” berbeda dengan pengalaman saya. Biasanya kode yang dihasilkan LLM cenderung cukup mirip dengan kode sejenis di area terkait. Kode yang dibaca untuk mencari arah sering kali tercermin hampir apa adanya
“Ia tidak peduli apakah sistem jadi lebih mudah dipahami atau justru lebih buruk” juga bisa diatasi. Suruh LLM menilai hal itu dan turunkan nilainya secara bertahap. Apa yang dianggap lebih mudah dipahami sering kali merupakan sifat sistem yang tidak deterministik, sehingga secara paradoks LLM mungkin justru pendekatan yang lebih mudah diukur daripada alat lain. Di sesi baru, Anda bisa bertanya, “untuk memahami kode yang baru ditambahkan ini, seberapa banyak bagian sistem yang harus dipahami,” lalu mengoptimalkannya dengan memperkecil cakupan itu
Bagian “AI punya kotak alat praktik terbaik yang mungkin tidak cocok di sini” sering terasa mirip dengan proses melatih developer junior yang datang ke proyek baru dengan idealisme yang sama. Kepada junior, kita menjelaskannya secara lisan dan berharap mereka mengingat serta menerapkannya, tetapi pada AI, kalau didokumentasikan di file AGENTS.md / CLAUDE.md, pengetahuan itu akan tetap ada
“Kalau diminta code review, ia menghasilkan banyak sekali usulan perbaikan yang tidak saya setujui” untuk Codex sudah diatur agar daftar usulannya tetap kecil, ringkas, dan bernilai tinggi. Model lain mungkin berbeda, tetapi ini pada akhirnya tetap persoalan tingkat instruksi. Hal-hal yang Anda pedulikan sering kali memang layak didokumentasikan, dan dengan AI itu jadi makin perlu
Saat berurusan dengan rockstar, setengah masalahnya adalah ego, tetapi setidaknya rockstar yang meninggalkan kode buatan manusia masih punya refleksi dan niat yang mendasarinya
Sebaliknya, “rockstar” yang hanya membungkus AI dengan kulit manusia punya gaya sok yang sama atau bahkan lebih besar, tetapi sering kali bahkan tidak benar-benar memahami setengah dari masalah yang mereka klaim sedang mereka selesaikan
Jika Anda menerapkan pendekatan functional programming semaksimal mungkin dan membuat komponen yang bebas konteks sehingga bisa dirangkai dengan berbagai cara, Anda bisa mendapat daya ungkit yang sangat besar
Dengan memisahkan blok-blok penyusun individual yang mengabstraksikan detail implementasi dari tugas-tugas yang bergantung pada konteks tertentu, Anda bisa dengan mudah menyusun ulang blok-blok itu ketika kebutuhan berubah atau ketika memilih pendekatan lain. Selain itu, tiap bagian bisa dipahami secara mandiri tanpa harus mengetahui seluruh konteks susunannya, dan dengan melihat bagaimana bagian-bagian itu saling terpasang, Anda bisa memahami logika tingkat yang lebih tinggi
Bahasa fungsional memberi dasar yang baik untuk bekerja bersama LLM karena secara alami mendorong penulisan kode dengan cara yang membatasi konteks. Ini membantu mengurangi cakupan yang diperlukan untuk memahami fungsi tertentu dalam program, sehingga bermanfaat baik bagi model maupun pengguna manusia