Apakah kepemilikan fitur merupakan praktik yang baik?

22

Baru-baru ini di perusahaan saya disarankan bahwa satu pengembang harus fokus (dan hanya satu) dalam satu fitur. Itu akan berarti sesuatu seperti mengesampingkan pengembang dari rutinitas tim normal, melepaskannya dari beberapa tanggung jawab lain (rapat dan semacamnya) dan orang ini akan menjadi "satu-satunya" yang bertanggung jawab atas fitur tersebut, bijaksana secara teknologi.

Sebagai catatan, kami menggunakan SCRUM dalam SAFe, dan kami memiliki untuk pengembang penuh waktu per tim, berbagi QA dan pemilik produk antara dua tim kami (Android dan iOS).

Sementara saya setuju bahwa ini akan meningkatkan produktivitas dalam jangka pendek, saya merasa (dan saya pikir saya mempelajarinya di universitas) bahwa ini adalah praktik buruk karena berbagai alasan:

  • Ulasan kode kehilangan nilai.
  • Berbagi pengetahuan minimal.
  • Peningkatan risiko.
  • Hilangnya fleksibilitas tim.

Apakah saya benar atau sama sekali bukan praktik yang buruk?

mdelolmo
sumber
3
Reaksi langsung saya adalah ini mungkin berhasil jika dilakukan dalam jumlah sedang, tetapi Anda benar tentang masalahnya jika terlalu jauh. Di sisi lain, pengalaman saya adalah bahwa setiap fitur sudah memiliki pemilik de facto: Orang terakhir yang menghabiskan banyak waktu mengerjakannya.
Ixrec
" satu pengembang harus fokus (dan hanya satu) " - Jika Anda ingin SPOF itu ide yang baik untuk melakukannya dengan cara itu. Baru-baru ini saya merumuskan teori empiris yang menyatakan bahwa orang yang paling Anda butuhkan dalam situasi tertentu (" wtf?!? Mengapa ia menulis seperti itu? ") Biasanya merupakan teori yang benar-benar tidak dapat dijangkau.
JensG
@JensG: meh, saya punya teori empiris bahwa orang yang paling sering saya butuhkan ("wtf? Kenapa dia menulis seperti itu?") Adalah saya, dan dengan demikian faktor bus untuk "mengingat hal-hal yang seharusnya dituliskan pada saat itu "adalah 0. Hanya lebih penting ketika saya diblokir oleh orang lain, karena saya khawatir tentang hal itu alih-alih memeriksa kembali kode yang ada dari awal dengan kemampuannya sendiri ;-)
Steve Jessop
@SteveJessop: Tentu, mencoba merekayasa ulang cara berpikir orang lain dengan memeriksa sekelompok KLOC kode mereka sementara pelanggan berteriak kepada Anda bahwa ia membutuhkan solusi sekarang ( atau yang lain! ) Mungkin merupakan ide keren bagi sebagian orang, tapi saya Saya tidak cukup kutu buku untuk melihat sesuatu yang lucu dalam membuang waktu saya sehingga saya bisa menghabiskan lebih produktif sebagai gantinya.
JensG
@JensG: untungnya, pelanggan saya lebih tersosialisasi daripada Anda. Karena itu saya tidak berada di bawah tekanan untuk terlibat dalam pemikiran magis yang menghasilkan kesimpulan bahwa menjadi penting bagi saya benar-benar menyebabkan orang menjadi kurang terjangkau oleh saya. Karena itu, saya pikir ada unsur bercanda dalam apa yang Anda katakan, jadi ya saya cukup kutu buku untuk menemukan lucu situasi di mana Anda mengimbangi kode yang tidak dapat dipahami dengan mencoba menjaga banyak orang di sekitar yang ingat bagaimana cara kerjanya. Terutama karena wtf seperti itu sering salah saya sendiri dan bukan kesalahan rekan-rekan saya.
Steve Jessop

Jawaban:

37

Dalam pengalaman 20 tahun saya, lebih baik memiliki tanggung jawab kepemilikan kode bergilir di antara desainer atau setidaknya memiliki sepasang pemilik. Kepemilikan fitur tunggal memiliki masalah berikut, beberapa di antaranya Anda sebutkan:

  • itu cenderung merpati lubang desainer dan membatasi peluang pertumbuhan mereka
  • itu menempatkan semua telur dalam satu keranjang sehingga jika seseorang ditabrak bus atau berhenti, bisa ada lubang dalam pengetahuan
  • satu orang mungkin tidak melihat masalah dalam kode dan tanpa ulasan kode pemilik rekan jauh lebih efektif
  • sulit untuk mempertahankan konsistensi dan keterbacaan kode jika semua orang mengerjakan kode menggunakan gaya mereka sendiri - sementara ini dapat dikerjakan dengan pedoman gaya, seluk-beluk dapat merangkak masuk terutama ketika menggunakan konvensi atas konfigurasi di mana orang-orang mengandalkan perilaku default
  • pengembang dapat cenderung menjadi protektif dan defensif terhadap kode mereka jika mereka memilikinya yang dapat menghambat evolusi kode - jika beberapa orang memilikinya, kecenderungan ini berkurang
Jason K.
sumber
6
Benar. Penting untuk menyebutkan faktor bus sebagai satu-satunya masalah yang paling jelas dengan kepemilikan satu orang saja.
JensG
1
Faktor bus perlu diperjualbelikan dengan biaya dan YAGNI, dan apakah bus benar-benar akan melumpuhkan organisasi Anda atau hanya menyebabkan banyak kerumitan. Jika itu adalah pilihan antara kehilangan, katakanlah, 3 jam seminggu selamanya memastikan bahwa dua orang dididik tentang sedikit kode tertentu, bukan hanya satu, atau kehilangan, katakanlah, 60 jam sebagai satu kali bagi seseorang untuk membawa diri mereka sendiri untuk mempercepat jika salah satu pengembang Anda terkena, maka dalam banyak kasus Anda akan memilih biaya satu kali. Tetapi untuk alasan yang disebutkan, silo pengetahuan memiliki kelemahan lain yang lebih penting (meskipun kurang jelas).
Steve Jessop
13

Kepemilikan fitur tidak bisa dihindari, dan dilakukan dengan baik bisa menjadi hal yang baik. Ini membantu membangun penguasaan dan memungkinkan otonomi - dua pilar keterlibatan yang diakui secara umum . Itu memperjelas siapa yang memiliki pertanggungjawaban untuk kode itu, dan membantu dalam pendelegasian, komunikasi, dan menyelesaikan masalah.

Tetapi Anda tidak membicarakan hal itu. Anda sedang berbicara tentang membuat tim baru yang terdiri dari satu orang - memotong orang ini dari sisa kode. Itu tidak bagus. Itu membatasi karir mereka. Ini menambah risiko pada proyek / perusahaan. Itu membahayakan comradarie.

Jadi beberapa moderasi mungkin untuk mengubah ini dari ide yang buruk.

Telastyn
sumber
1
Saya tidak setuju bahwa kepemilikan kode oleh satu orang tidak dapat dihindari, tetapi akan dimiliki oleh sejumlah kecil orang. Saya telah melihat organisasi yang melakukan pekerjaan buruk karena memiliki kode bersama tetapi melakukannya dengan cara yang sama. Pengaturan paling efektif yang saya lihat adalah ketika 2 hingga 3 orang tahu potongan kode dan berkolaborasi. Hal ini mengurangi stres dan isolasi di antara para pembuat kode karena mereka tidak terhubung dengan sendirinya ketika hal-hal yang gagal dan fitur yang tertinggal dapat diberikan lebih banyak perhatian untuk memenuhi tenggat waktu tanpa pelatihan yang cepat dari orang lain dalam organisasi.
Jason K.
1
@jason - tentu, harus ada beberapa orang di tim yang nyaman dan mampu mengerjakan sepotong kode. Tapi satu orang akan berakhir ahli subjek hanya dari bekerja paling banyak.
Telastyn
setuju bahwa yang sering terjadi, adalah skenario yang paling mungkin dan bahwa keahlian materi pelajaran adalah hal yang baik - hanya ketidaksepakatan yang tidak dapat dihindari hanya karena saya telah melihat kesuksesan yang lebih baik dengan beberapa orang menjadi UKM di suatu daerah dengan memiliki banyak tumpang tindih
Jason K .