it-swarm-id.com

Kapan pair programming bekerja? Kapan menghindarinya?

Daripada berpasangan secara kasar, kami menggunakan pemrograman berpasangan secara selektif di tim kami. Saya pikir itu 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?

55
Paddyslacker

Penelitian yang disusun oleh Laurie Williams menunjukkan bahwa pemrograman pasangan bekerja paling baik pada tim industri saat

  • Pasangan mengerjakan spesifikasi, desain, dan kompleks tugas pemrograman - percobaan menunjukkan bahwa tidak ada peningkatan kualitas yang ditunjukkan saat mengerjakan tugas-tugas sederhana berpasangan tetapi mungkin ada peningkatan kecepatan. Perhatikan juga bahwa pasangan "pemrograman" sering kali menyertakan kegiatan selain menulis kode.
  • Setiap individu dalam suatu pasangan memiliki tingkat keahlian yang sama - sementara pemrograman pasangan sangat bagus untuk pelatihan, pasangan paling terlibat ketika mereka hampir sama. tingkat.
  • Peran diputar secara teratur - berputar secara teratur membantu menjaga kopilot saat ini tetap aktif karena individu cenderung berkontribusi paling banyak ketika mereka mengemudi atau merasa mereka akan mengemudi.
  • Pasangan berputar secara teratur - tim telah menyatakan kenyamanan dalam mengetahui tentang berbagai bagian sistem yang sedang mereka bangun. Rotasi pasangan membantu dengan transfer pengetahuan yang mengurangi risiko tertentu dalam proyek. Dalam pengaturan akademik pasangan sering ditugaskan, namun industri mereka umumnya ditugaskan sendiri selama stand-up. Dalam kedua kasus, pasangan paling efektif ketika kedua individu adalah peserta yang bersedia melihat nilai dalam kegiatan pemasangan.

Dalam pengalaman pribadi saya, saya telah menemukan bahwa rata-rata tim saya XP menghabiskan sekitar 60% dari pemrograman pasangan waktu pengembangan kami secara rata-rata. Sisa waktu dihabiskan untuk melakukan pengembangan individu. Tidak jarang berpasangan untuk membuat desain awal, bekerja sendiri pada desain selama beberapa jam, lalu 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.

47
Michael

Pemrograman pasangan telah bekerja untuk saya dalam situasi yang sangat, sangat sedikit.

Di mana Pemrograman Pair Gagal untuk Saya

Ceritanya adalah pemrograman pasangan tidak berfungsi bagi saya sebagai cara utama pengembangan perangkat lunak. Saya dapat memasangkan program selama sehari, atau mungkin seminggu, terutama jika kami fokus pada masalah tertentu. Tapi setelah itu? Saya selesai. Roti panggang. Saya tidak ingin melihat siapa pun, berbicara dengan siapa pun, dan saya perlu setidaknya beberapa hari di gua sampai saya cocok untuk ditemani manusia lagi.

Itu adalah kisah yang menyedihkan, tetapi lucunya saya sekarang jauh lebih bahagia dengan bagaimana ini berakhir. Saya dengan senang hati bekerja pada sebuah kontrak tempat saya bekerja dari rumah atau dari sebuah kedai kopi, dan saya telah menjalin pertemanan baru dan menjelajahi lebih banyak tentang San Francisco daripada yang pernah saya bayangkan. Saya memiliki sepeda dan laptop, dan selama saya memenuhi tenggat waktu saya dan memeriksa kode secara teratur, waktu saya adalah milik saya.

Saya akan membuat daftar masalah besar yang saya miliki dengan pemrograman pasangan di muka dan memberi Anda detail dan anekdot nanti.

  1. Pisahkan fokus.
  2. Tidak ada eksperimen.
  3. Tidak ada nada tinggi.
  4. Tidak ada kebanggaan dalam kepemilikan.
  5. Tidak ada jalan keluar...

... Saya bertanya kepada rekan kerja saya apakah mereka melihat apa yang saya lihat, jika saya kehilangan sesuatu, apa saja - saya tidak melihat bagaimana ini bisa bekerja, bagaimana orang bisa terus melakukan ini. Mereka berkata saya baik-baik saja, bahwa hanya butuh waktu untuk menetap dan menyesuaikan diri. Sulit bagi semua orang pada awalnya.

Akhirnya, saya mundur ke diri sendiri. Di antara sakit kepala yang menyilaukan, insomnia, dan hentakan, kebutuhan yang tidak terpenuhi untuk menulis kode, saya berhenti merespons masukan. Saya bisa menatap layar dan tidak melihat apa pun. Seseorang dapat berbicara dengan saya secara tak terduga dan saya tidak akan mendengarnya. Saya memenuhi persyaratan hafalan pekerjaan saya, tetapi saya tidak ada di sana. Saya telah menggunakan semua yang baru saja saya tunjukkan untuk hari itu. Saya mulai memeriksa iPhone ketika mitra saya yang lain mengetik.

Akhirnya - hanya tiga bulan kemudian, dan untuk pertama kalinya - saya dipecat karena tidak cocok dengan tim saat memasangkan pemrograman.

Tidak sendiri

Saya menulis ini bukan hanya untuk memahaminya, tetapi juga untuk dapat membicarakannya. Ada anggapan bahwa pemrograman pasangan bekerja untuk kebanyakan orang dan jauh lebih mudah dan lebih cepat daripada pemrograman solo. Ini mungkin atau mungkin tidak demikian, tetapi sebagai praktik jangka panjang, pemrograman pasangan tidak bekerja untuk saya. Ada banyak orang lain yang membuat pemrograman berpasangan juga tidak berfungsi. Kami juga penting ...

34
Will Sargent

Tim saya telah melakukan pemrograman berpasangan sejak didirikan, jauh sebelum saya bekerja di sana, sebagai bagian dari sebagian besar toko gaya "pemrograman ekstrim". Pemrograman pasangan adalah keadaan 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 secara 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 (cacat lebih sedikit) dan kewarasan kode (tidak hanya melakukan apa yang ingin, tetapi melakukan apa yang harus ... idealnya tanpa turun kelinci-lubang multi-minggu melakukan hal yang salah, atau dua hal benar berbeda yang akan konflik 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 lebih lama melakukan pemrograman pasangan, Anda mungkin akan mundur. Atau setidaknya kehabisan tenaga.) Ini bagus untuk keseimbangan kerja/kehidupan, dan juga membantu organisasi Anda saat penting untuk memiliki perputaran cepat (perputaran latensi rendah, khususnya).

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) pada 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 mempertahankan kesinambungan budaya melalui ekspansi dan meskipun ada sedikit pergantian).

(Kami mengembangkan alat perangkat lunak di Perl, ~ $ 4.000 - $ 40.000 daftar harga.)

10
user2348

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 reguler" dengan fase membantu/pelatihan dilemparkan. Apakah kita tidak melakukan semua ini sebelum "pemrograman pasangan" muncul? Pemrograman Pair, saya anggap akan membutuhkan pendekatan yang lebih berkomitmen di mana proses berbagi dalam tim tidak berhenti begitu Anda menangani tugas atau masalah langsung di tangan. Tetapi kemudian inilah yang saya "pikirkan" bukan apa yang saya "tahu".

Secara Pribadi untuk Pemrograman Pasangan Saya ingin bekerja dalam 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.

4
Preets

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 dalam 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)

2
Amit Wadhwa

Selamat malam

berkali-kali kami berdebat tentang praktik Extreme Programming dan pair programming. Kembali ke masa lalu, kita dapat memahami bahwa pemrograman adalah kegiatan solo karena programmer membutuhkan konsentrasi dan isolasi. Programmer pada waktu itu berada di zone, 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 pemrogram saling mengganggu. Di sisi lain, lebih sulit untuk menyela dua programmer yang bekerja bersama. Pada pemrograman Solo misalnya, akan lebih mudah terganggu, sehingga hampir tidak mungkin bagi programmer solo untuk tetap berada 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 datang ke risiko, ketika satu programmer hilang, Anda akan selalu memiliki orang lain untuk mendokumentasikan proses dan mengajar orang lain bagaimana cara kerjanya.

1
Junior M

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 tempat untuk menghindari pemrograman berpasangan, menggerutu tugas-tugas pekerjaan 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 perlu 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.

1
JB King