Bagaimana cara melucuti kode koboi? [Tutup]

37

Saya menemukan pertanyaan (kode koboi di tim), tetapi itu lebih terkait dengan "Ninja Coder" maka masalah yang saya miliki.

Saya memiliki anggota tim yang merupakan contoh hidup murni " Cowboy Coder ". Saya mengerti bahwa seseorang tidak dapat mengubah orang, tetapi apakah cara untuk membuatnya berhenti berperilaku seperti "Cowboy Coder"?

Dia menolak untuk mendengarkan tim, dan dia baru-baru ini menghentikan ulasan kode, pengujian unit, berbagi rincian implementasi, dll.

Ya, dia "kode" dengan cepat, tetapi kodenya hanyalah penghasil bug. Anggota tim lain dan saya berada dalam "fase perbaikan bug" dan 80% bug berasal dari kodenya. Saya tidak ingin memperbaiki bug-nya. Dan manajemen buta, atau tidak ingin melihat ini, atau mungkin mereka suka "kecepatan" -nya.

Apakah ada cara agar saya (sebagai rekannya yang lebih muda berdasarkan umur, bukan bosnya) dapat melakukan sesuatu tentang hal itu?

Bagaimana saya bisa melucuti pembuat kode koboi ini?

Saya merasa seperti saya yang terakhir yang benar-benar peduli dengan proyek ini.

Adronius
sumber
17
Orang ini perlu memperbaiki bug sendiri. Mengapa setiap pengembang tidak diharuskan melalui ulasan kode?
programmer
8
Di bawah otoritas siapa dia menghentikan ulasan kode?
Otávio Décio
14
Jadi ... Anda tidak punya satu pun yang mengelola hal ini. Itu masalahmu, bukan si koboi.
Otávio Décio
3
Jika itu yang terjadi maka Scrum adalah proses yang baik untuk apa-apa. Ketika semua bertanggung jawab, tidak ada yang bertanggung jawab, dan produk menderita efek pengamat.
Otávio Décio
7
Tapi bagaimana kita melucuti koboi "tutup" ...
Rig

Jawaban:

22

Saya melihat beberapa opsi:

  • Dekati pembuat kode dengan keprihatinan Anda. Itu harus dilakukan sebagai kritik yang membangun dengan poin-poin tertentu. Sebelum mengambil langkah yang lebih besar, perlu untuk menyampaikan kekhawatiran secara langsung dan pribadi untuk memberi orang itu kesempatan untuk berubah.
  • Kumpulkan informasi dan statistik dan bawa ke manajemen. Manajemen mungkin kelihatannya tidak peduli, tetapi seringkali penting untuk melakukan upaya apa pun jika itu berhasil. Kemungkinan konsekuensi negatif termasuk mengasingkan orang lain yang tidak menghargai keluhan kepada manajemen.
  • Temukan rekan pembuat kode koboi dan diskusikan secara pribadi. Ia mungkin memiliki kesempatan yang lebih baik untuk membuat orang itu mendengarkan.
  • Minta bekerja di tim lain. Tidak akan menyelesaikan masalah tetapi Anda akan menjaga kewarasan Anda. Paling tidak selalu lakukan yang terbaik dari kemampuan Anda dan jangan biarkan itu menjatuhkan Anda.
  • Tinggalkan organisasi jika tidak ada yang mau mendengarkan. Kedengarannya seperti lingkungan yang buruk.
Matt S
sumber
6

Dia menolak untuk mendengarkan tim, dan dia baru-baru ini menghentikan ulasan kode, pengujian unit, berbagi rincian implementasi ...

Ulasan kode tidak harus mengharuskan pembuat kode untuk mengirimkan pekerjaan untuk ditinjau.

Cara mudah untuk melacak apa yang dia lakukan adalah mengawasi sejarah VCS, mencari check-innya. Jika Anda khawatir tentang kodenya, ini adalah cara mudah untuk menemukannya. Dapatkan histori diff, lihat apa yang dia masukkan, dan lihat apakah ada bendera merah yang menyerang Anda. Tangkap checkinnya dengan cukup cepat dan jika Anda menemukan masalah, Anda dapat memutar kembali komit dan mengirim email kepadanya untuk efek itu. Anda diperbolehkan memanggil sesama anggota tim Anda, bahkan sebagai junior coder, ketika Anda melihat sesuatu yang jelas salah.

Ya, dia "kode" dengan cepat, tetapi kodenya hanyalah penghasil bug. Anggota tim lain dan saya berada dalam "fase perbaikan bug" dan 80% bug berasal dari kodenya. Saya tidak ingin memperbaiki bug-nya. Dan manajemen buta, atau tidak ingin melihat ini, atau mungkin mereka suka "kecepatan" -nya.

Kode berasal dari persyaratan. Persyaratan menghasilkan tes runnable yang memverifikasi persyaratan telah dipenuhi. Tes-tes tersebut dapat dipecah lebih lanjut, dan dapat ditulis sebelum perubahan dilakukan untuk memverifikasi bahwa perubahan memenuhi persyaratan (red-green-refactor; esensi dari TDD).

Tambahkan metrik "cakupan kode" ke server build tim Anda (mudah-mudahan Anda memilikinya; jika tidak, itu masalah pertama Anda). Hanya dengan mengecek bahwa unit test pass tidak akan menemukan masalah dengan kode non-TDDed barunya, dibuat di area yang tidak memiliki tes unit. Setelah menjalankan semua tes unit, server build idealnya telah mengeksekusi setiap baris kode, tetapi sebenarnya ada beberapa hal yang tidak bisa Anda uji unit. Secara realistis, Anda masih dapat mengharapkan cakupan 95% atau lebih baik (atau mengecualikan perpustakaan atau jenis file tertentu dari cakupan). Cepat atau lambat, koboi Anda akan memeriksa sesuatu yang merusak bangunan karena dia menurunkan tingkat cakupan di bawah ambang batas, dan Anda memanggilnya keluar.

Dan sejauh menyangkut "kecepatan", kecepatan adalah seberapa cepat Anda menyelesaikan sesuatu, dan itu tidak "selesai" sampai selesai dengan benar. Anda bisa memberikannya kepada manajer Anda dengan cara ini; pertimbangkan seorang montir mobil yang, ketika manajer membawa BMW-nya untuk mengganti oli, lupa untuk mencabut kembali colokan wajan, dan sebagai akibatnya semua oli baru mengalir keluar bahkan sebelum ia keluar dari garasi. Tentu, penggantian oli hanya membutuhkan waktu lima menit, tetapi manajer tidak akan peduli tentang hal itu ketika mesin mobilnya menyala dalam perjalanan pulang. Dia akan peduli bahwa mekanik ketinggalan satu langkah, yang akan menghabiskan banyak waktu dan uang tambahan untuk diperbaiki. Saat ini, dia membayar seorang koboi untuk melakukan pekerjaan dengan sangat cepat, dan kemudian dia s membayar seluruh tim jumlah yang jauh lebih besar untuk datang dan melakukan kembali pekerjaan dengan benar. Apa, sebenarnya, keuntungan dari terus membiarkan koboi melakukan tugasnya?

Apakah ada cara agar saya (sebagai rekannya yang lebih muda berdasarkan umur, bukan bosnya) dapat melakukan sesuatu tentang hal itu?

Sebut dia. Ketika Anda menemukan sesuatu yang dikacaukannya, perlihatkan padanya bagaimana kodenya gagal, bagaimana ia bisa mencegah masalah di tempat pertama (termasuk desain yang tepat, TDD, ulasan kode) dan apa yang Anda atau harus lakukan sebagai hasilnya untuk memperbaiki kode yang rusak.

Saya merasa seperti saya yang terakhir yang benar-benar peduli dengan proyek ini.

klaxon menggelegar, lampu berkedip, sirene meraung - jika Anda benar-benar merasa seperti Anda satu-satunya orang yang peduli dengan kualitas kode yang dihasilkan oleh tim, maka ada masalah SERIUS. Jika Anda merasa Anda mencoba menyeret seluruh tim menendang dan berteriak ke era pengkodean yang baik, dan terlalu berat untuk diangkut, maka jatuhkan. Jika ada tim lain di perusahaan yang melakukannya dengan benar, mintalah transfer, jika tidak, pergilah.

KeithS
sumber
5

Buka manajemen dengan statistik Anda tentang berapa banyak bug / masalah yang berasal dari pengembang yang satu ini. Jelaskan kepada mereka bahwa memperbaiki bug mereka memengaruhi produktivitas tim Anda. Jika memang 80% masalah datang dari satu orang, itu pasti perlu diatasi. Selama Anda menjelaskannya kepada manajemen dalam hal yang dapat mereka setujui (yaitu "waktu yang terbuang adalah uang yang terbuang"), mereka akan melakukan intervensi.

Selain itu, pengembang ini harus memperbaiki bug / masalah mereka sendiri, sehingga mungkin membantu untuk memberikan masalah ini kepada mereka. Tim Anda seharusnya tidak melindungi orang ini.

Bernard
sumber
4

Apakah ada cara agar saya (sebagai rekannya yang lebih muda berdasarkan umur, bukan bosnya) dapat melakukan sesuatu tentang hal itu?

Tekanan teman dan memimpin dengan memberi contoh adalah satu-satunya cara yang baik. Cara terbaik dilakukan oleh bos / pimpinan mereka. Jika Anda bukan bos / pemimpin mereka, maka bicarakan dengan mereka. Tetapi pada akhirnya itu tugas mereka untuk mengurusnya, bukan tugasmu. Pastikan Anda melakukan pekerjaan dengan baik dan segala sesuatunya cenderung berjalan dengan baik.

Telastyn
sumber
1
Si pembuat kode koboi mungkin kebal dari tekanan, jika manajemen tidak memahami dampaknya yang sebenarnya, mereka mungkin dibutakan oleh dampak yang dirasakannya.
mhoran_psprep
Dia dapat mengadvokasi kesalahannya dengan sangat baik sebelum manajemen, sehingga bug atau masalah besar terlihat kecil untuk manajemen, tetapi pada akhirnya, kode tetap rusak. Dan itu sesuatu yang manajemen tidak peduli.
Adronius
2
@mhoran_psprep - Oh tentu saja. Saya tidak berharap dia akan sukses , tetapi saya juga berpikir bahwa mencoba untuk memperbaiki hal-hal sebaliknya lebih berisiko berkaitan dengan konsekuensi negatif. Membuat keributan tentang hal itu adalah cara cepat dan mudah untuk membuat Anda diasingkan, terutama jika persepsi OP tentang koboi tidak akurat.
Telastyn
0

Dia menolak untuk mendengarkan tim, dan dia baru-baru ini menghentikan ulasan kode, pengujian unit, berbagi rincian implementasi ...

Apakah Anda tidak memiliki jalur yang terdokumentasi untuk kode melalui peninjauan, pengujian, dan implementasi? Jika tidak, Anda memiliki masalah yang lebih luas. Jika Anda melakukannya, maka ini adalah sesuatu yang perlu ditingkatkan.

temptar
sumber
Tentu, kami punya banyak proses dan dokumen. Tapi ini tentang orang-orang bagaimana mereka menggunakannya .
Adronius
Tetapi tidak ada yang bisa masuk ke produksi tanpa mendapatkan tanda yang relevan Apakah Anda memberi tahu saya dia menghindari kontrol perubahan yang normal?
temptar
Tidak persis, tapi agak. Dia membuat perubahan pada kode, kemudian dia melakukan langkah-langkah "formal" untuk melakukan review kode = menggunakan beberapa alat sendiri, jadi kode telah "meninjau" bendera atau meminta pasangannya (yang tidak peduli dengan kode) untuk "tinjau" kodenya. Lalu dia "menjelaskan" kode dalam satu menit dan selesai. Huray, dan dia pergi untuk menyerahkan perubahan.
Adronius