The pendekatan tangkas adalah struktur pekerjaan ke dalam cerita pengguna vertikal dan memberikan sepotong terfokus tapi berfungsi penuh dari aplikasi dari end-to-end . Karena ini adalah pendekatan baru untuk membangun perangkat lunak, saya membaca banyak literatur tentang mengapa ini lebih baik daripada cerita horisontal tetapi saya tidak menemukan banyak tentang kelemahan dari pendekatan ini.
Saya sudah meminum bantuan dingin yang gesit dan saya juga setuju bahwa mengiris kue secara vertikal memiliki banyak keuntungan daripada mengiris horizontal. Berikut adalah daftar singkat kerugian yang bisa saya buat:
- Pengembang awalnya mungkin lebih lambat dalam mengimplementasikan fitur karena ia harus memahami semua teknologi yang diperlukan untuk mengembangkan cerita (UI + lapisan layanan + akses data + jaringan, dll ...)
- Desain arsitektur secara keseluruhan (menentukan tulang punggung aplikasi) tidak benar-benar cocok dengan mantra ini (namun beberapa orang mungkin berpendapat bahwa itu adalah bagian dari kisah pengguna untuk mengembangkan / mengubah arsitektur keseluruhan)
Apa lagi kelemahan dari kisah pengguna yang mengiris secara vertikal?
Catatan: Alasan saya mengajukan pertanyaan ini sekarang adalah karena saya akan berusaha meyakinkan tim untuk mulai menulis cerita dengan 'cara vertikal' dan saya ingin dapat mengemukakan kemungkinan trade-off sebelumnya sehingga mereka menang. akan menganggap pendekatan itu gagal ketika mereka dihadapkan dengan kelemahan.
sumber
Jawaban:
Saya tidak tahu ada kerugian jangka panjang. Dalam jangka pendek, dan bagi tim yang baru dalam pengembangan semacam ini, kelemahan utamanya adalah dibutuhkan beberapa waktu untuk membiasakan diri dan beberapa pembelajaran.
Cara paling efisien untuk bekerja secara vertikal adalah dengan memiliki pengembang penuh: dengan cara ini sebuah cerita biasanya dapat dieksekusi oleh satu orang (atau lebih dari satu tetapi tanpa tugas pipelining ). Jelas ini mensyaratkan bahwa pengembang bekerja secara vertikal di seluruh tumpukan (dari html ke basis data dalam kasus aplikasi web).
Jika tim Anda tidak terbiasa mengerjakan cerita vertikal, maka mereka kemungkinan besar akan melakukan hal yang sebaliknya: setiap orang hanya akan memiliki pengetahuan tentang satu lapis / lapis aplikasi saja. Saat Anda memperkenalkan cerita vertikal, Anda dapat mengharapkan tim untuk membaginya menjadi tugas yang sesuai dengan lapisan dan kemudian mendistribusikan tugas ke orang yang berbeda. Ini akan sangat tidak efisien.
Pendekatan terbaik yang dapat saya berikan mengenai hal ini adalah mentolerir pipelining ini pada awalnya sambil menjelaskan bahwa tujuan jangka panjangnya sama sekali berbeda. Mintalah anggota tim lintas program pasangan lapisan untuk membangun kepercayaan dan pada akhirnya memungkinkan orang untuk benar-benar mandiri.
Saya tidak setuju dengan jawaban lain bahwa pendekatan ini membawa hutang teknis. Itu bisa, tetapi begitu pula pendekatan lain.
sumber
Saya sudah memikirkan pertanyaan yang tepat ini.
Saya pikir penting untuk membedakan antara mengiris berdasarkan tanggung jawab individu vs mengiris tanggung jawab tim. Saya akan memfokuskan jawaban ini terutama pada mengiris tim.
Untuk beberapa latar belakang: Saya telah bekerja dalam proyek-proyek dengan pengembang tumpukan penuh, pengembang lapis tunggal, tim vertikal (tumpukan penuh), tim horisontal (lapis tunggal), dan tim diagonal. Maksud saya dengan tim diagonal yang memuat semua tingkatan yang diperlukan untuk sebuah cerita tetapi tidak harus semua tingkatan dalam sistem, dan juga mungkin berisi beberapa pengembang yang berfokus pada tingkatan yang sama; dengan kata lain vertikal dalam roh tetapi mungkin agak horizontal dalam penampilan atau detail implementasi.
Baru-baru ini saya telah bekerja dalam kelompok yang beralih dari tim horisontal ke tim diagonal (hampir vertikal). Sangat instruksional untuk melihat kelompok orang yang sama menyelaraskan dua cara yang berbeda. Itu membuat beberapa kelebihan dan kekurangan cukup jelas.
Saya akan mengumpulkan pendapat saya sejauh ini dengan perbandingan ringkasan berikut:
Tim Horisontal
Keuntungan:
Kekurangan:
Tim Vertikal / Diagonal
Keuntungan:
Kekurangan:
Saya tidak berpikir keanggotaan tim memiliki solusi satu ukuran untuk semua. Tampaknya cukup mudah, bahwa tim vertikal berbaris lebih baik untuk organisasi yang membutuhkan generalisasi. Jika insinyur Anda adalah generalis dan suka bekerja dengan tumpukan penuh, itu alasan yang cukup bagus untuk mempertimbangkan tim vertikal. Tim horizontal berbaris lebih baik untuk organisasi yang membutuhkan spesialis. Jika insinyur Anda adalah spesialis, itu alasan yang cukup bagus untuk mempertimbangkan tim horizontal.
Seperti yang disebutkan orang lain, struktur / perilaku sekunder yang mengiris arah lain dapat membantu mengurangi kelemahan dari kedua sistem. Salah satu faktor mitigasi yang menarik adalah durasi sprint. Sprint pendek membuat beberapa kelemahan tim horisontal lebih dapat ditoleransi. Jika Anda dapat membuat backend minggu ini dan frontend minggu depan, itu mungkin cukup cepat?
Untuk menerapkan beberapa prinsip yang diusulkan ini ke masalah dunia nyata ... Saya akan mengatakan bahwa irisan horizontal telah bekerja dengan sangat baik untuk tim pengembangan SaaS yang sangat nyata yang telah saya kerjakan yang memecahkan masalah teknis yang sangat menantang di setiap tingkatan ( di mana spesialisasi menurut saya sangat penting), di mana frekuensi pengiriman (dan keandalan pada granularitas / frekuensi tinggi) sangat penting untuk keberhasilan bisnis. Harap dicatat bahwa kesimpulan ini adalah untuk tim dunia nyata yang sangat khusus, bukan pernyataan umum tentang keunggulan pengirisan horizontal.
Satu peringatan: Saya mungkin bias terhadap keyakinan memercayai kemampuan generalis oleh individu mana pun di dunia pengembangan perangkat lunak modern tanpa bukti signifikan, meskipun saya telah mengenal beberapa generalis langka yang luar biasa. Saya merasa bahwa generalitas adalah tatanan yang tinggi (vertikal?) Memang, terutama karena setiap tingkat tumbuh dalam kompleksitas dan dengan proliferasi bahasa / platform / kerangka / penyebaran alternatif, masing-masing memenuhi kebutuhan yang berbeda. Hari-hari ini terutama, jack dari semua perdagangan dapat dengan mudah menjadi master of none. Juga, secara anekdot, saya menemukan sebagian besar individu ingin mengkhususkan diri sedikit, sekali lagi dengan beberapa pengecualian.
sumber
Kelemahan besar yang saya temukan adalah sulitnya bagi tim untuk membangun aplikasi mengikuti pendekatan arsitektur terpadu.
Pada tahap awal proyek, semua orang akan menulis layer mereka sendiri. Cerita-cerita (dan lapisan yang terlibat) akan bekerja, tetapi ketika melihat kembali produk yang disampaikan di sprint-end, akan mudah untuk melihat sedikit perbedaan antara ide-ide arsitektur masing-masing pengembang.
Hal semacam ini tidak bisa dihindari, tetapi bukan penghalang. Saya sudah mencoba untuk melawan ini dengan dua cara:
Satu-satunya masalah lain yang bisa saya pikirkan selain itu adalah bahwa biasanya ada banyak kode boilerplate untuk ditambahkan pada awal proyek. Menulis cerita irisan vertikal berarti kecepatan tim pada beberapa cerita pertama akan secara artifisial rendah karena pelat baja prasyarat ini ... tetapi selama semua orang menyadari bahwa ini hanya akan mempengaruhi beberapa sprint pertama maka semuanya baik-baik saja.
sumber
WobbleAdapter
dan yang lainnya aWibbleConverter
.Saya juga tidak tahu kerugiannya, namun cerita vertikal dapat diimplementasikan dengan buruk.
Ketika saya pertama kali memulai karir saya, saya bergabung dengan tim yang ingin melakukan XP tetapi mereka tidak memiliki pengalaman dengan itu. Kami membuat sejumlah kesalahan saat menggunakan cerita pengguna vertikal.
Salah satu masalah yang kami temui ketika melakukan pekerjaan horizontal adalah fitur tidak terintegrasi dengan baik di seluruh lapisan. API seringkali tidak sesuai dengan spesifikasi, fitur yang hilang dan banyak masalah lainnya. Seringkali karena pengembang telah pindah ke sesuatu yang lain, Anda harus menunggu atau melakukannya sendiri.
Beralih ke melakukan Cerita Vertikal menyelesaikan masalah ini dan mengurangi / menghilangkan pemborosan bekerja kembali untuk diintegrasikan.
Ada sejumlah praktik XP yang mendukung cara kerja ini. Siapa pun harus dapat bekerja di area mana pun dan setiap orang diharapkan dapat memperbaiki bug yang mereka temukan ( kepemilikan Kode Kolektif ).
Saat Anda mengubah cerita vertikal, mungkin sulit untuk bekerja di area yang tidak Anda kenal. Pemrograman Pasangan dapat membantu, jika Anda tidak percaya diri menangkap seseorang dalam tim yang berpasangan dengan mereka. Saya telah menemukan pemrograman pasangan menjadi cara tercepat untuk mendapatkan kecepatan dengan basis kode baru.
Tanpa pemilik yang kuat atas lapisan kami menemukan, bahwa ada beberapa duplikasi yang muncul. Meskipun ini bukan masalah besar, kami perlu memastikan bahwa kami mempraktikkan Refactor tanpa ampun (dengan tes yang sesuai untuk mendukung).
Meskipun saya menyebutkan sejumlah masalah, saya tidak berpikir Kisah Pengguna Vertikal adalah penyebabnya. Bahkan, itu membuat masalah lebih jelas. Setelah kami beralih, masalah tidak lagi dikaburkan di seluruh tim atau lapisan aplikasi.
sumber