Apa yang harus dilakukan tentang “Pembangunan Berbasis Gagal”?

28

Di toko kami, kami berusaha untuk gesit. Dan saya katakan kita membuat langkah besar. Yang mengatakan, beberapa dari kita telah melihat pola kita sudah mulai memanggil "Pembangunan Gagal Didorong".

Kegagalan Didorong Pengembangan pada dasarnya dapat digambarkan sebagai siklus rilis / iterasi tangkas di mana bug / fitur dipandu bukan oleh tugas dan cerita dengan kriteria penerimaan, tetapi dengan cacat dimasukkan dalam perangkat lunak pelacakan cacat.

Tim kami memiliki Manajer Proyek hebat yang berusaha untuk mendapatkan kriteria penerimaan dari pelanggan, tetapi itu tidak selalu memungkinkan. Dari kursi pengembangan saya, ini disebabkan oleh pelanggan yang tidak tahu persis apa yang mereka inginkan atau (dan ini adalah penendang) dua "kamp" yang berbeda pada konflik kantor utama pelanggan dengan bagaimana sebuah cerita harus dilaksanakan. Camp A akan secara longgar menentukan bahwa Fitur X berfungsi seperti ini , maka Camp B akan gagal karena tidak berfungsi seperti itu . Karenanya, istilah "FDD". Proses ini didorong oleh "kegagalan".

Ini mengarah ke pertanyaan saya: Apakah ada orang lain yang menemukan ini dan jika demikian, ada tips / saran untuk menghadapinya?

Kami, tentu saja, telah mencoba membuat Camp A dan B disetujui sebelumnya, tetapi semua orang tahu ini tidak selalu terjadi.

Terima kasih

DevSolo
sumber

Jawaban:

19

Persyaratan yang saling bertentangan bukanlah biasa di dunia usaha. Dan ini sering menjadi alasan proyek otomatisasi proses bisnis "gagal." Ini bisa sesederhana seperti "manual kebijakan dan prosedur mengatakan untuk melakukan X" sementara orang yang benar-benar melakukan pekerjaan melakukan Y. Membuat perangkat lunak melakukan Y berarti bahwa orang yang membayar untuk perangkat lunak akan bersikeras bahwa perangkat lunak tersebut rusak dari mereka perspektif. Membuat perangkat lunak melakukan X berarti bahwa orang yang benar-benar menyelesaikan pekerjaan tidak dapat menyelesaikan pekerjaan itu.

Biasanya, sebagian besar perusahaan pengembangan akan memilih apa yang dikatakan manajer daripada apa yang dinyatakan oleh para pekerja karena itulah cara pembayaran tagihan. Di dunia ideal, tidak ada ketidaksesuaian impedansi antara kebijakan tertulis dan aktual; di dunia nyata banyak pekerjaan kantor dipartisi dan didokumentasikan secara tidak resmi.

Camp A akan dengan lemah menentukan bahwa Fitur X berfungsi seperti ini, maka Camp B akan gagal karena tidak berfungsi seperti itu.

Ketidakcocokan antara CampA dan CampB adalah masalah politik dan bukan masalah perangkat lunak. Memecahkan masalah akan melibatkan berbicara dengan orang-orang dan mendapatkan satu pemenang yang jelas.

Tangurena
sumber
5
Mengingat komentar "ketidakcocokan antara CampA dan CampB adalah masalah politik ..." Saya menandai ini sebagai jawaban yang 'benar'.
DevSolo
Dalam scrum itu adalah tugas peran pemilik produk untuk mendorong CampA dan CampB ke satu solusi umum. Untuk tim pengembang seharusnya hanya ada satu kebenaran yang disampaikan oleh pemilik produk.
k3b
@ k3b itu benar, tetapi OP tidak mengatakan bahwa mereka bermaksud melakukan Scrum. Sepertinya mereka tidak memiliki siapa pun yang cocok dengan peran 'pemilik produk' scrum.
bdsl
7

Salah satu alasan utama untuk menggunakan iteratif pengembangan adalah karena Anda memiliki grup pelanggan yang tidak memiliki gagasan yang baik tentang apa yang diinginkannya.

Ini bukan kegagalan. Banyak pelanggan tidak memiliki gagasan tentang apa yang mereka butuhkan sampai mereka mendapatkan sesuatu di tangan mereka. Inilah sebabnya mengapa mereka pertama kali pelanggan melihat sistem tidak boleh setelah semua kesesuaian dan penyelesaian telah dilakukan. Biarkan mereka melihatnya lebih awal dan sering.

Dengan kata lain, jika itu adalah satu-satunya masalah, tidak perlu panik kecuali Anda berakhir dalam situasi di mana Anda hanya perlu mencoba ulang tanpa akhir.

Masalah ketidaksepakatan di antara tubuh pelanggan adalah masalah Product Manager yang seharusnya tidak bocor ke Anda. Yang paling harus Anda lihat adalah jaminan simpanan / tugas / apa pun. Tentu saja, PM akan sering curhat dalam berbagai pengembangan karena itulah satu-satunya tempat mereka bisa, tetapi seharusnya tidak mempengaruhi Anda.

Cara pengelolaannya akan sangat tergantung pada siapa Camp A dan Camp B berada.

Jika Camp A dan Camp B mewakili dua petinggi, maka bawa seseorang yang benar-benar akan menggunakan sistem untuk memberi tahu Anda apa yang Anda butuhkan. Terkadang Anda mendapatkan udara yang langka di lahan pengelolaan yang menyebabkan terputusnya kenyataan. Seseorang yang aktif sering dapat memotong idealisme dan menunjukkan apa yang sebenarnya dibutuhkan.

Di sisi lain, jika A dan B adalah kelompok pengguna, Anda menggunakan taktik yang berlawanan untuk mendapatkan seseorang dari manajemen untuk menetapkan hukum.

Dalam semua kasus, kesempurnaan adalah musuh yang cukup baik.

MIA
sumber
5

Apa yang Anda gambarkan adalah implementasi Agile yang salah. Anda tidak menerima perubahan, Anda adalah budaknya .

Apakah Anda memiliki pemilik produk? Bisakah Anda berbicara dengan mereka sesuai kebutuhan? Apakah Anda melakukan tinjauan sprint dengan pengguna? Apakah pengguna terlibat dalam proses (melalui pemilik produk) dalam perencanaan sprint? Apakah Anda memiliki penguji di tim utama?

Saya sangat menyarankan agar Anda menyewa pelatih Agile dan / atau mengirim tim Anda ke pelatihan.

Solusi lain adalah berhenti melakukan Agile.

Phrancis
sumber
Kami sebenarnya memiliki pelatih Agile. Saya seharusnya menyebutkan itu. Dia dan saya yang menciptakan istilah FDD. Sejauh pemilik produk, itu juga pelanggan. Yang kebetulan cukup besar sehingga usaha mereka kondusif untuk perilaku ini.
DevSolo
@DevSolo: apakah dia CSM, CSC atau CST? Jika dia CSM, itu tidak cukup untuk melatih.
@ Pierre303 Apa yang Anda maksud dengan CSM, CSC atau CST?
Songo
Master Scrum Bersertifikat, Pelatih Scrum Bersertifikat, Pelatih Scrum Bersertifikat
1
@gnat: ya ini aku
4

Jika mereka ping-ponging (A mengatakan do x, B menolak, mengatakan y, maka A menolak dan kembali ke x), maka lead Anda (PO atau apa pun yang Anda punya) perlu menghajar mereka untuk mengambil keputusan. .

Tidak apa-apa jika langkah pertama berakhir tidak memenuhi kebutuhan mereka (intinya adalah memberi mereka sesuatu untuk dilihat), tetapi jika mereka duduk di sana dan berayun bolak-balik pada iterasi berikutnya Anda tidak akan pernah selesai.

Michael Kohne
sumber
3

Masalahnya di sini sepertinya bukan "Aku akan tahu kapan aku melihatnya". Wireframes dapat membantu (sampai titik tertentu) dengan masalah khusus itu.

Masalahnya di sini adalah, menurut saya, dua faksi yang bersaing dalam klien Anda. Idealnya, kamp A dan B akan datang dengan beberapa visi bersama yang dinegosiasikan yang dapat mereka berikan kepada Anda.

Mungkin mereka mungkin dipaksa ke meja dengan Anda menjelaskan berapa biaya dalam pertempuran saat Anda kembali mengulangi apa yang diminta A untuk B (atau sebaliknya).

Menyimpan catatan terperinci tentang pengeluaran waktu Anda akan membantu di sini. (Pekerjaan saya menulis aplikasi pengaturan waktu yang ringan: mudah digunakan, dan mudah untuk melaporkan, dan melaporkan waktu dalam potongan 15 menit. Mudah untuk mengatakan "Saya menghabiskan n jam di fitur X.")

Ini berarti Anda berisiko sedikit mengecewakan klien atau terlihat buruk apa pun yang Anda lakukan, karena apa yang Anda lakukan untuk B mungkin mengecewakan A (atau, sekali lagi, sebaliknya).

Semoga Anda dapat menemukan seorang juara di klien yang dapat mengurus pertikaian untuk Anda.

Frank Shearar
sumber
3

Seperti yang saya lihat, masalahnya hanya dapat diselesaikan secara efektif di satu tempat, di tempat pelanggan, yang akan menjadi sulit.

Anda menyebutkan bahwa Anda berjuang untuk gesit, jadi saya akan mengambilnya dari perspektif scrum, yang merupakan proses tangkas yang saya tahu paling baik.

Menurut scrum, Anda memiliki peran spesifik, pemilik produk, yang bertanggung jawab untuk memprioritaskan cerita pengguna / bug / rilis, dll. Ini idealnya hanya satu orang. Jika ada banyak pihak yang berkepentingan dengan pandangan berbeda tentang perangkat lunak yang sama, merupakan tanggung jawab pemilik produk bahwa produk tersebut memuaskan semua pihak yang berkepentingan.

Kedengarannya bagi saya bahwa manajer proyek Anda memiliki peran ini. Tetapi karena dia disebut manajer proyek, dan bukan pemilik produk, saya dituntun untuk percaya bahwa dia dibebani dengan tugas-tugas lain juga (tradisional, tidak tangkas, tugas manajemen?), Dan tidak punya cukup waktu untuk mengejar peran pemilik produk.

Jadi saya percaya bahwa Anda memerlukan satu orang dengan tanggung jawab mengoordinasikan kebutuhan antara tim yang berbeda di pelanggan, memastikan bahwa persyaratan / kisah pengguna yang disampaikan kepada pengembang telah diverifikasi oleh kedua tim di pelanggan. Mengejar peran ini dapat dengan mudah menjadi pekerjaan penuh waktu, terutama dengan pelanggan yang Anda miliki.

Apa yang benar-benar ideal adalah memindahkan tanggung jawab ini kepada pelanggan, agar salah satu karyawan pelanggan Anda memiliki peran sebagai pemilik produk. Selama pelanggan tidak memiliki peran ini, pelanggan tidak berkomitmen untuk menyelesaikan pertikaian internal mereka sendiri, dan mereka menyerahkan kepada Anda untuk menyelesaikannya, yang kemungkinan besar tidak akan mampu Anda lakukan. Dan itulah sebabnya saya percaya bahwa satu-satunya solusi yang efektif adalah memberi pelanggan tanggung jawab ini.

Tetapi mengingat fakta bahwa Anda sudah memulai kolaborasi, saya yakin Anda akan kesulitan mengimplementasikan perubahan itu.

Pete
sumber
Bagi saya itu tidak terdengar seperti PM adalah pemilik produk. Pertanyaannya mengatakan PM "berusaha untuk mendapatkan kriteria penerimaan dari pelanggan, tetapi itu tidak selalu mungkin". Bagi saya 'pemilik produk' berarti seseorang yang membuat kriteria penerimaan sendiri, daripada meminta pihak lain untuk mereka. Masalah inti di sini tampaknya adalah bahwa tidak ada kebijakan yang jelas tentang siapa yang sebenarnya memiliki wewenang untuk menetapkan kriteria penerimaan.
bdsl
2

Agar perangkat lunak Anda diterima oleh pelanggan Anda harus memenuhi persyaratan yang ditetapkan oleh pelanggan sesuai dengan kriteria penerimaan.

Anda memang memiliki seperangkat persyaratan pengguna dalam bentuk cerita dan kriteria penerimaan, tetapi bagian dari organisasi pelanggan memiliki interpretasi yang berbeda dari cerita pengguna, yang mengarah pada ambiguitas.

Anda dapat keluar dari situasi ini dengan menjelaskan desain fungsional dan aturan bisnis yang diterapkan dan membuatnya ditandatangani oleh pelanggan. Ini akan menjadi apa yang diuji terhadap selama penerimaan. Ini harus disetujui sebelumnya oleh pelanggan untuk mencegah diskusi tentang arti semua dokumentasi sesudahnya.

Selama grup Anda tidak dapat menggambarkan perangkat lunak yang Anda buat sedemikian rupa sehingga kedua kelompok menyetujuinya, Anda masih dalam tahap analisis persyaratan proyek.

Manajer proyek Anda dapat / harus menawarkan konsultasi berbayar sebagai bagian dari proyek untuk menyelesaikan ambiguitas dalam persyaratan fungsional.

rsp
sumber
1

Saya pikir kita semua telah melihat kasus di mana kita mendapatkan persyaratan terperinci dari pengguna, mengimplementasikannya, lalu mendengar dari pengguna "Tunggu, itu tidak akan bekerja untuk saya" setelah diterapkan.

Satu hal yang akan membantu adalah melakukan bentuk QA pada persyaratan dengan memberikan contoh rinci kepada pengguna dengan perilaku sistem yang diharapkan. Misalnya, Anda mungkin berkata: "Ini contoh kasus. Jika kita menerapkan X, maka Y akan menjadi hasilnya, dan Z salah satu konsekuensinya." Dengan begitu, Anda bisa masuk ke "Tunggu, itu tidak akan berhasil" sebelum Anda menulis kode alih-alih setelahnya.

Larry Coleman
sumber