Bagaimana menjaga manajemen dari proses pengembangan kami

14

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.

refro
sumber
1
Seberapa baik manajemen memahami proses pengembangan?
JB King
5
Mengapa manajemen tidak termasuk dalam "kita"? Itulah inti masalahnya. Manajemen bukan "Us Vs. Them", jadwal vs. fitur. Mengapa mereka tidak merasa diikutsertakan, sehingga mereka perlu melakukan gerakan terlambat dan memangkas otot?
Alex Feinman
Lompat kapal. @Alex, tidak semua tim manajemen peduli untuk terlibat. Jika mereka ingin dimasukkan, mereka akan dimasukkan; mereka manajemen. Perusahaan yang dipimpin oleh rekayasa adalah minoritas.
Mark Canlas
1
@Mark, biasanya dalam kekuasaan Anda untuk melibatkan orang-orang yang membentuk tim manajemen. Mengelola ke atas adalah keterampilan bertahan hidup / kebahagiaan yang bermanfaat.
Alex Feinman

Jawaban:

5

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:

Untuk meringkas, saya membandingkan perkiraan jam kami dengan jam aktual untuk proyek dan kemudian membandingkan tingkat cacat kami terhadap tingkat cacat tim lain. Dalam kasus kami angka-angka ini dibandingkan dengan baik dan tidak ada lagi kekhawatiran.

Kesimpulan saya berdasarkan pengalaman ini adalah:

... cara terbaik untuk meyakinkan siapa pun bahwa pendekatan Anda untuk melakukan sesuatu itu praktis dan pragmatis, adalah melakukannya dan mengukurnya terhadap pendekatan lain. Orang tidak peduli dengan dogma, atau mengapa Anda berpikir sesuatu harus menjadi cara terbaik. Hanya dengan menunjukkan kepada orang-orang jumlahnya dan mengukur efektivitas pendekatan Anda, Anda dapat benar-benar menunjukkan bahwa praktik Anda efektif.

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.

Paddyslacker
sumber
20

Aturan nomor satu yang harus diikuti, terlepas dari metode yang Anda gunakan, adalah itu

  1. Pengembang harus memiliki hak untuk memperkirakan pekerjaan mereka sendiri.
  2. Stakeholder harus memiliki hak untuk memprioritaskan di antara pekerjaan 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.

Martin Wickman
sumber
Bagaimana jika mereka tidak memprioritaskan pengujian?
JeffO
16
Menguji bukan pada apa yang mereka punya prioritaskan. Ini adalah bagian dari proses pengembangan standar. Mereka harus memprioritaskan fitur bukan proses.
HLGEM
12

Anda mungkin menunjukkan bahwa pengujian unit menghemat waktu, jadi jika Anda menjatuhkannya, perkiraannya menjadi 500 jam.

HLGEM
sumber
3
Itu licik.
JeffO
8
Dan memiliki manfaat menjadi kenyataan.
HLGEM
2
Meskipun itu berlaku untuk para insinyur, saya tidak tahu bagaimana Anda bisa secara realistis mengkomunikasikan paradoks itu kepada non-insinyur.
Mark Canlas
2
Dengan memberi mereka estimasi baru tempat Anda menambahkan lebih banyak jam ke bagian debugging estimasi.
HLGEM
Sikap yang salah untuk saya. Itu tidak akan datang dengan hasil tim keseluruhan yang baik (termasuk manajemen).
Marc
6

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:

  • lebih sedikit jam (bukan keseluruhan 150, yang terdengar konyol) di mana setiap perubahan (selama fase pengembangan dan selama pemeliharaan) rata-rata akan memakan waktu:
    • kecil 4 jam
    • sedang 16 jam
    • besar 40 jam
  • perkiraan jam Anda di mana setiap perubahan (fase pengembangan dan selama pemeliharaan) rata-rata akan memakan waktu:
    • kecil 2 jam
    • sedang 8 jam
    • besar 20 jam

(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.

KeesDijk
sumber
3

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".

Marcie
sumber
2

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.

gnasher729
sumber
1

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.

  1. Berikan rencana terperinci tentang apa yang menurut Anda dapat Anda lakukan dalam 150 jam, berpegang teguh pada pendekatan Anda saat ini untuk pekerjaan berkualitas tinggi. Hitung dengan tepat apa yang bisa disampaikan dalam kerangka waktu ini. The jawaban dari KeesDijk memiliki beberapa link yang sangat baik pada perencanaan di tingkat berbutir halus.
  2. Lanjutkan dengan gaya perencanaan terperinci yang sama untuk mencakup semua fitur dan tunjukkan bagaimana itu akan memakan waktu 300 jam (atau berapa pun angka yang dihasilkan).

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.

Steve
sumber
1

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?

Berin Loritsch
sumber
-1

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.

Craig
sumber
Itu bisa sangat diterima dalam beberapa situasi, tapi saya lebih suka membersihkannya di depan. Sebagai motivasi tambahan untuk menjernihkannya adalah bahwa perencanaan kita diperhitungkan dalam penilaian tahunan kami.
refro
4
Memberikan kualitas yang lebih rendah adalah ide yang buruk, tim ini tampaknya memiliki reputasi yang baik, yang bisa hilang selamanya, atau untuk waktu yang lama, jika mereka melakukan pekerjaan yang berkualitas buruk.
Steve
1
Jangan. Anda dapat menawarkan untuk meninggalkan fitur atau membuat beberapa fitur prioritas rendah (hal yang sama). Tetapi sengaja membuat perangkat lunak kereta tidak profesional.
nikie
Saya tidak menyarankan untuk membuat perangkat lunak kereta dengan sengaja. Saya menyarankan mengatakan kepada mereka di muka bahwa memotong kutipan tetapi tidak persyaratan akan menghasilkan perangkat lunak kereta. Itu pilihan mereka.
Craig
-1

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.

aaaaaaaaaaaa
sumber
@Downvoter Menurut Anda rute "baik" dalam mencoba mengajarkan manajemen cara mengelola benar-benar akan berhasil? Saran: "Hai, Anda melakukan pekerjaan Anda dengan salah, Anda harus melakukannya seperti ini, dengan cara itu lebih baik untuk semua orang." Respon dunia yang optimal: "Tangkapan yang bagus, kami bisa membuat kekacauan nyata, mulai sekarang kami akan melakukan hal-hal seperti yang Anda katakan sebelumnya. Ini kenaikan gaji." Respons dunia nyata: "STFU dan lakukan apa yang harus Anda lakukan."
aaaaaaaaaaaa
-1

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.

Christopher Mahan
sumber
Apa, tidak suka saran saya? Astaga. Jadi dari-the-parit.
Christopher Mahan