Bagaimana membuat keputusan teknis yang signifikan, diberikan waktu yang sangat sedikit

36

Saya punya 2 hari untuk membuat keputusan yang sangat serius tentang alat dan platform yang perusahaan saya akan gunakan untuk mem-port aplikasi WPF ke Linux / Android / iOS yang lainnya.

Jelas saya dapat menunjuk senior saya bahwa 2 hari hampir tidak cukup untuk membaca tentang semua opsi yang mungkin, dan bagaimana dengan mencoba, membuat prototipe dll. Saya dapat mengatakannya, itu tidak akan membantu saya sedikit, saya punya 2 hari, dan setelah 2 hari keputusan akan dibuat. Periode.

Dari satu sisi saya frustrasi, dari sisi lain saya pikir ada butir kebenaran dalam pendekatan ini, jika tidak saya dapat dengan mudah menemukan diri saya terkubur di bawah puluhan SDK yang diunduh, kerangka kerja, API, artikel blog dll dll melakukan kerja-kerjaan, menjalankan sampel dan lupa dalam proses untuk apa semua itu.

Namun saya masih takut bahwa keputusan yang salah akan merugikan perusahaan. Jadi, apa yang menurut Anda merupakan proses "ideal" untuk membuat keputusan seperti itu?

Flot2011
sumber
4
Tulis di suatu tempat bahwa keputusan hampir mustahil untuk diambil dalam dua hari. Kemudian cobalah membuat keputusan yang tidak terlalu buruk, dan dokumentasikan bahwa keputusan Anda bukanlah yang terbaik. Dengan kata lain, tutupi pantat Anda. Qt5 mungkin dipertimbangkan. Atau jadikan produk Anda sebagai aplikasi web HTML5 (mungkin menggunakan beberapa pustaka server HTTP misalnya libonion atau FastCGI)
Basile Starynkevitch
2
@gnat Saya tidak setuju, bahwa ini adalah pertanyaan subjektif, bahkan jika ada lebih dari satu jawaban yang mungkin masih bisa kita dapatkan dari pengalaman orang lain.
Flot2011
9
Tidak ada 'opsi terbaik' dalam banyak kasus, Anda bisa menulisnya sebagai webapp PHP dan itu akan berhasil. Atau Anda bisa menulisnya sebagai program Qt dan itu akan berhasil. Ini bisa berupa antarmuka game-antarmuka OpenGL. Semua ini adalah pilihan yang dapat diterima, triknya adalah memilih satu dan kemudian mulai membuatnya bekerja. Jangan melumpuhkan diri Anda dengan keraguan begitu Anda memilih sesuatu.
gbjbaanb
5
Contoh yang sangat buruk karena dalam kasus contoh ada satu teknologi yang merupakan pilihan yang jelas untuk ini - Xamarin. Simpan kode .NET backend, cukup ganti UI dengan sesuatu. Menangani semua case yang diberikan. Jadi, ini lebih merupakan kasus "Saya tidak tahu apa-apa tentang sistem lintas platform untuk .NET".
TomTom
7
Mengatakan bahwa 2 hari tidak cukup tidak terlalu konstruktif. Apakah 3 hari sudah cukup? Atau apakah Anda benar-benar ingin menghabiskan 2 bulan untuk itu? Dan seberapa besar kemungkinan keputusan Anda? ~~~~ Jika Anda mengatakan bahwa Anda perlu seminggu dan yakin bahwa ini dengan mudah akan menghemat ratusan jam waktu pengembangan di telepon, pastikan untuk menyebutkan ini. Mungkin tidak membantu, tetapi selalu ada kemungkinan bahwa para pemangku kepentingan menyukai kasus bisnis Anda.
Dennis Jaheruddin

Jawaban:

48

Jika yang Anda miliki adalah 2 hari dan tidak ada waktu untuk membuat prototipe atau bahkan membaca semua alternatif maka hanya ada 2 pilihan:

  1. tanya seseorang yang tahu dan ikuti saran mereka. Ini mungkin tidak berarti meminta seseorang tetapi menghabiskan 2 hari mencari melalui blog dan artikel untuk mendapatkan informasi yang cukup untuk membuat keputusan yang sedikit lebih baik dari pada informasi yang kurang.

  2. Lakukan sedikit riset ke dalam semua opsi utama dan kemudian pilih satu. Terkadang kepemimpinan berarti tidak takut membuat keputusan yang salah, seringkali lebih penting untuk membuat keputusan yang tegas daripada bimbang.

Anda dapat melindungi diri sendiri dengan membuat arsitektur yang lebih dipisahkan dan karenanya lebih mudah untuk berubah - misalnya model klien / server akan memungkinkan Anda untuk mengganti teknologi UI Anda dengan yang lain dengan gangguan minimal.

gbjbaanb
sumber
10
+1 untuk "jangan takut membuat keputusan yang salah" Terkadang terjebak dalam 'kelumpuhan analisis' lebih buruk daripada tidak membuat keputusan sama sekali. Kita semua adalah manusia. Lakukan yang terbaik dan terus hidup.
semaj
1
bimbang: bergantian atau goyah antara berbagai pendapat atau tindakan; ragu-ragu.
TankorSmash
10
+1 untuk "tutupi diri Anda dengan menghadirkan arsitektur yang lebih terpisah dan karenanya lebih mudah diubah"
Darth Egregious
2
@emodendroket Windows Workflow Foundation.
MetaFight
2
Jika masalah Anda bukan arus utama, jangan berharap solusi arus utama berfungsi dengan baik. Di sinilah decoupling dan fleksibilitas sangat penting . Cari kerangka kerja / perpustakaan yang membuatnya mudah untuk melakukan hal Anda sendiri alih-alih membuat Anda memilih sesuatu menjadi harapan mereka ketika mereka tampaknya tidak mengantisipasi apa yang perlu Anda lakukan.
jpmc26
19

Tampaknya saya menentang arus, tetapi saya baru-baru ini membaca buku Kreativitas, Inc. oleh Ed Catmull dan ada paragraf yang sangat bagus menangani situasi ini:

Andrew Stanton berbicara selanjutnya. Andrew gemar mengatakan bahwa orang perlu melakukan kesalahan secepat yang mereka bisa. Dalam pertempuran, jika Anda dihadapkan dengan dua bukit dan Anda tidak yakin yang mana yang harus diserang, katanya, tindakan yang tepat adalah bergegas dan memilih. Jika Anda menemukan itu bukit yang salah, berbalik dan serang yang lainnya. Dalam skenario itu, satu-satunya tindakan yang tidak dapat diterima adalah berlari di antara bukit.

Saya yakin itu dapat diterapkan untuk situasi Anda juga. Mungkin Anda dapat mengambil keputusan hari ini dengan memilih satu dan mulai mengerjakannya. Jika berhasil, maka Anda akan memiliki sesuatu yang siap dalam dua hari itu dan Anda akan berkata - "Saya mengambil ini, dan saya dapat menunjukkan kepada Anda apa yang dapat kami lakukan dengan itu karena saya menjalankan beberapa tes ...". Jika Anda perhatikan dalam satu hari bahwa solusi yang diambil sama sekali tidak sepadan, Anda dapat memilih yang lain dan bekerja dengannya pada hari berikutnya. Skenario kasus terburuk adalah bahwa Anda akan menggunakan kedua hari untuk menguji dua platform, mengetahui bahwa keduanya tidak bekerja - tapi itu akhirnya jawaban yang tepat, bukan? Singkirkan gulma, singkirkan pilihan yang salah yang mungkin, jadi keputusan selanjutnya akan jauh lebih baik dari yang sebelumnya. Skenario kasus terbaik adalah bahwa Anda

Jelas Anda tidak akan menguasai platform apa pun dalam dua hari, tetapi memilih satu ASAP pasti akan memberi Anda perspektif yang lebih baik tentang cara kerjanya (lebih dari sekadar membaca tentang itu) dan akan mengarahkan Anda ke jawaban yang lebih baik.

Michal
sumber
12
Meskipun saya setuju dengan Anda di tingkat global, kadang-kadang bergegas maju di medan perang cukup bunuh diri.
Flot2011
Tidak ada yang disebutkan bergegas. Saya tidak pernah mengatakan untuk berjalan ke bos hari ini dan berkata - "Ini solusinya. Di sini dan sekarang." Sebaliknya saya mengusulkan untuk memilih satu di kepala dan mencoba menjalankannya dan mengotak-atiknya. Cukup membaca dan mendiskusikannya dengan orang lain tidak akan berhasil. Saya percaya bahwa terus maju dan mencobanya akan mengarah pada pilihan yang memiliki kualitas jauh lebih tinggi.
Michal
6
@ Flot2011 meskipun jika Anda memiliki gelar MBA, Anda tetap di mana Anda berada dan mengirim semua pasukan Anda untuk bertarung di kedua bukit. Jika mereka semua mati, oh well, Anda mendapatkan lebih banyak pasukan dan melanjutkan tetapi kali ini mengatakan bahwa pengalaman Anda sebagai seorang jenderal membuat Anda jauh lebih ... layak mendapatkan gaji yang jauh lebih besar.
gbjbaanb
1
"Memilih satu ASAP, lalu prototipe" menurut saya saran yang sangat buruk dalam situasi ini. Ya, prototyping itu penting, tetapi juga memakan waktu. Masalah non-sepele sering memiliki lebih dari 2 solusi yang mungkin, dan 2 hari tidak cukup untuk membuat prototipe beberapa teknologi.
meriton - saat mogok
@meriton Saya merasakan apa yang Anda maksud - saya setuju, membuat prototipe memakan waktu. Saya tidak secara eksplisit menyatakan "melakukan prototyping" - itu sebabnya saya memilih kata tinker dengan hati-hati - menjelajahi platform, menulis beberapa kode kecil, membuka beberapa file implementasi dasar, melihat cara kerjanya di dalam. Kemungkinannya adalah bahwa pembuat keputusan tidak akan mendapatkan semua rincian dengan benar tetapi dengan coba-coba dia pasti dapat meningkatkan kualitas keputusan.
Michal
10

gbjbaanb membuat beberapa poin yang sangat bagus. Saya hanya berpikir saya akan menambahkan sedikit.

Sudah jelas Anda tidak memiliki cukup waktu untuk membuat keputusan dengan informasi lengkap. Satu-satunya pilihan Anda adalah mencoba dan membuat keputusan yang akan meminimalkan rasa sakit di masa depan. Saya sarankan:

  1. Dokumentasikan dengan jelas sifat situasi: Kirim email ke manajer Anda dan CC manajer mereka dan pemangku kepentingan. Jelaskan bahwa masalah yang telah Anda tetapkan adalah masalah yang rumit tetapi Anda bersedia untuk memberikan semuanya. Tetapi perhatikan bahwa, mengingat batasan waktu yang ketat, Anda tidak dapat menjamin temuan Anda menjadi optimal.

  2. Temukan kerangka kerja / platform dengan komunitas online yang besar dan aktif. Hal terakhir yang Anda inginkan adalah terjebak debugging kerangka kerja yang tidak jelas saja.

  3. Seperti yang disebutkan sebelumnya oleh gbjbaanb, mengurangi rasa sakit porting Anda dan risiko dengan menggunakan arsitektur yang digabungkan secara longgar. Jika semuanya berbentuk buah pir dengan salah satu pilihan teknologi Anda, ini akan membuatnya lebih mudah untuk menukar itu.

Saya sudah dalam situasi Anda sebelumnya dan akhirnya berubah menjadi mimpi buruk politik. Ketika sistem tidak bekerja secara ajaib, orang-orang mulai menunjuk jari dan segalanya menjadi jelek. Itulah sebabnya rekomendasi saya nomor 1 adalah dengan jelas mendokumentasikan bahwa Anda melakukan yang terbaik melawan peluang yang tidak mungkin .

Semoga berhasil :)

MetaFight
sumber
17
Re: # 1. Tidak ada yang suka pecundang cengeng, jadi hanya menyoroti Anda telah melakukan yang terbaik yang Anda bisa melawan keadaan tidak mungkin, maka Anda terlihat seperti pemenang pro-aktif bermain tim bermain-pergi! Manajemen menyukai hal semacam itu. Kebetulan, ada banyak alasan mengapa penulisan ulang besar tidak berhasil, pilihan satu teknologi di atas yang lain biasanya merupakan masalah yang paling sedikit.
gbjbaanb
Ya, saya menyadari itu agak cengeng jadi saya memodifikasinya.
MetaFight
Secara pribadi, saya akan lebih spesifik daripada "tidak optimal", karena tidak menentukan tingkat keparahan ketidakpastian. Seorang manajer dengan mentalitas "tidak harus sempurna, cukup baik" akan dengan senang hati mengabaikan peringatan ini, tidak menyadari bahwa Anda bermaksud mengatakan bahwa teknologi itu mungkin tidak cukup baik.
meriton - saat mogok
3
Alih-alih, saya akan mengidentifikasi risiko nyata dan meningkatkannya ke manajemen. Misalnya: "Berdasarkan pengetahuan kami saat ini, kami pikir teknologi A adalah pilihan terbaik. Namun, karena tenggat waktu yang singkat, kami tidak dapat memverifikasi bahwa pendekatan ini dapat menangani beban kerja yang diharapkan dari sistem ini.". Manajemen kemudian dapat menerima risiko, atau menguranginya dengan memesan analisis lebih lanjut.
meriton - saat mogok
+1 untuk poin No. 2. Pilih solusi yang memiliki komunitas yang matang dan berkembang di belakangnya. Jika Anda mendenda lebih dari satu solusi seperti itu, Anda selalu dapat menelusuri forum online, blog, posting pertanyaan, dll, dan cari tahu yang cocok untuk Anda terbaik
Arnab Bhagabati
5

Karena mereka secara efektif memberi Anda sedikit waktu untuk melakukan lebih dari memilih calon dari topi, saya akan mengadopsi pendekatan berikut.

Pilih teknologi yang:

  • Memiliki basis pengguna yang besar
  • Dapatkan dukungan aktif (melalui saluran apa pun)
  • Sedang dikembangkan secara aktif

Menurut definisi, ini akan mengesampingkan teknologi mutakhir, betapapun baiknya.

Juga, tahan keinginan untuk pergi dengan teknologi X tanpa analisis lebih lanjut hanya karena Fred pengembang telah menggunakannya di masa lalu. Ini tidak mungkin menjadi pasangan yang sempurna, dan jika Fred beralih ke padang rumput yang lebih hijau, itu berarti pakar domain Anda.

Robbie Dee
sumber
Meskipun jika teknologi X cukup pas, dan Fred bersedia untuk mendidik pengembang lain, melakukannya mungkin merupakan cara yang baik untuk memulai tim.
CVn
Yang pasti - jika mencentang kotak lain ...
Robbie Dee
4

2 hari adalah periode yang sangat singkat untuk membuat keputusan semacam itu, tetapi karena Anda harus melakukannya dalam 2 hari setelah daftar,

  1. Apa platform targetnya
  2. Apa komponen khusus / pihak ketiga yang digunakan dalam aplikasi saat ini di mana mungkin membutuhkan upaya yang cukup besar untuk port. misalnya: bagan komponen, komponen kisi, komponen pelaporan, dll.
  3. Bagaimana aplikasi saat ini terhubung ke dunia dan bagaimana keamanannya ditangani (koneksi database / layanan web / dll ...)
  4. Bagaimana didistribusikan dan bagaimana pembaruan disediakan

Sekarang Anda perlu mencari alternatif yang dapat Anda gunakan untuk semua lingkungan target

Untuk setiap alternatif, cari tahu dukungan masing-masing untuk menggunakan konektivitas / keamanan yang digunakan aplikasi saat ini.

kemudian untuk setiap komponen kustom / pihak ketiga mencari tahu apakah ada alternatif yang mudah digunakan untuk masing-masing.

Dan kemudian pikirkan bagaimana distribusi dapat dilakukan untuk setiap alternatif yang Anda temukan.

Saya pikir selama 2 hari ini harus menjadi ruang lingkup Anda harus dapat menutupi dan berdasarkan hasil Anda dapat memberikan solusi.

Pelican Terbang Rendah
sumber
4

Seperti halnya saya suka belajar dan bereksperimen dengan hal-hal baru, di bawah batasan waktu, pilihan terbaik adalah selalu mencari apa pun yang terasa atau lebih nyaman untuk dikerjakan. Tetap pada apa yang Anda ketahui.

Sekalipun dalam jangka panjang menjadi jelas bahwa Anda tidak memilih opsi terbaik, apa pun yang Anda kembangkan tetap bernilai dan membungkus semacam pengetahuan lapangan yang masih sepenuhnya dapat digunakan dan portabel. Dan itu persis karena konteks yang nyaman, alat, platform yang Anda pilih untuk digunakan tetap berada di luar jalan dan membuat Anda melihat apa yang benar-benar penting.

Ando
sumber
2

Buatlah daftar faktor-faktor yang harus masuk ke dalam memilih, hal-hal seperti: Biaya keamanan kinerja kemudahan penggunaan kemampuan untuk melakukan X kemampuan untuk melakukan Y waktu keakraban pengembang untuk memasarkan dll.

Ini harus memakan waktu kurang dari satu jam (sebenarnya itu harus kurang dari 15 menit), kemudian duduk bersama manajemen dan minta mereka memprioritaskan faktor-faktor tersebut. (Kemungkinan prioritas mereka dan prioritas Anda tetap sama meskipun Anda dapat memandu pilihan mereka dengan saran mengenai prioritas.) Sekarang Anda tahu apa yang harus dievaluasi tentang teknologi.

Pilih tiga atau empat solusi umum untuk masalah Anda berdasarkan pencarian internet.

Kemudian bacalah dengan cukup untuk membuat perkiraan yang baik tentang seberapa baik masing-masing pilihan sesuai dengan 3-4 prioritas utama mereka. Tetapkan nilai numerik untuk setiap pilihan. Lakukan perhitungan dengan mengalikan nilai setiap waktu prioritas sebagai nilai yang ditetapkan pada prioritas tersebut (10 untuk Angka 1, 8 untuk angka 2, 6 untuk angka 3 4 untuk angka 4 atau angka apa pun yang Anda suka). Sekarang Anda memiliki skor numerik untuk setiap kemungkinan. Secara umum akan jelas mana yang paling memenuhi prioritas yang ditugaskan. Lebih baik Anda sekarang memiliki sesuatu yang analitik untuk dibuktikan kepada mereka untuk membuktikan pilihan Anda. Mereka biasanya akan membeli sesuai pilihan Anda karena Anda memiliki nomor untuk mendukungnya. Jika angka-angka tidak mendukungnya maka Anda perlu bertanya pada diri sendiri mengapa Anda memilih yang lain dan memilih yang terbaik secara numerik atau mengunjungi kembali nomor yang ditugaskan.

Dengan berkonsentrasi pada apa yang menjadi pilihan utama Anda, Anda dapat memotong banyak waktu penelitian. Anda mungkin dapat menebak dalam satu hari dan kemudian memiliki satu hari tersisa untuk mengambil 2 kemungkinan teratas dan mengunduh versi uji coba jika perlu dan bermain sedikit dengannya.

HLGEM
sumber
Apa yang Anda gambarkan disebut "Proses Hirarki Analitik". Ini adalah teknik paling umum yang pernah saya lihat digunakan untuk melakukan studi perdagangan. Kekuatannya adalah membantu menentukan pilihan terbaik dengan cara yang cukup objektif dan mempertimbangkan semua pendapat pemangku kepentingan. Saya terkejut melihat betapa rumitnya situs web membuat teknik ini tampak. Jangan biarkan kerumitan nyata yang ditunjukkan oleh situs web mempengaruhi Anda, itu benar-benar sangat mudah digunakan. Ngomong-ngomong, karena saya tidak bisa menemukan contoh yang baik, saya kira Wikipedia sama baiknya dengan titik awal seperti proses en.wikipedia.org/wiki/Analytic_hierarchy_process .
Dunk
1
Dibutuhkan kurang dari sepuluh menit untuk menyiapkan struktur dalam spreadsheet (bagian yang paling rumit adalah menentukan faktor apa yang ingin Anda bandingkan prioritasnya) dan kemudian mudah untuk mengisinya.
HLGEM
Sangat mudah. Kami juga melakukan survei di mana setiap orang memberikan nilai pada setiap kategori untuk menentukan apa yang dianggap paling penting oleh setiap orang sehingga kami dapat menerapkan bobot untuk setiap kategori. Bagaimanapun, tim perangkat lunak menganggap kecepatan prosesor dan memori selalu menjadi prioritas utama, tetapi para peranti keras tampaknya memiliki pendapat yang berbeda karena masa pakai baterai penting bagi mereka. Tentu saja, pelanggan biasanya menghitung setidaknya setengah dari bobot peringkat dan tidak peduli dengan masalah perangkat lunak atau perangkat keras. Deskripsi online tampak sangat rumit ketika tidak.
Dunk