Bagaimana cara merespons ketika Anda diminta estimasi?

652

Kami, sebagai programmer, terus-menerus ditanya 'Berapa lama waktu yang dibutuhkan'?

Dan Anda tahu, situasinya hampir selalu seperti ini:

  • Persyaratannya tidak jelas. Tidak ada yang melakukan analisis mendalam tentang semua implikasinya.
  • Fitur baru mungkin akan mematahkan beberapa asumsi yang Anda buat dalam kode Anda dan Anda segera mulai memikirkan semua hal yang mungkin harus Anda refactor.
  • Anda memiliki hal-hal lain untuk dilakukan dari penugasan sebelumnya dan Anda harus membuat estimasi yang memperhitungkan pekerjaan lain itu.
  • Definisi 'selesai' mungkin tidak jelas: Kapan akan dilakukan? 'Selesai' seperti dalam pengkodean yang baru saja selesai, atau 'selesai' seperti pada "pengguna menggunakannya"?
  • Tidak peduli seberapa sadar Anda akan semua hal ini, kadang-kadang "kebanggaan programmer" membuat Anda memberi / menerima waktu yang lebih pendek dari yang semula Anda bayangkan. Khususnya ketika Anda merasakan tekanan tenggat waktu dan harapan manajemen.

Banyak dari ini adalah masalah organisasi atau budaya yang tidak sederhana dan mudah untuk dipecahkan, tetapi pada akhirnya kenyataannya adalah bahwa Anda diminta untuk memperkirakan dan mereka mengharapkan Anda untuk memberikan jawaban yang masuk akal. Itu bagian dari pekerjaan Anda. Anda tidak bisa hanya mengatakan: Saya tidak tahu.

Akibatnya, saya selalu memberikan perkiraan yang kemudian saya sadari tidak dapat dipenuhi. Itu telah terjadi berkali-kali, dan saya selalu berjanji itu tidak akan terjadi lagi. Tapi itu benar.

Apa proses pribadi Anda untuk memutuskan dan memberikan perkiraan? Teknik apa yang menurut Anda berguna?

Sergio Acosta
sumber
4
Jika persyaratannya tidak begitu jelas, Anda dapat memperkirakan dengan margin kesalahan 50% (rentang yang lebih luas). Jika persyaratannya jelas, Anda dapat memperkirakan dengan margin kesalahan 20%. Strategi bagus lain yang berhasil bagi saya adalah membagi proyek menjadi beberapa tahap. Cara ini lebih mudah untuk diperkirakan dan Anda hanya perlu memperkirakan tahap pertama. Ketika Anda akan memperkirakan tahap selanjutnya, Anda memiliki pemahaman yang jauh lebih baik tentang proyek. Juga, kepercayaan antara Anda dan kontraktor Anda harus lebih baik. Saya juga selalu menulis asumsi dan prasyarat saya. Jangan pernah menulis "ini akan bekerja pada IE8 atau lebih tinggi", lebih spesifik.
Francisco Goldenstein
Sergio, "Sebagai hasilnya, saya selalu memberikan perkiraan yang kemudian saya sadari tidak dapat saya penuhi. Itu telah terjadi berkali-kali, dan saya selalu berjanji itu tidak akan terjadi lagi. Tetapi itu terjadi." Seberapa besar Anda merasa lebih baik hari ini?
Remigijus Pankevičius
4
@ r.pankevicius Jujur, saya baru saja berhenti memberikan perkiraan: rclayton.silvrback.com/software-estimation-is-a-losing-game
Sergio Acosta
2
Saya pikir penting juga untuk melihat nuansa antara "perkiraan" dan "tenggat waktu". Estimasi bukanlah komitmen, jadi kesalahan kecil seharusnya tidak terlalu bermasalah. Saya menulis posting blog yang panjang tentang ini di sini kalau-kalau ada yang tertarik: marcgg.com/blog/2015/08/27/deadlines-estimates-software-startup
marcgg

Jawaban:

390

Dari Programmer Pragmatis: Dari Journeyman hingga Master :

Apa yang Harus Dikatakan Ketika Diminta Perkiraan

Anda berkata, "Aku akan kembali padamu."

Anda hampir selalu mendapatkan hasil yang lebih baik jika Anda memperlambat proses dan menghabiskan waktu melalui langkah-langkah yang kami jelaskan di bagian ini. Perkiraan yang diberikan di mesin kopi akan (seperti kopi) kembali menghantui Anda.

Di bagian ini, penulis merekomendasikan proses berikut:

  • Tentukan akurasi yang Anda butuhkan. Berdasarkan lamanya, Anda dapat mengutip perkiraan dalam presisi yang berbeda. Mengatakan "5 hingga 6 bulan" berbeda dari mengatakan "150 hari". Jika Anda tergelincir sedikit ke bulan ke-7, Anda masih cukup akurat. Tetapi jika Anda masuk ke hari ke 180 atau 210, jangan terlalu banyak.
  • Pastikan Anda memahami apa yang diminta. Tentukan ruang lingkup masalahnya.
  • Model sistemnya. Model dapat berupa model mental, diagram, atau catatan data yang ada. Dekomposisi model ini dan buat estimasi dari komponen. Tetapkan nilai dan rentang kesalahan (+/-) untuk setiap nilai.
  • Hitung estimasi berdasarkan model Anda.
  • Lacak perkiraan Anda. Catat informasi tentang masalah yang Anda perkirakan, perkiraan Anda, dan nilai aktualnya.
  • Hal lain yang termasuk dalam perkiraan Anda adalah mengembangkan dan mendokumentasikan persyaratan atau perubahan spesifikasi kebutuhan, membuat atau memperbarui dokumen desain dan spesifikasi, pengujian (unit, integrasi, dan penerimaan), membuat atau memperbarui manual pengguna atau README dengan perubahan tersebut. Jika 2 atau lebih orang bekerja bersama, ada overhead komunikasi (panggilan telepon, email, rapat) dan menggabungkan kode sumber. Jika ini adalah tugas yang panjang, pertanggungjawabkan hal-hal seperti pekerjaan lain, cuti (liburan, liburan, waktu sakit), rapat, dan tugas overhead lainnya saat memilih tanggal pengiriman.
Thomas Owens
sumber
32
Ini juga merupakan bagian besar dari "Black Art of Estimation Software" karya McConnells. Jangan pernah borgol.
Paul Nathan
12
Saya sangat merekomendasikan buku McConnell. Jika memungkinkan, tanyakan siapa saja yang membutuhkan perkiraan dari Anda untuk mengikuti kuis perkiraannya: codinghorror.com/blog/2006/06/... Anda dapat menyajikannya sebagai permainan, tetapi sering kali membantu menyampaikan pesan.
Paddyslacker
130
Anda selalu bisa mengatakan, "Aku akan kembali padamu." Jika seseorang berkata, "Baiklah, saya perlu jawaban," katakan, "Jika saya memberi Anda jawaban sekarang, itu akan bohong. Saya tidak memiliki informasi yang cukup sekarang. Akan merugikan bagi kami berdua bagi saya untuk membuat sesuatu tepat di tempat. "
Andy Lester
15
@AndyLester - banyak situasi muncul di mana jika ANDA tidak memberikan jawaban sekarang, orang lain akan, dan baik mengambil proyek dan uang dengan mereka, atau masih menyalahkan Anda pada akhirnya karena kehilangan perkiraan Anda tidak punya apa-apa harus dilakukan dengan. Itu menyebalkan, dan itu salah, tapi sayangnya kenyataan.
Joris Timmermans
3
@ThomasOwens Saya tidak akan pernah menggunakan perkiraan menembak-dari-the-hip untuk kontrak tapi saya menggunakan perkiraan itu sebelum tahap kontrak. Saya harus memberikan semacam urutan besarnya sebelum pelanggan mendedikasikan waktu berharga untuk menelusuri detail kecil yang berdarah - jika apa yang mereka pikirkan untuk dibayar adalah beberapa pesanan besar kurang dari naluri optimis saya merasa tidak ada gunanya bahkan mulai.
Joris Timmermans
170

Perkiraan perangkat lunak adalah tugas tunggal yang paling sulit dalam rekayasa perangkat lunak - sedetik terakhir adalah persyaratan yang diminta.

Ada banyak taktik untuk membuatnya, semua didasarkan pada mendapatkan persyaratan yang baik terlebih dahulu. Tetapi ketika punggung Anda menempel ke dinding dan mereka menolak untuk memberi Anda detail yang lebih baik, Fake It:

  1. Perhatikan baik-baik persyaratan yang Anda miliki.
  2. Buat asumsi untuk mengisi kekosongan berdasarkan tebakan terbaik Anda dari apa yang mereka inginkan
  3. Tuliskan semua asumsi Anda
  4. Buat mereka duduk, membaca, dan menyetujui asumsi Anda (atau, jika Anda beruntung, mintalah mereka untuk menyerah dan memberi Anda persyaratan nyata).
  5. Sekarang Anda memiliki persyaratan terperinci yang dapat Anda perkirakan.

Seperti ibuku yang sering mengancam ketika aku masih kecil, "Cepat dan ambil beberapa pakaian, atau aku akan memilihnya untukmu!"

Fishtoaster
sumber
Saya mengajukan pertanyaan tindak lanjut tentang poin ke-3 Anda. programmers.stackexchange.com/questions/132970/…
k0pernikus
Berapa lama untuk menulis persyaratan yang baik?
mmehl
142

Saya melakukan pengembangan untuk seorang pria yang sangat bersikeras tentang keinginan perkiraan yang akurat. Apa yang kami tentukan, yang bekerja dengan sangat baik, adalah ini:

  • Saya menagih untuk semua waktu yang saya habiskan untuk memperkirakan. Jumlahnya sekitar 20-25% dari yang saya tagihan.
  • Saya melakukan pemeriksaan tugas yang sangat rinci. Tidak ada tembakan dari pinggul. Saya masuk ke kode, mencari tahu baris apa yang perlu diubah, apa bagian lain dari program itu akan mempengaruhi, berapa banyak pengujian yang harus saya lakukan untuk memastikan bahwa semuanya masih berfungsi. Saya akan memperkirakan masing-masing bagian dalam satuan .1 jam (6 menit).
  • Saya mengirimkan perkiraan saya untuk setiap tugas bersama dengan rinciannya.

20-25% dari penagihan terdengar seperti banyak.

Tetapi dia akan meminta saya untuk membuat perubahan XYZ, berpikir itu akan memakan waktu sekitar 2 jam. Dalam 1 jam estimasi terperinci, saya akan menentukan akan memakan waktu 8,5 jam. Jadi dia akan memutuskan apakah itu layak dibayar 8,5 jam. Jika tidak, maka dia menghemat 7,5 jam dari apa yang harus dia bayar jika aku melakukannya tanpa perkiraan.

Dan jika dia tidak ingin menginvestasikan 8,5 jam, detail pekerjaan yang saya lakukan untuk perkiraan adalah pekerjaan saya harus melakukan pula.

Saya menemukan bahwa dengan metode ini saya dapat membawa sebagian besar tugas tepat waktu atau bahkan lebih awal, tanpa harus melebih-lebihkan. Karena waktu telah dipecah begitu teliti, saya bisa tahu sejak awal jika saya tergelincir. Jika saya mencapai penghalang sehingga setelah 3 jam saya bisa tahu bahwa tugas 8,5 jam saya akan memakan waktu 12, saya bisa berbicara dengannya tentang hal itu sebelum waktu berlalu sehingga ia dapat mengevaluasi kembali dan menarik fitur jika dia khawatir tentang biaya .

Apakah dia nikel-dan-redup? Tidak, saya melihatnya membiarkan dia menerapkan uangnya di mana ia melihat manfaat paling besar. Dan saya senang mendapatkan pengalaman dalam memperkirakan, yang selalu saya takuti.

Kyralessa
sumber
12
Itu terdengar seperti teknik yang sangat memadai. Bahkan, ketika Anda membuat estimasi untuk perusahaan Anda sendiri, perkiraan waktu dibayar sebagai bagian dari gaji Anda juga. Saya khawatir, bagaimanapun, bahwa masalahnya adalah bahwa sebagian besar organisasi menginginkan perkiraan tugas yang jauh lebih besar daripada yang dapat diekspresikan dalam potongan 0,1 jam. Terima kasih atas jawaban anda. (Apakah Anda Kyralessa yang sama dari joel pada papan perangkat lunak?)
Sergio Acosta
1
Ya, yang sama.
Kyralessa
@SergioAcosta intinya adalah Anda menggunakan waktu analisis / estimasi untuk memecah tugas menjadi potongan yang lebih kecil. Ini jawaban terbaik, imho.
NimChimpsky
7
Jadi jika itu seperti proyek 5 bulan Anda harus memperkirakannya selama satu bulan atau lebih. Mungkin manajer tidak akan menerima itu :)
Darius.V
@ Darius.V, Anda membuat poin yang bagus. Dalam hal ini keputusan klien adalah Ya atau Tidak untuk fitur tertentu, bukan keseluruhan Ya atau Tidak untuk keseluruhan proyek. Teknik ini tentu lebih menantang jika melakukan seluruh proyek atau tidak tergantung pada perkiraan keseluruhan. Di sisi lain, jika Anda menganggarkan selama enam bulan untuk sebuah proyek, tetapi proyek itu mungkin benar-benar memakan waktu satu tahun, apakah Anda lebih suka mengetahui itu setelah enam bulan, atau setelah dua atau tiga?
Kyralessa
64

Kami sering diminta untuk "perkiraan rata-rata" selama pertemuan di mana kami diberikan gagasan yang sangat luas dan luas tentang apa yang ingin mereka lakukan. Saya selalu berkata, "jika Anda ingin jawaban hari ini adalah tahun dan satu juta dolar. Jika Anda ingin memberi saya lebih banyak detail dan waktu untuk memeriksanya, maka saya dapat menyaring angka-angka itu untuk Anda."

Mereka hampir selalu mendapatkan intinya.

Walter
sumber
7
Ketika mereka mengatakan itu terlalu banyak, saya berpura-pura berpikir sebentar lalu berkata, "Anda benar! Sudah 18 bulan dan 2 juta".
CyberFonic
55

Itu tergantung pada apa perkiraannya.

Untuk perkiraan awal, tingkat tinggi untuk kasus bisnis, maka hal-hal utama adalah:

  1. Kecepatan. Metode apa pun yang Anda gunakan harus cepat. Intinya adalah para pemangku kepentingan tidak yakin apakah itu layak dilakukan proyek - itulah sebabnya mereka membutuhkan angka untuk kasus bisnis. Jika kasus bisnis solid, mereka tidak akan memerlukan perkiraan Anda. Sebagian besar dari proyek-proyek ini tidak akan berjalan sehingga penting bahwa terlalu banyak upaya tidak dikeluarkan untuk memberikan perkiraan.
  2. Berikan kisaran. Jadikan luas. Anda tidak punya waktu untuk menganalisis persyaratan, lokakarya dengan pemangku kepentingan, memvalidasi asumsi. Berbagai macam memberi tahu penerima perkiraan "Proyek perangkat lunak secara alami kompleks dan berisiko - jika Anda menginginkan perkiraan yang tepat, Anda perlu memberi saya lebih banyak perincian dan lebih banyak waktu". Masalah dengan memberikan angka tunggal atau rentang sempit adalah bahwa angka itu membuat Anda terpojok dengan menetapkan harapan sebelum analisis nyata dilakukan.

Saya menemukan teknik terbaik untuk memilih proyek yang sebanding yang "terasa" sama. "Feel" benar-benar subyektif - tetapi dengan perkiraan semacam ini pengalaman saya memberi tahu Anda bahwa Anda tidak akan menemukan pengukuran yang objektif. Kemudian sediakan rentang yang luas. Saya telah membaca beberapa buku yang mengatakan kisaran -50% hingga + 100% bagus tetapi tergantung pada banyak faktor.

Untuk perkiraan tingkat rendah yang terperinci:

  1. Anda membutuhkan garis dasar. Jika garis dasar tidak stabil, estimasi tersebut tidak ada artinya.
  2. Bottom up adalah yang terbaik. Dapatkan perincian kerja yang terperinci, perkirakan setiap komponen kemudian gulirkan ke jumlah yang lebih besar. Saya menemukan perencanaan poker menjadi teknik hebat di sini.
  3. Kontingensi dokumen. Jelaskan di mana kontingensi (jika ada) ditambahkan. Apakah ditambahkan ke setiap item baris? Atau untuk seluruh perkiraan? Atau risiko spesifik? Atau tidak ada?
  4. Nyatakan asumsi Anda. Validasi sebanyak mungkin dengan kerangka waktu yang ditentukan.
  5. Nyatakan secara eksplisit apa yang dimasukkan dan dikecualikan dalam estimasi. Misalnya, apakah ulasan disertakan? Apakah termasuk keterlambatan teknis?
darreljnz
sumber
25

Beberapa saran dari sisi gelap dari orang yang belajar dengan cara yang sulit.

Persyaratannya tidak jelas. Tidak ada yang melakukan analisis mendalam tentang semua implikasinya.

Jangan lakukan estimasi pada saat ini. Orang tidak memperkirakan berapa banyak tentara yang dibutuhkan untuk memenangkan pertempuran tanpa petunjuk tentang jumlah musuh. Perkiraan dibuat setelah pengintaian. Ini kecuali kamu sudah melawan musuh ini.

Fitur baru mungkin akan mematahkan beberapa asumsi yang Anda buat dalam kode Anda dan Anda segera mulai memikirkan semua hal yang mungkin harus Anda refactor.

Ini adalah tanggung jawab Anda untuk dipertimbangkan kecuali Anda mengharapkan orang lain memiliki keahlian tentang bidang ini.

Anda memiliki hal-hal lain untuk dilakukan dari penugasan sebelumnya dan Anda harus membuat estimasi yang memperhitungkan pekerjaan lain itu.

Sama seperti di atas, bahkan untuk pekerjaan tak terduga yang dibuat oleh rekan tim jorok di sebelah Anda dengan prosedur pengujian yang hampir tidak ada yang menyebabkan kode Anda salah bahwa Anda tidak dapat memprediksi dengan sempurna sebelumnya. Ini adalah ramalan cuaca.

Definisi 'selesai' mungkin tidak jelas: Kapan akan dilakukan? 'Selesai' seperti dalam pengkodean yang baru saja selesai, atau 'selesai' seperti pada "pengguna menggunakannya"?

Memahami persyaratan pengguna-akhir di sini, berpikirlah seperti pengguna. Jangan lakukan apa yang teman-teman Anda lakukan jika mereka memperkirakan sesuatu telah "dilakukan" hanya karena beberapa fungsionalitas dasar dengan alur kerja barebones yang tidak dapat ditoleransi oleh pengguna adalah apa yang mereka anggap sebagai "selesai" . Pikirkan itu dari sudut pandang pengguna, karena hanya klien yang Anda buat perkiraan akan mengerti. Perkirakan terhadap persyaratan pengguna-akhir yang lengkap, bukan menuju persyaratan teknis barebone. Dan sadari bahwa klien Anda yang meminta perkiraan akan benar-benar tidak akurat di sini tentang bagaimana mereka mengatakan sesuatu dan memahami aspek teknis dari apa yang Anda katakan.

Tidak peduli seberapa sadar Anda akan semua hal ini, kadang-kadang "kebanggaan programmer" membuat Anda memberi / menerima waktu yang lebih pendek dari yang semula Anda bayangkan. Khususnya ketika Anda merasakan tekanan tenggat waktu dan harapan manajemen.

Jangan lakukan ini! Anda terdengar seperti pekerja keras yang memotivasi diri sendiri dan mungkin orang yang mudah menyerah pada paksaan.

Masalahnya di sini adalah ini: katakanlah Anda dan Joe membuat perkiraan waktu untuk tugas yang sama (tetapi antara dua karyawan yang terpisah, tidak mengetahui kedua perkiraan pada satu waktu). Anda memperkirakan dengan berani, "satu minggu" . Tidak apa-apa menurut Anda, Anda akan bekerja lebih dari 100+ jam seminggu, lembur tanpa bayaran. Sekarang Anda terlambat tiga hari.

Sementara itu, Joe memperkirakan 5 bulan. Anda pikir ini konyol, Anda pikir Anda bisa melakukannya dalam satu minggu. Berapa banyak pekerjaan Joe? 10 jam seminggu? ... kecuali dia selesai tepat waktu tepat 5 bulan.

Tebak siapa yang dianggap sebagai bajingan? Itu benar, kamu. Joe tampak seperti pekerja hebat, Anda tampaknya tidak bisa diandalkan sekarang. Tidak masalah bahwa Anda mungkin telah mencapai hasil yang lebih baik dalam ~ 7% dari waktu yang Joe gunakan. Yang penting adalah Anda libur 3 hari dari perkiraan satu minggu.

Jangan pernah salah memperkirakan sisi ketatnya. Kesalahan di sisi perkiraan yang lebih longgar. Ada reputasi yang harus Anda bangun di perusahaan Anda, dan itu tidak akan didasarkan pada panjang perkiraan Anda hampir sebanyak keakuratan estimasi Anda. Mudah untuk akurat dengan perkiraan yang terlalu lama, Anda hanya mendapatkan lebih banyak waktu untuk menyelesaikan masalah dan menyelesaikannya dengan lebih baik. Perkiraan yang terlalu singkat tidak meninggalkan ruang bernapas sama sekali, Anda akan bertemu dengan putus asa atau Anda sedang kacau.

ChrisF
sumber
2
Ini adalah jawaban yang bagus, ini memberi saya wawasan yang sangat berguna tentang cara memperkirakan dan mempertimbangkan berbagai hal, terima kasih
mboullouz
18

"Dua minggu!"

Serius. Perkiraan pertama saya selalu dua minggu. Karena aku punya semacam gangguan mental aneh yang membuatku berpikir semuanya terdengar seperti dua minggu lagi.

Saya mencoba untuk mengatasinya, mencoba untuk benar-benar berpikir tentang berapa lama saya berpikir sesuatu akan mengambil, mencoba mengidentifikasi semua titik masalah potensial dan bit yang terlihat terlalu kotak hitam-y bagi saya untuk memperkirakan secara akurat. Dan cobalah untuk mengenali bahwa jika jawaban saya adalah "Dua minggu!", Saya mungkin gagal melakukannya.

Hampir setiap manajer bagus yang telah saya pelajari mengenali "Dua minggu!" sebagai jawaban yang membutuhkan respons mucikari ringan sebagai respons.

BlairHippo
sumber
3
Mungkin inilah sebabnya mengapa sebagian besar tim melakukan sprint 2 minggu :)
Cristian E.
17

Ada entri blog yang menguraikan cara menyimpan catatan seberapa akurat estimasi Anda sebelumnya, dan kemudian lain kali Anda mengatakan kepada seseorang "itu akan menjadi dua minggu", Anda dapat melihat riwayat sebelumnya dan melihat berapa lama benar-benar mengambil terakhir kali Anda mengatakan "ini akan menjadi dua minggu".

Saya belum mencobanya sendiri, tetapi saya ingin, untuk melihat seberapa akurat perkiraan saya.

Richard
sumber
2
Fogbugz karya Joel lebih jauh tentang itu dan menganalisis data Anda untuk Anda menggunakan penjadwalan berbasis bukti. Yaitu, masing-masing pengembang memasukkan berapa lama mereka pikir setiap tugas akan mengambil, dan kemudian, berapa lama tugas itu, dan itu mengatur seberapa akurat setiap pengembang dengan perkiraan mereka untuk menghasilkan kurva probabilitas untuk tanggal selesai.
Chris Buckett
Ya, kemudian lakukan beberapa GDD - Gauge Driven Development dan hancurkan segalanya
Claudiu Constantin
11

Itu tergantung pada organisasi dan bagaimana estimasi digunakan.

Jika perkiraan itu hanya untuk memberikan gambaran umum kapan itu akan siap, saya biasanya dapat melakukan perkiraan cepat berdasarkan pengalaman saya. Sering kali saya akan memasukkan ketidakpastian atau variasi yang mungkin dengan perkiraan bersama dengan bagaimana perubahan dapat berdampak pada area lain dari sistem dan tingkat pengujian regresi yang diperlukan.

Jika taksiran digunakan untuk kontrak apa pun atau dalam skenario di mana waktu yang lebih tepat diperlukan, saya melakukan pekerjaan penuh. Ini lebih banyak pekerjaan dan membutuhkan lebih banyak pemikiran mendalam tentang desain dan perubahan pada sistem, tetapi jauh lebih akurat, terutama untuk pekerjaan yang lebih besar.

Dalam kedua kasus tersebut, komunikasi yang sedang berlangsung adalah kuncinya. Jika Anda menemukan sesuatu yang tidak terduga, buatlah diketahui pada saat itu alih-alih menunggu hingga batas waktu. Jika persyaratannya tidak jelas, pastikan Anda mendokumentasikan pemahaman Anda tentang mereka dan fungsionalitas yang Anda rencanakan untuk berikan. Ini juga membantu dengan asumsi yang Anda buat. Dan sejauh prioritas yang bersaing, ketika satu pekerjaan menabrak yang lain, menjadi jelas tentang bagaimana hal itu akan berdampak pada jadwal.

g.
sumber
2
+1 untuk kebutuhan komunikasi yang sedang berlangsung. IMO, ini adalah bagian paling berguna dari model Agile.
Scott Weldon
Ini adalah jawaban yang layak pertama di sini hanya karena itu satu-satunya yang sejauh ini (saya membaca dari atas ke bawah) yang menekankan "komunikasi berkelanjutan". Semua orang tampaknya menganggap estimasi-komunikasi adalah peristiwa yang hanya terjadi satu kali saja. Itu saran yang buruk, dan pendekatan yang buruk untuk hal-hal ini. Jawaban ini adalah saran yang bagus.
Adam Cameron
9

Diperkirakan untuk apa? Tugas kecil atau solusi lengkap.

Yang terakhir saya jarang lakukan tetapi kemudian hanya menebak, menambah sedikit, meminta manajer menambahkan sedikit dan membuatnya menjadi kisaran, dengan catatan kecil di sebelahnya menyatakan bahwa di atas adalah dugaan.

Tugas-tugas kecil - Merencanakan poker, saya menemukan bahwa ini bekerja dengan sangat baik (tidak sempurna, beberapa tugas 1pt membutuhkan waktu lebih lama dan beberapa tugas 5pt membutuhkan waktu beberapa menit, tetapi semuanya pada akhirnya berakhir).

mlk
sumber
Yay merencanakan poker!
Sean McMillan
7

Sajikan rentang berdasarkan apa yang Anda ketahui hari ini. Gunakan Cone of Ketidakpastian untuk memberikan rentang sekitar perkiraan waktu awal Anda.

Setiap minggu hitung berapa banyak yang tersisa untuk dilakukan, perkirakan kembali berdasarkan apa yang Anda ketahui. Setelah Anda memiliki cukup ukuran sampel berapa banyak pekerjaan yang Anda lalui setiap minggu, berikan interval kepercayaan 90% untuk apa yang tersisa untuk memberikan rentang tanggal (biasanya) yang semakin menyempit saat proyek berlangsung dan jumlah pekerjaan yang tersisa (semoga saja). ) menyusut.

Paddyslacker
sumber
7

Percaya diri. Saya tidak bisa memberi tahu Anda berapa kali saya gagal dalam pertemuan awal dengan klien dengan tidak menunjukkan profesionalisme saat memberikan perkiraan. Sekalipun Anda mengeluarkan angka dari kehabisan udara - pastikan Anda selalu menjaga perkiraan. Yang mengatakan, berhati-hatilah untuk tidak memperkirakan diri Anda menjadi lubang Hal-hal yang berbeda membutuhkan jumlah waktu, upaya, dan sumber daya yang berbeda untuk disatukan. Berikut cara yang baik untuk melakukannya:

Mereka: Berapa biayanya?

Saya: Itu tergantung pada apa yang Anda ingin saya lakukan. Secara umum, saya memulai proyek semacam ini di sekitar $ X.

Moshe
sumber
6

Terkadang estimasi menjadi tantangan besar bagi Anda dan tim Anda, terutama ketika kita berbicara tentang estimasi proyek perangkat lunak.

Setelah kami memutuskan untuk berbagi pengalaman dan pengetahuan kami tentang proses estimasi perangkat lunak dan mendefinisikan empat jenis estimasi berbeda :

  • sosok kasarnya
  • estimasi layanan
  • estimasi fitur
  • estimasi komponen

Tentu saja, tipe-tipe itu berbeda. Ballpark adalah apa yang sering disebut "dugaan". Jadi, ini merupakan angka atau kisaran perkiraan yang memberikan gambaran umum biaya dan yang dapat membantu calon pelanggan memutuskan apakah mereka ingin melanjutkan diskusi lebih lanjut.

Sebagai aturan, klien membutuhkan angka rata-rata pada awal proyek. Dan saran kami adalah: diskusi proyek dan memberikan gambaran kasar seharusnya hanya langkah-langkah yang baik untuk menerima estimasi komponen (yang fleksibel, orang dapat menggunakan estimasi jenis komponen untuk seluruh proses pengembangan. Tidak perlu memperkirakan ulang dari awal ketika Anda ingin menambah, menghapus atau mengganti fitur, layanan, dll).

Setiap orang harus mengingat risiko yang datang dengan estimasi pengembangan perangkat lunak: meremehkan, menaksir terlalu tinggi, total skenario kegagalan epik, dll.

Anda dapat membaca lebih lanjut di blog kami!

http://blog.lemberg.co.uk/project-management/software-estimation-process/

Semoga informasi ini dapat membantu Anda!

Olha
sumber
5

Saya selalu memberikan perkiraan yang kemudian saya sadari tidak bisa saya penuhi. Itu telah terjadi berkali-kali, dan saya selalu berjanji itu tidak akan terjadi lagi.

Sepertinya Anda diminta komitmen, bukan perkiraan. Ini adalah hal-hal yang berbeda, tetapi jika Anda dapat mengelola komitmen secara andal itu akan sangat membantu kredibilitas dan karier Anda.

Beberapa saran berdasarkan ~ 10 tahun pengalaman saya:

  • Selalu sediakan rentang (yaitu batas bawah dan atas). Ini akan mengomunikasikan tingkat ketidakpastian Anda
  • Jika Anda memiliki ketidakpastian yang sangat besar, mintalah penundaan (mis. 1 hari untuk melakukan analisis, dan kemudian berikan kisaran yang lebih ketat)
  • Jika tugasnya terlalu besar, pisahkan dan berikan kisaran untuk masing-masing bagian
jamesfmackenzie
sumber
4

Pertama, jika beberapa tugas diberikan kepada saya, saya akan memecahnya menjadi subtasks. Saya akan memperkirakan waktu untuk setiap subtugas dan mungkin dengan subtasks saya akan dapat menemukan area yang bermasalah dan karenanya saya akan dapat memperkirakan berapa lama sampai batas tertentu.

Tetapi tetap saja semua perencanaan hanya akan membantu sampai batas tertentu. Hanya ketika Anda mulai coding Anda dapat menemukan masalah yang tepat

Gopi
sumber
1

Jika Anda melakukan banyak proyek untuk bos atau klien yang sama, Anda dapat mencoba memperkirakan dalam kompleksitas garis besar alih-alih minggu atau bulan, mungkin dalam ukuran t-shirt. Identifikasi beberapa proyek sebelumnya, dan tetapkan ukurannya S, M, L, XL.

Dan kemudian tanyakan pada diri Anda: proyek mana yang terdengar mirip dalam ruang lingkup? Dan alih-alih menjawab dengan "2 Bulan", Anda dapat menjawab dengan "kedengarannya seperti L untuk saya" (atau apa pun kalibrasi Anda untuk proyek ternyata).

Ini cukup mudah dipahami, dan juga jelas bahwa ada banyak ketidakpastian dalam tebakan itu.

Kemudian, ketika persyaratan berubah, Anda dapat mengatakan "perubahan itu membuatnya lebih mirip XL".

moritz
sumber
ini cukup pintar (jika Anda diizinkan untuk menggunakannya): Saya lebih suka menggunakan pendekatan yang sama tetapi hanya generalisasi dengan nilai waktu, jadi saya akan menjawab "ini akan memakan waktu seminggu atau lebih" atau "itu akan menjadi masalah hari "untuk sesuatu yang kecil dan hindari menjawab ketika proyek akan menjadi lebih besar dari sebulan dan perlu perkiraan yang tepat
Edoardo
0

Sedikit terlambat tetapi ketika saya di militer kami diperintahkan untuk menggunakan PERT untuk menentukan perkiraan. Itu memang membutuhkan beberapa pengalaman di bidang Anda dan tugas yang dihadapi. Itu secara mengejutkan akurat ketika menentukan perkiraan waktu penyelesaian ketika memelihara dan memperbaiki perangkat elektronik (radio kompleks dan peralatan komunikasi satelit), di mana sejumlah hal dapat salah atau ditemukan dan perlu diperbaiki selama pemeliharaan rutin. Estimasi itu penting karena unit-unit lain mungkin tidak dapat dioperasikan sampai mereka menerima kembali peralatan komunikasi mereka. Salah satu yang saya gunakan adalah Kalkulator PERT Online Gratis ini

xtreampb
sumber
1
Tautan ini PERT PERTANIAN Online Gratis tidak berfungsi lagi.
krokodilko
@krokodilko Saya telah membangun alat PERT baru yang lebih diarahkan pada perkiraan perangkat lunak di sini: Estimasi.rokkincat.com .
Gaul