"... kami menyimpulkan bahwa beberapa repositori kecil adalah pilihan yang lebih murah."
Itu keren. Memecah dan menaklukkan. Anda memecah usaha menjadi potongan-potongan logis, memberikan masing-masing bagian ke tim hard-core yang berbeda, bekerja seperti orang gila selama beberapa bulan, menyatukan semuanya, dan ...
dan...
Yah, itu akan menjadi mimpi buruk. Pasti tidak akan lebih murah. Kenapa bisa begitu?
"Biaya" terbesar dalam proyek perangkat lunak apa pun adalah komunikasi. Anda tidak menghemat uang dengan menulis kode lebih cepat. Itu tidak akan diakui oleh programmer rahasia. ( Psst. Jangan beri tahu siapa pun. Sungguh tidak penting seberapa cepat Anda menulis kode. ) Waktu yang dihabiskan untuk menulis kode benar-benar dikerdilkan oleh waktu yang dihabiskan untuk merencanakan dan berbicara dan bernegosiasi dan berkelahi dan berbicara serta bertemu dan berbicara lebih banyak lagi Berkompromi dan menyadari bahwa Anda seharusnya tidak berkompromi dan berjanji untuk melakukan yang lebih baik dan berteriak serta berharap dan "menyelesaikan" (itu bukan kata-kata, sialan) dan mengulang kembali dan ping dan berbicara dan tidak bisa tidur.
Jadi, Anda memecah pekerjaan Anda menjadi potongan-potongan terpisah dan menyerahkan masing-masing potongan ke tim yang terpisah. Apa yang baru saja kamu lakukan? Anda menambahkan beban komunikasi. Jika Anda beruntung dantim Anda sempurna, sama sekali tidak ada perbedaan biaya antara satu repositori besar dan beberapa repo kecil. Jika Anda tidak beruntung (sedikit yang), membobol tim yang terpisah sebenarnya akan lebih mahal. Cukup sulit untuk tetap selaras ketika Anda semua berada di basis kode yang sama, menginjak kaki masing-masing. Sekarang bayangkan betapa sulitnya ketika tiga tim yang berbeda berpikir persyaratannya berarti sesuatu yang sedikit berbeda (dengan tidak ada cara untuk memperbaiki dengan cepat karena mereka tidak melanggar barang-barang tim lain), memiliki budaya yang sedikit berbeda, dan, pada akhirnya, adalah sangat termotivasi untuk menghindari kesalahan ketika terjadi kesalahan sehingga mereka lebih dari bersedia untuk membuang tim lain di bawah bus.
Saya tahu, saya tahu ... tim Anda lebih baik dari itu. Tetapi apakah mereka benar-benar? Apakah Anda cukup percaya diri untuk mempertaruhkan uang untuk itu?
Lihat, dalam pendekatan mana pun (repo besar / banyak repo kecil) Anda harus mengejek banyak omong kosong di awal. Anda mulai bekerja dengan buta. Secepat mungkin, segera setelah tersedia, Anda harus mulai menggunakan implementasi konkret dari lapisan lain. Ini akan mengidentifikasi masalah dan kesalahpahaman sejak dini. Tentu, ini akan sedikit bergelombang, tetapi jauh lebih tidak bergelombang daripada berkembang secara mandiri dengan spek yang goyah dan berjabat tangan, dan kemudian melipat semuanya bersama-sama hingga larut.
Maksud saya adalah, repo besar / repo kecil bukan masalah. Yang penting adalah bagaimana Anda menyusun tim Anda. Idealnya, tim Anda memiliki identitas independen kecil dalam identitas kohesif yang lebih besar. Agak seperti organ dalam suatu organisme atau mungkin jamur lendir . Terlepas dari bagaimana Anda menyusun kode, beri semua orang kesempatan untuk saling bertemu. Buat komunikasi menjadi mudah. Buat kesalahan bersama dan perbaiki lebih awal dan sering.