Berikut adalah kutipan dari manual pelatihan di tempat kerja mengenai estimasi SLIM dan perangkat lunak:
Perhatikan juga, ada korelasi antara Upaya dan Cacat. Ini berarti, semakin banyak orang di sana ditugaskan untuk proyek dengan ukuran tertentu, semakin banyak Cacat akan ada.
Upaya adalah waktu orang (orang-tahun, orang-bulan) untuk proyek. Cacat adalah jumlah cacat yang terdeteksi pada titik mana pun dalam siklus hidup. Ukuran didefinisikan sebagai use case, titik fungsi, atau SLOC yang menyusun proyek.
Ini tampaknya berlawanan dengan intuisi, mengasumsikan proses yang bagus dan insinyur yang cakap. Misalnya, memiliki lebih banyak orang berarti lebih banyak mata pada semua artefak (spesifikasi kebutuhan, desain, kode, tes). Selain memiliki lebih banyak mata, intuisi saya menunjukkan bahwa ada sedikit hubungan antara upaya dan cacat pada proyek yang menggunakan teknik kualitas yang tepat.
Saya belum dapat menemukan dokumen apa pun, selain dari mereka tentang Model Putnam (yang digunakan oleh SLIM), yang menyarankan segala jenis hubungan yang diketahui antara cacat dan upaya atau cacat dan jumlah orang dalam suatu proyek. Apakah ini hubungan yang dikenal, dan apakah pernyataan bahwa "lebih banyak orang = lebih banyak cacat" valid?
sumber
Jawaban:
Intuisi saya seperti ini:
Semakin banyak orang yang ditugaskan untuk proyek dengan ukuran tertentu, semakin besar overhead komunikasi
=> semakin tinggi kemungkinan kesalahpahaman dan segala macam masalah komunikasi
=> semakin tinggi jumlah cacat yang dihasilkan.
Dan
Pengembang yang baik lebih jarang, sehingga lebih sulit untuk menemukan dan mempekerjakan, daripada yang biasa-biasa saja / buruk
=> semakin banyak orang yang ditugaskan untuk proyek dengan ukuran yang diberikan, semakin rendah tingkat rata-rata kompetensi mereka
>> semakin tinggi jumlah cacat yang dihasilkan.
Tapi ini mungkin hanya alasan saya, saya tidak punya bukti pendukung.
Sebagai catatan tambahan, asumsi Anda yang ditekankan di bawah ini adalah IMHO (sayangnya) cukup kuat, dengan mempertimbangkan keadaan profesi kami:
sumber
Itu bisa saja sebuah korelasi. Manajemen cenderung menugaskan lebih banyak orang untuk membantu proyek-proyek yang mereka anggap lebih kompleks, atau proyek-proyek yang tertinggal karena banyak bug yang tidak transparan, atau proyek-proyek yang membutuhkan banyak penggandaan di antara berbagai komponen. Jika Anda dapat mengambil keputusan manajemen dari campuran, saya curiga bahwa korelasi setidaknya akan berkurang, jika tidak terbalik.
sumber
Mengingat definisi ukuran dan upaya yang baru-baru ini diperbarui, saya akan menyarankan bahwa mungkin hasilnya disebabkan oleh fakta bahwa Usaha (total jam kerja) sebenarnya merupakan penaksir yang lebih baik untuk ukuran proyek yang sebenarnya daripada ukuran yang digunakan sumber (Upaya akan menjadi ukuran sempurna jika semua tim dan sumber daya tim setara).
Karena itu apa yang sebenarnya terjadi adalah bahwa proyek yang lebih besar memiliki lebih banyak cacat, yang sama sekali tidak mengejutkan.
sumber
Saya tidak berpikir Anda dapat menganggap salah satu dari ini di dunia nyata. Semakin banyak orang dalam suatu proyek, semakin besar kemungkinan Anda memiliki apel buruk yang tidak dapat mengikuti dan akan memperlambat pengembang terbaik. Sekalipun Anda menggunakan asumsi, ada beberapa hal lain yang memperlambat proyek dan menyebabkan lebih banyak cacat saat Anda menambah jumlah orang:
Dalam pengalaman saya, efek negatif dari proyek dimuat dengan pengembang turun ketika proyek sangat modular dan Anda hanya memiliki 1 atau 2 orang per tier. Saya tidak peduli sistem kontrol versi apa yang kebetulan Anda gunakan, memiliki 4 pengembang semua checkin penggabungan otomatis ke file yang sama sekaligus mungkin akan menjadi ide yang buruk.
sumber
Ada perbedaan antara korelasi dan sebab-akibat; kutipan tampaknya mengatakan bahwa jumlah total cacat cenderung lebih tinggi untuk proyek-proyek di mana sejumlah besar insinyur dialokasikan. Ini masuk akal bagi saya, saya yakin MS Windows memiliki lebih banyak cacat daripada aplikasi yang saya buat, tetapi itu tidak berarti bahwa aplikasi saya berkualitas unggul.
Untuk memberikan contoh lain yang lebih abstrak - jika kita mengambil jumlah total kematian per negara dan mengaitkannya dengan jumlah total dokter di negara tersebut, saya yakin kita dapat mengatakan "negara dengan lebih banyak dokter memiliki lebih banyak kematian". Ini bukan karena dokter yang menyebabkan kematian, tetapi lebih banyak dokter yang menunjukkan populasi yang besar.
sumber
Mari kita kesampingkan pernyataan tentang jumlah orang sejenak.
Melihat jumlah cacat yang disuntikkan sebagai fungsi upaya mungkin masuk akal selama Anda berasumsi bahwa peningkatan upaya tentu membutuhkan peningkatan ukuran, karena ada korelasi yang kuat antara jumlah cacat dan ukuran perangkat lunak.
Jadi jika Anda menganggap bahwa semakin banyak upaya yang dimasukkan ke dalam proyek, semakin banyak baris kode yang ditulis, maka Anda mungkin bisa menggunakan upaya sebagai proksi untuk ukuran untuk memprediksi jumlah cacat. Korelasi antara ukuran (misalnya LOC) dan jumlah cacat telah ditunjukkan berulang kali dalam pengerjaan oleh Watts Humphrey, Capers Jones, dan lainnya.
Saya tidak melihat bagaimana jumlah orang cocok, selain lebih banyak orang menyiratkan lebih banyak usaha.
Sebagai catatan, jangan bingung korelasi dengan kausalitas. Meskipun ada korelasi antara ukuran dan jumlah cacat yang disuntikkan, ukuran bukanlah penyebabnya. Penyebabnya biasanya berasal dari, seperti yang Anda tunjukkan, orang dan proses masalah. Yang mengatakan, cacat sebagai fungsi ukuran adalah metrik yang bagus untuk memahami jika ada masalah dan untuk mengukur efektivitas perubahan.
sumber
Saya berasumsi ini terbatas pada anggota tim pemrograman inti dan bukan situasi di mana ada spesialis seperti: UI, UX, DBA, dll.
Saya pikir itu perlu dikelola dengan baik, tetapi itu tidak mudah. Tim kecil yang terdiri dari pengembang berkualitas dapat mengelola diri mereka sendiri. Itu lebih mungkin untuk menghindari bagian besar kode yang dibuat seseorang dengan bakat yang lebih sedikit.
Memiliki lebih banyak anggota tim dapat mempermudah pembagian tugas. Tempatkan para penyembah yang lebih baik atau lebih berpengalaman di tempat-tempat yang sulit. Singkirkan beberapa tugas biasa atau non-pemrograman dari pengembang yang lebih baik dan biarkan para junior menangani interupsi. Ini akan membutuhkan lebih banyak perencanaan dan pemikiran, tetapi memberikan kesempatan untuk meningkatkan bakat Anda.
Ada anggapan bahwa lebih baik memiliki pengembang hebat yang perlu mempelajari keterampilan baru daripada pengembang yang di bawah rata-rata yang sudah mengetahuinya. Ini bagus jika Anda punya waktu. Mungkin alasan mengapa lebih banyak develpers ditugaskan untuk suatu proyek adalah karena jumlah pekerjaan yang diperlukan dan batas waktu. Anda mungkin memiliki seseorang yang dapat fokus pada bidang tertentu dan menjadi lebih terampil. Sangat menyenangkan memiliki pengetahuan yang menyeluruh, tetapi kadang-kadang dengan sedikit arahan, dev yang lebih rendah dapat mengambil beberapa instruksi dan menjalankannya.
Kenyataannya adalah, tidak banyak orang yang pernah mengelola tim besar pada proyek yang sukses. Bahkan jika mereka semua berbakat, sulit bagi tim besar untuk mengelola sendiri. Apakah ego menghalangi?
sumber