Seperti apa “definisi selesai” untuk tim yang matang?

9

Ketika melihat contoh definisi yang dilakukan di berbagai sumber, mereka biasanya memasukkan poin-poin seperti

  • kode selesai
  • tes unit dijalankan
  • kode yang ditinjau sejawat atau dipasangkan
  • kode masuk
  • dokumentasi diperbarui
  • ...

Di tim kami, kami memiliki daftar yang serupa, tetapi tidak ada yang pernah melihatnya karena poin-poin itu tampak sangat jelas sehingga tidak akan terpikirkan oleh siapa pun untuk melewati salah satu dari langkah-langkah ini. Jadi kami bertanya-tanya apakah itu terutama alat untuk transisi tim ke proses lincah dan apakah kita tidak boleh hanya membuangnya.

Di sisi lain, banyak literatur menyatakan bahwa semua tim berkinerja tinggi memiliki definisi yang kuat untuk dikerjakan. Petunjuk semacam ini yang mungkin kita lewatkan kesempatan untuk meningkatkan di sini.

Jadi apa saja contoh definisi kuat yang dilakukan tim yang matang? Poin apa yang termasuk dalam mereka?

Tobias
sumber
10
Ketika klien memanggilnya selesai.
Matt S
7
Tidak ada yang akan melewatkan memperbarui dokumentasi?
JeffO
1
Apakah organisasi Anda secara keseluruhan memiliki masalah dengan beberapa orang berpikir hal-hal dilakukan ketika orang lain berpikir masih ada yang harus dilakukan? Jika tidak, maka Anda tidak perlu menghabiskan waktu di sini. Jika mereka lakukan , baik, Anda memiliki titik awal untuk daftar Anda
AakashM
@ Mat: Jika Anda harus menunggu klien untuk menyebutnya selesai, Anda memiliki banyak cerita yang menunggu penyelesaian. Harus ada semacam status "pengembangan lengkap" atau "siap untuk UAT" untuk cerita yang dalam bahasa sehari-hari "dilakukan sejauh yang diketahui tim".
KeithS
Pilih sebuah sistem dan tetap menggunakannya. Kaizan sesekali. Ini adalah kasus di mana konsistensi meningkatkan produktivitas. Bagian yang sulit adalah menjadi proses (diktator seumur hidup) pada awalnya sampai semua orang melihat manfaatnya (ya, ya, jual itu).
Paul

Jawaban:

9

Pedoman ada untuk semua orang. Dalam tim yang matang, seperti yang Anda sebutkan, semua orang melakukannya, jadi itu tidak berarti tidak ada tempat untuk itu. Misalkan, anggota baru bergabung, yang belum pernah terkena metodologi ini sebelumnya. Memiliki struktur di tempatnya, akan menjadi vital baginya. Dia tidak perlu mengganggu anggota lain, atau tidak akan "melupakan" kiriman.

Menurut pendapat saya, Daftar semuanya, termasuk yang sudah jelas. Mungkin, memiliki "daftar cheat pendek" untuk yang tidak jelas jika itu membantu mereka yang ingin daftar pendek, tetapi pertimbangkan kasus anggota baru melompat.

Ini adalah proses berulang, setiap kali Anda melihat sesuatu yang dapat Anda tingkatkan, tambahkan dalam definisi selesai. Lembur, Anda akan mengembangkan daftar yang relevan dengan perusahaan Anda. Anann telah menyebutkan beberapa yang bermanfaat.

Nasir
sumber
Poin bagus yang Anda buat tentang anggota tim baru, Nasir.
Carson63000
Terima kasih. Kami menghadapi situasi ini dengan cukup teratur, dan orang-orang tua seperti saya juga terkadang lupa.
Nasir
7

Hanya karena poinnya jelas-jelas tidak berarti bahwa orang akan selalu melaksanakannya. Mari kita ambil dua contoh lain - pilot dan ahli bedah. Kokpit pesawat komersial atau ruang operasi memiliki banyak orang, dengan banyak pendidikan dan pengalaman di antara mereka. Namun, hal-hal masih salah - langkah-langkah dilakukan rusak, ada yang dilupakan, ada yang salah dilakukan. Saya telah melihat sejumlah sumber situs bahwa sejumlah besar (hingga 70%) insiden pesawat terbang yang disebabkan oleh kesalahan pilot dapat dicegah dengan daftar periksa . Di dunia medis, hingga 29% dari tuntutan hukum malpraktek di Belanda dapat dicegah dengan menggunakan daftar periksa, menurut para peneliti. Meskipun orang-orang ini telah dilatih, dan jika dipikir-pikir mungkin akan dengan mudah mengidentifikasi apa yang mereka lakukan salah, sesuatu terjadi yang menyebabkan mereka terpuruk. Saya belum membacanya, tetapi Manifesto Daftar Periksa seharusnya relevan. Ini ditulis dari profesi medis, tetapi keuntungan membuat daftar periksa atau diagram alur terlihat sebagai pengingat apa yang harus dilakukan berlaku untuk profesi apa pun.

Jadi, langkah pertama adalah membuat daftar hal-hal yang merupakan bagian dari definisi Anda tentang selesai dan membuatnya terlihat. Tidak masalah seberapa jelas tugas itu, jika perlu lengkap agar cerita itu dianggap selesai, itu harus ada dalam daftar itu. Daftar harus berada di suatu tempat yang terlihat oleh tim. Perhatikan bahwa itu tidak harus sesuatu yang mewah atau formal - mungkin hanya serangkaian pertanyaan yang harus ditanyakan semua orang sendiri sebelum sebuah cerita dapat disebut selesai.

Langkah kedua adalah memutuskan apa yang terjadi pada daftar periksa itu untuk definisi Anda tentang selesai. Segala sesuatu yang perlu Anda lakukan untuk menyelesaikan tugas harus spesifik, tidak ambigu, dapat diterima, dan realistis. Itu juga harus dalam konteks waktu untuk pertimbangan dilakukan. Misalnya, Anda tidak perlu memasukkan "ubah kode" atau "modifikasi desain" dalam definisi selesai - jika Anda tidak perlu mengubah produk kerja, tidak perlu cerita.

Saya menduga bahwa daftar periksa yang baik untuk dijadikan dasar untuk definisi yang dilakukan adalah:

  • Sudahkah semua unit terkait, integrasi, sistem, dan tes penerimaan diperbarui?
  • Apakah produk kerja telah diubah menjadi bentuk yang dapat dirilis? Misalnya, kode yang dibuat, dokumentasi dalam format file yang dapat diekspor, dll.
  • Apakah semua produk kerja terkait telah ditinjau sejawat? Contoh produk kerja termasuk kode sumber (produksi dan pengujian), komentar, dokumen desain, prosedur pengujian, dan manual pengguna.
  • Sudahkah semua tes yang terkait (di semua level pengujian) telah dieksekusi dan lulus?
  • Apakah kode telah digabungkan ke dalam repositori integrasi?

Tentu saja, Anda harus membuat definisi yang baik tentang penyelesaian yang mencakup kegiatan lain yang dirasakan nilai tambah oleh tim Anda dan pelanggan Anda. Jika ada di daftar periksa, itu harus menjadi sesuatu yang perlu dilakukan untuk menambah nilai kepada seseorang (tim, pelanggan, pengguna). Dengan menyebutkan secara jelas apa yang Anda lakukan, Anda juga dapat mengidentifikasi dan menghilangkan kegiatan asing untuk meningkatkan proses.

Thomas Owens
sumber
Itu semua kedengarannya sangat bagus secara teori, tetapi bagaimana Anda menghasilkan satu yang relevan? Misalnya, saya tidak perlu daftar periksa untuk menyikat gigi setiap pagi, namun saya masih melakukannya. Poin yang Anda daftarkan (tes lulus, peer review ...) terasa seperti menyikat gigi, jadi di mana nilai tambahnya?
Tobias
@Tobias Nilai muncul dalam pengulangan. Anda sekarang dapat memvisualisasikan proses Anda dan membagikannya kepada orang lain. Anda juga dapat memvisualisasikannya untuk mengidentifikasi area untuk perbaikan (hal-hal yang dilakukan orang yang tidak ada dalam daftar, hal-hal yang tidak perlu ada dalam daftar, hal-hal yang tidak dilakukan orang-orang yang ada dalam daftar).
Thomas Owens
1

Ini sebenarnya terdengar seperti Anda adalah pria yang beruntung:

Di tim kami, kami memiliki daftar yang serupa, tetapi tidak ada yang pernah melihatnya karena poin-poin itu tampak begitu jelas

Tim Anda sudah "dewasa" ;-). Tapi selalu ada ruang untuk perbaikan!

Untuk pertanyaan Anda:

Jadi apa saja contoh definisi kuat yang dilakukan tim yang matang? Poin apa yang termasuk dalam mereka?

Di atas daftar Anda, Anda dapat menambahkan:

Berbagai metrik kualitas kode: - Ketidakstabilan, Abstraksi - LOC vs DLOC (didokumentasikan) - dll ...

Aturan praktisnya adalah bahwa metrik seharusnya tidak menjadi lebih buruk dengan komit Anda. Di atas Anda dapat merumuskan "selesai: dengan Keunggulan" jika seseorang benar-benar membuat metrik menjadi lebih baik. Meskipun ini (metrik menjadi lebih baik) biasanya bukan bagian dari fase pengembangan (fitur baru) tetapi fase refactoring.

Di salah satu perusahaan saya di masa lalu, kami memiliki definisi "selesai" yang mengatakan bahwa metrik Anda harus tetap di bawah ambang batas tertentu, jika Anda melangkah di atas, Anda belum selesai. (Kompleksitas Siklomatik tidak boleh lebih dari 15, kecuali Anda memiliki alasan yang sangat sangat sangat bagus, seperti calcs yang rumit.)

Hal yang sama berlaku untuk jenis pelanggaran Checkstyle, terutama jika Anda memiliki aturan khusus untuk memeriksa gaya kode tim Anda. Jika Anda melanggar standar pengkodean, Anda belum selesai.

Maka Anda tidak bisa hanya menjalankan UnitTest, Anda bisa mengukur cakupan kode. Jika tidak setidaknya 50% ditanggung, Anda belum selesai. Meskipun ini adalah semacam definisi yang seret dilakukan, karena Anda harus memiliki tes untuk inti / utama / metode kritis, dan belum tentu untuk 100% basis kode Anda.

Oh ya ... dan jika Anda memiliki (Anda harus) server CI dengan integrasi cabang otomatis ... Anda hanya selesai jika komit Anda di Cabang DEV bergabung dengan Cabang-LIVE saat ini dan tidak menyebabkan kesalahan juga. (Tes Unit, dll.)

hmmm ... itu yang bisa saya ingat benar tahu dari perusahaan / proyek sebelumnya, yang belum disebutkan dalam daftar Anda.

Saya harap itu memberi Anda beberapa ide ;-)

Bersulang,

anann

Wizard of Tech
sumber
Metrik kualitas kode adalah ide menarik yang belum kami pikirkan. Sisanya (gaya pengkodean, CI hijau setelah penggabungan) sudah menjadi bagian dari "bagian yang jelas".
Tobias
1

Dalam lingkungan TDD / BDD, definisi "selesai" (secara teknis "Kode Selesai", karena definisi Matt S tentang "benar-benar 'selesai'" adalah benar) cukup sederhana:

  • Semua tes otomatis lulus (tes otomatis tersebut harus mencakup yang baru yang ditulis untuk cerita yang bersangkutan untuk memverifikasi fungsionalitas atau perilaku yang diperlukan ada dan berfungsi)
  • Tinjauan kode berlalu (setidaknya satu pengembang senior dalam tim puas untuk membiarkan pekerjaan Anda menjadi bagian dari basis kode, dan bahwa Anda tidak "menipu" atau "meretas" jalan Anda melalui cerita)
  • Berhasil berkomitmen (termasuk bot build yang lulus semua tes otomatis, metrik cakupan kode, pemeriksaan polisi gaya, dll)

Pada titik ini, Anda dapat melanjutkan. Tiga poin ini sangat penting, tetapi mereka semua yang harus diperhatikan oleh pembuat kode tim rata-rata. Tertulis atau tidak tertulis, mereka tidak dapat diganggu gugat di lingkungan TDD. Dokumentasi, ketika coders adalah orang yang melakukan dokumentasi, adalah poin tambahan. Di tim Agile terakhir saya, dokumentasi ditangani oleh BA / QA; mereka tahu apa yang diinginkan klien, telah menjalankan UAT, dan dengan demikian paling mampu mendokumentasikan fitur baru dengan cara yang bermakna bagi klien, sehingga dokumentasi bukan bagian dari definisi pembuat kode tentang "selesai", meskipun itu adalah bagian dari definisi tim.

KeithS
sumber