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?
sumber
Jawaban:
Dari Programmer Pragmatis: Dari Journeyman hingga Master :
Di bagian ini, penulis merekomendasikan proses berikut:
sumber
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:
Seperti ibuku yang sering mengancam ketika aku masih kecil, "Cepat dan ambil beberapa pakaian, atau aku akan memilihnya untukmu!"
sumber
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:
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.
sumber
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.
sumber
Itu tergantung pada apa perkiraannya.
Untuk perkiraan awal, tingkat tinggi untuk kasus bisnis, maka hal-hal utama adalah:
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:
sumber
Beberapa saran dari sisi gelap dari orang yang belajar dengan cara yang sulit.
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.
Ini adalah tanggung jawab Anda untuk dipertimbangkan kecuali Anda mengharapkan orang lain memiliki keahlian tentang bidang ini.
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.
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.
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.
sumber
"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.
sumber
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.
sumber
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.
sumber
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).
sumber
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.
sumber
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:
sumber
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 :
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!
sumber
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:
sumber
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
sumber
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".
sumber
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
sumber