Hampir setiap pengembang harus menjawab pertanyaan dari sisi bisnis seperti:
Mengapa perlu 2 hari untuk menambahkan formulir kontak sederhana ini?
Saat pengembang memperkirakan tugas ini, mereka dapat membaginya menjadi langkah-langkah:
- membuat beberapa perubahan pada Database
- mengoptimalkan perubahan DB untuk kecepatan
- tambahkan HTML ujung depan
- tulis kode sisi server
- tambahkan validasi
- tambahkan javascript sisi klien
- gunakan tes unit
- pastikan pengaturan SEO berfungsi
- menerapkan konfirmasi email
- refactor dan optimalkan kode untuk kecepatan
- ...
Ini mungkin sulit untuk dijelaskan kepada orang non-teknis, yang pada dasarnya melihat seluruh tugas hanya mengumpulkan beberapa HTML dan membuat tabel untuk menyimpan data. Bagi mereka itu bisa 2 jam MAX.
Jadi, apakah ada cara yang lebih baik untuk menjelaskan mengapa estimasi tersebut tinggi untuk yang bukan pengembang?
communication
estimation
Mag20
sumber
sumber
Jawaban:
Anda baru saja melakukannya dalam pertanyaan Anda.
Bagi tugas menjadi langkah-langkah individual dan berikan taksiran untuk masing-masing langkah. Ini akan menunjukkan bahwa Anda telah mempertimbangkan semua opsi dan (semoga) mencakup semua kemungkinan.
Jika rentang waktu terlalu besar, Anda dapat mendiskusikan bagian mana (mis. Konfirmasi e-mail) yang tidak diperlukan dalam kasus ini dengan data konkret daripada hanya mencoba menjejalkan satu liter ke dalam panci pint.
Lakukan ini cukup sering dan mudah-mudahan Anda akan mengajarkan mereka bahwa biasanya ada lebih banyak perkembangan daripada bertemu mata pada pandangan pertama.
sumber
Mendaftar tugas hampir sempurna, tetapi perlu diingat bahwa tugas yang masuk akal bagi seorang insinyur sangat kecil artinya bagi orang yang tidak teknis. Sebagai contoh, dalam daftar di atas, saya tahu bahwa "mengoptimalkan perubahan DB untuk kecepatan" mungkin satu atau beberapa tugas yang memakan waktu yang meliputi profiling kode, menjalankannya mencari titik lambat, meninjaunya dengan para ahli, atau melemparkannya melalui set tes yang ditentukan sebelumnya khusus untuk produk. Dan kemudian Anda mungkin memiliki beberapa jam jika tidak berhari-hari menumbuk kepala di meja Anda saat Anda mencoba menemukan cara untuk memperbaiki area yang terlalu lambat.
Tetapi Anda mungkin telah kehilangan manajemen proyek Anda pada kata "DB" jika bukan kata "optimalkan".
Saya biasanya mengungkapkan hal ini kepada manajemen proyek dalam hal langkah-langkah BESAR dengan kata-kata yang menggambarkan risiko dalam hal bisnis. Mengambil daftar Anda, saya akan merebusnya dengan cara ini jika saya berbicara dengan manajemen proyek saya:
Saya akan menghindari estimasi yang kurang dari setengah hari. Pada tingkat tertentu, mereka harus percaya bahwa Anda tahu apa yang Anda bicarakan. Dan jika mereka benar-benar berpikir bahwa itu hanya akan menjadi 2 jam, maka undanglah mereka untuk duduk bersama Anda selama 2 jam saat Anda menuntun mereka persis seperti apa 2 jam dalam kehidupan pengembang SW - lalu lakukan pengkodean kelas 101 untuk sekitar 2 jam, untuk menunjukkan apa yang harus dipertimbangkan untuk mulai menyelesaikan masalah.
Yang terpenting adalah hal-hal berikut:
sumber
Ada pepatah, "Anda tidak bisa memuat sepuluh pound (omong kosong) dalam kantong lima pound." Tugas Anda adalah menunjukkan bahwa tugas itu sepuluh pound dan mereka meminta untuk melakukannya dalam jangka waktu lima pound.
Satu-satunya hal yang Anda lewatkan adalah perkiraan waktu. Masukkan perkiraan waktu pada setiap tugas, dan perlihatkan bagaimana semua hal ini dijumlahkan bersama dengan perkiraan yang Anda berikan. Jangan izinkan perkiraan apa pun lebih besar dari 4 jam. Jika Anda memiliki tugas di mana Anda mengatakan "sehari" atau "10 jam", maka pilah menjadi beberapa subtugas yang lebih kecil.
Sekarang Anda punya tagihan terperinci dari biaya. Semua mengatakan, bahwa total hingga 27 jam kerja.
Anda sekarang dapat menunjukkan ini kepada pelanggan Anda dan mengatakan "Ini adalah hal-hal yang harus dilakukan, dengan biaya masing-masing." Gunakan kata "biaya", karena waktu ADALAH biaya, dan manajemen memahami biaya. Jelaskan bahwa Anda mungkin dapat meninggalkan dua tugas pengoptimalan pada akhirnya, tetapi mereka akan memiliki efek negatif, dan mereka hanya 15% dari total perkiraan.
Pastikan juga Anda menjelaskan jam / hari Anda secara realistis. Misalnya, jika Anda dipanggil untuk melakukan dukungan teknis, atau mengelola basis data, atau apa pun, pikirkan hal itu dalam perkiraan Anda. Jangan katakan "Yah, saya bisa melakukan pengkodean yang baik 7,5 jam sehari" karena Anda mungkin tidak bisa. Mungkin lebih seperti 5 atau 6.
Kemudian, yang paling penting, lacak kemajuan Anda. Katakanlah Anda dapat melakukan pengkodean 5 jam per hari. Maka Anda harus bisa menghilangkan dua tugas pertama (dalam contoh saya) pada hari Senin, menyelesaikan yang ketiga dan memulai yang keempat pada hari Selasa, dan seterusnya. Buat daftar periksa yang menunjukkan ini, sehingga Anda dapat menunjukkannya pada hari Rabu ketika mereka datang dan berkata, "Bagaimana kabarmu, Anda masih akan selesai pada akhir Jumat?"
Lihat slide saya untuk ceramah saya Mencegah Krisis: Estimasi Proyek dan Pelacakan yang Berhasil yang saya berikan di OSCON beberapa tahun yang lalu. Lihat slide 21, "Merencanakan minggu". Ada juga bagan kecepatan sampel .
sumber
Tanya mereka:
Bagaimana Anda melakukannya? Modul apa yang akan Anda ubah? Berapa banyak baris kode? Apa implikasi keamanannya? Adakah perubahan pada skema database? Jika Anda melakukan perubahan pada DB, berapa banyak file yang terpengaruh? Berapa lama untuk menambahkan formulir terakhir? Apa rata-rata (rata-rata aritmatika) untuk menambahkan formulir? Apa yang terlama? Saya akan memperkirakan itu akan memakan waktu kurang dari satu menit lebih lama. Jika Anda tidak tahu berapa lama waktu untuk menambahkan formulir N terakhir, maka perkiraan ini hanya dijamin akurat untuk satu urutan besarnya.
sumber
Saya dapat memberitahu Anda untuk menjelaskan kepada mereka bahwa perangkat lunak mereka seperti mesin 100 ton dengan 10.000 bagian yang berbeda, sebagian besar terhubung dengan cara yang rumit. Memasukkan sepotong 1 inci ke dalam mesin ini membutuhkan beberapa rekayasa, sehingga tidak akan merusak mesin, TAPI jawaban yang lebih baik adalah:
Jika Anda memiliki arsitektur kode yang lebih baik, apakah itu membuat tugas seperti ini mudah? Dan jawabannya adalah bahwa sebagian besar tim perangkat lunak bukan arsitek yang baik (karena mereka belum mengumpulkan banyak template generik, arsitektur atau mereka tidak menguasai domain masalah secara memadai untuk mengantisipasi setiap masalah) dan mereka tidak selalu insinyur yang baik , sehingga mereka tidak merasa percaya diri dalam memberikan perkiraan atau membuat janji.
Sama seperti yang dibutuhkan abad ke-20 untuk mengumpulkan arsitektur yang bagus dan rekayasa untuk membangun gedung-gedung besar, alat-alat untuk rekayasa perangkat lunak belum sampai pada arus utama. Mereka sedang dikembangkan: dibutuhkan pola pikir baru. Lihat Kode Zen di wiki.hackerspaces.org/Hacking_with_the_Tao.
sumber