Salah satu faktor kerusakan arsitektur adalah kompromi pada biaya pengembangan
Ciri-ciri arsitektur yang rusak meliputi: banyak penanganan khusus, penanganan kompatibilitas, keterikatan yang parah, dan masalah yang menumpuk sulit diatasi.
Semua arsitektur akan perlahan rusak. Arsitektur yang sudah rusak sulit untuk mengembangkan fitur baru, bug sulit diperbaiki, satu perubahan memengaruhi seluruh sistem, sehingga pengujian dan QA juga sulit dilakukan.
Saya pernah melihat penggemar pengembang lintas industri memposting bahwa membatasi perilaku abstrak saat model menulis kode membuat kode lebih mudah dipahami. Kode yang lebih mudah dipahami oleh manusia juga akan lebih mudah dipahami oleh LLM, sehingga pengembangan dapat lebih cepat dan mengurangi kesalahan. Saya pikir pengembang lintas industri biasanya memiliki beban kerja yang lebih kecil dan terbiasa dengan logika alur berurutan. Jika ada harapan untuk memperluas skala, pola pikir tidak boleh terbatas pada alur berurutan, melainkan menggunakan pemikiran seperti tukang bangunan. Jika berharap membangun rumah 30 lantai, maka perlu fondasi 10 meter. Jika berharap ada air dan listrik, maka perlu menyediakan sumur dan colokan listrik. Ini adalah desain dengan tujuan yang jelas. Selain itu, ada desain dengan tujuan yang tidak jelas, misalnya di suatu tempat di rumah akan dipasang alat elektronik di masa depan, tetapi tidak yakin alat apa, cukup menyediakan stopkontak.
Rekayasa perangkat lunak sudah memiliki prinsip SOLID untuk memandu desain. Banyak kali, secara permukaan, mengikuti prinsip SOLID saat mengimplementasikan fungsi yang sama akan melintasi lebih banyak file dan menulis lebih banyak kode. Dari hasil jangka pendek, desain dan tidak desain tampak hampir sama bagi atasan/pengujian/pengguna. Manfaat desain hanya terlihat pada jangka panjang. Arsitektur yang baik mudah untuk menambahkan fitur, mengubah fitur, memperbaiki bug, dan lebih sedikit memperkenalkan masalah.
Pemikiran yang diperlukan untuk desain seringkali lebih banyak daripada langsung mengembangkan fitur. Desain perlu mempertimbangkan granularitas. Langsung menempelkan panel stopkontak di seluruh rumah seperti keramik adalah praktik yang absur. Dulu, saat mengembangkan, saya mempertimbangkan siklus pengembangan dan membuat trade-off. Saat waktu terburu-buru, saya bahkan tidak melakukan desain, hanya menambahkan beberapa fungsi dan selesai, urusan masa depan nanti saja. Sekarang dengan bantuan AI, kita dapat membuat granularitas desain lebih kecil. Kode yang dihasilkan akan lebih sulit dipahami oleh manusia, tetapi rekayasa akan lebih mudah dipelihara. Setelah menambahkan abstraksi, model yang kurang baik memang mungkin tidak dapat menangani dengan baik. Sebaiknya gunakan model terbaik saat ini. Jika hanya menulis skrip, perbedaan kemampuan antara model mungkin tidak terlalu jelas.
Tentang apakah AI menurunkan ambang masuk bagi pengembang? Saya ragu tentang hal ini. Karena jalur pembelajaran pengembang baru sudah sangat berbeda dari dulu, membahas apakah ambang masuk tinggi atau rendah mungkin tidak berarti, karena kita tidak tahu ambang masuk dipindahkan ke mana.
