Kami memiliki proyek perusahaan besar yang biasanya melibatkan menyalin data dari basis data sumber ke basis data tujuan dan kemudian menyiapkan sejumlah aplikasi tambahan yang menyinkronkan data ini dll.
Proyek terakhir berisi 250.000 item (baris data). Proyek berikutnya hanya akan berisi 4.000 item. Manajer proyek / pebisnis percaya bahwa proyek harus 1/10 waktu untuk menyelesaikan karena hanya sebagian kecil dari ukuran proyek terakhir.
Apa analogi yang baik yang dapat saya gunakan untuk menjelaskan bahwa menulis kode untuk mentransfer data dari satu sistem ke sistem lain mengambil jumlah yang sama terlepas dari jumlah item - menulisnya untuk 1 item atau untuk 100.000.000 akan memakan waktu yang kira-kira sama dengan waktu dari suatu pemrograman sudut pandang.
Jawaban:
Katakan pada mereka itu seperti membangun jalan raya empat lajur baru ke bagian terpencil negara itu. Apakah jalan itu digunakan oleh 100 mobil sehari atau 1000 mobil sehari, upaya untuk membuat jalan akan hampir sama.
Memang, jika itu akan mendukung 1.000.000 mobil sehari Anda harus membuat jalan sedikit lebih kuat, tetapi terlepas dari itu, Anda harus menebang pohon yang sama, meledakkan melalui gunung yang sama, meratakan jumlah yang sama kotoran, dan kegiatan ini cukup banyak biaya tetap tidak peduli berapa banyak mobil yang menggunakan jalan.
sumber
Beri mereka kalkulator dan minta mereka menambahkan 1238783423 hingga 9858238483, waktu yang dibutuhkan. kemudian minta mereka untuk menambahkan 3423 hingga 8483 dan beri tahu mereka bahwa Anda mengharapkan jawaban sekitar 100.000 lebih cepat.
Anda mungkin juga menjelaskan jumlah data (mungkin) efek lamanya waktu perangkat lunak untuk menjalankan bukan waktu pengembangan.
sumber
Masukkan ke dalam pembicaraan manajer.
Jika Anda membuat mesin untuk membuat widget dengan kecepatan 1 widget per detik, tidak masalah jika Anda menggunakannya untuk membuat 100 widget atau 10.000 widget, mesin itu sendiri membutuhkan waktu yang sama untuk membuatnya.
perbedaannya adalah pada saat run time, bukan build time.
Semua kelas manajemen bekerja pada masalah seperti ini dengan pabrik widget hipotetis.
sumber
Jangan gunakan analogi. Jelaskan saja.
Pendidikan lebih baik daripada mengecilkan :)
sumber
Tidak benar-benar analogi, tapi saya masih percaya cara yang baik untuk menangani argumen ini: menunjukkan ada kesalahan fatal di dalamnya.
Proyek Anda sebelumnya termasuk (dari apa yang saya dapatkan) menyalin data dengan beberapa modifikasi di atasnya.
Jika saya melakukannya dengan benar, itu adalah sesuatu yang tim, katakan, 100 akuntan dapat lakukan dalam beberapa bulan. Lalu mengapa mereka melemparkan pengembang perangkat lunak pada masalah?
Karena perangkat lunak yang Anda buat tidak peduli apakah itu akan memproses 10 atau 10 juta lembar data (tidak persis, tapi saya ragu manajer Anda peduli dengan
O(n)
kerumitan). Jadi, itu mungkin lebih murah, lebih cepat dan lebih bersih (proses rawan kesalahan lebih sedikit).Jika Anda lebih radikal, Anda mungkin bahkan menyarankan bahwa jika mereka tidak suka seberapa cepat tim perangkat lunak bekerja, mereka selalu dapat memanggil akuntan untuk melakukan pekerjaan dengan tangan.
Ini membuat hidup manajer Anda jauh lebih mudah ketika Anda sedang mengembangkan proyek terakhir, dan sekarang, ketika mereka harus menerapkan logika yang sama untuk mencari tahu perangkat lunak berikutnya tidak peduli apakah itu akan bekerja pada 10 juta atau 4 000 baris, mereka tiba-tiba melupakannya.
Saya pikir dalam kasus Anda para manajer hanya memainkan permainan estimasi dan mencoba untuk memaksa tim untuk bekerja lebih cepat, dengan menunjukkan perbedaan antara 4000 dan 250000 dan berharap untuk beberapa 'kesalahan'. Saya bisa saja salah, tetapi saya pernah melihat ini dilakukan sebelumnya.
Ini cara yang mengerikan untuk mengelola tim programmer (sebenarnya semua jenis tim kreatif) dan tidak membantu siapa pun.
sumber
Saya tahu Anda meminta analogi, tetapi saya pikir itu teknik yang salah.
Saya percaya, seperti yang disebutkan orang lain secara sepintas, bahwa Anda perlu menekankan bahwa ukuran data mempengaruhi waktu berjalan , bukan waktu pembangunan .
Jadi, uraikan untuk mereka - Anda benar-benar memiliki dua sub proyek, membangun dan menjalankan. Proyek pembangunan seharusnya (sebagian besar) tidak relevan dengan berapa banyak data yang akan dijalankan, itu hanya masalah jenis data.
Adapun runtime - tentu saja, mereka dapat mempertimbangkan bahwa menurut ukuran data (tidak termasuk overhead tetap non-sepele).
Ini seperti jika Anda harus pergi ke Melbourne - tetapi pertama-tama Anda harus membuat mobil.
Tentu, berkendara ke Sydney mungkin lebih cepat - tetapi membangun kendaraan membutuhkan waktu yang sama.
Oke, saya memberi Anda analogi setelah semua.
sumber
Mungkin telepon? Pelanggan Anda menginginkan ponsel yang dibuat khusus. Jika dia melakukan 0 panggilan per hari atau 100 panggilan per hari, dibutuhkan waktu yang sama untuk membuat ponselnya.
Data yang ditransmisikan oleh telepon adalah analog dengan data yang disalin oleh program Anda.
Manajer Anda tampaknya mengacaukan waktu-dev dengan waktu sebenarnya program. Tetapi kesalahpahaman mereka mungkin berbeda. Mereka mungkin berasumsi bahwa ada lebih sedikit "bidang" yang terlibat. Tidak hanya catatan data yang lebih sedikit. Jika ada 100000 bidang data individual, ini akan menjadi upaya pengembangan besar-besaran dibandingkan dengan hanya 10 bidang. Lebih banyak pemetaan bekerja dari satu sistem ke sistem lainnya. Dalam hal ini mereka mungkin benar, tetapi masih ada beberapa overhead konstan yang terlibat dan Anda tidak bisa hanya membagi dengan jumlah bidang untuk mendapatkan waktu.
sumber
Seperti yang saya gambarkan, data memiliki panjang dan lebar 2 dimensi. Panjang adalah jumlah rekaman, lebar adalah jumlah total kolom di semua tabel
Sekarang ketika Anda ingin mengimpor data itu seperti mendapatkan blok melalui lubang. Anda perlu membuat lubang yang cukup besar untuk dimensi terkecil, dan kemudian membawa blok itu
sekarang dengan 10 juta dan 10 ribu dimensi terkecil masih lebarnya. Jadi lebar yang menentukan berapa lama untuk membuat lubang.
Untuk menyelesaikan metafora, jika panjangnya lebih kecil Anda cukup mengetik data secara manual
sumber
Saya mengimpor ratusan file klien setiap minggu.
Satu hal yang saya temukan adalah bahwa file kecil umumnya membutuhkan waktu lebih lama untuk mengembangkan impor data karena:
Kami telah menemukan bahwa kami menghemat banyak waktu dalam pengembangan dengan membangun paket SSIS anak induk yang memiliki proses anak standar dan manipulasi yang diperlukan untuk mendapatkan data dalam bentuk standar dapat dilakukan pada induknya. Dengan begitu, itu menjadi kurang masalah tentang berapa banyak catatan ketika kita melakukan estimasi tetapi masalah tentang seberapa dekat dengan stanrdard adalah file yang kita dapatkan. Kami sekarang tidak mendapatkan banyak keluhan ketika hal-hal kecil membutuhkan waktu lebih lama untuk berkembang karena mereka tidak sesuai dengan standar.
sumber
Menulis sebuah program seperti mempekerjakan karyawan baru. Anda harus mengajari mereka di mana menemukan data, apa yang harus dilakukan dengannya, dan bagaimana memberi Anda hasilnya. Anda harus mengawasi mereka sebentar untuk memastikan mereka melakukannya dengan benar. Mungkin butuh sedikit lebih lama untuk melatih mereka jika mereka memiliki pekerjaan yang rumit / penting atau jika mereka akan melakukan pekerjaan yang sangat besar, tetapi itu membutuhkan banyak waktu tidak peduli apa pun itu.
Banyak manajer yang akrab dengan overhead yang terlibat dalam pelatihan karyawan baru, jadi ini mungkin masuk akal bagi mereka.
(analoginya rusak sejauh karyawan baru Anda adalah robot superpower yang bisa menyelesaikan pekerjaan dalam jumlah waktu yang sepele tidak peduli berapa banyak catatan yang Anda lemparkan pada mereka, tapi mudah-mudahan Anda sudah membuat poin Anda saat itu.)
sumber