Daripada berpasangan secara kasar sepanjang waktu, kami menggunakan pemrograman berpasangan secara selektif di tim kami. Saya pikir ini bekerja paling baik dalam keadaan berikut:
- Mengajak anggota tim baru dalam suatu proyek (alih-alih membiarkan mereka mengarungi dokumentasi atau kode sendiri).
- Memiliki orang-orang junior dan senior bekerja bersama (membantu untuk menunjukkan beberapa keterampilan dan trik dari pengembang yang lebih berpengalaman, ditambah lagi memungkinkan anjing-anjing tua untuk belajar trik-trik baru kadang-kadang).
- Ketika seseorang mencoba melacak cacat, sering membantu untuk memasangkan dengan sepasang mata yang baru.
Kapan harus menggunakan program pasangan dan mengapa?
Kapan harus menghindari pemrograman berpasangan? Mengapa?
agile
pair-programming
Paddyslacker
sumber
sumber
Jawaban:
Penelitian yang disusun oleh Laurie Williams menunjukkan bahwa pemrograman pasangan bekerja paling baik pada tim industri saat itu
Dalam pengalaman pribadi saya, saya telah menemukan bahwa rata-rata tim XP saya menghabiskan sekitar 60% dari pemrograman pasangan waktu pengembangan kami. Sisa waktu dihabiskan melakukan pengembangan individu. Tidak jarang berpasangan untuk membuat desain awal, bekerja sendiri pada desain selama beberapa jam, kemudian kembali bersama untuk menyelesaikan bagian kode yang sulit atau sulit.
Saya juga menemukan bahwa pemrograman pasangan paling efektif dalam sekitar 1,5 hingga 2,5 jam blok. Apa pun yang kurang cenderung membutuhkan terlalu banyak overhead untuk pengaturan sementara lebih banyak dan pasangan cenderung menjadi rewel dan lelah. Cranky dan lelah berarti Anda tidak berkomunikasi dengan baik dan mungkin membiarkan cacat masuk ke sistem.
sumber
Pemrograman pasangan telah bekerja untuk saya dalam situasi yang sangat, sangat sedikit.
Di mana Pemrograman Pair Gagal untuk Saya
sumber
Tim saya telah melakukan pemrograman berpasangan sejak awal, jauh sebelum saya bekerja di sana, sebagai bagian dari sebagian besar toko gaya "pemrograman ekstrim". Pemrograman pasangan adalah kondisi default ; orang hanya benar-benar pergi sendiri jika ada angka ganjil, atau kadang-kadang untuk investigasi, terutama yang akan melibatkan bermain-main dengan peralatan bermusuhan dan mencoba membuatnya bekerja.
"Junior / senior" bukan satu-satunya cara untuk pergi. "Menengah / junior" berguna; itu membantu pria tingkat menengah mensintesis pengetahuan yang diperolehnya dengan memaksanya untuk mengkomunikasikannya kepada orang lain. "Menengah / Menengah" menantang dua orang bekerja bersama untuk berbagi pengetahuan, berkomunikasi, dan bekerja sebagai bagian dari tim. Dan bahkan jika Anda memiliki dua orang yang benar-benar senior, kemungkinan mereka memiliki bidang keahlian yang berbeda dan dapat menghasilkan pendekatan yang berbeda. Aspek-aspek berbagi pengetahuan tidak berakhir begitu seseorang dengan samar "mempercepat" proyek. Sebaliknya, pemrograman pasangan adalah lambang organisasi pembelajaran . Teknik dan praktik terbaik baru menyebar dengan cepat.
Pemrograman pasangan juga membantu menjaga kualitas kode (lebih sedikit cacat) dan kewarasan kode (tidak hanya melakukan apa yang ingin, tetapi melakukan apa yang seharusnya ... idealnya tanpa turun kelinci multi-minggu - lubang melakukan hal yang salah, atau dua hal benar berbeda yang akan konflik dengan liar). Ini membantu para programmer mempertahankan fokus mereka: di sini di jantung Silicon Valley, rumah dari 80 jam kerja seminggu, kita dapat bekerja hanya selama 40 jam seminggu karena kita melakukan pengodean intensif selama delapan jam sehari, mengubah berbagai hal satu sama lain. (Juga, jika Anda pergi lebih lama melakukan pemrograman berpasangan, Anda mungkin akan mundur. Atau setidaknya terbakar.) Ini bagus untuk keseimbangan kerja / kehidupan, dan juga membantu organisasi Anda ketika penting untuk melakukan perputaran cepat (perputaran latensi rendah, khususnya).
Ini tidak semua, sepenuhnya, 100% buah persik dan krim; Saya menemukan bahwa pemrograman berpasangan kadang-kadang merupakan hambatan bagi aplikasi proses otak intuitif saya yang berguna pada masalah-masalah tertentu. Baru-baru ini, pada tugas kebocoran memori, saya menghabiskan beberapa waktu baik dengan dan tanpa pasangan; tanpa satu, saya merasa lebih bebas untuk main-main dan mencoba eksperimen tanpa benar-benar tahu persis bagaimana menjelaskan apa yang saya lakukan pada suatu saat. Ada juga beberapa keuntungan dalam bekerja secara tunggal, mampu melakukan tangen dan melakukan refactoring liar tertentu (dihargai dalam metodologi XP) dengan kemauan.
Tetapi semua mengatakan, manfaatnya jauh lebih besar daripada biaya, dan pemasangan pasangan telah berhasil dengan baik bagi kami: dari tahap awal hingga akuisisi oleh perusahaan yang lebih besar, dan integrasi kami selanjutnya. (Omong-omong, pemrograman pasangan telah membantu kami menjaga kesinambungan budaya melalui ekspansi dan meskipun ada sedikit pergantian).
(Kami mengembangkan alat perangkat lunak di Perl, ~ $ 4.000 - $ 40.000 daftar harga.)
sumber
Saya belum pernah bekerja dalam pengaturan "Pair Programming", namun saya dapat mengklaim telah menjadi bagian dari tiga keadaan yang Anda daftarkan. Skenario yang Anda sebutkan tampaknya lebih "pemrograman biasa" dengan fase membantu / pelatihan dilemparkan. Apakah kita tidak melakukan semua ini sebelum "pemrograman berpasangan" muncul? Pemrograman Berpasangan, saya anggap akan membutuhkan pendekatan yang lebih berkomitmen di mana proses berbagi dalam tim tidak berhenti begitu Anda menangani tugas atau masalah langsung yang dihadapi. Tapi kemudian inilah yang saya "pikirkan" bukan yang saya "tahu".
Secara Pribadi untuk Pemrograman Pasangan Saya ingin bekerja dalam sebuah tim di mana saya mendapat kesempatan untuk belajar dan berbagi pengetahuan saya. Tim yang tidak seimbang di mana semua orang yang bekerja bersama Anda berada beberapa mil di depan Anda, atau kemudian jauh di bawah par bisa menjadi sangat tidak menarik dengan cukup cepat. Juga, saya akan takut untuk bekerja dengan orang-orang yang memiliki keyakinan dan sulit diyakinkan.
sumber
Kami telah bereksperimen dengan pemrograman Pair di tim kami selama beberapa bulan terakhir. Saya merasa ini cukup berguna ketika Anda mengerjakan sesuatu yang baru (teknologi baru, fitur baru dll) karena Anda dapat dengan cepat memantulkan ide dengan orang lain dari tim dan membuatnya divalidasi / tidak valid. Juga, tinjauan sejawat berdampingan membantu mencegah bug keluar.
Rekan satu tim lain mencoba menggunakan pemrograman berpasangan dengan tes untuk melakukan ATDD dan mereka cukup senang dengan hasilnya (menurut perhitungannya peningkatan biaya dev 20% menyebabkan penurunan sekitar 50% dalam waktu pengujian)
sumber
Selamat malam
banyak kali kami berdebat tentang praktik Pemrograman Ekstrim dan pemrograman pasangan . Kembali ke masa lalu, kita dapat memahami bahwa pemrograman adalah kegiatan solo karena programmer membutuhkan konsentrasi dan isolasi. Pemrogram pada waktu itu berada di zona , keadaan mental di mana mereka dapat secara efisien fokus pada kode dan membuat keputusan yang bagus dan kreatif.
Pemrograman pasangan tampaknya juga berisiko jika Anda menganggap satu programmer saling mengganggu. Di sisi lain, lebih sulit untuk menyela dua programmer yang bekerja bersama. Pada pemrograman Solo misalnya, akan lebih mudah untuk terganggu, sehingga hampir tidak mungkin bagi programmer solo untuk tinggal di "zona".
Kualitas kode adalah hal lain ketika batas waktu hampir tiba. Orang-orang akan selalu tergesa-gesa, menjadi pasangan programmer atau programmer tunggal: mereka tidak akan menerapkan praktik terbaik tertentu dan hanya akan melupakan pengujian unit.
Saya akan tetap dengan pemrograman pasangan. Karena ketika itu beresiko, ketika satu programmer hilang, Anda akan selalu memiliki orang lain untuk mendokumentasikan proses dan mengajar semua orang bagaimana cara kerjanya.
sumber
Mengerjakan sesuatu dari kompleksitas non-sepele cenderung menjadi kandidat yang baik untuk pemrograman pasangan sehingga banyak orang memahami kode daripada hanya satu pengembang yang mengetahui bagian dari basis kode. Kasus lain adalah ketika seseorang ingin mentransfer beberapa keterampilan. Sebuah contoh di sini mungkin memiliki seseorang yang benar-benar hebat dalam tes unit berpasangan dengan seseorang yang tidak begitu akrab dengan konsep dan dengan demikian membantu untuk mendapatkan kebiasaan awal pada sesuatu.
Adapun di mana untuk menghindari pemrograman pasangan, tugas-tugas pekerjaan kasar yang langsung di mana akan lebih baik untuk membagi pekerjaan menjadi dua kelompok dan biarkan masing-masing pengembang melakukan beberapa pekerjaan secara terpisah untuk menyelesaikan pekerjaan. Beberapa tugas hanya memerlukan sedikit pengetikan tetapi tidak terlalu besar sehingga layak untuk menghabiskan beberapa jam mencoba menemukan cara yang lebih baik untuk melakukannya seperti yang bisa dilakukan jika setiap pengembang mengambil pendekatan brute force untuk beberapa orang. jam.
sumber