Apa yang harus dilakukan jika bos selalu menunda keputusan besar tentang persyaratan dan desain keseluruhan?

12

Saat memulai proyek baru, bos saya selalu menghindari untuk membuat keputusan yang pasti. Dia biasanya berkata: ok, mulailah menulis sesuatu dan menjadi generik mungkin. Setelah selesai, kami melihat bagaimana kami melanjutkan. Argumennya pada dasarnya adalah bahwa Anda tidak pernah tahu dan "pengembangan gesit".

Untuk menjaga pertanyaan itu seumum mungkin: apa yang Anda lakukan jika bos Anda tidak suka membuat keputusan?

Cukup pertahankan dan tulis kode yang mungkin menjalani refactoring berat dan penulisan ulang sebagian beberapa minggu kemudian? Atau teruskan berdiskusi sampai bos melakukan setidaknya beberapa keputusan? Ini kurang lebih strategi saya saat ini. Karena itu seperti hukum fisika, pada titik tertentu sesuatu perlu disampaikan. Entah karena bos bos ingin melihat hasil atau karena hal-hal menjadi konyol di beberapa titik.

Saya juga mengamati bahwa bos saya mengkritik hampir semua hal. Bahkan saran yang didasarkan pada ...

Jimbo
sumber
1
Per SICP kuliah, mulai menulis kode di LISP :)
Ayub
@ Pekerjaan - Apakah LISP dirancang untuk alur kerja ini? ;)
Jimbo
Lisp (tapi saya benar-benar akan merekomendasikan Clojure) memungkinkan seseorang untuk membuat perubahan drastis pada desain. Ketika digunakan dengan benar, memungkinkan untuk membangun lapisan demi lapisan abstraksi dan mengubah pikiran seseorang, menambahkan fitur, dll. Paulgraham.com/avg.html
Ayub

Jawaban:

12

Bangun prototipe

Mulailah menggambar layar yang tidak melakukan apa-apa pada awalnya (mungkin Anda punya cukup untuk melakukan itu?)

Anda harus dapat membuatnya berfungsi sebagian secara perlahan, dan akhirnya memperbaiki beberapa kode buruk ketika menjadi lebih jelas apa yang Anda coba lakukan.

Ini adalah masalah umum bahwa mereka tidak tahu apa yang mereka inginkan sampai mereka melihat sesuatu dan menyadari itu bukan yang mereka inginkan. Saya telah menemukan bahwa ketika seseorang ingin Anda mulai membangun 'kerangka kerja' atau sesuatu yang 'generik' seperti apa yang dia katakan kepada Anda, Anda hanya akan mendapat masalah jika Anda mencoba. Kerangka kerja sudah ditulis, Anda tidak perlu melakukan itu.

Jay
sumber
Ini terdengar sangat akrab: 'kerangka kerja'. Mungkin saya harus menunggu untuk mengatur sesuatu menjadi batu setelah menunjukkan setidaknya dua atau tiga demo / prototipe.
Jimbo
4
+1 Tidak ada yang tahu apa yang mereka inginkan. Semua orang tahu apa yang tidak mereka inginkan. Kritik mudah didapat dan bisa informatif.
JohnFx
4

Ada beberapa masalah yang telah saya kumpulkan dari pesan Anda: 0-Ini bukan tugas Anda untuk mengelola proyek dan itu bukan tugas Anda untuk mengumpulkan persyaratan pengguna akhir. 1-Bos tidak tahu persyaratan yang tepat 2-Bos tidak berbicara dengan pengguna akhir tentang persyaratan 3-Bos melontarkan terminologi dia tidak benar-benar mengerti gesit 4-Anda sedang mengerjakan beberapa solusi yang akan kembali ditulis beberapa kali dan Anda tidak senang karenanya

Adapun 1,2 dan 3 ada sedikit yang bisa dilakukan tentang ini jika Anda bukan orang yang senior. Namun, hal berikut dapat dilakukan:

A - Minta dia untuk berbagi dengan Anda rencana proyek. Dia mungkin memiliki satu atau akan membangun satu yang menunjukkan tugas dan tenggat waktu. Salah satunya harus tentang analisis dan pengumpulan persyaratan. Jika tidak menyarankannya.

B - Menyiapkan beberapa referensi tentang pentingnya persyaratan untuk keberhasilan proyek perangkat lunak

C - Siapkan dia 1 halaman dari apa Agile itu dan tidak.

D - Siapkan dia daftar input khas untuk tahap desain dan meyakinkan dia tentang nilai masing-masing.

E - Sarankan penambahan analis bisnis dan / atau pemodel data ke tim. Peran seperti itu harus diduduki oleh pengguna akhir dan akan memberi Anda informasi yang diperlukan atau setidaknya bagian yang baik darinya.

F - Lihat bagaimana pengembang lain terkurung dengan orang ini.

Adapun # 4, Anda dapat menyarankan kepadanya untuk menggunakan pendekatan prototyping atau generator kode yang akan membantunya, Anda dan pengguna untuk membuat pikiran mereka tentang aspek-aspek fungsional aplikasi. Sebagian besar alat tidak menghasilkan GUI yang sempurna, tetapi setidaknya Anda dapat menangkap fungsionalitas yang diperlukan.

Dalam semua kasus, pastikan bahwa Anda mendokumentasikan setiap iterasi dengan jelas dan mengiriminya email tentang input apa yang telah Anda terima, apa yang Anda lakukan (dalam beberapa detail) dan apa hasilnya. Pastikan Anda menghubungkan hasil dengan penyebab yang tepat seperti (kurangnya persyaratan, dll.).

Sayangnya beberapa orang tidak menerima saran. Jadi berhati-hatilah bagaimana Anda berkomunikasi dengannya.

Ini tidak berjalan dengan baik!

Semoga berhasil.

Tidak mungkin
sumber
Terima kasih atas jawaban Anda! Posisi saya saat ini berada di antara junior dan senior, setidaknya begitulah saya menggambarkan diri saya selama A: Dia tidak tertarik pada wawasan empiris apa pun. B, C: Jangan sekarang ;-) Setidaknya tentang proyek saat ini ia tahu banyak tentang masalah sehari-hari. E adalah ide yang bagus. Hari ini saya menulis demo kecil, kami banyak membahasnya hari ini. Meskipun saya kagum tentang berapa banyak poin yang dia tidak puas. Bisakah Anda jelaskan apa yang Anda maksud dengan D?
Jimbo
Desain membutuhkan input. Misalnya, Model Data (dibuat berdasarkan analisis), Aturan Bisnis, Persyaratan Keamanan, Kasus Penggunaan, Arsitektur Esensial (apakah itu web, formulir windows, atau apa). Input berbeda dengan nama mehtodology, namun, semuanya mengarah untuk membuat pengembang sadar akan seperti apa desainnya.
NoChance
4

Saya dulu punya bos seperti itu - sebenarnya saya akan bergurau bahwa mottonya adalah "keragu-raguan adalah kunci fleksibilitas".

Apa pun pengembangan yang Anda lakukan, Anda mungkin berada dalam posisi yang lebih baik untuk menyelesaikan masalah klien daripada bos Anda. Jika Anda tidak tahu apa masalahnya yang coba dipecahkan klien (yang tidak sama dengan spek), maka seseorang tidak melakukan pengumpulan kebutuhan dengan benar.

Buat sketsa beberapa tata letak halaman, atau buat prototipe non-fungsional. Tetapi lakukan sesuatu. Tidak jelas dari pos Anda apakah Anda sedang membangun perangkat lunak klien lengkap atau aplikasi web, tetapi keindahan yang terakhir adalah Anda dapat merilisnya lebih awal, lebih sering rilis. Mulailah dengan tulang-telanjang dan kerjakan dari sana. Awal yang salah tidak ada salahnya jika ada dialog yang mengalir dan beberapa keputusan dibuat.

Kami memiliki pepatah sekitar $ KERJA (aplikasi web internal) untuk klien kami: "Saya akan memberi Anda sesuatu sehingga Anda dapat memberi tahu saya apa yang Anda inginkan." Bersiaplah untuk membuang draf pertama, tetapi Anda mungkin akan terkejut betapa jarang Anda harus melakukannya.

MEMBASAHI
sumber
3

Tunjukkan kepadanya bahwa buku-buku Agile menyarankan untuk menunda keputusan selama Anda bisa tetapi tidak lebih dari itu . Setiap keputusan memiliki titik di mana itu harus dibuat, dan mungkin Anda ada di sana sekarang.

Di sisi lain, tanyakan juga diri Anda. Apakah Anda benar-benar perlu memutuskan lapisan kegigihan apa yang akan Anda gunakan untuk aplikasi ini? Atau bisakah Anda mulai menulisnya ke CSV dan membuatnya cukup abstrak untuk membuat keputusan nanti?

pdr
sumber
Keputusan teknis lebih atau kurang jelas bagi saya: bahasa pemrograman, bagaimana memilih perpustakaan atau lapisan kegigihan. Dia memiliki pendapat yang kuat tentang itu, dan sejujurnya, saya benar-benar tidak peduli jika pilihan itu masuk akal. Ini lebih tentang hal-hal seperti: seperti apa tampilan layar? Apa saja yang bisa dilakukan pengguna dan bagaimana caranya? Saya sudah berpikir bahwa banyak pekerjaan saya untuk menghasilkan ide. Tetapi hampir tidak mungkin untuk mengusulkan ide-ide abstrak dan bertanya kepadanya apakah dia setuju dengan satu ide.
Jimbo
3

Tulis dokumen spesifikasi Anda sendiri dan tahan ulasan di mana Anda menjelaskannya dan dia menandatanganinya. Maka Anda akan menjadi bos, dan bos Anda akan pindah ke masalah manajemen yang lebih interpersonal daripada masalah teknis.

Jonathan Cline IEEE
sumber
2

Terlibat dalam 'manajemen ke atas' berbicara dengan bos dan klien Anda, mencari tahu beberapa solusi, memilih yang terbaik untuk diimplementasikan oleh tim Anda, menemukan kekurangan di yang lain, dan 'mengelola' manajer Anda untuk membuat keputusan 'tepat'.

Dan tentu saja memastikan dia berpikir itu semua idenya. (Terutama ketika semuanya salah!)

NWS
sumber
Ketika insinyur perangkat lunak mengubah insinyur sosial .. :)
MattDavey
1
Serius, sebagian besar masalah perangkat lunak dapat dipecahkan, karena komunikasinya dengan kantong air semi-sentient lainnya yang sering menjadi masalah ...
NWS
1

Anda perlu merancang dan mengimplementasikan sesuatu. Karena bos Anda tidak akan membuat keputusan maka buatlah sendiri. Luangkan sedikit waktu ekstra untuk mendokumentasikan keputusan dan asumsi Anda sebelum menerapkannya. Kirimkan ke siapa pun yang berkepentingan termasuk atasan Anda. Mudah-mudahan, daftar itu mencakup lebih dari bos Anda karena akan memberi sedikit tekanan kepadanya untuk membuat beberapa keputusan karena dia tahu bahwa orang lain sadar bahwa Anda siap untuk melanjutkan. Anda akan terkejut betapa cepatnya Anda mendapatkan umpan balik ketika Anda membuat keputusan secara tertulis, terutama jika Anda membuat keputusan yang tidak disetujui orang lain. Sementara itu, saya akan melanjutkan dengan keputusan yang Anda buat sampai mengatakan sebaliknya.

Jika Anda akhirnya membuang-buang waktu untuk mengimplementasikan apa yang tidak diinginkan atasan Anda, itu ada pada dirinya dan bukan Anda karena dia tahu jalan yang akan Anda ambil.

Juga, beberapa orang mengalami kesulitan untuk memulai, tetapi begitu mereka melihat sesuatu yang berwujud maka pikiran mereka akan masuk. Mungkin bos Anda seperti itu dan Anda mengatakan kepadanya apa yang Anda rencanakan untuk dilakukan secara tertulis akan membuat pikirannya bergerak.

Celup
sumber
0

Buat keputusan sendiri dan mulai koding. Tentu saja, mengembangkan dengan cara yang fleksibel akan membantu (baca Pola, Prinsip, dan Praktek Agile Robert C Martin jika Anda belum melakukannya) tetapi semua fleksibilitas di dunia tidak akan membantu jika tidak ada keputusan yang pernah dibuat. Anda mungkin harus mengembangkan apa yang Anda pikirkandiperlukan, dan kemudian mengubahnya sesuai kebutuhan. Seringkali klien / bos tidak tahu apa yang mereka inginkan sampai mereka melihatnya, atau sampai mereka melihat sesuatu yang tidak mereka inginkan. Ini mungkin akan membawa Anda keluar dari ruang lingkup menjadi pengembang, tetapi itulah kehidupan. Saya sering menemukan bahwa saya dan kolega saya secara efektif membuat keputusan bisnis. Kadang-kadang ini tidak dipertanyakan, dan keputusan yang saya buat mulai mengarahkan bisnis, murni karena tidak ada orang lain yang akan membuat keputusan. Pastikan untuk mencantumkan SEMUA asumsi dan keputusan Anda (tanpa pengecualian) dan berikan ini kepada atasan Anda.

Paul T Davies
sumber