Apakah menarik meminta tempat untuk junior pelatihan


11

Kami memiliki konsep bahwa semua kode dalam Permintaan Tarik ke master harus siap produksi. Ini masuk akal dan pernyataan yang adil menurut saya.

Gagasannya di sini adalah bahwa begitu Anda membuat PR, Anda menyatakan bahwa Anda akan menempatkan ini sebagai master, tetapi ingin beberapa pengulas untuk hanya 'setuju' dengan Anda dan melihat apa pun yang Anda lewatkan.

Karena kami hanya manusia, kami membuat kesalahan dan berharap bahwa pengulas lain dapat menemukan item yang tidak dapat ditemukan unit test - kesalahan ejaan, javadocs salah dll.

TETAPI, apakah Pull Request adalah tempat di mana kita harus menyediakan beberapa tingkat bantuan / pelatihan untuk pengembang dan jika demikian, ke tingkat apa?

Setiap kali Anda mendorong perubahan baru, pengulas harus meninjau kembali perubahan Anda, yang diambil dari waktu pengembangan mereka dan menyebabkan perubahan meninjau kembali.

Jadi, berapa banyak pelatihan yang diharapkan, harus diizinkan, dalam Permintaan Tarik? Sebagian dari diriku merasa itu bervariasi dari junior hingga senior. Namun saya juga merasa bahwa itu seharusnya tidak menjadi tempat untuk menemukan sejumlah besar masalah - bahkan untuk junior.

Apakah ada orang lain yang berjuang dengan mencoba untuk mendapatkan pengembang untuk mencapai tujuan "Permintaan tarik saya harus siap produksi"?

Jawaban:


13

Tidak. Permintaan tarik bukan tempat untuk pelatihan. Tim Anda memiliki ide yang tepat. Seorang PR berarti "Saya pikir itu baik untuk pergi. Dapatkah saya mendapatkan set kedua mata tentang hal ini jika saya melewatkan sesuatu. Bagaimanapun juga, saya manusia." Dan saya menduga itulah yang sedang dilakukan murid Anda. Jujur mereka pikir itu baik untuk pergi.

Ini ide yang ekstrem (permainan kata-kata). Pasangkan Program dengan peserta magang yang membuat Anda mulas. Sebagai anggota tim yang lebih senior, tugas Anda adalah mengangkat mereka dan menjadikannya produktif.


Terima kasih @RubberDuck. Program pasangan adalah ide yang bagus dan kami melakukannya - agak. Saya kira kita harus melakukan ini lebih banyak. Namun beberapa metrik atau alat yang tepat untuk mengukur apakah salah satu "tetes" Anda di laut berulang kali membuat kesalahan yang sama akan membantu dalam mengetahui siapa yang membutuhkan pemrograman pasangan ini juga. Saya yakin masalah ini semakin buruk dengan tim yang lebih besar !?
Riaan Schutte

2
Yah, saya berpendapat bahwa kita semua harus berpasangan sebagian besar waktu. Salah satu peserta magang kami telah menangkap lebih dari beberapa kesalahan saya dan saya salah satu yang lebih senior di tim. Anda mungkin dapat meminta sejumlah komentar pada permintaan tarik, tetapi saya tidak akan merekomendasikannya. Sesuatu tentang Individu & Interaksi ... Serius sekalipun. Adalah tugas Anda untuk mengangkat dev ini. Dapatkan mereka salinan Kode Bersih atau sesuatu.
RubberDuck

1
Di tempat kerja di mana setiap pengembang mengerjakan pekerjaan yang dikutip untuk pelanggan (tidak ada proyek internal yang mendanai sendiri) pemrograman pasangan tidak semudah itu, tetapi tetap penting! Sepertinya sesuatu yang mungkin harus dibayar dan diinvestasikan oleh perusahaan jika kita ingin pengembang yang lebih produktif dalam pekerjaan yang dikutip.
Riaan Schutte

1
Hmm ... kenapa tidak semudah itu? Bukankah klien mendapatkan jam kerja yang sama banyak dan, yang lebih penting, nilai yang lebih baik untuk dolar mereka? Best of luck mate. Tenangkan anak itu.
RubberDuck

3
Itu kesalahpahaman umum @Andy. Tapi itu tidak benar. Ya, itu kontra intuitif, saya tahu.
RubberDuck

9

Jika kode yang melanggar prinsip-prinsip desain inti atau standar tim membuatnya ke tahap permintaan tarik, maka pasti harus ditangani di sana. Dan ulasan kode dapat menjadi sarana yang baik untuk mengkomunikasikan standar tim dan praktik desain.

Tetapi apakah ini tempat terbaik? Inilah beberapa alasan mengapa saya mengatakan tidak:

  1. Jika diperlukan beberapa iterasi peninjauan kode untuk mengatasi cacat desain mendasar atau masalah skala besar, maka akan ada godaan yang kuat untuk mengabaikan masalah yang lebih kecil yang disebutkan di atas, karena tenggat waktu atau kelelahan umum dengan peninjauan. Idealnya, tim cukup tangguh untuk menahan godaan ini, tetapi mungkin lebih baik tidak menciptakan situasi yang mengarah pada itu.
  2. Menerima ulasan kode dengan sejumlah besar komentar bukanlah pengalaman hebat bagi pengembang baru junior / baru. Ya, menanggapi umpan balik adalah keterampilan yang harus mereka kembangkan, tetapi juga benar bahwa pengembang tidak selalu terampil menanggapi kode secara bijaksana yang tidak mereka sukai.

Pemrograman pasangan dan ulasan desain adalah tempat yang disukai untuk umpan balik skala yang lebih besar.

Yang mengatakan, akan lebih buruk untuk membiarkan kode melewati karena takut bahwa mengatasinya selama ulasan kode adalah "salah," dan mungkin ada beberapa keadaan (misalnya tim jarak jauh) di mana ini adalah yang terbaik yang dapat Anda lakukan. Dalam hal ini, atasi masalah dalam ulasan kode, dan juga atasi masalah dalam proses pengembangan Anda sejauh ini.

Meskipun menemukan masalah selama permintaan tarik mungkin tidak ideal, itu tentu lebih baik daripada dalam pengujian atau dalam masalah produksi.


5

Saya akan mengatakannya lebih karena permintaan tarik bukan satu - satunya tempat Anda melatih orang. Juga, pengembang junior bukan satu-satunya yang mungkin membutuhkan pelatihan dalam permintaan tarik. Kontraktor, kontributor open source, dev dari departemen lain yang tidak terbiasa dengan kode atau standar lokal, dan bahkan programmer veteran kadang-kadang membutuhkan pengingat ketika mereka merasa puas.

Ada sedikit biaya untuk menahan permintaan tarik terbuka untuk sementara waktu. Berikan umpan balik sebanyak atau sesedikit yang Anda suka, oleh sebanyak mungkin orang, lalu tinggalkan sendiri sampai penulis memberi tahu Anda lagi bahwa mereka merasa siap untuk bergabung. Permintaan tarikan adalah alat utama untuk berkomunikasi tentang perubahan kode yang diusulkan, apakah mereka sepenuhnya siap atau membutuhkan banyak pekerjaan.

Beberapa ulasan permintaan tarik ternyata hanya berupa stempel karet, dan beberapa yang merupakan pengiriman eksternal ke tim mungkin membutuhkan waktu satu bulan bolak-balik. Jenis yang pertama bagus ketika Anda bisa mendapatkannya, tetapi itu tidak berarti jenis yang kedua tidak berharga. Mencoba membuat orang mengirimkan permintaan tarikan yang sempurna sepanjang waktu hanya akan membuat frustrasi semua orang.


Terima kasih atas jawaban Anda @ Karl-Bielefeldt. Setuju bahwa beberapa pelatihan dapat diharapkan tetapi pertanyaannya adalah seberapa banyak yang sesuai, hingga tingkat apa. Pernyataan Anda "... apakah mereka sepenuhnya siap atau perlu banyak pekerjaan." Saya akan mengatakan bahwa seorang PR untuk menguasai seharusnya tidak perlu banyak pekerjaan. Banyak pekerjaan menyiratkan cacat desain, cacat implementasi daripada membantu saya menemukan apa yang saya lewatkan. Namun saya setuju dan telah mengalami "Mencoba membuat orang mengajukan permintaan tarikan yang sempurna sepanjang waktu hanya akan membuat frustasi bagi semua orang."
Riaan Schutte

2

Saya selalu merasa bahwa salah satu keunggulan dari seorang pemimpin yang baik adalah seseorang yang memberikan pelatihan tambahan sesuai kebutuhan selama setiap siklus pengembangan. Bagi saya, itu berarti saya tidak hanya mengkodekan diri saya sendiri, atau meninjau kode, tetapi duduk dengan lebih banyak pengembang junior, memasangkan pemrograman dengan mereka untuk membantu mereka menghindari jenis ranjau darat yang telah saya injak.

Terutama, saya tidak punya ilusi bahwa tujuan utama kami adalah pendidikan - bukan. Apakah Anda seorang senior, pemimpin, atau pengembang junior, tujuannya bukanlah membangun Anda. Tujuannya selalu untuk memberikan kode berkualitas kepada pelanggan. Lebih disukai tepat waktu, sesuai anggaran, melakukan apa yang mereka inginkan. Saya mengakui, bagaimanapun, bahwa tidak mungkin bagi saya untuk menyelesaikan semua pekerjaan sendiri, jadi adalah tugas saya sebagai pemimpin untuk membantu semua orang membantu tim berhasil. Dan itu berarti mengenali peluang pelatihan ketika mereka muncul di alam.

Jadi, untuk pertanyaan Anda tentang apakah permintaan tarik adalah tempat untuk melatih junior, saya harus mengatakan bahwa itu tidak biasa untuk momen yang bisa diajar untuk muncul selama ini. Hei, Anda harus berurusan dengan konflik gabungan pertama, mari kita bahas setelah ditinjau. Oh, lihat, Anda tidak menyertakan unit test untuk DAO Anda, kami akan menunda ulasan Anda sampai setelah kami memiliki kesempatan untuk membahas metode baru tersebut. Mengapa menurut Anda akan lebih baik menggunakan primitif ganda dalam perhitungan keuangan ini daripada BigDecimal? Ya, itu tidak biasa.

Jadi, sementara saya akan mengatakan bahwa itu pasti bisa terjadi, tapi itu jelas bukan tujuan utama permintaan tarik. Saya juga tidak merasa ada harapan bahwa kode dalam permintaan tarik adalah produksi siap. Seringkali tidak.

Jika Anda menggunakan fitur dan melepaskan cabang dalam strategi percabangan gaya gitflow, maka permintaan tarikan Anda menjadi sesuatu yang lebih seperti kandidat rilis. Bukan produksi yang siap, tetapi sesuatu yang lebih mendekati itu. Anda tahu kompilasi kode Anda (kanan) dan Anda memiliki covfefe pengujian yang cukup untuk membuat klaim yang layak bahwa itu memenuhi tujuan dari kisah pengguna. Dan karena Anda sudah menjalankan beberapa tes integrasi di lingkungan pengembangan Anda, Anda memiliki demo hebat yang siap untuk digunakan jika Anda diminta untuk mendemonstrasikan perubahan Anda, yang akan Anda lakukan, selama peninjauan PR Anda.

Pada akhirnya, saya merasa bahwa kita harus memberikan bantuan selama peninjauan PR, tetapi bantuan itu tidak ada dalam kode umum. Sebaliknya, ini terkait dengan menyiapkan kode yang diusulkan untuk dimasukkan dengan basis kerja kode kualitas-produksi. PR adalah kesempatan bagi pengembang untuk menunjukkan bahwa mereka memiliki justifikasi untuk, dan pemahaman yang kuat tentang, setiap perubahan yang mereka sertakan dalam PR. Dan bahkan kemudian - bahkan setelah kita menimbangnya dengan unit test, dan demo, dan banyak pertanyaan - masih belum ada harapan bahwa perubahan yang diusulkan siap untuk diproduksi.

Tutup kode setelah semua itu. Tapi kemudian kami membiarkan QA menyiksanya.


Terima kasih atas jawaban Anda @ Michael-Peacock. Apa yang Anda katakan benar untuk perusahaan yang memiliki departemen QA atau penguji terpisah yang membawanya melalui fase berikutnya. Tetapi ketika pengembang adalah penguji juga, PR menyertai semuanya mulai dari pengembangan hingga pengujian hingga penggabungan menjadi master. Dalam alur kerja ini, kode harus sudah siap produksi setelah PR disetujui. Saya kira pertanyaan itu juga sarat dengan asumsi tentang alur kerja apa yang Anda gunakan.
Riaan Schutte

Saya berpendapat bahwa bahkan jika Anda tidak memiliki tim QA yang berdedikasi, maka lebih penting lagi untuk memastikan Anda menambahkan integrasi dan / atau pengujian penerimaan ke alur kerja Anda, dan memberikan waktu untuk pengerjaan ulang potensial jika kode yang digabungkan gagal tes Anda. Anda dapat mengotomatiskan beberapa pengujian penerimaan menggunakan Selenium dan Mentimun untuk mengambil sebagian beban dari pengembang, tetapi saya pikir penting untuk tidak menganggap bahwa kode tersebut siap untuk produksi sampai Anda telah menunjukkannya melalui pengujian.
Michael Peacock

Saya setuju sepenuhnya, oleh karena itu mengapa kita semua kode memerlukan tes yang terkait dengannya. Jika Anda kemudian rebase master sebelum penggabungan Anda dapat yakin bahwa tes lulus dan kode harus bekerja seperti yang diharapkan.
Riaan Schutte

2

Saya ingin berterima kasih kepada semua orang atas kontribusi mereka dan membantu saya memahami apa yang orang katakan tentang topik ini.

Ini adalah jawaban saya setelah umpan balik yang diberikan dan pemahaman saya sekarang didasarkan pada jawaban dan komentar yang diterima. Terimakasih semuanya.

Ringkasan

  • Tidak mengharapkan atau menegakkan permintaan tarikan kelelawar yang sempurna karena ini hanya akan membuat frustasi bagi semua yang terlibat.
  • Tetapi terus menjadikannya tujuan kami untuk Permintaan Tarik yang sempurna.
  • Mengharapkan beberapa jumlah kolaborasi / bantuan dalam permintaan tarik. Bagaimanapun, itulah yang pada dasarnya Anda minta dengan membuat Permintaan Tarik.
  • Jika mendapat sedikit karena cacat desain atau cacat implementasi, habiskan waktu dengan pengembang itu dan lakukan beberapa Program Pairing untuk membangunnya dan mendapatkan kode mereka lebih dekat ke tujuan . Ini adalah peran semua pengembang senior.
  • Junior akan membutuhkan lebih banyak sesi Pemrograman Pair daripada pengembang menengah. Jadi, harap tarik permintaan untuk mencerminkan persyaratan itu.
  • Dorong pengembang untuk mengadakan rapat desain / implementasi sebelum menyentuh kode untuk mengurangi pengerjaan ulang yang diidentifikasi dalam Tarik Permintaan.

1
Ringkasan & jawaban yang bagus. Saya tidak akan tersinggung sama sekali jika Anda memberi diri Anda tanda centang.
RubberDuck

Terima kasih @RubberDuck, tetapi ringkasan saya tidak akan ada tanpa jawaban dan komentar semua orang untuk pertanyaan saya. Bersulang.
Riaan Schutte

0

Bisakah Anda mengatakan lebih banyak tentang budaya perusahaan Anda dalam hal tim teknis? Jika Anda berjuang dengan gagasan kode yang siap untuk produksi ketika pengembang ingin bergabung ke jalur utama, lalu apa yang sebenarnya Anda katakan kepada pengembang Anda? Anda memberi tahu mereka bahwa ketika pekerjaan mereka "selesai", tidak apa-apa jika tidak berhasil? Tidak apa-apa jika itu merusak sistem? Jika mereka menambahkan hutang teknis, mungkin itu baik jika mereka dapat membenarkannya dan mengetahui apa yang mereka lakukan, dan menunjukkan bahwa mereka dapat kembali dan melakukan refactoring nanti. Tetapi jika mereka tidak menyadari mengapa mereka melakukan sesuatu yang berbahaya, berapa kali Anda akan membiarkannya berlalu?

Jika Anda memiliki pengembang junior, beberapa permintaan tarik pertama mereka jelas akan memiliki masalah. Akhirnya mereka harus menguasainya. Jika Anda mendapati bahwa mereka terus memiliki masalah, maka Anda mungkin menugaskan mereka bekerja yang belum siap untuk mereka?

Atau mungkin Anda perlu menyewa junior pengganti dan memberhentikan yang belum bisa mengetahuinya?

Anda tahu apa yang saya lihat? Orang yang bukan pengembang yang kompeten terus bekerja di perusahaan selama bertahun-tahun hanya karena nepotisme. Jadi tentu saja permintaan tarik mereka membutuhkan banyak ulasan. Dalam bahasa Lean, mereka adalah "limbah" - hambatan di tim, dan hambatan di garis bawah.

Jadi, Anda harus memutuskan sendiri: berapa banyak permintaan tarik yang dibutuhkan untuk junior Anda untuk menunjukkan kompetensi, dan apakah Anda memiliki keberanian untuk melepaskan yang tidak?


Terima kasih atas jawaban Anda di @RibaldEddie, Kami berharap para pengembang akan memiliki unit test tertulis, diuji secara manual dan ditinjau pekerjaan mereka sendiri sampai pada titik di mana mereka akan menyatakan bahwa kode ini hebat dan jika diserahkan kepada mereka, mereka akan menggabungkannya menjadi master, tetapi akan mendapatkan 2 pengulas untuk memeriksanya dan mudah-mudahan mengkonfirmasi pernyataan itu. Kami tidak menerima hutang teknis apa pun dan bergerak sepenuhnya dari perbaikan demi solusi. Jadi harapannya adalah bahwa kode tersebut memenuhi persyaratan tersebut.
Riaan Schutte

@Riaan siapa pengulas?
RibaldEddie

Siapa pun dari teknis mengarah ke junior. Biasanya ini adalah satu resensi senior / perantara bersama dengan pengulas junior / perantara. (2 pengulas)
Riaan Schutte

@Riaan kemudian dari waktu ke waktu saya akan mengharapkan anggota tim junior untuk membedakan diri mereka sendiri. Anda akan dapat mengetahui siapa yang teliti dan siapa yang lesu. Saya menemukan pengembangan perangkat lunak yang dilakukan dengan baik adalah kegiatan yang sangat cocok untuk mentalitas yang berorientasi pada detail. Beberapa orang mungkin tidak dapat melakukannya. Anda harus memutuskan apa yang harus dilakukan dengan mereka. Tetapi pada dasarnya Anda harus mengharapkan pengembang yang mengirimkan kode untuk digabungkan yakin bahwa itu berfungsi sebagaimana dimaksud dan siap produksi. Sekalipun Anda memiliki tim QA yang besar dan canggih, para pengembang Anda masih harus PR'ing kode siap-produksi.
RibaldEddie
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.