Haruskah peningkatan teknis hutang / teknologi dijadwalkan sebagai fitur (poin yang diberikan) atau tugas (tanpa poin)?

8

Apa yang harus kita lakukan untuk cerita pengguna untuk utang teknis di Pivotal Tracker? Haruskah kita menganggap ini sebagai fitur (memberi poin) atau sebagai tugas (tidak memberikan poin, sehingga menurunkan kecepatan)?

Saya bingung apa yang harus dianggap sebagai tugas:

  1. Duplikasi Kode - Jelas bahwa jika kita telah menempatkan kode yang sama di banyak tempat, itu praktik kode yang benar-benar buruk dan menunjukkan pengembang dalam tim harus lebih memikirkan untuk membuat perangkat lunak dapat dipelihara, lakukan refactoring dan tim harus meluangkan waktu untuk tinjauan kode. Karena semua ini membutuhkan pengalaman tingkat kedewasaan, waktu, dan kode, lebih baik memberikan lebih sedikit poin sehingga kualitas kode tidak terganggu. Jadi, kesalahan seperti itu harus dihukum dan kecepatan harus diturunkan dengan tidak memberikan poin kepada tugas.

  2. Peningkatan teknologi - Seperti bergerak untuk memodulasi JS, HTTP2, React, MVC atau teknologi baru / lebih baik lainnya. Langkah-langkah ini akan membuat kinerja dan pemeliharaan kode lebih baik. Tetapi haruskah ini menjadi tugas atau fitur? Saya percaya ini adalah bagaimana dunia teknologi, teknologi baru datang sesekali dan Anda harus bermigrasi ke sana. Jadi, saya melihat tidak ada gunanya menghukum kecepatan tim untuk pekerjaan seperti itu. Saran?

  3. Duplikasi / Sub-Standar kode dalam kode warisan - Beberapa kode yang tidak tersentuh sejak lama ATAU ketika tim baru dibentuk tetapi basis kode agak lama, kami menghadapi tantangan ini. Tim mengatakan mereka belum mengkodekan bagian ini jadi mengapa kecepatan mereka harus dihukum dengan memilih hutang teknis seperti itu karena mereka tidak pernah membuat hutang tersebut.

  4. Kode standar karena urgensi bisnis - Terkadang pengembang dipaksa untuk mendorong fitur ASAP secara langsung karena tekanan pesaing / target / bisnis / pengguna. Haruskah membersihkan kode buruk seperti itu dianggap sebagai tugas (tanpa memberikan poin) juga? Tim pengembang waktu ini tidak bersalah, jadi mengapa kecepatan mereka harus diturunkan, padahal sebenarnya mereka lebih banyak menghabiskan waktu ekstra dalam kasus-kasus seperti itu.

Saya percaya semua jenis tugas yang disebutkan di atas, jika dilakukan dengan bijak, akan meningkatkan kecepatan tim di masa depan. Tetapi bagaimana kita harus menjaga keseimbangan dengan mempertahankan kecepatan tim serta menghukum karena kesalahan teknis yang dilakukan tim dengan mengambil keputusan yang buruk?

Pertanyaannya mirip dengan: Haruskah utang teknis dijadwalkan sebagai fitur atau tugas (atau bug)? , tetapi saya tidak menemukan jawaban yang meyakinkan yang mencakup semua 4 poin sehingga saya memposting ulang dengan cara yang berbeda.

Maverick
sumber
2
Jika Anda tidak benar-benar memberikan fungsionalitas baru untuk pengguna akhir, itu bukan fitur. Penurunan kecepatan karena pilihan tim untuk membayar utang teknis bukan penalti, itu informasi yang berguna. (Pengungkapan: Saya seorang Pivot.)
jonrsharpe
2
Pengguna Anda mungkin tidak peduli dengan SEO Anda. Kinerja mungkin, jika Anda telah memvalidasi persyaratan pengguna untuk meningkatkan waktu pemuatan maka itu akan menjadi fitur. Tetapi platform refactoring atau switching, mungkin dengan harapan bahwa Anda dapat memberikan fitur yang lebih baik lebih cepat di masa depan bukanlah fitur; Anda akan "mendapatkan poin-poin itu kembali" ketika Anda mengirimkan fitur-fitur itu.
jonrsharpe
2
@jonrsharpe: Kepedulian dan memberi makan pengguna Anda meskipun, mengapa Anda menjadwalkan sesuatu tanpa juga menetapkan biaya untuk itu? Saya tidak dijual dengan ide kehilangan kecepatan secara misterius karena hutang teknis yang dibayar tanpa poin cerita hanya demi "kebenaran."
Robert Harvey
2
Voting untuk ditutup terutama didasarkan pada pendapat. Cara mana pun baik-baik saja, dan pada akhirnya ini semua dokumen untuk membantu Anda menyelesaikan sesuatu.
Telastyn
1
@ Sahil: Aduh. Mengenakan hutang teknis adalah sesuatu yang seringkali dapat di luar kendali pengembang perangkat lunak. Tekanan manajemen untuk merilis perangkat lunak pada tanggal tertentu dapat menjadi salah satu alasannya. Mengapa mereka harus dihukum karena itu? Jika layak dilakukan, ada baiknya menetapkan biaya.
Robert Harvey

Jawaban:

8

Jawaban singkat: membayar hutang teknis adalah tugas. Anda tidak memberikan fungsionalitas baru untuk pengguna akhir, jadi itu tidak diarahkan.


Jawaban resmi:

Bug dan tugas tidak dapat diperkirakan secara default

Cerita fitur diperkirakan karena mereka berkontribusi pada nilai bisnis. Bug dan tugas dianggap sebagai bagian dari overhead produk perangkat lunak normal — mereka muncul seiring waktu, dan merupakan overhead yang terus-menerus, biaya yang berkelanjutan untuk melakukan bisnis. Perhitungan kecepatan otomatis pelacak memperhitungkan ini sebagai biaya bawaan, dan memperkirakan berapa banyak pekerjaan bernilai bisnis yang dapat diselesaikan setiap iterasi. Ini memungkinkan Anda memfokuskan perencanaan pada nilai bisnis, risiko, dan prioritas. Karenanya, bug dan tugas di Tracker biasanya tidak diperkirakan. Anda dapat mengaktifkan estimasi untuk bug dan tugas di Pengaturan Proyek; namun, kami sangat tidak menyarankan untuk mengaktifkan bug dan memperkirakan tugas. Anda tidak dapat mematikannya nanti jika berubah pikiran.

https://www.pivotaltracker.com/help/articles/planning_with_velocity/#bugs_and_chores

Inilah sebabnya mengapa cerita yang digolongkan sebagai bug dan tugas tidak dapat memiliki perkiraan ditugaskan kepada mereka dengan pengaturan default PT, tapi saya pikir juga menjelaskan mengapa Anda tidak harus menghitung tugas-tugas ini sebagai fitur hanya untuk mendapatkan poin bagi mereka.


Pertama, saya tidak berpikir Anda harus menghitung penurunan kecepatan sebagai penalti: itu hanya informasi. Mungkin itu sesuatu yang alami, seperti orang baru yang bergabung sehingga Anda harus menghabiskan waktu ekstra pelatihan. Mungkin itu adalah sesuatu yang tidak terduga yang mengurangi kapasitas Anda (misalnya penyakit) atau mengkonsumsi lebih banyak (mis. Bug "hentikan dunia"). Mungkin Anda belum memperkirakan fitur dengan baik, untuk alasan apa pun; ini adalah sesuatu yang dapat Anda pelajari. Atau mungkin itu karena Anda memutuskan, sebagai tim, untuk memprioritaskan membayar sebagian utang teknis daripada memberikan fitur baru (dan mungkin menimbulkan lebih banyak utang).

Kedua, itu tidak selalu kesalahan untuk menimbulkan hutang teknis. Tidak ideal untuk mengeluarkannya secara tidak sengaja , tetapi jika Anda memutuskan untuk misalnya membangun benda "cepat dan kotor" sekarang dengan pengetahuan bahwa Anda harus merapikannya nanti, misalnya sehingga Anda bisa mendapatkan lebih banyak umpan balik pengguna atau bertemu dengan orang yang sulit. tenggat waktu, itu adalah pilihan yang sengaja Anda buat sebagai tim dan tidak apa-apa.

Mengenai apakah sesuatu harus menjadi fitur, aturan praktisnya adalah: apakah pengguna akhir peduli? Anda menyebutkan meningkatkan SEO: apakah ini sesuatu yang mereka minati? Performa yang mungkin mereka pedulikan, tetapi di sisi lain mungkin mereka lebih suka memiliki beberapa fitur baru daripada hal yang sama dengan beberapa ratus milidetik dari waktu buka. Lakukan riset: pergi dan tanyakan apa yang mereka inginkan. Biarkan mereka membantu Anda memprioritaskan apa yang terbaik untuk menghabiskan waktu tim.

Anda mungkin memutuskan bahwa pilihan teknologi Anda saat ini menahan Anda dari memberikan fitur-fitur tertentu seefisien yang Anda inginkan, dalam hal ini sangat masuk akal untuk (sekali lagi, dengan sengaja) menghabiskan waktu untuk memigrasi semua atau sebagian aplikasi ke sesuatu yang baru.

Saya percaya semua jenis tugas yang disebutkan di atas, jika dilakukan dengan bijak, akan meningkatkan kecepatan tim di masa depan.

Di sini saya sangat setuju dengan Anda, tetapi kemudian tidak mendapatkan poin untuk tugas-tugas penghitungan ganda ini? Jika Anda melakukan pekerjaan sehingga Anda dapat memberikan lebih banyak fitur nanti, maka Anda akan melihat kecepatan yang lebih tinggi setelah Anda melakukannya, bukan saat Anda melakukannya.

Juga, hal-hal seperti ulasan kode dan refactoring dasar dalam proses pengiriman (misalnya bagian "refactor" dari siklus TDD) harus sudah menjadi bagian dari pekerjaan Anda yang sedang berlangsung dan karenanya sudah dimasukkan sebagai bagian dari kecepatan keseluruhan tim.


Pengungkapan : Saya seorang Pivot, bekerja untuk Pivotal Labs di London, tetapi tidak di tim Tracker.

Jonrsharpe
sumber
Cerita juga tidak dapat diperkirakan. Itulah alasan poin cerita dan kecepatan ada.
Robert Harvey
@RobertHarvey maaf, untuk menjadi jelas bahwa kutipan tidak mengatakan bahwa tidak mungkin untuk memperkirakan bug dan tugas (atau mungkin untuk memperkirakan fitur, dalam hal ini!) Tetapi secara default di PT Anda tidak dapat menetapkan perkiraan untuk sebuah cerita yang tidak diklasifikasikan sebagai fitur.
Jononsharpe
7
"Anda tidak memberikan fungsionalitas baru untuk pengguna akhir, jadi itu tidak diarahkan." Berpegang teguh pada dogma ini adalah mekanik utama di balik penumpukan hutang teknis. Pekerjaan diperkirakan dan dilakukan untuk pemegang pasak yang tidak selalu merupakan pengguna akhir. Anda dapat memiliki kisah seperti "Perbaiki kode ini (apa), agar tetap dapat dipertahankan (mengapa) untuk tim pengembangan (untuk siapa)".
Martin Maat
1
@MartinMaat saya tidak setuju; mengatakan bahwa kecepatan tidak boleh jatuh akan melakukan itu. Anda bebas menulis tugas dengan cara yang sama seperti fitur Anda, tetapi itu tidak memberi mereka nilai pengguna.
Jononsharpe
@MartinMaat Setuju 100%. Ini mengingatkan saya pada pembicaraan "Tanggung Jawab" Eric Evans dari InfoQ beberapa tahun yang lalu. infoq.com/presentations/design-strategic-eric-evans
RibaldEddie
4

Untuk menjadi pelawan, kami menangani bug dan utang teknis seperti halnya PBI lainnya. Bahkan, kami bahkan tidak memiliki tipe "bug". Semuanya adalah PBI. Tunggakan kami dipesan berdasarkan nilai bisnis yang ditetapkan ke PBI. Akibatnya, bug yang menghadap ke pengguna yang menonjol yang menyebabkan masalah akan memiliki nilai bisnis tinggi yang ditetapkan padanya, karena Anda berisiko kehilangan uang dengan sesuatu seperti itu, dan itu kemungkinan akan menjadi salah satu hal pertama yang dilakukan. Di sisi lain, bug yang tidak benar-benar memiliki banyak dampak dan tidak mempengaruhi garis bawah akan memiliki nilai bisnis yang relatif rendah dan mungkin tidak diperbaiki untuk sementara waktu. Itu adalah dinding mental penting yang harus dirobohkan: tidak setiap bug harus diperbaiki. Kedengarannya seperti penistaan, saya tahu, tetapi jika upaya yang dilakukan untuk memperbaiki bug lebih dari sekadar memperbaiki nilai bisnis, maka ROI negatif. Memperlakukan segala sesuatu sebagai PBI memberi Anda kebebasan untuk membuat jenis keputusan empiris tanpa terganggu hanya karena itu adalah "bug".

Demikian juga, dengan hutang teknis, masih banyak nilai bisnis yang dimainkan. Beberapa hutang teknis mungkin timbul dengan biaya yang sangat kecil dan mungkin tetap jangka panjang, tetapi beberapa hutang teknis akan membunuh bisnis Anda seiring waktu, dan karenanya memiliki nilai bisnis yang sangat tinggi. Kuncinya lagi adalah menyadari bahwa semuanya hanya PBI. Semuanya masuk ke dalam simpanan dan Anda mengerjakan item di simpanan tersebut berdasarkan nilai yang mereka tambahkan ke bisnis. Apakah itu fitur, bug, atau utang teknis benar-benar tidak penting.

Ini juga memiliki manfaat menghindari pertanyaan Anda sepenuhnya. Karena semuanya adalah PBI, semuanya berkontribusi terhadap kecepatan. Gagasan melakukan pekerjaan yang sebenarnya tidak berukuran dan dihitung dalam kecepatan Anda agak gila bagi saya. Anda pada dasarnya menciptakan lubang hitam besar dalam data empiris Anda. Velocity sudah merupakan metrik yang cukup kasar, ini merupakan estimasi berdasarkan pada estimasi yang didasarkan pada lebih banyak estimasi. Tambahkan banyak variabel pekerjaan yang tidak dilacak, dan sekarang jumlahnya tidak berarti. Semua yang dilakukan tim Anda dalam sprint adalah bagian dari kecepatan Anda.

Chris Pratt
sumber