Menyalahkan kesulitan hari ini pada hutang teknis kemarin

38

Sejumlah masalah kualitas, skalabilitas, dan pemuatan yang mengejutkan telah terjadi pada aplikasi yang saat ini saya dukung yang awalnya tidak saya tulis. Untungnya saya memiliki proyek baru yang telah saya lakukan dari bawah ke atas untuk mempertahankan beberapa kesamaan kewarasan saya.

Tim asli terdiri dari 20 beberapa pengembang (kebanyakan dari mereka dengan keahlian yang sudah ketinggalan zaman), tidak ada dokumen persyaratan bisnis atau penguji jaminan kualitas, dan dikelola dengan buruk sejak awal dengan cara terjun. Hari-hari awal produksi adalah mimpi buruk yang memalukan yang melibatkan menambal kode seperti prosedur rapuh dengan perbaikan yang lebih rapuh. Fitur ditambahkan kemudian yang dipalu menjadi datamodel yang tidak pernah dimaksudkan untuk mendukung mereka dan itu tidak biasa untuk melihat kode yang sama digandakan 10 kali lipat dan untuk melihat sumber daya tidak ditutup dengan aman dan permintaan ORM yang mengambil puluhan ribu entitas hanya untuk membuang semua kecuali segelintir.

Hanya saya sekarang dan setiap kali ada masalah baru yang muncul saya menulis ulang modul ke standar yang lebih baik dan membuatnya JAUH lebih stabil tetapi Manajemen membutuhkan penjelasan yang tepat mengapa semua ini terjadi.

Mereka tampak terkejut dan bingung dengan anggapan bahwa aplikasi ini berkualitas buruk dan tenggelam dalam hutang teknis. Untungnya mereka mengerti konsep hutang teknis dan mendukung saya dalam usaha saya untuk memberantasnya dan mereka sangat mendukung dan menghargai saya, tetapi saya merasa seolah-olah saya terus menyalahkan tim asli (yang semuanya pergi untuk merusak proyek lain dengan cara yang berbeda divisi).

Intinya adalah bahwa saya tidak ingin menjadi "Orang Itu" yang selalu mengeluh tentang para pengembang di proyek sebelumnya. Saya telah melihat sikap ini sebelumnya dari orang-orang dalam karier saya yang saya pribadi merasa tidak tahu dan tidak mempertimbangkan keadaan dan pengaruh desain yang mendorong segala sesuatu menjadi seperti itu.

Biasanya saya melihat sikap menyalahkan tim sebelumnya atas desain yang buruk dan implementasi dari para pengembang junior idealis yang belum memiliki pengalaman hidup yang lebih banyak dimiliki dan diuntungkan oleh anggota senior.

Apakah Anda merasa ada cara yang lebih baik, mungkin cara yang lebih lunak untuk melaporkan masalah-masalah semacam ini kepada manajemen tanpa menginjak reputasi orang / tim sebelum Anda?

maple_shaft
sumber
17
Sungguh ironis bahwa dalam pertanyaan tentang tidak memainkan permainan menyalahkan, Anda menghabiskan 3 paragraf penuh yang terdiri sekitar 50% dari pertanyaan Anda mengomel tentang tim sebelumnya. Dan menandai pertanyaan [kode buruk] dan [programmer buruk].
Aaronaught
8
@Aaronaught, Oke saya akan gigit, saya memberi label bad-codekarena kode tersebut memang menyebabkan bug dan masalah. Saya memberi label bad-programmerkarena saya takut menjadi tim dengan menyalahkan tim sebelumnya, alasan yang lelah dan klise yang telah kita semua dengar sebelumnya. Sejauh tiga paragraf pertama dianggap mungkin saya tidak perlu yang deskriptif tapi saya ingin melukiskan gambaran yang akurat tentang situasi langsung saya dan memberikan sejarah apa yang saya kumpulkan sejauh ini.
maple_shaft
2
... Jadi ada unsur kata - kata kasar di sana? Ya, saya kira begitu, tetapi saya muak menjadi pengasuh aplikasi yang berfungsi seperti anak ADHD dengan harapan kematian.
maple_shaft
2
Saya bersimpati dengan Anda. Saya lakukan. Tetapi kami memiliki sistem obrolan jika Anda ingin berteriak-teriak atau meledak. Pertanyaan konstruktif harus memiliki nada netral dan menghilangkan detail yang tidak perlu.
Aaronaught
Kisah hidupku
Iulian Onofrei

Jawaban:

46

Utang teknis seperti utang finansial. Anda menerimanya (mudah-mudahan) secara strategis dalam pengembangan program dengan maksud bahwa program itu akan terbayar di masa depan. Kadang-kadang orang membuat keputusan utang teknis yang buruk (seperti menjalankan kartu kredit), tetapi kadang-kadang jumlah utang teknis hanya normal. Memutuskan untuk tidak mencurahkan waktu untuk membuat sesuatu dengan cara yang "benar" hari ini dengan asumsi bahwa hal itu perlu diubah di masa depan benar-benar normal dan harus diantisipasi. Tentu saja ada garis yang bagus, tetapi berpikir bahwa Anda akan membuatnya dengan cara yang benar saat pertama kali dapat menyebabkan masalah sendiri (analisis kelumpuhan).

Intinya, setiap proyek non-sepele yang berlangsung lebih dari beberapa tahun perlu mencurahkan waktu pengembangan baru untuk membayar utang teknis. Masalahnya, ini benar bahkan jika Anda menulis aplikasi dengan cara yang benar . Jika tidak, Anda menumpuk utang, dan manajemen tentu dapat memahami bahwa jika Anda menyajikannya seperti itu.

Jelaskan hal ini kepada manajemen dan alih-alih "menyalahkan" tim sebelumnya sepanjang waktu Anda dapat menyajikan ini sebagai "bisnis seperti biasa".

Nemi
sumber
4
Beri +1 untuk penjelasan yang tidak menyalahkan yang benar-benar bagus tentang bagaimana suatu proyek dapat memilih (dengan benar!) Untuk masuk ke dalam hutang teknis.
Joris Timmermans
1
@Nemi: Satu perbedaan penting antara utang teknis dan utang keuangan adalah bahwa lebih mudah untuk menghitung yang terakhir. Jauh lebih mudah untuk mengetahui berapa banyak utang keuangan yang Anda miliki untuk melunasi (bahkan memperhitungkan akumulasi bunga dan kewajiban keuangan berulang) maka itu harus dilakukan dengan utang teknis. Saya hanya menunjukkan ini karena itu satu hal yang memperburuk masalah maple_shaft.
Ben Hocking
2
@ Ben - Anda benar sekali. Seperti semua analogi, analog ini rusak di bawah mikroskop. Namun, perbandingannya masih solid pada level tinggi. Ini pada dasarnya membuang rincian dan berbicara kepada manajemen di tingkat mereka - sebagai masalah bisnis, bukan masalah teknis. Pada dasarnya setiap proyek jangka panjang mengakumulasi sejumlah hutang teknis dan karena itu berarti ada biaya tambahan untuk pengembangan seiring berjalannya waktu. Karena ini disembunyikan (dan bahkan tidak dipahami dengan baik), adalah kepentingan terbaik semua orang untuk memastikan itu dibicarakan.
Nemi
2
+1 ke "ini benar bahkan jika Anda menulis aplikasi dengan cara yang benar."
Mauricio Scheffer
1
@radarbob Saya tidak setuju - sama seperti utang finansial, tidak masalah apakah akumulasi dilakukan dengan sengaja, karena nasib buruk atau kebodohan - seseorang harus membayarnya di masa depan. Istilah ini pada dasarnya netral sehubungan dengan penyebabnya.
Hulk
23

IMO Anda sudah sebagian besar melakukan ini dengan cara yang benar: Anda tidak menyarankan menulis ulang karena "kode lama menyebalkan", tetapi memperbaiki satu hal pada suatu waktu.

Untuk menghindari perasaan seperti Anda menyalahkan tim lama, bayangkan saja mereka mungkin harus membuat kode ini di bawah tekanan waktu yang hebat. Manajemen pada waktu itu mungkin tidak benar-benar mengerti bahwa hanya karena kode "kurang lebih berfungsi" tidak berarti bahwa pemeliharaan mungkin dilakukan tanpa banyak rasa sakit dan pengerjaan ulang.

Hargai tim lama karena mengelola untuk membuat produk yang benar-benar memberikan nilai bisnis - itu tidak akan digunakan lagi jika tidak. Anda mungkin akan terkejut betapa seringnya suatu proyek gagal memberikan nilai bisnis, walaupun itu ditulis dengan indah.

Joris Timmermans
sumber
3
+1: salahkan manajemen lama yang gagal memberikan produk yang berkualitas, maka (semoga) manajemen baru akan mendapatkan pesan (atau menyingkirkan Anda, kedua kasus adalah kemenangan sejauh yang Anda ketahui)
gbjbaanb
15
@ gbjbaanb - jangan salahkan siapa pun! Pergi keluar dari jalan Anda TIDAK untuk menyalahkan siapa pun. Cukup tentukan situasi saat ini dan situasi yang diinginkan, dan buat argumen logis tentang bagaimana dan mengapa Anda perlu sampai di sana.
Joris Timmermans
Eh, pastikan ada manajemen baru. Bos yang sama mungkin masih ada di sana. Dan bahkan jika dia pindah, dia ada di suatu tempat di luar sana. Pastikan Anda mengetahuinya sebelum berkeliling melempar orang ke bawah bus.
Philip
Saya berharap itu sesederhana tidak menyalahkan siapa pun. Manajemen menuntut seseorang / sesuatu untuk menunjuk. Jika saya tidak menunjuk ke orang atau sekelompok orang yang saya tunjuk?
maple_shaft
4
@maple_shaft - jadi buatlah argumen yang saya buat dalam jawaban saya kepada manajemen, dan jika mereka tetap bersikeras "menyalahkan", poskan resume Anda di banyak situs yang dapat Anda temukan, karena semuanya akan berjalan sangat buruk untuk Anda ketika mereka memutuskan untuk mulai menyalahkan Anda karena tidak ada orang lain yang menunjuk.
Joris Timmermans
7

Ketika diminta untuk mengomentari keadaan saat ini dari suatu produk bermasalah, saya selalu berkata, "itu apa adanya," dan kemudian mulai berbicara tentang rencana untuk memperbaikinya.

Anda tidak tahu semua faktor yang masuk ke dalam keputusan yang menciptakan masalah ini - mungkin mereka bahkan masuk akal pada saat itu. Yang bisa Anda lakukan adalah bergerak maju dan membuat segalanya lebih baik besok. Dan sepertinya Anda melakukan pekerjaan dengan baik - Anda memiliki sikap yang tepat untuk situasi ini.

Fokus hanya pada pelaporan fakta saat ditanya. Anda tidak perlu menambahkan narasi atau komentar; katakan saja "sistem gagal dalam kasus X" atau "laporan tidak benar untuk kasus Y." Kemudian dengan cepat tambahkan bagaimana Anda berencana untuk memperbaiki situasi saat ini.

Scott C Wilson
sumber