Pair Swapping: Apa kelebihan dan kekurangannya?

15

Ide umum yang dianut oleh sebagian besar teori Agile / XP tampaknya pasangan harus bertukar secara teratur. Misalnya setiap programmer harus menukar pasangan sekali sehari; setengah orang bertukar pada awal hari, setengah orang bertukar setelah makan siang: karena faktor-faktor eksternal seperti rapat, liburan dan sejenisnya kebanyakan orang cenderung membalik waktu swap mereka sekali atau dua kali per minggu sehingga konfigurasi pasangan mendistribusikan cukup merata di seluruh tim.

Satu alasan di balik sering bertukar adalah bahwa pengetahuan tersebar di antara tim dengan cepat dan merata, daripada memiliki keterampilan dan pengetahuan khusus yang terkonsentrasi pada individu-individu tertentu - menyiratkan bahwa pekerjaan dapat berlanjut dengan lancar jika orang pergi atau meninggalkan perusahaan. Alasan lain, yang merupakan semacam akibat wajar dari dogma seputar pemrograman pasangan itu sendiri, adalah bahwa setiap kali seseorang bertukar pada Anda mendapatkan review kode baru dengan sepasang mata baru, sehingga hanya dapat meningkatkan kualitas kode.

Kedua pernyataan itu terdengar masuk akal; dari sudut pandang manajemen sepertinya Anda mendapatkan peningkatan dalam stabilitas dan kualitas, dan karena itu sering bertukar teori standar di sebagian besar buku Agile / XP yang saya lihat.

Jadi, ketika benar-benar dipraktikkan, apa yang sebenarnya orang pikirkan tentang bertukar pasangan

  • Sudut pandang seorang programmer?
  • Sudut pandang seorang manajer?

Dan

  • Apa yang harus menentukan kapan seseorang bertukar pasangan?

sumber
Apakah ini sama dengan "Pair Programming?"
Robert Harvey
@ Robert Harvey - Yah itu adalah salah satu aspek dari pemrograman pasangan. Setelah sebuah tim memutuskan bahwa mereka akan memprogram berpasangan (untuk sebagian dari hari kerja mereka), maka mereka perlu memutuskan bagaimana mengatur pemrogram menjadi berpasangan, yaitu ketika satu programmer harus meninggalkan sepasang (yang lain harus bergabung pada waktu yang sama ). Itu adalah "Pair Swapping".
+1 untuk pertanyaan hebat. Sedihnya, saya pikir cukup sulit untuk menemukan toko yang berpasangan secara teratur, apalagi cukup untuk memiliki data tentang bertukar pasangan. Mudah-mudahan saya salah tentang ini dan Anda mendapatkan beberapa tanggapan yang baik, saya sangat tertarik mendengarnya.
Jesse McCulloch
2
Saya pribadi akan menemukan pasangan bertukar sangat mengganggu. Mencoba berurusan dengan begitu banyak kepribadian dan tingkat keterampilan yang berbeda dalam jarak yang dekat akan menghasilkan terlalu banyak disonansi kognitif.
Robert Harvey
@Jesse McCulloch - Saya bekerja di tempat yang hanya memasangkan program dan bertukar cukup banyak seperti yang dikatakan oleh sebuah tim. Saya juga bekerja di lingkungan solo yang murni dan memiliki perspektif yang cukup bagus tentang kontrasnya. Namun, saya ingin mendengar pendapat orang lain karena saya ingin melihat apakah mereka cocok dengan pendapat saya tanpa terlalu memengaruhi mereka.

Jawaban:

4

Pemrograman pasangan sulit.

Itu sulit karena ini bekerja paling baik ketika 2 orang yang terlibat dekat dalam tingkat keterampilan dan itu bisa sulit di beberapa lingkungan kerja. Ini bisa lebih sulit ketika Anda bertukar karena Anda perlu menemukan orang lain dengan tingkat keterampilan yang sesuai dan kemudian membawa mereka dengan cepat pada masalah saat ini. Keuntungannya adalah semakin banyak orang yang terpapar pada setiap potongan kode yang telah dipasangkan. Ini akan menyebabkan lebih sedikit waktu di mana kode tidak dapat diperbaiki karena tidak ada yang cukup tahu tentang hal itu. Ini juga harus menyebarkan kepemilikan kelompok dan kemampuan bagi siapa pun untuk mengambil bagian dari pekerjaan apa pun.

Saya telah menemukan bahwa bahkan di lingkungan di mana pemasangan dilakukan, bertukar pasangan tidak sebanding dengan biayanya. Namun, ini mungkin karena tugas kami tidak pernah memakan waktu lebih dari ~ 1,5 hari. Kami menemukan manfaat besar untuk memecah tugas menjadi tidak lebih dari ~ 1,5 hari kerja. Pertukaran pasangan mungkin lebih masuk akal dalam konteks tugas yang berjalan lebih lama.

dietbuddha
sumber
Secara pribadi, saya menikmati berpasangan dengan orang-orang di semua tingkatan. Kadang-kadang saya belajar, kadang-kadang saya mengajar, dan kadang-kadang kita hanya menyelesaikan sesuatu. Tetapi belajar dan mengajar membangun kapasitas tim jangka panjang, yang saya pikir sama pentingnya dengan memeriksa fitur.
William Pietri
Anda mungkin berpikir begitu, tetapi manajer proyek yang melihat tenggat waktunya menguap karena keahlian Anda terbiasa melatih orang-orang pada masanya daripada mengolah kode secepat yang Anda tidak akan setuju. Dan itulah cara kebanyakan proyek beroperasi, tidak ada waktu untuk melatih orang untuk memiliki keterampilan yang dibutuhkan untuk melakukan pekerjaan sehingga junior dibiarkan menggantung, baik hanya untuk mengambil menyalahkan atas anggaran yang berlebihan.
jwenting
@ William Pietri: Menurut pengalaman saya, berpasangan bukanlah format yang baik untuk mengajar. Saya tidak punya masalah membawa seseorang dan memandu mereka melalui kode untuk menjelaskan kepada mereka apa yang terjadi. Namun, itu bukan pemrograman berpasangan.
dietbuddha
@jwenting: Jika Anda mengatakan pemrograman pasangan tidak akan bekerja dengan baik di toko-toko yang berfokus pada tenggat waktu omong kosong tentang kualitas dan keberlanjutan, saya tidak akan berdebat. Kiat saya: bekerja di tempat yang tidak gila.
William Pietri
@dietbuddha: Bekerja untuk saya! Cara tercepat bagi saya untuk belajar bahasa baru, kerangka kerja, atau perpustakaan adalah berpasangan dengan orang-orang yang mengenalnya dengan baik. Dan saya tahu tidak ada cara yang lebih baik untuk membuat noob lebih cepat daripada berpasangan. Misalnya, ini mengambil pengalaman: slesinsky.org/brian/code/starting_xp.html
William Pietri
3

Saya seorang programmer dan manajer. Inilah pendapat saya:

Bertukar secara teratur sangat bagus. Saya suka bertukar 2-4 kali per hari, yang kira-kira secepat yang saya kira Anda bisa lakukan. Bagi kami, itu terjadi pada titik-titik alami: umumnya makan siang dan sore hari. Berganti setiap atau dua hari mungkin baik-baik saja, tetapi saya khawatir akan jauh lebih lama dari itu. (Saya pernah mendengar satu tempat bertukar jarang setiap enam minggu, yang saya pikir gila; setelah banyak waktu bersama Anda akan siap untuk menikam orang suci.)

Sebagai seorang programmer saya suka itu karena saya mendapatkan perspektif baru, bisa memeriksa area lain dari kode, dan dapat tetap dengan atau pindah dari sesuatu yang saya inginkan. Saya baru-baru ini beralih dari solo coding kembali ke berpasangan, dan saya senang: Saya belajar lebih banyak, bersenang-senang lebih banyak, dan menyelesaikan lebih banyak.

Sebagai seorang manajer saya pikir ini hebat karena memecahkan banyak faktor truk dan masalah kemacetan. Misalnya, akhir pekan ini saya mengambil akhir pekan yang panjang untuk pernikahan seorang teman, dan saya tidak khawatir sama sekali: semua yang saya kerjakan juga telah dikerjakan oleh orang lain. Saya juga berpikir itu sangat membantu anggota tim untuk menghargai kekuatan dan kelemahan satu sama lain, dan untuk mendorong kepemilikan kode kolektif.

Mengenai siapa yang tetap dengan pekerjaan saat ini, saya merasa seperti itu terutama terserah orang-orang yang terlibat. Terkadang Anda ingin melihat sesuatu, dan kadang-kadang Anda siap untuk perubahan. Kami juga kadang-kadang bertukar untuk membawa keahlian, atau agar seseorang dapat mempelajari sesuatu yang mereka minati. Kami mencoba untuk menjaga unit kerja kami cukup kecil (0,5-2,0 pasangan-hari), jadi itu bukan masalah besar, tetapi pertukaran itu terus berlanjut .

William Pietri
sumber
Bagi saya, saya harus mengatakan bahwa bertukar hanya baik ketika a) Saya tidak menikmati pengkodean dengan orang yang saya kodekan, b) Saya tidak suka cerita yang sedang saya kerjakan (seperti memperbaiki tali tambang) bug memori lama). Kalau tidak, saya ingin tetap aktif dari awal hingga akhir. Secara pribadi saya berpikir bahwa bertukar pasangan mengurangi kualitas kode karena kode yang baik harus memiliki visi yang jelas, semakin banyak orang yang bekerja pada satu bagian, semakin berantakan visi itu menjadi. Sedangkan untuk berbagi pengetahuan, saya akan mengatakan bahwa kebanyakan orang mendapatkan sedikit gagasan tentang apa yang terjadi, tetapi tidak ada yang benar-benar mengerti apa pun.
@ B Tyler - Saya pikir basis kode adalah karya intelektual bersama, jadi Anda harus memiliki visi yang jelas yang juga merupakan visi bersama. Itulah bagian dari mengapa saya pikir ini penting untuk bertukar: dibutuhkan banyak interaksi dan diskusi untuk mengembangkan pendekatan bersama yang solid.
William Pietri
1

Okie, inilah jawabannya dari seorang programmer agile / xp pragmatis yang memproklamirkan diri. Saya telah memasangkan pemrograman selama lebih dari dua tahun sekarang. Jika pemrograman pasangan baik, bertukar pasangan sering (idealnya setiap dua jam, jika tidak setiap setengah hari). Di lokasi kantor kami, kami membuat titik untuk bertukar pasangan setiap hari (biasanya) atau setiap dua hari (dalam kasus yang lebih buruk). Melakukan hal ini dengan sendirinya dapat memberi kita banyak kepercayaan pada kualitas kode yang kita komit dan pelajari atau mengambil kesimpulan yang kita miliki dengan setiap rotasi pasangan (kita tahu bahwa tinjauan kode itu baik, semakin banyak semakin baik dan semakin awal semakin bagus. Inilah yang mencapai "pemrograman pasangan, termasuk praktik bertukar pasangan" ).

Mengapa kita tidak berganti pasangan setiap dua / empat jam? Yah, sebenarnya saya telah berada di tim yang berlatih ini juga. Ini tentu cara yang lebih keren dan lebih produktif. Tapi di sini masalahnya, interval waktu bertukar pasangan tidak boleh menjadi aturan, itu harus terjadi dengan sendirinya; hanya dengan begitu manajer atau bisnis dapat melihat manfaatnya.

Saya telah menyaksikan dan mengalami ini. Saya sekarang penginjilnya. Tidak ada teori. Agak pragmatisnya :) Selamat berpasangan dan bertukar pasangan.

karthiks
sumber
1
Sayangnya saya sekarang benar-benar dikonversi ke pendapat bahwa pemrograman pasangan secara umum adalah ide yang buruk; sering berganti pasangan dalam pemrograman berpasangan hanya membuat segalanya lebih buruk. Saya sudah mendengar semua teori dan banyak mencobanya dalam praktek dan saya hanya berpikir bahwa itu sangat tidak efisien, jauh lebih membosankan dan membuat frustrasi daripada pemrograman tunggal dan menghasilkan kode kualitas yang lebih rendah.