Salah satu rekan tim saya adalah jack dari semua perdagangan di toko IT kami dan saya menghargai wawasannya.
Namun, kadang-kadang dia meninjau kode saya (dia yang kedua di komando untuk pemimpin tim kami, jadi itu diharapkan) tanpa kepala. Jadi kadang-kadang dia meninjau perubahan saya sebelum mereka menyelesaikan tujuan akhir dan membuat perubahan segera ... dan bahkan pernah merusak pekerjaan saya.
Di lain waktu, dia telah melakukan perbaikan yang tidak perlu pada beberapa kode saya yang berumur 3+ bulan.
Ini mengganggu saya karena beberapa alasan:
- Saya tidak selalu diberi kesempatan untuk memperbaiki kesalahan saya
- Dia belum meluangkan waktu untuk bertanya kepada saya apa yang saya coba capai ketika dia bingung, yang dapat mempengaruhi pengujian atau perubahannya
- Saya tidak selalu berpikir bahwa kodenya dapat dibaca
- Tenggat waktu bukan merupakan masalah dan beban kerjanya saat ini tidak memerlukan pekerjaan apa pun di proyek saya selain meninjau perubahan kode saya.
Ngomong-ngomong, saya telah mengatakan kepadanya di masa lalu untuk tetap membuat saya diposting jika dia melihat sesuatu dalam pekerjaan saya yang dia ingin ubah sehingga saya dapat mengambil kepemilikan kode saya (mungkin saya seharusnya mengatakan "kekurangan") dan dia tidak responsif .
Saya takut bahwa saya akan menjadi agresif ketika saya memintanya untuk menjelaskan perubahannya kepada saya.
Dia hanya orang pendiam yang menjaga dirinya sendiri, tetapi tindakannya terus berlanjut. Saya tidak ingin mengusirnya dari membuat perubahan kode (tidak seperti yang saya bisa), karena kami adalah tim - tetapi saya ingin melakukan bagian saya untuk membantu tim kami.
Klarifikasi tambahan:
- Kami berbagi 1 cabang pengembangan. Saya tidak menunggu sampai semua perubahan saya menyelesaikan satu tugas karena saya berisiko kehilangan pekerjaan yang signifikan - jadi saya memastikan perubahan saya membangun dan tidak merusak apa pun.
- Kekhawatiran saya adalah bahwa rekan satu tim saya tidak menjelaskan alasan atau tujuan di balik perubahannya. Saya tidak berpikir dia harus membutuhkan berkah saya, tetapi jika kita tidak setuju pada suatu pendekatan saya pikir akan lebih baik untuk membahas pro dan kontra dan membuat keputusan setelah kita berdua mengerti apa yang sedang terjadi.
- Saya belum membahas hal ini dengan pimpinan tim kami karena saya lebih suka menyelesaikan perselisihan pribadi tanpa melibatkan manajemen kecuali jika diperlukan. Karena kekhawatiran saya tampaknya lebih merupakan masalah pribadi daripada ancaman bagi pekerjaan kami, saya memilih untuk tidak mengganggu pemimpin tim. Saya sedang mengerjakan ide proses peninjauan kode - untuk membantu mempromosikan manfaat dari tinjauan kode yang lebih terorganisir tanpa membuat semuanya tentang kencing hewan peliharaan saya.
Jawaban:
Saya pikir sebagian besar pengembang menemukan diri mereka dalam posisi ini di beberapa titik, dan saya berharap setiap pengembang yang merasa menjadi korban menyadari betapa frustrasinya ketika dia menjadi senior dan merasa terdorong untuk membersihkan kode yang ditulis oleh junior.
Bagi saya, menghindari konflik dalam situasi ini bermuara pada dua hal:
Kesopanan . Berbicara dengan seseorang tentang kode-nya memungkinkan seorang dev mengetahui bahwa Anda tertarik dan Anda dapat mendiskusikannya sebagai profesional dewasa.
Lupakan "kepemilikan kode" - tim memiliki kode . Orang lain yang ingin melakukan perubahan adalah hal yang baik. Jika seorang pengembang senior membuat perubahan yang "tidak dapat dibaca" atau lebih buruk, maka mundurlah. Anda tidak perlu agresif, cukup beri tahu editor bahwa perubahannya tidak berhasil, dan Anda senang mendiskusikan pengembalian Anda.
Ingat, kepemilikan kode oleh tim sangat bagus dan memotong kedua-duanya. Jika Anda melihat sesuatu yang tidak masuk akal dalam kode orang lain, maka perbaiki. Menjadi terlalu posesif dan kurang komunikatif adalah cara yang pasti untuk menciptakan lingkungan pengembangan yang beracun.
sumber
Anda dan sebagian besar penjawab pendekatan ini sebagai masalah komunikasi antara dua rekan, tetapi saya tidak berpikir itu benar. Apa yang Anda gambarkan terdengar lebih seperti proses peninjauan kode yang rusak parah daripada yang lainnya.
Pertama, Anda menyebutkan bahwa kolega Anda adalah yang kedua dalam perintah dan diharapkan dia akan meninjau kode Anda. Itu salah. Menurut definisi, ulasan kode rekan tidak hierarkis, dan pastinya bukan hanya tentang menemukan cacat. Mereka juga dapat memberikan pengalaman belajar (untuk semua orang yang terlibat), kesempatan untuk interaksi sosial, dan membuktikan alat yang berharga untuk membangun kepemilikan kode kolektif. Anda juga harus meninjau kode-kodenya dari waktu ke waktu, belajar darinya dan memperbaikinya ketika dia salah (tidak ada yang memperbaikinya setiap waktu).
Selanjutnya, Anda menyebutkan bahwa kolega Anda segera melakukan perubahan. Itu juga salah, tetapi tentu saja Anda sudah mengetahuinya; Anda tidak akan menanyakan pertanyaan ini jika pendekatan gung ho-nya tidak menjadi masalah. Namun saya pikir Anda mencari solusi di tempat yang salah. Sejujurnya, kolega Anda mengingatkan saya sedikit ... saya, dan apa yang berhasil bagi saya dalam situasi yang sama adalah proses peninjauan yang jelas dan solid serta seperangkat alat yang luar biasa. Anda tidak benar-benar ingin menghentikan kolega Anda dari meninjau kode Anda, dan memintanya untuk berhenti dan berbicara kepada Anda sebelum setiap perubahan kecil tidak benar-benar bekerja. Mungkin untuk sementara waktu, tetapi dia akan segera mencapai titik di mana itu hanya akan terlalu mengganggu dan Anda akan kembali ke tempat Anda mulai, atau lebih buruk lagi: dia hanya akan berhenti meninjau kode Anda.
Kunci untuk resolusi di sini mungkin alat peninjau kode rekan. Saya biasanya menghindari rekomendasi produk, tetapi untuk ulasan kode Atlassian's Cruciblebenar-benar penyelamat. Apa yang dilakukannya mungkin tampak sangat sederhana, dan memang begitu, tetapi itu tidak berarti itu tidak luar biasa mengagumkan. Ini terhubung ke repositori Anda dan memberi Anda kesempatan untuk meninjau perubahan individu, file, atau grup file. Anda tidak dapat mengubah kode apa pun, sebaliknya Anda mengomentari segala sesuatu yang terasa tidak benar. Dan jika Anda benar-benar harus mengubah kode orang lain, Anda dapat meninggalkan komentar dengan perubahan yang menjelaskan perubahan Anda. Video pengantar di halaman produk Crucible layak ditonton jika Anda menginginkan detail lebih lanjut. Harga Crucible bukan untuk semua orang, tetapi ada banyak alat peer review yang tersedia secara bebas. Salah satu yang telah saya kerjakan dan nikmati adalah Review Board dan saya yakin Anda akan menemukan banyak orang lain dengan pencarian Google sederhana.
Alat apa pun yang Anda pilih, itu benar-benar akan mengubah proses Anda. Tidak perlu berhenti, turun dari kursi Anda, sela orang lain dan diskusikan perubahannya; yang perlu Anda lakukan adalah menetapkan waktu istirahat setiap minggu dan membaca komentar (seminggu sekali hanya saran. Anda tahu jadwal dan rutinitas harian Anda lebih baik daripada saya). Lebih penting lagi, ulasan inti disimpan dalam database di suatu tempat dan Anda dapat mengambilnya kapan saja. Mereka bukan diskusi singkat di sekitar pendingin air. Kasing penggunaan favorit saya untuk ulasan lama adalah ketika memperkenalkan anggota tim baru ke basis kode kami. Itu selalu menyenangkan ketika saya bisa memandu seseorang yang baru melalui basis kode menunjukkan di mana tepatnya kami terjebak, di mana kami memiliki pendapat yang berbeda, dll.
Selanjutnya, Anda menyebutkan bahwa Anda tidak selalu menemukan kode rekan ini dapat dibaca. Itu membuat saya tahu bahwa Anda tidak memiliki seperangkat standar pengkodean yang sama, dan itu hal yang buruk. Sekali lagi Anda dapat mendekati ini sebagai masalah orang atau Anda dapat mendekati ini sebagai masalah proses, dan sekali lagi saya akan sangat menyarankan yang terakhir. Kumpulkan tim Anda dan adopsi gaya koding umum dan serangkaian standar sesegera mungkin. Tidak masalah jika Anda memilih serangkaian standar yang umum dalam ekosistem pengembangan Anda atau Anda membuat standar Anda sendiri. Yang benar-benar penting adalah agar standar Anda konsisten dan Anda mematuhinya. Banyak dan banyak alat di luar sana dapat membantu Anda, tetapi itu adalah diskusi yang sangat berbeda. Hanya untuk memulai, hal yang sangat sederhana untuk dilakukan adalah memiliki hook pre-commit menjalankan semacam style formatter pada kode Anda. Anda dapat terus menulis kode sesuka Anda dan membiarkan alat "memperbaikinya" secara otomatis sebelum orang lain melihatnya.
Terakhir Anda menyebutkan dalam komentar bahwa manajemen tidak percaya cabang dev individu diperlukan. Nah, ada alasan kami menyebutnya "cabang-cabang dev" dan bukan "cabang-cabang manajemen." Aku akan berhenti di sini karena tidak ada alasan untuk kata-kata kasar yang terbentuk di kepalaku keluar.
Semua yang mengatakan, tahu bahwa saya tidak meragukan kolega Anda (sedikit) salah di sini. Itu bukan poin saya, poin saya adalah bahwa seluruh proses pengembangan Anda juga salah, dan itu adalah sesuatu yang lebih mudah untuk diperbaiki. Persenjatai diri Anda dengan alat yang tepat, jelajahi berbagai proses formal dan informal dan pilih yang sesuai dengan tim Anda. Segera Anda akan mencapai titik di mana Anda akan menyadari bahwa sebagian besar "masalah orang" Anda tidak ada lagi. Dan tolong jangan dengarkan siapa pun (termasuk Anda sendiri) yang mengemukakan alasan "kami tim kecil, kami tidak membutuhkan semua itu". Tim pengembang yang kompeten dapat mengatur alat yang diperlukan dalam waktu kurang dari seminggu, mengotomatiskan semua yang dapat diotomatisasi, dan tidak pernah melihat ke belakang lagi.
PS. "Kepemilikan kode" adalah istilah yang samar-samar, terus-menerus diperdebatkan, dan ini memiliki arti berbeda bagi orang yang berbeda. Anda dapat menemukan koleksi cemerlang dari sebagian besar pendapat yang berbeda (dan terkadang antitesis) tentang C2 .
sumber
Ada apa dengan proses yang membuat Anda ingin bertanggung jawab atas "kode Anda"? Apakah Anda memiliki tanggung jawab tunggal untuk membuat fitur tertentu berfungsi? Apakah pemimpinnya berkata, "Michael, aku ingin kamu bertanggung jawab atas ..."? Atau apakah tanggung jawab Anda tersirat, dalam hal pimpinan dan anggota tim lainnya memandang Anda setiap kali fitur tertentu rusak?
Either way, jika Anda memiliki tanggung jawab, maka Anda memerlukan wewenang atas kode tersebut. Lain kali ketika orang lain melakukan perubahan sepihak dan pimpinan kembali kepada Anda untuk memperbaikinya, Anda harus duduk dengan pemimpin dan meminta agar wewenang dan tanggung jawab Anda selaras.
sumber
Bukan berarti ini akan menyelesaikan seluruh situasi, tetapi Anda dapat mencoba menambahkan lebih banyak komentar ke kode sumber Anda.
Semua dan semua, cobalah membuat limun alih-alih membuang waktu mengisap lemon. Seperti yang dikatakan Michael, secara umum, rekan tim tidak keluar untuk membuat Anda terlihat buruk. Cobalah belajar dari kesalahan Anda dan menerapkannya pada revisi di masa depan.
Jika Anda yakin bahwa perubahannya berdampak negatif, silakan sampaikan ini (secara diplomatis). Jika itu saya, saya hanya akan bertanya mengapa perubahan spesifik dilakukan dan melihat apakah Anda dapat mempertahankan perubahan asli Anda. Rekan kerja senior Anda juga manusia. Sangat mungkin bahwa dia melewatkan sesuatu dan / atau tidak menyadari dampak negatif apa pun yang dia berikan.
sumber
Semua orang secara implisit 'memiliki kode mereka sendiri', terlepas dari politik, hukum, atau ekonomi - itu adalah 'sifat alami' - Anda secara alami merasakan hubungan pribadi dengan pekerjaan Anda sendiri.
Jika rekan kerja Anda terlibat dalam perilaku yang Anda jelaskan dan tetap tidak responsif ketika Anda meminta kepala , rekan kerja itu tidak sopan, untuk sedikitnya, dan mungkin mencoba untuk merusak Anda (untuk mengatakan yang terburuk .. .) - TIDAK terdengar seperti pemain tim.
Rekan kerja yang baik akan menyentuh basis dengan Anda dan menunjukkan masalah dengan kode Anda kepada Anda - dan membiarkan Anda memperbaiki / mengubahnya, atau merespons dengan tepat. Saya sangat bersyukur bahwa bahkan ketika saya seorang pemula, mentor saya selalu menunjukkan kepada saya apa yang saya lakukan salah, menjelaskan mengapa dan membiarkan (atau membuat ) saya memperbaikinya. Itu membuat saya seorang programmer yang lebih baik dan semua orang mendapat manfaat. Dan itulah yang selalu saya lakukan ketika meninjau pekerjaan yang dilakukan oleh orang lain. Maka Anda, (atau siapa pun) sebenarnya belajar sesuatu dari 'jack of all trades' Anda, dan kode serta tim semuanya menjadi lebih baik, termasuk guru Anda: Mengajar membantu memahami.
Jika memungkinkan, saya akan membahas masalah ini secara pribadi dengan Ketua Tim. Berdasarkan uraian Anda tentang situasi, seorang pemimpin tim yang baik akan memihak Anda - yang buruk tidak akan .... Jelas ini membutuhkan kehati-hatian - Anda harus menilai itu sendiri.
sumber
Jika Anda menulis kode, maka saya harus memeriksanya.
Jika saya mengubah kode Anda selama peninjauan, maka kode itu bukan lagi kode yang saya ulas, tetapi kode yang saya ubah. Karena itu perlu ditinjau. Mungkin olehmu.
Jika saya melakukan kode baru Anda dengan perubahan saya tanpa seseorang meninjau perubahan saya, maka saya telah melakukan (1) perubahan yang tidak ditinjau, dan (2) dosa terburuk yang mungkin terjadi jika ulasan kode dianggap serius.
sumber
Saya pikir Anda sedang menanganinya dengan cara yang benar untuk saat ini - tetapi akan segera ada titik kritis di mana hal itu mengalihkan perhatian Anda sejauh Anda mungkin tidak senang mengodekan cara ini sama sekali.
Jika saya jadi Anda, saya akan meminta pertemuan langsung dengan orang ini dan menjelaskan PoV saya dengan tenang namun tegas. Kepemilikan tim atas kode dll. Baik-baik saja tetapi kecuali jika Anda memberi setiap pengembang cukup ruang untuk menyelesaikan pekerjaannya, membuat kesalahan dan meningkatkan Anda tidak akan pernah membangun kode yang baik. Ini bisa menjadi area gesekan lebih cepat daripada nanti.
(Ada jawaban yang sama sekali berbeda jika ini ada di tempat kerja.stackexchange. Mencari cara yang benar untuk melakukan tinjauan kode adalah hal yang mudah. Meyakinkan rekan kerja Anda untuk mematuhi ini jauh lebih sulit).
sumber