Ok saya sudah mengalami ini berkali-kali, tapi di sini adalah skenario terburuk yang sedikit berlebihan.
Seorang klien berkata, "Bisakah Anda membuatkan kami modul kecil ini untuk melakukan tugas kecil ini"?
Saya: "Tentu tidak masalah".
Jadi berdasarkan anggaran dan kendala dll, saya melewatkan beberapa arsitek dan menyelam langsung dan membuatnya tidak berkeringat.
Kemudian mereka meminta modul lain. Dan satu lagi. Dan beberapa peningkatan. Dan ini semua terjadi sangat lambat dalam pikiran Anda, selama bertahun-tahun. Dan sebelum Anda menyadarinya, Anda memiliki aplikasi monster yang dirancang dengan mengerikan ini.
Apa yang Anda lakukan ketika Anda diminta melakukan sesuatu yang kecil? Anda tidak tahu apakah itu akan terus tumbuh ... jika klien akan terus meminta tambahan (dan mereka juga tidak).
Anda tidak dapat terlalu-arsitek hal, karena itu hanya aplikasi kecil setelah semua, dan mereka akan pergi ke tempat lain jika Anda mengatakan (bahwa saya tahu semua suara) -o-the-line keamanan dan pemisahan kekhawatiran. Sebenarnya mari kita pergi dengan alat injeksi ketergantungan yang benar-benar akan membuat hal ini fantastis, bla bla bla ".
Mereka akan berkata "Ya benar" dan pergi ke orang lain.
Anggaran, waktu, dan persepsi sama pentingnya dengan merancang aplikasi itu sendiri.
Bagaimana ini harus didekati?
Saya kira pertanyaannya benar-benar bermuara pada "Ketika Anda tidak memiliki semua informasi untuk hasil akhir dari apa yang tampaknya menjadi aplikasi kecil, bagaimana Anda menghindari (atau mengurangi) membuat keputusan arsitektur dan desain sejak awal yang akan sepenuhnya tidak pantas nanti?
Cukup buat dia aplikasi kecil dan dapatkan bayaran untuk itu.
Dalam pengalaman saya, sangat menarik untuk menginvestasikan lebih banyak waktu di awal daripada yang benar-benar dibutuhkan, kalau-kalau pelanggan menginginkan lebih banyak. Tetapi Anda harus mempertimbangkan dampak dalam melakukannya (apakah Anda dibayar untuk itu) vs. kemungkinan bahwa semua perubahan tambahan ini benar-benar akan terjadi. Seluruh aplikasi dapat diganti sepenuhnya setelah satu tahun.
Dan dengan menginvestasikan waktu dalam arsitektur awal, Anda mungkin merasa bahwa Anda membantu diri sendiri. Tapi sungguh, Anda hanya membantu pelanggan dengan membuat modul lain lebih murah untuknya.
Hanya menagih pelanggan Anda sedikit lebih banyak untuk setiap modul yang berhasil dan refactor proyek awal langkah demi langkah, tetapi selalu hanya agar sesuai dengan kebutuhan pelanggan.
sumber
Jawaban sebelumnya baik dan, jika saya jujur, apa yang mungkin akan saya lakukan. Yang mengatakan, saya sedikit tidak nyaman dengan pendekatan ini karena Anda membuat keputusan yang seharusnya menjadi milik pelanggan, berdasarkan asumsi apa yang mereka inginkan (dan keinginan untuk mendapatkan pekerjaan)
Saya tidak dapat menahan perasaan yang harus dilakukan adalah jujur kepada pelanggan dan memberi mereka pilihan: 1. Saya dapat melakukan ini dengan cepat dan (relatif) murah sekarang. Ini akan luar biasa - ini akan bekerja - tetapi peningkatan di masa depan akan sedikit lebih mahal. Saya dapat menghabiskan lebih banyak waktu di muka, yang akan sedikit lebih mahal dan tidak menambah manfaat nyata bagi pengguna, TAPI itu akan menghemat uang Anda dalam jangka panjang jika Anda perlu menambahkan fitur baru.
Idealnya, Anda dapat memberi mereka beberapa angka waktu / biaya - jika tidak, obrolan itu bisa terlalu akademis - tetapi saya menghargai bahwa mencapai angka-angka ini juga dapat membutuhkan upaya. Setidaknya, membingkai diskusi dalam hal proyek-proyek sebelumnya akan membuat hidup lebih mudah bagi pelanggan (dan membuat hidup pelanggan lebih mudah harus menjadi prioritas utama :-))
Komentar yang dibuat orang lain tentang memiliki hubungan kerja yang baik sangat tepat - tetapi Anda dapat memulai proses itu dengan jujur sendiri. Jika pelanggan adalah jenis yang Anda bahkan tidak dapat melakukan percakapan itu, sekarang mungkin waktu untuk bertanya pada diri sendiri seberapa banyak Anda membutuhkan pekerjaan ini ...
sumber
Saya akan memperlakukan masing-masing "iterasi" ini sebagai proyek terpisah. Anda harus menutup proyek-proyek ini ketika setiap modul kecil atau tambahan dilakukan. Kemudian ketika mereka menginginkan sesuatu yang lain, buatlah dokumen. Dan seiring berjalannya waktu, perangkat lunak menjadi lebih mahal ... yang berarti Anda mengenakan biaya lebih untuk setiap proyek kecil.
Ini salah satu cara untuk melihatnya, bukan satu ... proyek LONGGGGGG.
sumber
Anda tidak bisa . Programmer bukan paranormal. Meskipun kami dapat memprediksi hal-hal sederhana atau melihat peningkatan UI, kami tidak dapat benar-benar membuat kode di luar apa yang tidak kami inginkan yang diinginkan klien nanti (apakah Anda melihat kegilaan di sana?).
Pertanyaan Anda menyebutkan bahwa ia memiliki proses bisnis tetapi saya tidak yakin apakah itu proses yang baik. Inilah beberapa petunjuknya:
Produk Anda yang Terlalu Banyak Tumbuh
Itu terjadi pada kita semua. Membangun kembali dari awal biasanya adalah ide yang buruk, terutama mengingat itu akan dilakukan lagi di masa depan.
Sebagai gantinya, saya akan membuat kontrak untuk perubahan yang diminta pengguna. Tambahkan waktu ekstra untuk setiap fitur, gunakan waktu asli untuk mengerjakan fitur tersebut, dan waktu tambahan untuk meningkatkan arsitektur keseluruhan, satu peningkatan kecil pada satu waktu. Tujuannya bukan untuk sepenuhnya "memperbaiki" arsitektur dalam satu kontrak, tetapi sebagai gantinya perlahan-lahan chip itu.
Perlahan tingkatkan kode iterasi dengan iterasi, dengan fokus pada bagian-bagian yang benar-benar penting.
sumber