Saya seorang insinyur perangkat lunak dalam tim pengembangan perangkat lunak. 3 tahun terakhir kami bekerja untuk pelanggan internal pada produk baru. Sekarang produk ini selesai kita akan bekerja pada fitur baru utama untuk produk yang sudah ada. Untuk fitur tertentu, manajemen produk memperkirakan dibutuhkan waktu 150 jam untuk berkembang. Bersama dengan manajer proyek kami, kami telah membuat rencana yang sangat rinci dan kami berupaya 300 jam. Kemarin kami membahas ini dan mereka pikir kami memiliki hal-hal yang terlalu tinggi.
Dalam perencanaan kami, kami memperkirakan berjam-jam untuk menulis unit test, ide mereka adalah membuangnya untuk menghemat waktu. Keputusan belum dibuat dan saya akan mempertahankan perencanaan ini dan unit tes jika diperlukan. Tapi yang saya benar-benar tidak suka di sini adalah bahwa manajemen mengganggu proses pengembangan kami. Bagaimana saya menjaga mereka keluar dari proses pengembangan kami? Dan argumen apa yang dapat saya gunakan untuk menjaga pengujian unit tetap ada (selain kualitas dan penghematan waktu jangka panjang)?
Sebagai catatan tambahan, perusahaan kami memiliki 3 tim teknik dan tim yang saya tangani menyerahkan perangkat lunak mereka tepat waktu (memberi atau menerima margin 10%). Sementara tim lain selalu terlambat mengantar, sebagian besar karena terlalu rendah dalam perencanaan. Mereka hanya merencanakan pengkodean dan bukan manajemen, pengujian dan penanganan di sekitarnya.
Jawaban:
Pertama, izinkan saya mengatakan bahwa saya sepenuhnya bersimpati dengan posisi Anda. Ini bisa membuat frustasi ketika Anda memiliki kurangnya pemahaman atau gangguan komunikasi antara berbagai bagian bisnis. Karena itu, saya tidak berpikir Anda harus mencoba untuk mencegah mereka. Alih-alih, Anda harus menunjukkan kepada mereka nomor tentang mengapa ini adalah ide yang bagus. Apa fakta yang Anda miliki yang membenarkan pengujian unit yang sepadan dengan usaha yang Anda lakukan? Jika Anda tidak memilikinya, maka Anda harus mulai mengumpulkan angka-angka itu, atau menunjukkan riset untuk mendukung klaim Anda.
Saya harus berurusan dengan skenario serupa sendiri dan saya menjawab pertanyaan ini pada topik yang sama . Saya juga membuat blog tentang bagaimana saya menghadapinya di sini:
http://practicalagility.com/show-them-the-numbers-its-results-that-matter/
Jika Anda tidak ingin mengejar tautan, saya akan mengulangi ringkasan saya dari pertanyaan terkait:
Kesimpulan saya berdasarkan pengalaman ini adalah:
Jika tim manajemen Anda tidak setuju untuk menginvestasikan apa yang mereka lihat sebagai tambahan 150 jam pada pengujian unit, mungkin Anda dapat meyakinkan mereka untuk berinvestasi dalam satu area kecil dari produk (atau bahkan setuju untuk menyedot waktu Anda sendiri untuk memberikan beberapa data) ). Lakukan pengujian unit di satu area produk kemudian kumpulkan data tentang tingkat cacat di area produk dan biaya untuk menemukan dan memperbaiki cacat tersebut dibandingkan dengan tingkat cacat di area lain dari produk tersebut. Mudah-mudahan Anda akan mengumpulkan beberapa data untuk mendukung kasus Anda dan ini akan menjadi masalah untuk proyek Anda berikutnya.
sumber
Aturan nomor satu yang harus diikuti, terlepas dari metode yang Anda gunakan, adalah itu
Estimasi dan penentuan prioritas adalah dua kekuatan yang bekerja sangat baik bersama begitu kedua pihak menerima tanggung jawab mereka sendiri. Jadi, alih-alih membuang-buang waktu untuk berdebat, sepakati hal ini dan hormati bahwa kedua belah pihak akan melakukan pekerjaan mereka sebaik mungkin.
sumber
Anda mungkin menunjukkan bahwa pengujian unit menghemat waktu, jadi jika Anda menjatuhkannya, perkiraannya menjadi 500 jam.
sumber
Beri tahu mereka tentang utang teknis dan nilai pengujian unit
Lihat posting ini dari ide bagus tentang hutang teknis. Menindaklanjuti dari pos itu Anda bisa sampai ke pdf berikut
Saya suka posting ini pada nilai pengujian unit (mungkin ada lebih banyak untuk menemukan)
Harapannya bukan untuk mengeluarkan mereka dari proses pengembangan Anda tetapi membuat mereka terlibat dan berkomitmen dengan cara yang benar.
IMHO Anda perlu menuliskan perencanaan awal Anda, tambahkan bab 1 dan 2 (bukan dalam lampiran) di mana Anda menjelaskan utang teknis dan nilai pengujian unit. Beri mereka alternatif:
(Jam hanya merupakan indikasi. Anda jauh lebih siap untuk memberikan perkiraan yang tepat.)
Jangan lupa untuk memasukkan rekam jejak Anda untuk pengiriman tepat waktu sesuai anggaran.
Tulis dan diskusikan dengan mereka. Mereka mungkin memiliki beberapa poin berharga dalam fitur yang sebenarnya tidak perlu saat ini atau hutang teknis yang bersedia mereka ambil untuk memenuhi tepat waktu. Pastikan ini adalah pilihan sadar.
Semoga ini bisa membantu dan semoga berhasil.
sumber
Pertama-tama, jangan membagi "menulis unit test" sebagai tugas terpisah untuk diperkirakan, dijadwalkan, dan berpotensi, dipotong. Perkiraan Anda harus di tingkat fitur "Terapkan XYZ - 18 jam". Waktu 18 jam itu harus mencakup apa pun yang diperlukan dalam proses Anda untuk mendapatkan fitur itu ke "DONE", termasuk "tes unit tulis".
Itu salah satu cara yang baik untuk mendapatkan pengembangan non-teknis "dari proses pengembangan Anda". Jangan memasukkan proses pengembangan Anda dalam daftar tugas atau jadwal proyek yang Anda berikan kepada mereka!
Kedua, sepertinya tim Anda sudah memberikan produk yang bagus kepada mereka dan tepat waktu, tetapi tim lain tidak. Mungkin grup manajemen ini terbiasa harus mengatur secara mikro tim-tim itu. Mainkan kekuatan Anda - tawarkan untuk menunjukkan kepada mereka pembaruan mingguan atau dua mingguan dengan fitur yang berfungsi, dan mereka akan membantu Anda tentang "proses pengembangan".
sumber
Saya pernah berada dalam situasi di mana saya bekerja dengan basis kode dalam keadaan sangat baik; fitur baru yang menantang diperlukan dalam jangka waktu yang sangat singkat, dan saya berhasil mengirimkan fitur tersebut dalam waktu yang sangat singkat. Pada saat itu basis kode berada dalam keadaan yang jauh lebih buruk. Jadi fitur itu disampaikan, tetapi pekerjaan saya belum selesai: Saya harus mengembalikan semuanya ke keadaan yang sama baiknya.
Saya menjelaskan kepada manajer dua tingkat di atas seperti ini: Ini seperti melakukan pekerjaan melukis di rumah Anda. Jika semua alat ada di tempat mereka berada dan dalam keadaan baik, semua sikat dibersihkan dan sebagainya, Anda dapat melakukan pekerjaan cat dengan sangat cepat. Tetapi kemudian Anda harus menghabiskan waktu untuk mengembalikan semua alat Anda. Jika Anda tidak melakukannya, maka pekerjaan cat Anda berikutnya akan memakan waktu lebih lama. Sebenarnya, Anda tidak akan ingat di mana alat-alat Anda berada, kuas cat Anda tidak dapat diselamatkan lagi, dan itu menghabiskan lebih banyak waktu dan uang ekstra seolah-olah Anda telah melakukan pekerjaan pembersihan segera.
Dan hal yang sama dalam pekerjaan pemrograman saya: Dengan membersihkan, saya membuat basis kode ke dalam kondisi di mana saya dapat mengirimkan sesuatu dengan sangat cepat lagi saat dibutuhkan. Jika tidak, waktu berikutnya akan jauh lebih lama.
sumber
Anda tidak dapat menjaga mereka keluar dari proses Anda sepenuhnya, setelah semua mereka membayar upah Anda dan mereka akan menggunakan produk Anda (jika tidak secara langsung, mungkin seseorang di perusahaan Anda adalah pengguna akhir).
Manajer menuduh devs terlalu banyak memperkirakan waktu adalah skenario yang sangat umum dalam pengalaman saya, dan jika tidak ditangani dapat menyebabkan perlombaan senjata yang cukup bodoh di mana Anda estimasi selanjutnya digandakan karena Anda tahu bos akan membagi dua mereka, mereka tahu ini begitu mereka seperempat, sehingga Anda melipatgandakan mereka dll. Anda harus menghindari lingkaran setan ini jika memungkinkan.
Dengan asumsi bahwa tidak ada alasan "mati mati" untuk batas waktu maka saya akan menyarankan 2 hal.
Kemudian mulai bekerja dan laporkan kembali secara teratur tentang kemajuan, dan jika mungkin ada beberapa kiriman secara berkala. Ini harus memberi kepercayaan manajemen pada keterampilan estimasi Anda dan kemampuan untuk memberikan.
sumber
Mintalah mereka berdasarkan estimasi mereka. Adalah adil untuk membahas perbedaan tersebut. Tes unit pembuangan merupakan ekonomi palsu, yang tidak Anda habiskan untuk menulis tes unit yang akan Anda habiskan di debugger nanti (dan lebih lama). Pada dasarnya, Anda telah mendokumentasikan fakta yang Anda rencanakan untuk menguji pekerjaan yang Anda selesaikan. Mereka mengatakan kepada Anda untuk tidak menguji sama sekali . Apakah Anda menguji menggunakan tes unit atau pengujian ad hoc saat Anda mengembangkan proyek, Anda masih perlu memperhitungkan waktu itu. Menghapus waktu yang Anda berikan untuk pengujian unit juga menghapus waktu yang dialokasikan untuk pengujian ad hoc.
Intinya: tetap berpegang pada senjata Anda dengan perkiraan Anda. Rekam jejak Anda menunjukkan bahwa Anda tahu apa yang Anda bicarakan, dan dapat memberikan jawaban yang masuk akal mengenai dasar estimasi Anda (asumsi, harapan, kinerja masa lalu, dll.). Sepertinya manajemen tingkat atas Anda tidak memiliki visibilitas yang mereka butuhkan untuk membuat perkiraan yang masuk akal. Apakah mereka mengasumsikan 8 jam sehari tanpa gangguan untuk rapat? Apakah mereka menganggarkan untuk pengujian sistem dalam perkiraan mereka? Bagaimana mereka menemukan angka yang setengah dari Anda, mengingat rekam jejak Anda?
sumber
Saya akan memperkirakan itu akan memakan waktu 300 jam dan jika mereka anggaran 150 memberi mereka pilihan itu akan baik pekerjaan terburu-buru kereta atau terlambat untuk disampaikan. Ketika proyek selesai dan seperti yang Anda prediksi maka Anda bisa memberi tahu mereka bahwa itulah yang Anda minta.
sumber
Apa yang akan dilakukan Wally?
Ada banyak cara untuk menafsirkan apa yang diminta manajemen dari Anda, salah satunya adalah mereka tidak ingin Anda tepat waktu.
Tampaknya tidak masuk akal? Ya, tetapi bagaimana lagi mereka bisa tahu bahwa Anda tidak melebih-lebihkan? Jangan memenuhi tenggat waktu Anda (kendur jika perlu), jika Anda terpeleset dan secara tidak sengaja mengirimkan sesuatu tepat waktu, pastikan untuk terlihat sangat lelah karena tidak memberi kesan bahwa itu adalah jalan-jalan di taman.
sumber
Anda berada di acar. Jika Anda tetap pada senjata Anda dan ingin tetap dengan unit test, dan ingin mengklaim 300 jam, Anda akan membuat musuh.
Jika Anda mengurangi hingga 150 jam dan membuang unit test, Anda dapat mengirimkan produk buggier lebih cepat, tetapi itu akan menyebabkan kesedihan di jalan, dengan biaya perawatan yang lebih tinggi.
Bagaimanapun, Anda kalah.
Atau begitulah tampaknya.
Anda tahu, Anda tidak menjalankan laboratorium sains di universitas. Anda menyediakan layanan bisnis untuk unit bisnis di perusahaan yang menyediakan layanan kepada pelanggan dalam ekosistem perusahaan. Perusahaan Anda mungkin membutuhkan produk Anda untuk mulai memberikan layanan yang lebih cepat dan lebih baik kepada pelanggannya, dan dengan demikian meningkatkan pendapatan yang dibutuhkan.
Anda lihat, yang Anda butuhkan adalah analisis ROI, dan Anda tidak memiliki semua data untuk membuat analisis itu. Anda hanya memiliki beberapa bagian biaya (Anda tidak tahu nomor penggajian semua orang) dan Anda tentu saja tidak memiliki bagian pendapatan, terutama bukan proyeksi pendapatan.
Manajemen Anda, percaya atau tidak, mahir membuat proyeksi ROI (itulah yang mereka ajarkan di sekolah bisnis) dan mungkin telah menjalankan beberapa proyeksi ROI dan menghasilkan "jika kita bertindak sekarang, kita akan menghasilkan lebih banyak uang bahkan dengan membayar tiga kali lipat untuk perawatan pada perangkat lunak, bozos di IT mengeluhkan. "
Jadi, jika Anda ingin menjalankan usaha bersama, mulailah perusahaan Anda sendiri. Anda akan lihat, itu tidak mudah.
Dengan kata lain: lakukan apa yang diperintahkan. Jika manajemen tahu apa yang dilakukannya, Anda akan maju. Jika tidak, Anda keluar dari pekerjaan, tes unit atau tidak.
Apa yang Anda minta ROI? Pengembalian Investasi. Itu nama yang buruk. Itu perlu Pengembalian Investasi Tepat Waktu (ROTI), karena waktu adalah segalanya dalam investasi.
sumber