# 17 Aturan Halus dalam Software Engineering: Panduan Tak Tertulis Para Engineer

Dalam dunia software engineering, banyak hal yang tidak tertulis di dokumentasi atau buku teks. Namun, prinsip-prinsip berikut ini kerap dipelajari lewat pengalaman—kadang lewat kesalahan yang menyakitkan. Inilah **17 aturan halus (plus satu bonus)** yang bisa menjadi panduan hidup untuk para pengembang perangkat lunak.

---

### **0\. Stop falling in love with your own code**

Cinta berlebihan pada kode sendiri membuat kita buta terhadap solusi yang lebih baik. Kode hanyalah alat. Ketika ada cara yang lebih sederhana, cepat, atau lebih dapat dipelihara, jangan ragu untuk melepaskan ego.

---

### **1\. You WILL regret complexity when on-call**

Kode rumit terlihat canggih... sampai jam 2 pagi kamu harus debug production. Sederhanakan. Buat sistem yang bisa kamu pahami bahkan saat mengantuk berat.

---

### **2\. Every single thing is a trade-off - no "best"**

Tidak ada solusi sempurna. Memilih teknologi atau arsitektur selalu melibatkan pengorbanan: performa vs maintainability, fleksibilitas vs konsistensi. Yang penting: pahami konsekuensinya.

---

### **3\. Every line of code you wrote is a liability**

Setiap baris kode bukan aset, tapi utang teknis potensial. Semakin banyak kode, semakin banyak hal yang bisa rusak. Tulis seperlunya. Hapus yang tak dibutuhkan.

---

### **4\. Document your designs and decisions**

Bukan hanya menulis kode, tapi juga **kenapa** kamu menulisnya seperti itu. Dokumentasi membantu tim memahami konteks dan alasan, bahkan ketika kamu sudah pergi dari proyek itu.

---

### **5\. Everyone hates code they didn’t write**

Ini manusiawi. Tapi tugas kita sebagai engineer adalah memahami, bukan menghakimi. Refactor jika perlu, tapi hormati upaya sebelumnya.

---

### **6\. Don't use unnecessary dependencies**

Setiap library pihak ketiga adalah risiko: ukuran, keamanan, dan ketergantungan. Jika bisa dikerjakan tanpa dependensi tambahan, lebih baik begitu.

---

### **7\. Coding standards prevent arguments**

Style guide dan linter bukan untuk menyusahkan, tapi menghindari debat. Konsistensi membuat kolaborasi lebih damai dan efisien.

---

### **8\. Write meaningful commit descriptions**

Sejarah commit adalah catatan evolusi software. Commit seperti `fix` atau `update` adalah musuh masa depan. Jelaskan apa dan kenapa.

---

### **9\. Never ever stop learning new things**

Teknologi berubah cepat. Belajar adalah bagian dari pekerjaan. Engineer terbaik bukan yang tahu segalanya, tapi yang tak pernah berhenti tumbuh.

---

### **10\. Code reviews are to spread context**

Review bukan sekadar mencari bug. Ini kesempatan untuk berbagi pengetahuan, menyamakan visi, dan membangun tim yang saling memahami sistem.

---

### **11\. Always build for maintainability**

Kamu bukan hanya menulis untuk sekarang, tapi untuk dirimu sendiri (dan orang lain) 6 bulan kemudian. Kode yang bisa dibaca lebih penting dari kode yang “pintar”.

---

### **12\. Always ask for help when stuck**

Berjuang sendirian kadang terlihat hebat, tapi tidak efisien. Bertanya bukan tanda kelemahan, melainkan sinyal kamu peduli terhadap waktu dan hasil.

---

### **13\. Fix root causes, not symptoms**

Bug hanyalah gejala. Jangan tambal sulam. Akar masalah seringkali ada di desain atau asumsi. Selami lebih dalam.

---

### **14\. Software is never completed**

Sistem hidup. Akan selalu ada perubahan, perbaikan, fitur baru. Buat arsitektur yang siap berubah, bukan hanya siap selesai.

---

### **15\. Estimates are not promises**

Estimasi adalah tebakan terinformasi, bukan kontrak. Gunakan untuk perencanaan, bukan sebagai alat untuk menyalahkan.

---

### **16\. Ship early, iterate often**

Produk sempurna itu mitos. Rilis cepat, dapatkan umpan balik, perbaiki. Iterasi mengalahkan spekulasi.

---

### **BONUS 17: Keep it simple**

Kesederhanaan adalah seni tertinggi dalam software engineering. Kode sederhana lebih mudah diuji, diperbaiki, dan ditinggal. Hindari kompleksitas kecuali benar-benar diperlukan.

---

## **Penutup: Seni Menjadi Engineer yang Bijak**

Software engineering bukan hanya soal menulis kode, tapi bagaimana kita berpikir, bekerja dalam tim, dan membangun sistem yang bermanfaat dan tahan lama. Aturan-aturan ini adalah hasil distilasi pengalaman banyak engineer di seluruh dunia. Menghidupkannya dalam praktik bukanlah soal hafalan, tapi refleksi dan kebijaksanaan.

> *"Simple is better than complex."* — Zen of Python

---

Sumber: [https://www.linkedin.com/posts/mikolajpawlikowski\_17-subtle-rules-of-software-engineering-activity-7334537892381270017-0Ser?utm\_source=share&utm\_medium=member\_desktop&rcm=ACoAAAjPHo8BLigEwxXx0ack6TGl7fBoMhqjjXs](https://www.linkedin.com/posts/mikolajpawlikowski_17-subtle-rules-of-software-engineering-activity-7334537892381270017-0Ser?utm_source=share&utm_medium=member_desktop&rcm=ACoAAAjPHo8BLigEwxXx0ack6TGl7fBoMhqjjXs)
