Saya seorang pengembang perangkat lunak, dan saya bekerja di sebuah perusahaan pengembangan web kecil. Tampaknya menjadi tema yang berulang bahwa manajer menengah akan bertanya kepada saya berapa lama akan dibutuhkan, dan ketika saya memberi mereka perkiraan saya, mereka pikir itu terlalu tinggi. Jika itu manajer yang lebih teknis, atau pengembang lain, mereka biasanya sudah memiliki perkiraan sendiri, dan mulai mencoba menerapkannya dengan cara mereka sendiri karena mereka pikir mereka dapat melakukannya lebih cepat.
Namun, ada tren di mana pengembang lain akhirnya menggunakan waktu lebih banyak daripada yang mereka kutip. Mereka akan mendapatkan setengah dari anggaran mereka, kemudian menyadari bahwa ada beberapa kebutuhan bisnis yang tidak dapat ditangani oleh rencana implementasi mereka dengan benar. Lebih sering daripada tidak, rencanaku akan menjawab kebutuhan ini, tetapi itu dianggap sebagai fitur " Kamu tidak akan membutuhkannya ".
Lebih buruk lagi, ketika mereka menabrak dinding ini, mereka biasanya akan datang kepada saya untuk membantu mereka keluar dari sudut yang telah mereka lukis sendiri, tetapi hanya ada berjam-jam di hari saya.
Kasus terbaik : Gangguan ini memotong waktu yang saya alokasikan untuk pekerjaan pengembangan saya sendiri, mengakibatkan proyek lain tertunda, atau saya harus bekerja lembur karena saya "satu-satunya yang dapat melakukan X".
Kasus terburuk : Saya akhirnya harus mengambil alih tugas / proyek sebagai tugas saya, dan pada saat itu tidak ada waktu tersisa dalam anggaran bagi saya untuk melakukannya dengan cara "saya". Saya harus mencoba menyelesaikan apa yang mereka mulai dengan cara mereka memulainya, jadi "perusahaan tidak kehilangan uang lagi". Ini selalu kembali menggigit saya karena kemudian itu menjadi kode hacky "saya", dan ketika rusak orang bertanya kepada saya mengapa itu dibuat seperti itu (toh, mereka tidak tahu siapa yang sebenarnya membuatnya.)
Jadi pertanyaan saya adalah : Bagaimana saya bisa membantu kolega ini untuk memahami ketika hal-hal tidak sesederhana seperti yang mereka bayangkan, dan mereka perlu mengevaluasi kembali pemahaman mereka tentang kebutuhan klien?
Tidak seperti pertanyaan serupa tentang manajemen yang meyakinkan untuk menangani utang teknis [yang ada] , pertanyaan saya mencari strategi untuk membantu tim untuk merealisasikan [secara proaktif] sebelum mereka akan menanggung utang teknis, dalam upaya untuk mencegahnya terjadi sejak awal. Kedua hal ini berjalan beriringan, tetapi mereka jelas berbeda dalam pikiran saya. Jawaban pertanyaan lain menyarankan menambahkan waktu refactoring ke perkiraan untuk fitur masa depan. Ini tidak akan pernah berhasil jika pengembang lain (dan karena itu manajer) selalu berpikir bahwa fitur masa depan mengatakan akan memakan waktu lebih sedikit daripada yang sebenarnya, dan saya tidak dapat meyakinkan mereka bahwa perkiraan saya lebih realistis.
sumber
Jawaban:
Saya suka pertanyaan ini karena setiap hari saya berurusan dengan membuat perkiraan baru atau menderita dari perkiraan sebelumnya.
Jawabannya tergantung pada seberapa besar proyek / tugas yang Anda bicarakan. Ada buku dan metode untuk berurusan dengan perkiraan. Memperkirakan proyek untuk tim pengembangan 50 orang dengan anggaran 1 juta mengambil pendekatan yang berbeda daripada bekerja pada 'proyek 80 jam' kecil - berikut adalah beberapa poin 'kehidupan nyata' untuk nanti:
Perkiraan "Bottom-Up" - Semakin kecil Anda dapat memecah tugas, semakin baik perkiraan Anda. Anda dapat memperkirakan bagian yang lebih kecil secara independen yang memiliki manfaat tambahan mengidentifikasi fungsi yang hilang. Katakanlah Anda diberikan maket dari sebuah situs web dan diminta untuk meminta perkiraan. Jangan pergi dengan jumlah halaman, pergi dengan jumlah fitur. Misalnya keranjang belanja mungkin '1 halaman', tetapi dapat terdiri dari 10 fitur berbeda.
Estimasi "Tiga Titik" berarti membuat tiga perkiraan sebagai rentang. Anda kemudian dapat merespons dengan "40-80 jam, tergantung pada seberapa rumitnya fitur xxx itu." Ini adalah cara yang baik untuk memperkenalkan risiko dalam perkiraan Anda. Ini juga merupakan ide yang baik untuk mendapatkan perkiraan dari orang lain di tim Anda sehingga jika seseorang mengatakan 50 jam dan orang lain mengatakan 100 jam, Anda dapat mendiskusikan perbedaannya.
Memenuhi Anggaran / alias Tetapkan Harapan - Jika Anda tahu anggaran untuk 100 jam dan Anda pikir itu proyek 200 jam, Anda dapat membantu menetapkan harapan sebelum Anda berkomitmen. "Segala sesuatu yang Anda minta adalah proyek 200 jam; jika kita membatasi fitur-x, kita dapat melakukannya dalam 100 jam".
Waktu Pengembangan vs. Waktu Pengujian vs. Waktu Proyek vs. Waktu Kalender - Ini semua berbeda dan jika Anda adalah satu tim, mudah untuk menggabungkan semuanya. Jika Anda perlu menghabiskan 8 jam mencari tahu persyaratan, maka 72 jam waktu pengembangan, itu akan membawa Anda jauh lebih lama dari 2 minggu kalender untuk menyelesaikan proyek. Terutama jika Anda perlu menyeimbangkan tugas-tugas lain, berinteraksi dengan tim, menunggu pelanggan atau menghabiskan berjam-jam menulis melalui email. Dalam hal ini, beri tahu atasan Anda "100 jam, yang merupakan jam pengembangan x-jam, jam y berurusan dengan klien dan z-jam dukungan awal." Ini akan membantu menunjukkan bahwa Anda termasuk waktu selain hanya kode Anda.
PENTING - Saya tidak berpikir memperkirakan adalah masalah utama Anda, saya pikir komunikasi eksternal dan internal. Jika fitur X sangat penting, maka pelanggan harus mengkomunikasikannya di awal. Ketika permintaan masuk untuk fitur X, manajer proyek Anda seharusnya mengatakan "itu di luar ruang lingkup tetapi kami dapat mengalokasikan kembali jam saat ini atau memperluas anggaran".
Secara internal Anda perlu berkomunikasi agar atasan Anda sadar bahwa Anda melebihi anggaran / jadwal sebelum "terlambat". Ketika tugas diserahkan kepada Anda, Anda harus tahu waktu (seperti dalam jam) dan waktu (seperti dalam kalender) yang harus Anda kerjakan pada tugas itu. Jika tugas tidak sesuai dengan batasan tersebut, maka Anda harus membuatnya sadar - "Fitur A & B akan mengharuskan saya melakukan C. Ini tidak akan menyisakan waktu untuk X atau Y".
Tanpa Kejutan - Anda juga perlu memastikan Anda berkomunikasi kembali di sepanjang proyek. Pastikan untuk melaporkan hal-hal yang baik, tetapi jika sesuatu memakan waktu lebih lama dari yang diharapkan pastikan Anda mengatakannya segera. Lima puluh persen dari jalan melalui proyek itu bertanggung jawab untuk mengatakan:
"Fitur X membawa saya lebih lama dari yang diharapkan, saya mungkin tidak mendapatkan fitur Y".
Pada tanggal jatuh tempo, tidak bertanggung jawab untuk mengatakan:
"Aku tidak melakukan fitur Y karena aku kehabisan waktu"
PERSONAL MOMEMNT - Ini semua bisa sangat sulit ketika manajer masih ingin mempertahankan menjadi coders dan ketika semua orang ingin menyenangkan pelanggan.
sumber
Berbuat baik dan nyatakanlah.
Jika Anda harus memperbaiki masalah orang lain karena mereka tidak mendengarkan apa yang Anda katakan sebelumnya, atau karena mereka terlalu berpengalaman untuk memahami apa yang Anda katakan kepada mereka, pastikan orang-orang itu dan bos Anda mengetahui apa alasannya ketika yang diharapkan kerangka waktu terlewatkan, dan kegagalan perencanaan seperti apa yang dibuat. Dan bersabarlah, jika kolega Anda tidak sepenuhnya resisten terhadap belajar dari kesalahan, situasi mungkin akan menjadi lebih baik dari waktu ke waktu.
sumber