Kami memiliki proyek baru yang sedang berlangsung, dan saat ini pengembang telah dibagi menjadi dua tim, tim A dan tim B. Proyek ini memiliki 2 bagian yang memerlukan pengembangan di seluruh tumpukan pengembangan. Sampel stack kami yang sangat sederhana ditunjukkan di bawah ini:
Setiap bagian dari proyek ini membutuhkan pengembangan di seluruh tumpukan, jadi saya biasanya mengharapkan pendekatan pengembang tumpukan penuh yang merupakan cara kami telah memecah pekerjaan kami dalam tim B, merancang dan bekerja interaksi antara bagian-bagian yang berbeda.
Saya baru-baru ini belajar, bahwa tim A ingin bertanggung jawab atas bagian-bagian tertentu dari tumpukan, dan mereka mengusulkan pembagian antara kedua tim, di mana Lapisan Abstraksi Data (dan menempatkan konten dalam lapisan Data) ditangani oleh sendiri tanpa pengembangan dari Tim B. Kesenjangan akan terlihat seperti ini:
Bagi saya ini terasa sangat tidak wajar. Setiap tim memiliki tujuan dan rentang waktu yang berbeda untuk mencapai ini, tetapi Tim B akan memiliki ketergantungan pada Tim A untuk mengimplementasikan fitur. Solusi yang diusulkan adalah bahwa antarmuka umum didefinisikan di muka (mungkin ada skala waktu 2 tahun pada proyek sehingga mereka bisa banyak). Tim A kemudian akan mengembangkan bit yang diperlukan untuk antarmuka ini sejak awal meskipun memiliki serangkaian tujuan mereka sendiri, sementara Tim B mematikan semua panggilan untuk jangka pendek langsung sehingga mereka dapat berkembang.
Saya memiliki keprihatinan tentang pendekatan ini mengenai:
- Antarmuka dapat berubah dan Tim A mungkin tidak memiliki bandwidth atau waktu untuk mengakomodasi perubahan kebutuhan.
- Bug dalam kode Tim A dapat mencegah Tim B berkembang, dan sekali lagi mereka mungkin bukan prioritas untuk memperbaikinya karena Tim A memiliki antrian prioritas yang berbeda.
- Kurangnya pengetahuan tersebar di seluruh tim - Tim B mungkin tidak sepenuhnya memahami apa yang terjadi di bawah tenda dan mungkin membuat keputusan desain yang buruk karena hal ini.
Telah disarankan bahwa banyak perusahaan dalam industri ini memiliki sub-tim dan harus mampu mengatasinya. Dari pemahaman saya, umumnya tim terpecah seperti yang saya harapkan (Full Stack) atau dengan memecah tumpukan teknologi seperti di bawah ini:
Jadi saya tertarik mengetahui apa yang dilakukan industri lainnya. Apakah sebagian terbagi vertikal / horizontal? Apakah perpecahan diagonal masuk akal? Jika perpecahan diagonal terjadi, apakah kekhawatiran saya tampaknya valid dan apakah ada hal lain yang harus diperhatikan oleh Tim B? Untuk diketahui, saya mungkin akan dianggap bertanggung jawab atas keberhasilan atau kegagalan Tim B.