Banyak kali selama fase penawaran proyek saya menerima persyaratan sistem perangkat lunak dari pelanggan potensial kami dalam format yang sangat tidak terstruktur dari berbagai sumber [email, dokumen word, excel]. Biasanya sekelompok "pengembang produk" dari pihak pelanggan yang membuat "solusi yang diusulkan" untuk masalah bisnis yang mereka miliki. Meskipun mereka adalah pakar di bidang bisnis, sering kali mereka tidak memiliki solusi yang tepat.
Ini menghasilkan
- beberapa versi dengan persyaratan yang sama
- mencampur dua persyaratan menjadi satu
- beberapa versi persyaratan di kemudian hari, persyaratan yang digabungkan bersama-sama dipisahkan lagi, masing-masing membawa serta beberapa tambahan baru
Bagaimana Anda bekerja dengan persyaratan yang masuk dan memilahnya ke dalam kasus penggunaan yang tepat dan sebelum pengembangan dimulai? Alat apa yang dapat kita gunakan untuk melacak riwayat persyaratan tertentu, dari pertama kali dikandung sampai saat itu dikristalisasi menjadi case use yang tepat? Memperkirakan pekerjaan melawan persyaratan yang diterima dengan cara seperti itu adalah mimpi buruk yang akhirnya membuat kesalahan dalam memahami persyaratan dengan benar dan memperkirakan upaya melawannya dengan benar.
Setelah kami memenangkan proyek, maka pelanggan telah memikirkan kebutuhan mereka dan dapat mengartikulasikannya dengan benar. Apa yang terjadi dalam kasus ini adalah bahwa beberapa fungsionalitas hilang, beberapa ditingkatkan, beberapa mengambil giliran baru. Ini pada dasarnya dapat membatalkan beberapa estimasi item pekerjaan yang dibuat sebelum proyek dimenangkan. Saya akan tertarik mengetahui apakah ada sistem yang dengannya kita dapat membangun pohon dengan persyaratan tertentu dan bagaimana setiap cabang menghasilkan estimasi yang berbeda.
Adakah tips, alat, trik untuk membuat aktivitas ini lebih mudah dikelola? Saya hanya mencoba untuk mendapatkan wawasan dari seseorang yang lebih berpengalaman daripada saya dalam manajemen kebutuhan dan estimasi upaya.
sumber
Jawaban:
Persyaratan akan tumbuh dan berubah. Saya tidak berpikir ada yang bisa membantah hal itu.
Cara mengumpulkan dan memproses permintaan masuk .
Dalam pengalaman saya, membantu ketika mengumpulkan persyaratan jika ada sekelompok pelanggan tunggal atau sangat kecil yang bertindak sebagai filter untuk memberikan persyaratan baru atau yang diperbarui kepada sekelompok kecil perencana pengembangan. Siapa pun dari pihak mereka dapat mengusulkan atau menulisnya, tetapi pengiriman harus melalui hanya beberapa yang sangat kecil. Semakin sedikit orang yang terlibat dalam pertukaran dari satu pihak ke pihak lainnya, semakin baik.
Tujuan penyaringan melalui sekelompok orang yang lebih kecil bukan untuk membuang atau mengurangi upaya dan informasi yang dimasukkan orang lain, bahkan jika duplikat atau tampaknya tidak penting di permukaan, tetapi untuk membatasi titik kegagalan: informasi yang hilang atau salah penanganan. Ini mengikuti prinsip yang mirip dengan tujuan enkapsulasi dan antarmuka: melindungi data pribadi, dan menetapkan protokol umum untuk menangani permintaan serupa. Biarkan saya ulangi: pengajuan duplikat ok. Sebagai perencana, itu memberi tahu saya hal yang mereka bicarakan atau usulkan itu penting. Simpan atau rekam semuanya.
Cara melacak dan mengatur persyaratan
Dalam jangka pendek, gunakan teknologi rendah
Jelas ada solusi teknologi rendah yang dapat efektif untuk sebagian besar dalam mengatur dan melacak persyaratan yang masuk: papan tulis, perekat, papan poster, apa pun yang Anda miliki. Ini bisa bagus untuk perencanaan jangka pendek. Mereka sangat terlihat, menerima notasi bentuk bebas, dan mudah untuk 'mengkonfigurasi ulang'.
Dalam jangka panjang, gunakan alat perangkat lunak yang dapat dicari, disortir, dan dapat ditautkan
Untuk upaya jangka panjang, beberapa jenis perangkat lunak akan berharga. Ada alat manajemen persyaratan khusus: Pintu, Clearcase / Clearquest, dan banyak lainnya. Alat-alat yang sangat terspesialisasi itu hebat dalam apa yang mereka lakukan, tetapi sering kali terlalu banyak membunuh. Kadang-kadang bahkan spreadsheet biasa tidak lebih dari cukup. Saya pribadi menemukan sistem pelacakan masalah umum cukup berguna untuk mencapai hal ini, dan saat ini favorit saya adalah redmine, tetapi yang lain saya yakin akan baik-baik saja juga.
Dengan sistem pelacakan masalah, siapa pun yang Anda pilih dapat mengizinkan dapat membuat 'masalah baru' atau persyaratan, dan menambahkan detail apa pun yang mereka ingin masukkan. Mereka dapat menonton masalah ini, dan memberikan umpan balik untuk setiap tindakan yang Anda ambil dengannya. Anda dapat mengkategorikan ulang, menyesuaikan prioritas, menulis ulang badan, melampirkan informasi tambahan, mengaitkannya dengan 'masalah' lainnya, mempromosikan ke fitur tingkat yang lebih tinggi atau 'use case' atau cerita atau istilah apa pun yang cocok dengan sistem Anda, ad nauseum. Dengan kata lain, Anda dapat melakukan banyak hal untuk membuat daftar persyaratan yang dapat dilacak, disortir, diprioritaskan, sadar sejarah, terkait melalui masalah. Plus menjadi cukup dapat dikonfigurasi di luar kotak, dan open-source, jika alat ini tidak cukup apa yang saya butuhkan atau inginkan, saya dapat mengubahnya dengan mudah agar lebih sesuai dengan kebutuhan proses saya.
Catatan terakhir tentang alat, beberapa orang yang saya ajak bicara memiliki banyak keberhasilan menggunakan file teks biasa dalam manajemen perubahan dan sistem versi. Mereka jelas mendapatkan manfaat dari versi sejarah. Mereka juga menggunakan sistem operasi dasar dan alat pelengkap untuk menemukan, menghubungkan, dan membuat katalog persyaratan. Mereka tidak dapat menambahkan sebanyak mungkin informasi meta terkait yang terstruktur, tetapi mereka merasa tidak membutuhkannya, dan karena upaya mereka tidak menambah nilai yang cukup. Itu mungkin atau mungkin tidak demikian bagi Anda. Keuntungannya adalah kemungkinan beberapa perangkat lunak pada tumpukan pengembangan Anda untuk dikelola dan dikelola.
Persyaratan pasca kickoff pemberian kontrak / pengembangan proyek pasca
Aspek terakhir dari pertanyaan, adalah bagaimana mengelola persyaratan setelah upaya dimulai. Saya pikir ada dua pemikiran utama tentang ini, dan bagian dari cara Anda menanganinya tergantung pada sifat hubungan Anda dengan pelanggan: pertama, jika berdasarkan kontrak dengan nilai tetap, persyaratan yang muncul setelah pemberian kontrak dapat dimasukkan. Implikasinya adalah mereka dapat mengubah ruang lingkup upaya, sehingga tarif atau tagihan akan lebih tinggi ketika barang-barang ekstra dikirim dan diterima; kecuali upaya yang setara dikeluarkan dari proposal yang diterima. Jika perubahan ruang lingkup, Anda harus memastikan pelanggan memahami dan menerima konsekuensinya, jika tidak, keterlambatan pengiriman harus diajukan.
Kedua, untuk persyaratan baru yang masuk setelah kontrak diberikan, dan kontrak lebih berorientasi pada upaya waktu dan material (apa pun untuk menyelesaikan pekerjaan), Anda dapat dan harus sedikit lebih fleksibel jika pelanggan bersikeras untuk memasukkannya selama perjalanan tersebut. Anda akan dibayar apakah Anda memasukkannya atau tidak, selama semua yang Anda katakan akan dilakukan.
Jika Anda tidak terbiasa dengan mereka, Anda mungkin ingin melihat pendekatan Kanban dan metode Agile. Teknik-teknik ini dapat membantu memusatkan perhatian pada masalah-masalah mendesak, tanpa harus melupakan tujuan pembangunan jangka panjang.
Presentasikan opsi sebagai skenario 'bagaimana jika' dan berikan pelanggan pilihan dan keputusan
Dalam kedua kasus tersebut, perkiraan 'bagaimana jika' adalah strategi yang baik untuk digunakan ketika bernegosiasi dengan pelanggan dan tim Anda. Buat perbandingan tugas-tugas, biaya, dan jadwal sesuai rencana, dengan kolom yang menunjukkan informasi yang sama untuk pendekatan alternatif. Microsoft Project mungkin adalah kandidat yang baik untuk melakukan ini karena Anda dapat membuat estimasi yang berbeda berdasarkan serangkaian tugas yang hampir sama.
Namun, bahkan spreadsheet dasar seringkali sama efektifnya untuk menunjukkan bagaimana perubahan atau inklusi spesifik akan berdampak pada biaya dan jadwal. Daftar dalam hal ini mungkin sama efektifnya dengan pohon dalam menunjukkan perbedaan. Alat dan metode yang Anda pilih untuk membangun skenario ini sangat tergantung pada ukuran proyek dan staf (tetapi bahkan perangkat lunak triple A seperti MS Project memiliki batas kegunaan dan kemampuannya sendiri).
Pertimbangkan ini bagaimana jika skenario sebagai item kerja internal dan simpan selama proyek. Mereka adalah demonstrasi kritis dalam pengambilan keputusan dan proses negosiasi. Anda mungkin juga harus mengunjungi mereka kembali, atau mengulanginya untuk putaran bagaimana jika.
Saat menyiapkan skenario bagaimana jika, penjelasan tambahan tentang pro dan kontra dari perspektif teknis atau implementasi (dalam istilah yang disederhanakan) mungkin berguna untuk membantu membenarkan mengapa satu alternatif akan memiliki dampak yang begitu signifikan.
sumber
Saya akan melihat ini sebagai proses berulang. Langkah 1 adalah mengumpulkan persyaratan. Langkah 2 adalah menyortirnya. Langkah 3 adalah memprioritaskan mereka. Langkah 4 adalah memecah masing-masing menjadi bit yang cukup kecil untuk memperkirakan upaya. Langkah 5 adalah untuk menyatukan bit-bit ini ke dalam ember upaya global (misalkan 84 orang-hari). Langkah 6 adalah memetakan upaya untuk sumber daya (84 orang-hari / 2 devs = 42 hari).
Jadi saat ini Anda terjebak antara langkah 1 dan langkah 2. Anda memiliki persyaratan, tetapi Anda tidak memilikinya dalam bentuk yang Anda butuhkan.
Katakanlah Anda memiliki beberapa versi dengan persyaratan yang sama. Apakah ini pada dasarnya sama? Jika demikian, pilih yang tampaknya paling jelas dan gunakan. Jika detailnya berbeda, pilih yang paling logis dan gunakan yang itu. Kemudian kirim pesan ke klien meminta mereka untuk memverifikasi persyaratan. Anda mungkin harus bolak-balik dan beberapa kali untuk mendapatkan persyaratan yang benar. Jangan menyerah atau berkecil hati. Banyak proyek gagal karena persyaratan yang buruk.
Gunakan proyek Microsoft untuk menjaga pekerjaan dan jadwal selaras dengan persyaratan yang berubah. Jika klien meminta perubahan, tentukan pekerjaan tambahan, masukkan itu ke model Anda, dan beri tahu mereka tentang tanggal baru. Jangan terjebak untuk percaya bahwa Anda bisa membawa devs baru secara acak untuk mengambil slack. Jadwal Anda harus memperhitungkan waktu peningkatan setiap kali sumber daya baru ditambahkan. Anda hanya dapat memodelkan ini dengan benar jika Anda memperhatikan setiap proyek dan belajar darinya. Katakanlah Anda membawa Bob ke proyek X setelah berputar selama 4 bulan. Seberapa produktif dia di bulan ke-1? Ke 3?
Anda harus mengunjungi kembali model proyek setiap minggu, membuat pembaruan di mana pun diperlukan. Menyimpan catatan historis dari perubahan tersebut. Ini akan membantu Anda memberikan perkiraan yang lebih baik di masa mendatang.
doug
sumber