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.
Jawaban:
Saya melihat beberapa opsi:
sumber
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.
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?
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.
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.
sumber
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.
sumber
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.
sumber
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.
sumber