Seni mentukan estimasi pekerjaan

Salah satu aktivitas yang cukup blur dalam pekerjaan saya sebagai Software Engineering adalah disaat saya harus menjawab pertanyaan sebarapa lama pekerjaan / tugas bisa diselesaikan.

Saya katakan blur karena saya belum menemukan cara yang paling akurat dan pasti layakanya rumus matematika atau hitungan Time Complexity. pada skenario tertentu, menentukan estimasi pekerjaan itu seperti gambling. tidak random, tapi tidak juga trivial.

"Kita akan membuat chatting app dengan fitur a,b,c sampai h. kira-kira butuh berapa lama?"
~Project Manager

Dalam karir saya selama ini, setidaknya di Indonesia, ditanyai soal estimasi bahkan sebelum semua task dibreakdown adalah hal yang cukup lumrah. Jika saya dapat menjawab seketika maka ada beberapa kemungkinan yang terjadi.

  1. Analogous
    Kemungkinan pertama adalah saya pernah mengerjakan pekerjaan / tugas serupa dimasa lalu, maka saya akan menentukan estimasi merujuk pada pengelaman itu.

  2. Membreakdown dikepala
    Kemungkinan kedua adalah pekerjaan / task yang sedang dibicarakan tidak terlalu complex maka saya dapat dengan cepat membreakdown dan menentukan waktu pada masing-masing subtask.

  3. Ngawur + Common Sense
    Jika saya tetap menjawab tidak dengan metode satu atau dua maka bisa dipastikan saya ngawur dengan cara mencari rentang waktu yang tidak terlalu lama pun terlalu cepat, Common Sense ( kewajaran ).

Buffer

Karena estimasi adalah sebuah estimasi, bukan fakta, bukan hal pasti maka pastikan selalu menambahkan Buffer ( penyangga, penambahan waktu ) pada setiap estimasi yang kita berikan, untuk apa?

Buffer bukan hanya berguna untuk antisipasi kesulitan-kesulitan yang mungkin kita temukan ditengah pekerjaan, tapi juga untuk antisipasi adanya perubahan requirement, adanya birokrasi yang menghambat, dan apapun yang bisa terjadi diluar rencana.

Missed

Lagi-lagi, karena sebuah estimasi adalah estimasi maka kadang kita menyelsaikan tugas diluar jadwal, bisa lebih cepat atau jauh lebih lambat, lalu apa yang umumnya dilakukan?

The ideal

Jika ideal berarti tidak ada hambatan maka menurut saya tidak ada yang ideal, segala metode entah itu Scrum, Agile akan datang dengan tantangan dan hambatannya masing-masing.

Tapi jika ideal berarti bersiap untuk segala hambatan maka pastikan jadikan komunikasi kunci dari semuanya, mengkomunikasikan sesuatu lebih awal lebih baik, dan don't be a jerk.