Seberapa umum pemrograman pasangan di tempat kerja?

16

Saya selalu tertarik dengan pemrograman pasangan, tetapi dalam pengembangan 12 tahun saya tidak pernah bekerja di tempat mereka menggunakan praktik ini, jadi saya selalu skeptis tentang bagaimana orang melihatnya.

Saya bertanya-tanya apakah ini karena uang / waktu (bos berambut runcing melihat dua orang di satu komputer bekerja pada kode yang sama !!!! beraninya mereka!) Atau karena alasan lain?

ozz
sumber
8
Saya pikir PHB mungkin benar dalam situasi ini. Dua orang (dan karenanya dua gaji) untuk satu output pada dasarnya adalah keputusan bisnis yang buruk. Tidak ada banyak kasus di mana pemrograman berpasangan lebih produktif daripada individu, setidaknya tidak "penuh waktu" - jadi itu tidak banyak dilakukan di luar membimbing anggota staf baru atau bersama-sama bekerja pada masalah tertentu.
TZHX
3
Sangat sulit meyakinkan bos berambut runcing bahwa ini memiliki nilai.
Walter
3
Untuk kode baru, saya pikir pemrograman pasangan memiliki nilai besar. Iterasi pertama mungkin membutuhkan jumlah waktu yang sama, tetapi IME Anda menghabiskan waktu debug jauh lebih sedikit. Dan ketika dua orang mengetahui kode yang sama, debugging menjadi lebih mudah, karena mereka dapat melihat secara bersama-sama. "Bola mata yang diberikan cukup, setiap bug transparan."
Michael K
1
@Michael, tidak selalu, tapi kadang-kadang saya berpikir memasangkan kode warisan bisa berguna. Ini dapat mendobrak silo dan / atau mengurangi biaya refactoring. Yang mengatakan, saya sepenuhnya setuju dengan Anda.
DevSolo
5
@TZHX: "Dua orang untuk satu output adalah bisnis yang buruk". Itu adalah argumen yang cacat serius dan Anda tahu itu (seperti membayar programmer per baris kode). Pemrograman pasangan adalah topik yang kompleks dan tidak boleh diabaikan begitu saja.
Martin Wickman

Jawaban:

20

Saya sudah memiliki pertunjukan yang sama selama 15 tahun dan kami baru-baru ini (12-18 bulan terakhir) mulai mengadopsi teknik Agile. Di mana pemrograman pasangan digunakan, cerita hasil / fitur telah diimplementasikan tepat waktu tanpa cacat. Saya masih berpikir itu belum cukup sering digunakan.

Sebelum adopsi Agile kami, satu pengembang lain dan saya telah berbagi keyboard dari waktu ke waktu selama bertahun-tahun jarang (mungkin sekali setiap 3-4 bulan). Tim manajemen kami tampak enggan tetapi selalu puas dengan pasangan informal kami karena biasanya dilakukan beberapa hal berikut:

  • mengurangi silo di tim (kemenangan besar ketika tim adalah 6-8 devs)
  • kode yang dihasilkan dengan lebih sedikit cacat
  • masing-masing dev biasanya mengambil skill darinya

Saya akan mengatakan manajemen enggan tetapi jika Anda dapat mengambil langkah kecil dan menunjukkan bahwa fitur lebih baik setelahnya (penghematan biaya) dan / atau masing-masing (atau satu) mengambil beberapa keterampilan (membayarnya ke depan), Anda dapat mengambil tenaga jika Anda menemukannya sebagai praktik yang cocok untuk Anda atau tim Anda.

DevSolo
sumber
DevSolo wawasan yang luar biasa, terima kasih telah berbagi. Saya kira Anda mungkin memiliki tim yang cukup stabil (pergantian personil yang rendah?)
ozz
Sama sama. Omset kami sangat rendah ... 4 dari kami telah berbagi kantor yang sama selama 15+ tahun melalui 4 relokasi (di 4 gedung dan 2 negara bagian)!
DevSolo
Ironisnya, alias Anda adalah 'DevSolo';) nb pengalaman saya setuju dengan Anda
ChrisAnnODell
11

Dugaan saya adalah bahwa mungkin akan ada banyak hambatan dari pengembang. Apakah Anda ingat dipaksa bekerja dengan orang-orang yang mungkin bukan orang yang paling termotivasi di dunia selama kuliah atau bahkan sekolah menengah? Orang-orang itu masih ada. Kecuali, Anda memiliki tim yang terdiri dari semua orang "top-notch", jenis pengaturan ini akan menimbulkan permusuhan dalam grup.

Pemda
sumber
Pemda yang sangat benar!
ozz
2
+1, sayangnya. Kerja tim adalah keterampilan yang harus Anda kembangkan, dan jika Anda tidak mau, Anda tidak bisa. Mungkin itulah yang harus dilakukan oleh manajer programmer - temukan struktur tim yang mempromosikan produktivitas terbanyak dengan orang yang mereka miliki.
Michael K
4
Profesi ini membutuhkan menjaga ego. Ini tidak selalu mudah, tetapi hasilnya akan sangat bermanfaat.
DevSolo
@DevSole ... apa hubungannya dengan jawaban saya sebenarnya?
Pemdas
@Perndas, saya berasumsi, mungkin salah, bahwa perlawanan akan disebabkan oleh ego. Setidaknya ketika saya melihatnya, itu tampaknya menjadi alasannya. Saya hanya melihat 2 (yang saya ingat) devs sebenarnya menolak ini. Ego seseorang tidak bisa muat di ruangan, yang lain memiliki masalah dengan kepercayaan diri.
DevSolo
9

Belum melakukannya secara resmi, tetapi setiap kali saya macet, saya akan memanggil dev dan kami berdua akan mengerjakan solusi bersama. Ini adalah cara yang bagus untuk memantulkan ide, biarkan satu orang berpikir sementara yang lain mengimplementasikan, jadi Anda tidak kehilangan alur pemikiran karena Anda mengetiknya.

Berharap itu dilakukan lebih banyak.

CaffGeek
sumber
4
Alat lain untuk digunakan, jika Anda tidak terbiasa, disebut "Rubber Ducking". Pada dasarnya, letakkan benda di atas meja Anda seperti bebek karet (milik Anda benar-benar menggunakan mainan Yoda) dan jelaskan masalahnya. lihat c2.com/cgi/wiki?RubberDucking
DevSolo
Saya menggunakan orang yang duduk di sebelah saya sebagai gantinya ... kami tidak bisa meletakkan barang-barang di meja kami.
CaffGeek
Serius?
Michael K
@Michael ... Anda tidak tahu aturan yang kami miliki di sini. Namun, beberapa hal baik melebihi semua yang buruk ... nyaris.
CaffGeek
Menyedihkan mendengar aturan-aturan yang tidak masuk akal itu diterapkan oleh para pemrogram (Itu bodoh sekali, bukan begitu? Mereka harus mengerahkan upaya ekstra untuk membuat kita senang menyeimbangkan itu)
Zekta Chan
9

Saya tidak peduli:

1 - Saya suka mendengarkan musik saya saat coding. Tidak semua orang ingin mendengar Slayer meledak di telinga mereka.

2 - Saya dibesarkan mengingat melihat ke atas bahu orang sangat kasar dan menjadi sangat tidak nyaman ketika orang melakukannya.

3 - Saya berpikir sangat cepat dan ketika saya berada di utas solusi, ketika saya mulai menemukan jawaban, terganggu adalah hal terakhir yang saya butuhkan.

4 - Saya tidak dapat mengambil jeda sesekali untuk membaca dengan cermat forum dan newsgroup. Beberapa orang mungkin berpikir itu tidak pantas, tetapi saya merasa sangat penting untuk perbaikan saya yang berkelanjutan. Kadang-kadang saya terlalu terganggu, tetapi secara umum manfaat dari peningkatan pengetahuan saya lebih besar daripada hit pada produktivitas saya.

Saya kira itu mungkin berbeda di tim lain, tetapi beberapa kali ketika saya benar-benar bingung oleh sesuatu dan PERLU membantu saya hampir selalu orang yang akhirnya datang dengan solusi. Saya benar-benar bagus dalam apa yang saya lakukan tetapi saya pikir mungkin ada lebih banyak terjadi ... tidak yakin, setidaknya saya menemukan bahwa saya lebih baik hanya menyelesaikan masalah-masalah sulit dan umumnya lebih baik melakukannya sendiri. Mungkin terdengar sombong, tapi itu tidak membuatnya salah.

Saya telah mempertimbangkan bahwa itu mungkin benar-benar membantu orang lain mengambil beberapa teknik saya, tetapi, dengan mempertimbangkan # 3, mereka hampir tidak dapat mengajukan pertanyaan tanpa merusak pemikiran saya.

Semua yang dikatakan, saya sudah mencobanya dari waktu ke waktu. Terkadang memiliki manfaat kecil tetapi saya tentu tidak dapat melihatnya sebagai hal yang konsisten. Sistem lone-wolf bekerja untuk saya dan tampaknya bekerja untuk tim.

Edward Strange
sumber
2
@Noah, hanya berdasarkan # 2, saya tidak yakin apakah Anda memahami konsep pemrograman pasangan. Idenya bukan untuk melihat dari balik bahu. Idenya, seperti yang telah saya praktikkan, adalah membagikan PC untuk bekerja bersama-sama. Ini bukan pemrograman master / slave, ini pemrograman rekan. Mungkin nanti adalah istilah yang lebih baik untuk itu ...
DevSolo
Ini sangat valid. Beberapa orang hanya ingin dibiarkan sendiri untuk mencari tahu sendiri.
MattC
Dan juga, +1 untuk headphone. Saya meledakkan logam dan / atau kesurupan sepanjang hari dan menjadi sangat kesal ketika orang berbicara kepada saya tentang hal-hal. Tidak bisakah mereka menunggu sampai lagu favorit saya selesai? : D
MattC
2
@Noah: Membaca daftar Anda, sepertinya Anda kehilangan poin yang lebih baik dari pemrograman pasangan. Saya tidak mengatakan itu untuk semua orang, dan tentu saja butuh waktu dan usaha untuk beralih dari mode koboi ke mode berbagi. Sama seperti itu membutuhkan waktu belajar bagaimana melakukan TDD dengan benar (atau praktik lincah lainnya dalam hal ini).
Martin Wickman
1
lanjutan ...: Dengan "senior" yang berarti Anda mungkin bukan orang yang melakukan kode, tetapi membantu pengembang yang lebih junior menghasilkan saran. Saya juga bukan penggemar terbesar ide pemrograman pasangan, tetapi saya melihat bahwa itu mungkin sebagian besar berada di luar zona nyaman saya. Banyak pengembang suka bekerja di stasiun mereka sendiri, tetapi saya harus mengakui bahwa saya mungkin akan belajar lebih banyak dan menemukan solusi yang lebih baik dari saya bekerja bersama dengan pengembang lain. Jadi itu benar-benar masalah kenyamanan pribadi vs. bekerja lebih efektif.
Anne Schuessler
5

Pemrograman pasangan adalah cara yang bagus untuk memulai atau melakukan sesuatu yang tidak sepele dan sulit. Lebih banyak tugas rutin dan sederhana lebih baik dilakukan sendiri.

Saya berpartisipasi dalam sejumlah sesi pemrograman pasangan, baik di perusahaan startup / garasi dan perusahaan besar. Itu selalu terjadi hanya ketika sesuatu yang baru dan sulit sedang dikembangkan, yaitu, dua kali setahun terbaik, selama beberapa minggu. Seberapa sering hal ini terjadi di perusahaan Anda?

9000
sumber
lebih jarang daripada saya ingin itu pasti.
ozz
5

Kami tidak pernah menyebutnya begitu, tetapi pada hari itu, itulah sebabnya kami selalu menyerang masalah baru. Kami berpasangan untuk memulai solusi, tetapi kemudian biasanya keluar untuk menyelesaikan secara individual / membersihkan rincian. Tidak banyak lagi. Tampaknya menjadi semakin langka.

Brian Knoblauch
sumber
3

Tidak terlalu umum. Di semua toko yang pernah saya kunjungi dalam 10+ tahun terakhir, saya pernah melihatnya sekali. Di toko paling lambat dan paling tidak efisien. Tampaknya menciptakan lingkungan yang bising dan penuh tekanan. Satu orang akhirnya melakukan mengemudi dan berbicara terus-menerus mencegah yang lain berpikir sama sekali.

Satukan tim untuk ulasan kode baik dalam kelompok atau berpasangan dan berikan ruang bagi pengembang sendiri. Ini akan lebih baik dalam jangka panjang daripada mengejar mode Agile terbaru.

Servius
sumber