Bagaimana mendekati ol '"ini hanya akan menjadi aplikasi kecil"? Ya benar?

11

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?

richard
sumber

Jawaban:

17

Saya telah mengalami beberapa di antaranya dan apa yang biasanya saya lakukan adalah persis apa yang Anda lakukan, menyelam langsung dan menyelesaikannya.

Ketika mereka kembali untuk mendapatkan lebih banyak, itu berarti bahwa model bisnis mereka berfungsi dan bahwa mereka harus mau berinvestasi sedikit lebih banyak. Saat itulah saya duduk (biasanya modul ke-3 tergantung kompleksitas) dan memberi tahu mereka kabar buruknya.

Saya akan meletakkan segala sesuatu di atas meja, menawarkan untuk mengulang semuanya termasuk modul terbaru dan katakan kepadanya berapa biayanya. Mereka biasanya akan memiliki kejutan stiker di awal tetapi jika Anda memiliki hubungan kerja yang baik dan barang-barang Anda bekerja, itu seharusnya tidak menjadi masalah besar.

Pastikan mereka mengerti tiga hal:

  1. Jika mereka benar-benar tidak ingin repot dengan penulisan ulang yang lengkap, Anda masih akan melakukan modul ke-3. Mungkin Anda perlu beberapa jam lagi dan Anda akan menagihnya. Ingatkan mereka bahwa mereka harus benar-benar berpikir untuk melakukan penulisan ulang di masa depan, karena semakin lama mereka menunggu, semakin banyak biayanya.

  2. Ini benar-benar akan membuat mereka lebih mahal untuk membuat orang lain melakukannya. Orang baru harus mendesain ulang segala sesuatu dengan pemahaman minimal tentang kebutuhan dan keanehan mereka, yang berarti waktu penulisan ulang ekstra dan risiko bahwa ia tidak akan melakukan pekerjaan sebaik itu.

  3. Bahwa Anda tidak berusaha menghasilkan uang dengan cepat. Masalahnya TIDAK perlu desain ulang.

BTW, jika kebiasaan penagihan Anda seperti setengah sekarang, setengah setelah selesai, Anda mungkin mempertimbangkan untuk menawarkan jangka waktu pembayaran yang panjang. Ubah menjadi setengah sekarang dan bagi saldo selama periode yang akan Anda kerjakan. Itu mungkin mengurangi kesulitan jika mereka memiliki masalah anggaran.

Permas
sumber
Ini sepertinya cara sempurna untuk melakukannya.
sevenseacat
1
Ya itu pendekatan yang bagus. Apakah Anda pikir akan bermanfaat untuk memberi tahu mereka di awal (modul 1) bahwa ini adalah suatu kemungkinan sehingga mereka tahu siapa mereka (dan tidak mendapatkan) dengan modul cepat dan kotor pertama ini?
richard
1
@ Richard DesLonde. Saya tidak akan jujur. Jika modul pertama kecil, fokus saja untuk membuat kesepakatan. Sampai Anda benar-benar membangun hubungan melalui modul pertama, mungkin akan sulit untuk membuat mereka benar-benar mendengarkan. Setelah modul pertama masuk dan pengguna menyukainya, Anda harus menemukan daya ungkit yang cukup ketika mereka merencanakan modul kedua. Begitu Anda merasa hubungan itu cukup kuat, maka Anda melakukannya.
Permas
10

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.

Daniel
sumber
Pendekatan yang baik ... refactoring dan penagihan hanya untuk apa yang dibutuhkan pelanggan, tetapi agar aplikasi sesuai dengan pertumbuhannya ... terima kasih.
richard
1
Setuju. Pelajari juga alat refactoring yang tepat sehingga Anda BISA merombak aplikasi dengan cepat saat dibutuhkan.
@ Thorbjørn Ravn Andersen: Ada saran untuk alat?
richard
@ Richard, tergantung pada apa yang Anda kerjakan. Untuk Visual Studio "resharpener" harus menjadi alat yang sangat membantu.
Saya pikir Anda memikirkan Resharper ... Ada alat lain seperti itu tentu saja. Visual Studio juga mendukung alat refactoring yang sangat dasar.
Ramhound
8

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 ...

Steve Mallam
sumber
Ya saya pikir mungkin diskusi di depan opsi atau setidaknya pendekatan (cepat dan kotor sekarang, tulis ulang nanti) bisa bermanfaat.
richard
1

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
1

bagaimana Anda menghindari (atau mengurangi) membuat keputusan arsitektur dan desain sejak dini yang akan sepenuhnya tidak pantas nantinya?

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:

  • Memerlukan semua perubahan dan penambahan yang ditandatangani secara tertulis dan dengan anggaran.
    • Karena Anda harus membayar tagihan
    • Penulisan dan bagian yang ditandatangani memastikan bahwa itulah yang benar-benar mereka inginkan dan mengurangi 90% dari hal-hal remeh yang membuat klien berubah pikiran setengah jalan selama proyek

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.

rlb.usa
sumber