Pengembangan perangkat lunak tangkas: Bagaimana Anda bereaksi * secara finansial * terhadap perubahan kebutuhan pengguna?

13

Ada satu hal yang saya selalu bertanya-tanya ketika membaca tentang semua hal "pengembangan tangkas" di sini di SE dan situs lainnya:

Dalam rekayasa perangkat lunak "tradisional", Anda

  1. mengumpulkan persyaratan pengguna,
  2. tulis spesifikasi berdasarkan persyaratan ini,
  3. memberikannya kepada pelanggan dan menagihnya untuk pekerjaan yang dilakukan sejauh ini,
  4. melakukan desain teknis (kasar), sehingga Anda dapat memperkirakan biaya implementasi,
  5. memberi pengguna penawaran harga untuk implementasi,
  6. menunggu pelanggan untuk menandatangani spesifikasi dan menerima penawaran,
  7. desain, implementasikan, uji,
  8. tagihan.

Jika, selama proses, persyaratan berubah, Anda mengirim penawaran (dengan harga) untuk perubahan yang diinginkan (atau melakukannya secara gratis jika perubahannya kecil, Anda menyukai pelanggan dan pelanggan tidak melakukannya terlalu sering) .

Jadi, bagaimana ini bekerja (secara finansial) dalam proyek gesit, di mana perubahan persyaratan sering menjadi bagian dari proses?

  • Apakah Anda menulis penawaran untuk setiap perubahan desain? (Bukankah ini cukup berantakan?)
  • Atau apakah Anda menegosiasikan harga tetap dan berharap bahwa pelanggan tidak terlalu sering mengubah persyaratan? (Bisa berisiko, saya tahu pelanggan yang akan menggunakan kesempatan ini untuk meminta fitur baru selama bertahun-tahun sebelum menerima bahwa proyek selesai.)
  • Atau apakah Anda hanya menagih pelanggan untuk total waktu yang dibutuhkan? (Bisa berisiko bagi pelanggan, yang tidak tahu biaya di muka.)
Heinzi
sumber
5
Saya pikir perbedaannya bukan bahwa "perubahan persyaratan sering adalah bagian dari proses", tetapi bahwa mereka adalah bagian yang diakui secara eksplisit dari proses.

Jawaban:

13

Dalam dunia Agile yang ideal, Anda menyetujui harga di muka dan beberapa jam, tetapi tidak dalam cakupan. Pelanggan memutuskan apa produk minimum yang bermanfaat, daripada produk yang benar-benar mereka inginkan, dan itu harus memperkirakan jauh dari jumlah jam yang disepakati.

Kemudian Anda memberikan kepada mereka iteratif dan mereka mengubah pikiran mereka semua yang mereka inginkan, tetapi Anda tidak pernah membahas jumlah jam yang disepakati. Secara teori, dan sering dalam praktik, mereka berakhir dengan produk yang benar-benar mereka butuhkan daripada produk yang mereka inginkan.

Dan jika mereka ingin terus membayar Anda selama berjam-jam setelah nilai awal yang disepakati, tidak masalah juga. Jika Anda melakukan pekerjaan yang cukup baik untuk membuat kemajuan terlihat, melalui kartu cerita, Greenhopper atau apa pun, Anda dapat membuatnya sangat jelas bagi pelanggan yang fitur mereka kehilangan (atau setidaknya deprioritising) setiap kali mereka menambahkan sesuatu yang baru, yang sebagian besar menempatkan berhenti untuk perubahan sembrono.

Ada dua risiko yang patut dicatat di sini. Pertama adalah bahwa pelanggan mungkin takut, jika dia tidak mengerti Agility di muka. Sepertinya dia mengambil semua risiko. Hanya pengalaman yang menunjukkan bahwa dia tidak benar-benar.

Yang kedua adalah bahwa mereka harus terlibat, sepanjang seluruh proses, atau semua orang akan kalah. Banyak pelanggan gagal memahami bagaimana mereka harus bertunangan sampai terlambat.

Tetapi jika Anda, sebagai sebuah perusahaan, menjelaskannya dengan cukup baik, semua orang adalah pemenang.

pdr
sumber
2
Agile benar-benar fokus dalam mengelola pengalaman dan harapan klien. Penting untuk mengklarifikasi bahwa pelanggan mendapatkan apa yang mereka butuhkan pada akhir proyek, bahkan jika mereka secara efektif menghapus beberapa fitur pada tanggal jatuh tempo. Kuncinya adalah untuk menghindari menentukan terlalu banyak detail spesifik dalam kontrak, dan membuat kontrak tersebut diucapkan sehingga pelanggan setuju bahwa mengubah pikiran mereka tidak menyiratkan mereka mendapatkan lebih banyak daripada yang dapat Anda berikan sebagai hasilnya. Di sinilah keterlibatan pelanggan sangat penting bahkan sebelum Anda menandatangani perjanjian.
S.Robins
+1 - paragraf pertama adalah deskripsi yang bagus, ringkas, tentang apa yang bisa Agile berikan kepada Anda. "Yang kedua adalah mereka harus bertunangan" juga sangat penting.
ozz
Sebuah sulit untuk mendapatkan tujuannya adalah untuk menghentikan orang-orang dari melakukan Jam Ekstra, ketika mereka melakukan perkiraan buruk dan mencoba untuk mencapai tujuan Iterasi / Sprint. Setiap kali kita membiarkan Praktek Buruk ini kita berakhir dengan kecepatan palsu. Itu sebabnya saya memilih jawaban ini karena paragraf pertama menjelaskan bagaimana kita harus mengatur waktu kita, mengetahui bahwa tujuannya adalah untuk bekerja, yang terbaik yang kita bisa, jumlah jam tertentu dan mengukur kembali Lingkup yang diperlukan.
Lorenzo Solano
Apakah itu berarti bahwa jenis kontrak proyek lincah tidak boleh harga tetap?
Ben Cheng
4

Beberapa orang berusaha untuk memberikan solusi untuk menggunakan Agility dalam proyek-proyek harga tetap di masa lalu. Saya pribadi berpikir itu umumnya tidak mungkin.

Scrum khususnya cocok untuk perusahaan perangkat lunak produk , dan kurang digunakan di perusahaan jasa.

Anda dapat menggunakan beberapa kelincahan dalam proyek Anda, seperti iterasi, stand-up harian, burndorn, dll, tetapi saya dapat meyakinkan Anda bahwa jika Anda menawarkan sejumlah hal untuk harga tertentu dan memberikan kurang dari apa yang ada dalam kontrak, Anda akan memiliki masalah.

Tolong jangan sajikan Agility à toutes les sauces . Kita harus menggunakan solusi yang tepat untuk masalah yang diberikan.


sumber
Tetapi mungkin vraiment ;) Dalam kasus kontrak harga tetap, itu dapat bekerja jika klien tim pengembangan perangkat lunak adalah manajer aplikasi internal (s) daripada klien perusahaan. Sebagai pengembang perangkat lunak, Anda mengirimkan cerita pengguna kepada manajer aplikasi dan analis bisnis dan mereka menerimanya atas nama pelanggan. Jika perusahaan salah kelola dan tidak memenuhi kontrak, maka pemiliknya adalah orang-orang tersebut, karena mereka tidak menyampaikan kebutuhan kontrak dengan ruang lingkup proyek.
maple_shaft
1
@maple_shaft: ya itu benar-benar mungkin dan direkomendasikan. Tautan yang saya tambahkan berasal dari orang yang mengklaim itu berfungsi. Tetapi Anda harus mendapatkan cara kerja ini (ruang lingkup tidak pasti untuk harga tetap & waktu atau ruang lingkup tertentu dengan harga & waktu tertentu) oleh pelanggan.
3

Ini tidak benar-benar terkait dengan pemrograman Agile atau model apa pun yang Anda gunakan. Bekerja sebagai freelancer, saya menggunakan campuran Waterfall dan V-model, tetapi masih memiliki masalah yang sama: bagaimana jika pelanggan ingin mengubah sesuatu selama desain rinci? Bagaimana jika dia membuat perubahan selama implementasi?

Pendekatan yang harus Anda gunakan tergantung pada pelanggan dan hubungan Anda.

Jika kontak harus dimiliki untuk semua yang Anda lakukan untuk pelanggan ini, karena Anda tahu bahwa ia berusaha untuk tidak membayar ketika ia bisa, atau dia akan mencoba menuntut Anda kapan pun memungkinkan, maka ya, Anda harus menulis penawaran untuk setiap perubahan kecil dalam persyaratan. Ini tidak berantakan: jika Anda terorganisir dengan baik, mungkin tidak terlalu sulit untuk mengakomodasi persyaratan baru selama pengembangan. Namun yang pasti, ini adalah kehilangan waktu dan uang, dan agak aneh harus menandatangani tawaran untuk perubahan yang akan memakan waktu dua jam untuk Anda terapkan.

Untuk pelanggan lain, pendekatan yang berfungsi dengan baik adalah sebagai berikut:

  • Saat menandatangani penawaran pertama, tentukan perkiraan biaya dan biaya maksimum. Perkiraan biaya tidak berarti apa-apa secara hukum: itu hanya perkiraan. Biaya maksimum memiliki nilai hukum: jika Anda mengatakan bahwa produk tersebut akan menelan biaya $ 3.000 kepada pelanggan Anda, dan akhirnya biaya Anda $ 3.157,24, pelanggan masih harus membayar $ 3.000. Dalam praktiknya, dalam kebanyakan kasus, biaya riil akan kurang dari maksimum yang diberikan, dan lebih dekat dengan perkiraan Anda.

  • Ketika pelanggan meminta untuk mengubah persyaratan, perkirakan biaya yang dimilikinya dan bandingkan dengan biaya dan keadaan yang sebenarnya. Jika Anda hampir menyelesaikan produk dan biaya sebenarnya adalah $ 2.108,36 dan biaya perubahan diperkirakan $ 150, lakukan saja. Jika, di sisi lain, ada risiko mencapai maksimum, kemudian beri tahu pelanggan Anda bahwa Anda harus mengevaluasi kembali keseluruhan biaya secara bersamaan.

Arseni Mourzenko
sumber
3

Agile dan 'Menulis penawaran' sepertinya antitesis :) - yang terakhir bukanlah rekayasa perangkat lunak yang produktif: D

Oke, sekarang kita memiliki lelucon - kembali ke hal yang nyata.

"Bagaimana cara kerjanya di Agile ?" - kontrak menyulitkan banyak hal tetapi saya berharap untuk membuatnya jelas. Agile didirikan di atas prinsip 'kepercayaan' dan 'kerja sama' yang berarti bahwa pelanggan diizinkan untuk mengubah apa pun, kapan pun dan memahami bahwa harganya mungkin sedikit lebih mahal atau jika tidak mengganggu, mungkin tanpa biaya tambahan.

Apa artinya ini? Ini berarti bahwa kontrak menjelaskan bahwa kami (klien) menetapkan estimasi awal biaya dan%% +- yang dapat kami tangani mis. Tawaran $ 100K, tetapi saya bersedia naik hingga $ 120K (MUNGKIN ini tidak bagian dari kontrak, tetapi dalam pikiran pelanggan).

Sekarang, ketika perubahan desain datang Anda lincah dengan estimasi dan perencanaan untuk - Anda mengumpulkan tim Anda dan bertanya kepada mereka perkiraan 'titik cerita' dan kompleksitas dari memperhitungkan perubahan. Karena perkiraan kecepatan, Anda dapat mengalikannya dan memberikan perkiraan jadwal. Seharusnya relatif mudah untuk menghilangkan biaya per poin cerita jika Anda tahu tim dan gaji relatif mereka (tolong jangan rata-rata di setiap gaji SEMUA ORANG, Anda akan menyerah pada kekurangan rata-rata).

Apakah Anda perlu kembali ke pelanggan dengan keuangan? TIDAK. Belum tentu. Anda akan meminta pelanggan memprioritaskan ini dan menyisipkannya di tempat yang benar dalam jaminan. Sekarang setelah Anda mengetahui ukuran simpanan (Anda harus melakukannya jika belum melakukannya) dan berdasarkan pada keuangan (biaya per titik cerita), Anda tahu persyaratan prioritas rendah mana yang mungkin tidak dapat dilakukan dengan anggaran yang diberikan. TUNJUKKAN mereka simpanan yang diprioritaskan kembali dengan perkiraan fitur yang dapat dilakukan sesuai kontrak $$. Kemudian biarkan mereka memutuskan apakah mereka bersedia membayar lebih untuk mendapatkan lebih banyak jika / ketika Anda / mereka sampai di sana. Jika mereka menginginkannya secara gratis ... Anda mengambil sikap dan KATAKAN kepada mereka bahwa itu akan lebih mahal.

Ini akan membantu tanpa Anda terus-menerus kembali dengan keuangan jika Anda dapat memiliki grafik ini di suatu tempat untuk dilihat oleh pelanggan.

Semoga ini membantu!

PhD
sumber
1

Pengalaman orang lain mungkin akan berbeda, tetapi satu cara saya telah melihatnya sebagian besar sama dengan "tradisional" Anda dengan beberapa hal yang perlu diperhatikan:

  1. Buat beberapa overhead untuk perubahan (misalnya, 10%)
  2. Menilai dan secara terpisah menagih untuk perubahan besar atau agregat dan perubahan tagihan di luar biaya bawaan (yang baik, meskipun tidak pemrograman, contohnya adalah pekerjaan desain, di mana sering kali biaya awal termasuk, katakanlah 3 revisi, dan revisi berikutnya atau mungkin total redos adalah tambahan)

Seringkali juga, proyek tangkas dimulai sebagai item "inti", dan berputar keluar dari sana dengan cara modular berdasarkan kebutuhan (saya telah melihat ini terjadi sedikit pada proyek yang saya libatkan). Jadi, Anda mulai dengan produk inti, katakanlah itu adalah aplikasi pemetaan. Implementasi pertama hanyalah peta yang berpusat pada lokasi Anda saat ini (apa yang awalnya dipesan oleh pelanggan).

Pelanggan kemudian memutuskan mereka ingin memiliki beberapa tetes atraksi tertentu di sekitar Anda. Oke, itu bagian yang cukup besar (relatif berbicara), jadi Anda menagihnya sebagai "modul" baru atau pesanan pembelian. Perubahan pada hal-hal seperti warna atau desain pin-pin tersebut dibangun ke dalam biaya pesanan itu. Arahan dan overlay adalah pesanan pembelian lain, karena mereka tidak diminta sampai setelah pesanan pembelian lainnya berlangsung, dan seterusnya dan seterusnya.

Shauna
sumber