# KATA PENGANTAR (PREFACE)
**Buku:** Domain-Driven Design Distilled  
**Penulis:** Vaughn Vernon  
**Penerjemah:** Everest ERP Architecture Team  

---

Mengapa membangun model adalah aktivitas yang begitu menyenangkan dan bermanfaat? Sejak kecil saya sangat suka membangun model mobil-mobilan dan pesawat terbang. Pada masa itu saya tidak yakin di mana LEGO berada, namun LEGO telah menjadi bagian besar dari kehidupan putra saya sejak ia masih sangat muda. Sungguh sangat memikat membayangkan dan membangun model dengan balok-balok kecil tersebut. Sangat mudah untuk menghasilkan model-model dasar, dan tampaknya Anda dapat memperluas ide-ide Anda hampir tanpa batas.

Anda mungkin dapat merasakan keterhubungan serupa dengan pengalaman masa muda Anda dalam membangun model.

Model muncul di begitu banyak situasi dalam kehidupan. Jika Anda menikmati bermain permainan papan (*board games*), Anda sebenarnya sedang menggunakan model. Itu bisa berupa model kepemilikan lahan estat dan properti (seperti Monopoli), atau model pulau dan orang yang bertahan hidup, atau model wilayah kekuasaan dan kegiatan pembangunan. Demikian pula, video game adalah model. Mungkin mereka memodelkan dunia fantasi dengan karakter rekaan yang memainkan peran fantastis. Setumpuk kartu remi dan permainan terkait memodelkan kekuatan. Kita menggunakan model sepanjang waktu dan sering kali kita tidak memberikan pengakuan yang layak bagi sebagian besar model tersebut. Model adalah bagian alami dari kehidupan kita.

Namun mengapa demikian? Setiap orang memiliki gaya belajar masing-masing. Ada beberapa gaya belajar, namun tiga yang paling sering dibahas adalah gaya auditori (mendengar), visual (melihat gambar/diagram), dan taktil/kinestetik (menyentuh dan melakukan secara fisik). Pembelajar auditori belajar melalui mendengar dan menyimak. Pembelajar visual belajar dengan membaca atau melihat gambaran visual. Pembelajar taktil belajar dengan melakukan sesuatu yang melibatkan sentuhan langsung. Menariknya, setiap individu sangat menyukai gaya belajar tertentu hingga terkadang mengalami kesulitan dengan gaya belajar yang lain. Misalnya, pembelajar taktil cenderung mengingat apa yang telah mereka lakukan, namun mungkin kesulitan mengingat apa yang diucapkan selama proses berlangsung. Dengan membangun model, Anda mungkin berpikir bahwa pembelajar visual dan taktil memiliki keuntungan besar dibandingkan pembelajar auditori, karena membangun model sebagian besar melibatkan stimulasi visual dan taktil. Namun, hal itu tidak selalu benar, terutama jika tim pembangun model menggunakan komunikasi verbal/lisan dalam proses perancangannya. Dengan kata lain, pembangunan model membuka peluang untuk mengakomodasi gaya belajar sebagian besar orang.

Dengan kecenderungan alami kita untuk belajar melalui pembangunan model, mengapa kita tidak secara alami berkeinginan memodelkan perangkat lunak yang semakin hari semakin membantu dan memengaruhi kehidupan kita? Faktanya, memodelkan perangkat lunak adalah hal yang sangat manusiawi. Dan memang seharusnya kita memodelkan perangkat lunak. Bagi saya, manusia seharusnya menjadi pembangun model perangkat lunak yang elit.

Keinginan kuat saya adalah membantu Anda menjadi se-manusiawi mungkin dengan memodelkan perangkat lunak menggunakan beberapa alat pemodelan perangkat lunak terbaik yang ada. Alat-alat ini dikemas di bawah nama **"Domain-Driven Design"** atau **DDD**. Kotak perkakas ini, yang sebenarnya merupakan sekumpulan pola (*patterns*), pertama kali dikodifikasikan oleh **Eric Evans** dalam buku legendaris *Domain-Driven Design: Tackling Complexity in the Heart of Software* (DDD). Visi saya adalah membawa DDD ke sebanyak mungkin orang. Jika saya harus mengatakannya, saya ingin membawa DDD ke masyarakat luas. Di situlah DDD layak berada, dan DDD adalah kotak perkakas yang pantas digunakan oleh manusia yang berorientasi pada pemodelan untuk menciptakan model perangkat lunak paling mutakhir. Melalui buku ini, saya bertekad untuk membuat proses belajar dan penerapan DDD menjadi sesederhana dan semudah mungkin serta membawanya ke khalayak seluas-luasnya.

Bagi pembelajar auditori, DDD menawarkan prospek belajar melalui komunikasi tim yang membangun model berdasarkan pengembangan *Ubiquitous Language* (Bahasa yang Berlaku di Mana-mana / Bahasa Baku Bersama). Bagi pembelajar visual dan taktil, proses penggunaan alat DDD sangat visual dan praktis (*hands-on*) saat tim Anda memodelkan secara strategis maupun taktis. Hal ini terutama berlaku saat menggambar *Context Maps* (Peta Konteks) dan memodelkan proses bisnis menggunakan *Event Storming*. Oleh karena itu, saya percaya bahwa DDD dapat mendukung setiap orang yang ingin belajar dan mencapai keunggulan melalui pembangunan model.

---

### Untuk Siapa Buku Ini Ditulis?
Buku ini ditujukan bagi siapa saja yang tertarik untuk mempelajari aspek-aspek dan alat-alat terpenting DDD serta mempelajarinya dengan cepat. Pembaca yang paling umum adalah para arsitek perangkat lunak dan pengembang perangkat lunak yang akan mempraktikkan DDD pada proyek-proyek nyata. Sangat sering, pengembang perangkat lunak dengan cepat menemukan keindahan DDD dan sangat tertarik pada kehebatan perkakasnya. Meskipun demikian, saya telah membuat materi ini mudah dipahami oleh para eksekutif, pakar domain (*domain experts*), manajer, analis bisnis (*business analysts*), arsitek informasi, dan penguji perangkat lunak (*testers*). Tidak ada batasan bagi mereka di industri teknologi informasi (IT) maupun lingkungan riset dan pengembangan (R&D) yang dapat memperoleh manfaat dari membaca buku ini.

Jika Anda seorang konsultan dan sedang bekerja dengan klien yang Anda rekomendasikan untuk menggunakan DDD, berikan buku ini sebagai sarana untuk mempercepat pemahaman para pemangku kepentingan utama. Jika Anda memiliki pengembang—baik junior, tingkat menengah, atau bahkan senior—yang bekerja di proyek Anda dan belum terbiasa dengan DDD tetapi perlu segera menerapkannya, pastikan mereka membaca buku ini. Dengan membaca buku ini, setidaknya semua pemangku kepentingan proyek dan pengembang akan memiliki kosakata yang sama dan memahami alat-alat utama DDD yang digunakan. Hal ini akan memungkinkan mereka untuk berbagi pandangan secara bermakna seiring kemajuan proyek.

Apa pun tingkat pengalaman dan peran Anda, bacalah buku ini dan kemudian praktikkan DDD dalam sebuah proyek. Setelah itu, baca kembali buku ini dan lihat apa yang dapat Anda pelajari dari pengalaman Anda serta di mana Anda dapat meningkatkan kemampuan di masa depan.

---

### Apa Saja yang Dibahas dalam Buku Ini?
- **Bab 1, "DDD untuk Saya" (DDD for Me):** Menjelaskan apa yang dapat diberikan DDD bagi Anda dan organisasi Anda, serta memberikan gambaran umum yang lebih rinci mengenai apa yang akan Anda pelajari dan mengapa hal tersebut penting.
- **Bab 2, "Desain Strategis dengan Bounded Contexts dan Ubiquitous Language":** Memperkenalkan desain strategis DDD dan mengajarkan pilar-pilar utama DDD: *Bounded Contexts* dan *Ubiquitous Language*.
- **Bab 3, "Desain Strategis dengan Subdomains":** Menjelaskan *Subdomains* dan bagaimana Anda dapat menggunakannya untuk mengatasi kompleksitas integrasi dengan sistem warisan (*legacy systems*) saat Anda memodelkan aplikasi baru Anda.
- **Bab 4, "Desain Strategis dengan Context Mapping":** Mengajarkan berbagai cara tim bekerja sama secara strategis dan cara perangkat lunak mereka berintegrasi. Ini disebut *Context Mapping* (Pemetaan Konteks).
- **Bab 5, "Desain Taktis dengan Agregat (Aggregates)":** Mengalihkan perhatian Anda ke pemodelan taktis menggunakan *Aggregates*.
- **Bab 6, "Desain Taktis dengan Domain Events":** Membahas instrumen pemodelan taktis yang penting dan kuat untuk digunakan bersama Agregat, yaitu *Domain Events* (Peristiwa Domain).
- **Bab 7, "Alat Akselerasi dan Manajemen Proyek":** Menyoroti alat akselerasi proyek dan manajemen proyek (*Event Storming*, analisis SWOT, estimasi metrik) yang dapat membantu tim menetapkan dan mempertahankan ritme kerja mereka.

---

### Konvensi Penulisan
Semua perkakas dan istilah DDD yang saya diskusikan dicetak miring (contoh: *Bounded Contexts* dan *Domain Events*). Kode sumber disajikan dengan huruf *monospace*. Buku ini sangat menekankan pembelajaran visual melalui berbagai diagram dan ilustrasi alur proses.
