Hitung biaya kode buruk

13

Saya mencari argumen untuk meyakinkan manajemen untuk menginvestasikan upaya dalam refactoring.

Kami mencatat pekerjaan menggunakan Jira dan menghubungkan setiap svn-commit dengan panggilan jira.

Ide saya adalah melakukan hal berikut:

  • secara manual menemukan area kode yang sangat buruk diimplementasikan, tetapi sering digunakan: baik dari User-POV dan Developer-POV (perbaikan bug)
  • dapatkan svn-commit yang berisi JIRA-Issues
  • memfilter masalah sesuai dengan beberapa kriteria (jenis masalah, versi, prio dll ...)
  • hitung waktu / upaya yang dihabiskan untuk bug ini
  • memperkirakan upaya dan risiko refactoring
  • menyajikan angka-angka dan meminta upaya untuk memperbaikinya.

Apa pendapatmu tentang ini? Apakah pengukuran seperti itu bermanfaat dan / atau meyakinkan? Apa kelebihan dan kekurangannya?

Bastl
sumber

Jawaban:

5

Saya telah menemukan bahwa jika Anda dapat memberikan angka yang valid, manajer lebih cenderung bertindak. (Jika mereka dapat memahami logika dan biaya / manfaatnya.)

IMHO, untuk membuat kasus yang meyakinkan, Anda perlu yang berikut ini untuk menunjukkan seberapa buruknya:

  • jumlah insiden dukungan yang dicatat untuk masalah ini
  • waktu yang dihabiskan dalam berjam-jam mempertahankan / membantu band-code buruk / melakukan perbaikan dukungan
  • biaya waktu berdasarkan tingkat per jam orang yang melakukan pemeliharaan / bantuan band /
  • beberapa cara untuk menunjukkan betapa pentingnya misi barang-barang ini bagi bisnis

Dan untuk membuat kasing untuk refactoring, Anda perlu:

  • perkiraan waktu untuk memperbaiki dan menerapkan masing-masing dari 3 hal buruk ini
  • perkiraan biaya untuk implementasi (tarif per jam yang sama seperti yang digunakan di atas)

Dengan ini, Anda dapat membuat kasing hemat waktu jika refactoring memakan waktu jauh lebih sedikit daripada waktu dukungan untuk 3 insiden untuk masing-masing 3 item teratas. Anda dapat berargumen bahwa jumlah waktu yang dihabiskan ini lebih pendek

  • kurang dari n lebih banyak insiden dukungan
  • tidak akan ada lagi insiden ini untuk hal-hal ini (BAHKAN LEBIH BAIK!)

Namun, bagian tersulit dari penjualan ini akan menjawab pertanyaan berikut, karena banyak orang tidak menganggarkan waktu dalam jadwal untuk semua dukungan yang Anda lakukan:

Berapa lama lagi saya harus menunggu proyek Y saat ini selesai sementara Anda menghabiskan waktu mengerjakan masalah ini dengan X ????? (terlepas dari dukungan waktu saat ini, yang tidak dapat diprediksi dan dijadwalkan dalam grafik Gantt)

Ini sangat tergantung pada seberapa baik Anda berkomunikasi dengan para pembuat keputusan, dan bagaimana mereka memahami situasinya.

Saya PASTI berpikir ini layak dilakukan, sehingga Anda mendapatkan praktek membangun kasing dengan metrik, dan untuk menghemat waktu Anda sendiri, bahkan jika mereka tidak melakukannya. Sayangnya, tidak semua orang mudah diyakinkan, terlepas dari data. SEMOGA BERHASIL!

Jennifer S
sumber
2

Ingatlah bahwa refactoring juga memperkenalkan bug (yang akan Anda tangkap dalam pengujian, tetapi tetap saja bug dan harus diperbaiki). Jangan tarik Netscape karena kecelakaan. Itu tergantung pada definisi pribadi Anda tentang "refactoring." Bagi sebagian orang, ini berarti "menulis ulang semua kode" ke yang lain artinya "mengubah beberapa internal." Bagaimana Anda tahu Anda seperti apa? Tanyakan pada diri Anda pertanyaan berikut:

Apakah saya mengubah antarmuka publik sama sekali?

Jika jawabannya ya, Anda sedang mendesain ulang. Jika jawabannya tidak, Anda sedang melakukan refactoring dan mungkin bisa melakukannya sepanjang kegiatan harian Anda tanpa persetujuan khusus. Ini relevan dengan pertanyaan Anda karena desain ulang akan menghasilkan lebih banyak bug, sementara refactoring biasanya lebih mudah dilakukan (karena tes Anda sudah menggunakan antarmuka publik dan tidak perlu diubah sendiri).

Ini adalah kasus yang sulit untuk dibuat, karena tidak ada yang pernah tahu berapa biaya X dengan atau tanpa refactor yang dilakukan setahun yang lalu. Dalam pengalaman saya, manajer pragmatis selalu menembak seperti ini karena:

  1. Tidak ada aliran pendapatan langsung yang berasal dari upaya (biaya keuangan, tidak dapat ditagih)
  2. Kode kerja yang jelek masih merupakan kode yang berfungsi, Anda berisiko menciptakan masalah alih-alih memperbaikinya (biaya kualitas potensial)
  3. Proyek lain akan tertunda saat Anda melakukan refactor (biaya waktu)
segera
sumber
+1 untuk menyarankan untuk melakukan refactoring selama perkembangan normal.
Kwebble
0

Semua angka seperti itu pada akhirnya didasarkan pada tebakan, dalam kasus Anda membandingkan jumlah yang Anda duga biayanya tidak untuk refactor vs apa yang Anda kira akan biaya untuk refactor. Yang terbaik yang dapat Anda lakukan adalah menunjukkan Anda memiliki semacam numerik, dasar faktual untuk tebakan, dan Anda memiliki yang cukup bagus.

Kelebihannya adalah bahwa mungkin akan efektif dalam meyakinkan mereka untuk membiarkan Anda refactor, dan itu mungkin berjalan dengan baik dan mengurangi jumlah bug.

Kontra adalah bahwa jika jumlah waktu yang dihabiskan untuk memperbaiki bug tidak turun setidaknya sebanyak waktu yang dihabiskan untuk refactoring, Anda mungkin tidak akan diizinkan untuk refactor lagi, dan Anda mungkin akan disalahkan untuk waktu "terbuang" .

Penghematan waktu debug yang diperoleh dengan mengurangi kompleksitas proyek secara keseluruhan, atau membuatnya lebih mudah untuk menambahkan fitur, mungkin terlalu sulit untuk diukur untuk membantu Anda, tetapi Anda dapat menyebutkan bahwa itu ada.

psr
sumber