Haruskah seorang programmer "berpikir" untuk klien?

12

Saya telah sampai pada titik di mana saya benci persyaratan berkumpul. Pelanggan terlalu kabur untuk kebaikannya sendiri. Dalam lingkungan yang gesit, di mana kami dapat menunjukkan kepada klien suatu pekerjaan untuk diselesaikan, itu tidak terlalu buruk karena kami dapat melakukan sedikit perbaikan / pembaruan rutin untuk fungsionalitas.

Dalam "air terjun" ketik lingkungan (persyaratan pertama, produk hampir lengkap berikutnya) hal-hal bisa menjadi jelek. Lingkungan seperti ini membuat saya terus-menerus mempertanyakan persyaratan. Pelanggan EG ingin "secara otomatis mengonversi input ke nomor 1" (merujuk pada Qty dalam pesanan). Tetapi yang tidak mereka pikirkan adalah "input" bisa berupa tipe-o sederhana. "X" di kotak teks bisa menjadi "celak" bukan yang saya inginkan 1 dari produk "pasta gigi" itu. Tetapi, ada begitu banyak di udara dengan persyaratan bahwa saya bisa berdiri dan memperbaiki selama berjam-jam menghancurkan apa yang mereka inginkan. Ini tidak sehat.

Bekerja untuk sebuah perusahaan, saya dapat mencoba menyesuaikan budaya agar sesuai dengan model gesit yang akan membantu kami (tidak ada pekerjaan kecil, di atas nilai gaji saya). Atau, sapu detail jelek di bawah permadani dan berharap yang terbaik. Mungkin pelanggan saya mencoba terlalu dekat dengan kode?

Bagaimana seseorang menangani masalah "berpikir untuk klien" tanpa membuat mereka jengkel dengan terlalu banyak pertanyaan?

P.Brian.Mackey
sumber
1
Mengapa begitu banyak orang membuat komentar meremehkan tentang air terjun yang menunjukkan bahwa mereka tidak pernah bekerja di lingkungan jenis air terjun atau memiliki tetapi jelas tidak tahu bagaimana melakukannya? Air terjun bukanlah Anda harus melakukannya dengan cara spesifikasi yang tepat dan satu-satunya ini. Pengembang yang cerdas akan tahu bahwa mereka harus menyesuaikan dengan kebutuhan khusus mereka. Jika persyaratannya tidak jelas dan menunjukkan beberapa fungsionalitas kerja kepada pengguna akan sangat membantu (mis. Pendekatan tangkas Anda), maka ada hal-hal ini yang disebut prototipe. Agile tidak akan membuat hidup lebih mudah, Agile hanya membuat mulai lebih mudah, itu membuat akhir lebih sulit.
Dunk
@Dunk - maaf jika saya menyinggung penggemar air terjun. Saya bukan manajer proyek. Saya memenuhi syarat paradigma dengan "" dan definisi saya yang mungkin atau mungkin tidak menjadi cara semua orang memahami dan menggunakan air terjun. Saya hanya ingin memperjelas poin saya dengan paradigma yang dipahami secara umum, bukan omong kosong.
P.Brian.Mackey
1
Saya tidak harus hanya seorang penggemar air terjun, tetapi air terjun akan dihancurkan setiap saat dan sangat sedikit orang yang mendukungnya, jadi saya harus melakukan bagian saya. Faktanya adalah bahwa ada banyak jenis proyek yang paling baik dilayani menggunakan pendekatan air terjun. Sistem kritis keselamatan, program luar angkasa, apa pun ketika perangkat keras perlu dirancang secara paralel dengan perangkat lunak, proyek apa pun di mana hanya sebagian fungsi tidak berguna bagi pelanggan hanyalah beberapa contoh. Maksud saya adalah bahwa sebagian besar perusahaan yang berhasil menggunakan air terjun sebenarnya menggunakan pendekatan seperti air terjun dan definisi yang ketat hanyalah panduan.
Dunk

Jawaban:

16

Dalam kebanyakan kasus, pelanggan tidak mengetahui apa lagi yang bisa dilakukan. Mereka tidak pernah harus menggambarkan apa yang mereka butuhkan dengan cara yang membuatnya tidak ambigu bagi kita. Dalam benak mereka, jelas. Bahkan fakta bahwa mereka berpikir untuk mengubah input pengguna ke nomor 1 benar-benar melampaui cara mereka terbiasa berpikir.

Benar-benar sebagaimana mestinya. Jika mereka benar-benar baru bagaimana menggambarkan apa yang mereka inginkan, mereka tidak akan membutuhkan kita untuk menuliskannya untuk mereka. Akibatnya, tanggung jawab kita adalah membantu mereka melalui proses. Proses ini memang membutuhkan keputusan yang harus dibuat, sehingga mereka juga membutuhkan rekomendasi kami untuk membuat proses pengambilan keputusan lebih mudah.

Jadi biarkan pelanggan menjadi tidak jelas dan berbicara pada tingkat tinggi. Mereka tahu bisnis mereka, dan itulah yang mereka kuasai (mudah-mudahan, atau mereka tidak akan mampu membayar tagihan Anda ...). Ambil apa yang mereka bicarakan dan pikirkan sebentar. Akhirnya Anda mendapatkan beberapa ide hebat untuk mendapatkan apa yang mereka inginkan dan butuhkan, sambil memastikan bahwa apa yang Anda butuhkan dapat diuji dan konsisten.

Saya sangat merekomendasikan bekerja di bongkahan. Ketika Anda bertemu dengan klien memiliki serangkaian persyaratan yang terkait satu sama lain, dan kemudian menjelaskan bagaimana Anda berniat untuk melakukan apa yang mereka inginkan. Juga jelaskan mengapa Anda membuat pilihan yang Anda lakukan. Pelanggan kemudian dapat melihat apa yang Anda berikan dan menyesuaikannya. Jika Anda mendapat respons seperti, "Saya tidak pernah memikirkan itu, tetapi itu akan sangat membantu" Anda tahu Anda memiliki denyut nadi tentang bagaimana klien berpikir. CATATAN: bahwa ini bukan featureitis, ia memilih fitur yang tepat untuk paling cocok dengan masalah bisnis yang dimiliki klien.

Jika Anda memiliki sesuatu yang sepertinya bertentangan dengan apa yang klien katakan kepada Anda, maka inilah saatnya untuk menjelaskan alasannya. Anda harus mengeluarkan beberapa masalah yang tidak pernah dipikirkan klien, dan bagaimana alternatif Anda masih memberi mereka apa yang mereka inginkan / butuhkan tetapi juga menghindari masalah potensial tersebut. Anda mungkin mendapatkan sedikit pushback, tetapi itu juga membangun kepercayaan pelanggan karena mereka sadar Anda mencoba memberi mereka produk yang benar-benar dapat mereka gunakan. Jika mereka memberikan dorongan, itu memaksa mereka untuk menjelaskan mengapa mereka menginginkan sesuatu dengan cara tertentu. Itu membantu Anda lebih memahami klien Anda, dan menyesuaikan persyaratan yang diperlukan.

Cara tercepat untuk melelahkan klien Anda adalah dengan mengajukan semua pertanyaan kecil satu demi satu. Anda ingin merencanakan dan menjadwalkan serangkaian pertemuan untuk meninjau pendekatan Anda. Selama Anda memiliki persyaratan teknis (apa yang digunakan tim Anda untuk membangun produk) dan klien Anda memiliki persyaratan bisnis, dan Anda dapat menghubungkannya bersama-sama, Anda memiliki cara untuk menjembatani kesenjangan.

Berin Loritsch
sumber
4
Anda juga perlu meluangkan waktu untuk memahami bisnis tempat Anda bekerja. Banyak pertanyaan pemrograman akan muncul jika Anda memahami cara kerja bisnis.
Michael K
Jawaban keseluruhan terbaik, tetapi posting artikel @whatsisname adalah pujian yang bagus untuk jawabannya (tidak setuju dengan kebutuhan untuk mencari klien lain. Saya perlu meningkatkan pandangan saya tentang klien).
P.Brian.Mackey
6

Jika Anda 'mengecewakan mereka' karena terlalu banyak pertanyaan, dapatkan klien yang lebih baik.

Pelanggan tidak tahu apa yang mereka inginkan. Mereka tidak akan selalu mengenali solusi mereka ketika mereka melihatnya. Itu adalah masalah, dan itu adalah pekerjaan yang Anda selesaikan: menerjemahkan persyaratan mereka menjadi sesuatu yang dapat disampaikan sebagai paket perangkat lunak.

Untuk melakukan itu Anda harus belajar tentang apa yang Anda lakukan. Anda seharusnya tidak bertanya "apa yang harus terjadi ketika mereka memasukkan nomor di kotak teks", Anda harus bertanya "mengapa nomor ini penting? Untuk apa ini digunakan?" Mintalah mereka mengajari Anda bagaimana mereka melakukan pekerjaan mereka. Dan jangan dengarkan apa yang mereka katakan, karena mereka tidak tahu apa yang mereka inginkan, tetapi perhatikan apa yang mereka lakukan dan ke mana mata mereka pergi .

Baca ini untuk info lebih lanjut: http://www.joelonsoftware.com/articles/fog0000000356.html

Apa namanya
sumber
3

Dengan asumsi Anda seorang karyawan di suatu perusahaan, sepertinya Anda membutuhkan analis bisnis yang baik untuk membantu memediasi perincian antara klien dan diri Anda. Saya kira Anda tidak memiliki pengaruh yang cukup untuk mewujudkannya, jadi saran terbaik saya berikutnya adalah mempelajari lebih lanjut tentang domain yang digunakan klien Anda. Dengan memahami bisnis dan proses yang mereka jalani, Anda Saya akan memiliki gagasan yang lebih baik tentang apa yang benar-benar ingin mereka lakukan, terlepas dari cara longgar dan mungkin salah mereka menggambarkannya. Itu memungkinkan Anda menganalisis apa yang mereka minta, dan Anda dapat kembali lagi nanti dalam pertemuan terpisah dengan interpretasi tentang apa yang mereka inginkan, dan kemungkinan saran untuk memberi mereka apa yang sebenarnya mereka inginkan. Jika Anda secara konsisten bekerja dengan klien yang sama, Anda

Jika itu tampaknya sangat sulit, menyakitkan, sangat tidak menyenangkan, atau tidak realistis, saran terakhir saya adalah mulai mencari pekerjaan baru di suatu tempat mereka memiliki analis bisnis, karena itu tidak akan menjadi lebih mudah bagi Anda tanpa berusaha.

gunit888
sumber
2

Jika Anda persyaratan berkumpul maka tugas Anda untuk mengajukan pertanyaan ini.

Ya klien bisa kesal, tetapi dalam hal ini Anda perlu menjelaskan mengapa Anda bertanya "semua pertanyaan ini". Anda perlu memahami bisnis mereka sebelum Anda dapat menulis kode yang akan mengotomatiskan bisnis itu. Yang menentukan adalah jika Anda tidak melakukannya, mereka akan menghabiskan banyak uang untuk mengembangkan sistem yang tidak benar-benar melakukan apa yang mereka inginkan.

Efek sampingnya adalah Anda harus membantu klien memperbaiki kebutuhan mereka.

Ini berlaku apakah Anda sedang melakukan Big Design Up Front atau Agile.

ChrisF
sumber
2

Sayangnya, tugas Anda adalah memikirkan klien jika ia tidak bisa atau tidak mau melakukannya sendiri.

Saya memiliki kedua kemungkinan hasil:

  • pelanggan senang bahwa Anda benar-benar memikirkan apa yang ia katakan kepada Anda, ia merasa bahwa ia ada di tangan kanan, atau

  • pelanggan kesal karena Anda memaksanya untuk memikirkan kembali persyaratannya. Namun, pelanggan jenis ini akan merasa terganggu dengan Anda, cepat atau lambat. Dia pasti akan sangat jengkel jika dia tahu terlambat bahwa kamu tidak memikirkannya pada awalnya. Saya akan mengatakan: hindari pelanggan jenis ini jika memungkinkan :-)

tedev
sumber
1

Sebuah Rapid Application Development (RAD) membahas masalah ini dengan baik.

Mulailah "berpikir untuk klien" dengan membuat UI non-fungsional yang sangat kasar untuk program berdasarkan tebakan terbaik Anda pada apa yang mereka butuhkan. Kemudian tunjukkan kepada mereka dan kerjakan secara iteratif sampai Anda memenuhi kebutuhan mereka yang sebenarnya.

Bukannya mereka tidak tahu apa yang mereka inginkan. Mereka tidak tahu apa yang mereka inginkan sampai mereka melihatnya, dan kadang-kadang Anda dapat menentukan apa yang mereka inginkan dengan pengecualian. Yaitu, menunjukkan kepada mereka sesuatu yang tidak mereka inginkan dan memperhatikan bagaimana mereka mengkritiknya.

Masalah utama dengan BFUD (desain Big Up Front) adalah bahwa hal itu melindungi pengembang dari kesalahan dengan memaksa pelanggan ke dalam kontrak yang secara eksplisit menjelaskan apa yang akan mereka dapatkan. Dan sayangnya ini dilakukan pada saat tidak ada seorang pun di proyek memiliki ide bagus tentang apa yang benar-benar dibutuhkan. Pada akhirnya, ini hanya membuat pelanggan menerima apa yang Anda bangun karena mereka menandatanganinya, tetapi dengan enggan.

Jika pelanggan tidak senang dengan hasil yang diberikan, itu hanya kemenangan Pyrrhic.

JohnFx
sumber
1

Pekerjaan pelanggan untuk menyampaikan kepada Anda apa yang mereka butuhkan. Tugas Anda adalah memahami apa yang mereka butuhkan dengan cukup baik untuk dapat memprogram apa yang mereka butuhkan. Sebuah pertanyaan yang jelas untuk masalah mengubah semua input menjadi satu adalah untuk mengatakan "Mengapa Anda ingin itu mengubah semua input menjadi 1?" Kemudian pelanggan dapat menjelaskan alasan di baliknya sehingga Anda akan memahami kebutuhan dan kemudian dapat menyediakan tidak harus apa yang mereka minta tetapi apa yang mereka butuhkan. Jika Anda yakin Anda tahu apa yang mereka butuhkan maka saya tidak berpikir Anda perlu "memperbaiki" cara berpikir mereka. Mereka akan menggunakan produk dan hal "Oh! Itu sempurna". Tetapi kecuali jika Anda yakin Anda tahu apa yang mereka butuhkan, Anda perlu menjelaskan apa yang Anda pikirkan dan menyelesaikannya dengan pelanggan. Sayangnya ada Tidak ada cara untuk melakukan bagian dari proses ini tanpa banyak komunikasi yang melibatkan mendengarkan nyata pada kedua bagian. Hati-hati jengkel dengan situasi dan mengatakan hal-hal yang mungkin atau mungkin tidak ingin Anda katakan.

Kenneth
sumber
0

Jujur: Kecuali itu 'fungsi besar' maka mintalah orang dengan pengetahuan domain paling membuat tebakan terbaik mereka untuk apa yang harus terjadi, dan menerapkannya. Ini akan disempurnakan dalam pengujian penerimaan - untuk itulah.

Steven Evers
sumber