Berikan Konstitusi pada Codebase Anda
Arsitektur yang hanya ada di kepala orang tidak akan bertahan menghadapi agen pengkodean (coding agents).
Selama bertahun-tahun, aturan codebase hidup sebagai pengetahuan tribal (tribal knowledge). Insinyur senior tahu lapisan mana yang bisa saling berkomunikasi. Mereka tahu dependensi mana yang dilarang. Insinyur baru belajar dengan cara merusak sesuatu dan dikoreksi saat proses review.
Ini berhasil untuk manusia karena manusia membangun konteks seiring berjalannya waktu. Agen tidak membangun konteks. Mereka hanya tahu apa yang bisa mereka lihat.
Jika sebuah aturan tidak dituliskan, agen akan menganggap aturan tersebut tidak ada. Saya pernah melihat agen menghubungkan lapisan dalam ke lapisan luar. Mereka memasukkan dependensi yang secara khusus kita hindari. Kodenya berjalan, tetapi arsitekturnya melenceng (drifts).
Anda harus mengubah arsitektur Anda dari sekadar cerita rakyat (folklore) menjadi hukum.
Konstitusi bukanlah dokumentasi. Dokumentasi menjelaskan bagaimana sebuah sistem bekerja saat ini. Konstitusi mendefinisikan apa yang diperbolehkan bagi sebuah sistem untuk menjadi.
Konstitusi Anda harus berfokus pada hal-hal yang tetap bertahan setelah refaktor besar. Konstitusi tersebut harus mencakup:
- Hukum dan invarians (invariants)
- Batasan sistem
- Asumsi dasar
Konstitusi terbaik adalah yang singkat, membatasi, dan lambat untuk diubah.
Jangan mengikat arsitektur pada struktur direktori. Direktori bisa berubah. Ikatlah arsitektur pada tanggung jawab. Model domain tetaplah model domain, terlepas dari foldernya.
Setiap hukum membutuhkan alasan. Aturan tanpa rasionalitas akan dihapus oleh seseorang yang tidak memahaminya. Aturan mengajarkan perilaku. Alasan mengajarkan penilaian (judgment).
Yang paling penting, Anda harus menegakkan hukum Anda.
Instruksi adalah panduan. Penegakan adalah realitas. Agen atau manusia pada akhirnya akan mengabaikan instruksi tertulis.
Jika sebuah aturan bersifat kritis, jangan hanya mengandalkan prosa. Masukkan ke dalam CI Anda. Masukkan ke dalam linter. Masukkan ke dalam validator.
Setiap aturan penting membutuhkan dua bentuk:
- Versi manusia: Ini menjelaskan maksudnya.
- Versi mesin: Ini menjamin kepatuhan.
Ini bukan tentang menambah proses. Ini tentang menambah daya ungkit (leverage). Ketika arsitektur dapat ditegakkan, Anda tidak perlu memeriksa setiap keputusan. Mesin yang akan melakukannya untuk Anda.
Anda dapat mendelegasikan lebih banyak pekerjaan ketika Anda dapat mempercayai batasan-batasannya.
Cara memulai:
Perhatikan ulasan (review) Anda. Setiap kali Anda mengatakan "kita tidak melakukan itu karena," Anda telah menemukan sebuah hukum.
Mulailah dengan beberapa aturan:
- Arah dependensi
- Penanganan rahasia (secret handling)
- Kontrak kritis
- Kepemilikan batasan
Tulis aturannya. Tulis alasannya. Kemudian tambahkan pemeriksaan kode yang membuatnya mustahil untuk dilanggar.
Hukum tanpa penegakan hanyalah sebuah saran.
Sumber: https://dev.to/miteshethos/give-your-codebase-a-constitution-3k4h
Komunitas belajar opsional: https://t.me/GyaanSetuAi