
Hampir setahun telah berlalu sejak saya pindah untuk tinggal dan bekerja di Yerevan dari Moskow. Dalam cerita ini, saya tidak akan memberi tahu Anda tentang kehidupan saya di kota yang indah ini (ini sangat keren di sini), tetapi tentang hal-hal duniawi lainnya. Yaitu, tentang praktik yang kami terapkan saat mengembangkan produk kami di Vineti.
Jika Anda masih tertarik, selamat datang di kucing.
Di Vineti, kami menggunakan metodologi
pemrograman ekstrem dan secara aktif menggunakan pemrograman berpasangan. Ketika saya datang ke Vineti, pemrograman ekstrem adalah sesuatu yang baru dan tidak saya ketahui, tetapi setelah satu tahun pengembangan dengan gaya ini saya dapat mengatakan bahwa sekarang menulis kode untuk saya telah menjadi sesuatu yang tidak terlalu nyaman dan produktif.
Ketika ada orang di sebelah Anda yang dengan cermat mengawasi apa yang Anda tulis, kode ini sangat mudah dibaca. Juga, dalam proses penulisan kode, pelatihan dan transfer pengetahuan antar proses berlangsung, dan ini, dari sudut pandang saya, terjadi dalam bentuk yang paling efektif.
Kebetulan mereka yang belum pernah menggunakan pendekatan ini sebelumnya dalam praktik mengalami rasa malu dan tidak nyaman, karena Anda harus terus berkomunikasi dengan pasangan dan menulis kode di bawah pengawasan ketat, tetapi seiring berjalannya waktu, dan Anda mengerti bahwa pasangan ada di sini, untuk membantu Anda, tidak melukai Anda.
Manfaat pendekatan
Kelebihan pemrograman pasangan dibandingkan dengan pendekatan standar ada beberapa, tetapi, dari sudut pandang saya, yang paling penting adalah transfer pengetahuan yang konstan tentang kode aplikasi antara peserta dalam proses. Anda dapat membangun pasangan dan rotasi (perubahan insinyur yang berpartisipasi) sehingga setiap insinyur memiliki pengetahuan lengkap tentang semua bagian dari aplikasi. Ini sangat penting jika Anda perlu mempertahankan basis kode yang besar.
Keuntungan selanjutnya adalah proses pembelajaran yang cukup efektif. Anda dapat berpasangan sehingga yang lebih berpengalaman selalu dipasangkan dengan insinyur yang kurang berpengalaman. Untuk pengembang senior, aturannya adalah "jika Anda ingin mengetahui sesuatu dengan baik, cobalah untuk mengajar yang lain." Ada juga kesempatan untuk memperketat keterampilan komunikasi Anda, karena Anda harus sering menjelaskan.
Di Vineti, kami menggunakan
TDD dalam proses pemrograman pasangan, yang memungkinkan kami untuk awalnya memecah tugas besar dan kompleks menjadi bagian-bagian kecil dan memikirkan arsitektur solusi bahkan sebelum kami menulis kode. Juga, dalam memecahkan masalah yang rumit, memiliki mitra dengan siapa Anda dapat mendiskusikan pendekatan yang dipilih untuk menyelesaikan masalah dan menganalisis optimalitasnya tepat dalam proses kerja tanpa perlu merencanakan pertemuan tambahan dalam tim sangat membantu.
Dan akhirnya, pemrograman pasangan dikombinasikan dengan baik dengan metodologi
TDD . Di Vineti, biasanya seorang insinyur menulis tes dan mencoba menggambarkan situasi sebanyak mungkin. Insinyur kedua menulis kode fitur, ketika insinyur pertama memberi tahu Anda cara menyederhanakan kode, sehingga menerapkan lingkaran merah-hijau-refactoring.
Kekurangan
Kelemahan dari pendekatan ini, saya mungkin akan mengaitkan kompleksitas pengaturan proses itu sendiri dan perlunya pemilihan peserta secara berpasangan, yang membutuhkan upaya tambahan dari pemimpin tim dan pemahaman menyeluruh tentang keterampilan dan kebiasaan semua anggota timnya.
Jika kita berbicara tentang faktor manusia, penting bahwa para insinyur yang saat ini berpasangan untuk periode kerja bersama memiliki cara yang sama untuk datang ke kantor, makan siang, dll. Ini tidak selalu mudah dilakukan dan perlu membentuk pasangan dengan mempertimbangkan fitur ini.
Mempertahankan standar umum
Salah satu syarat untuk pemrograman pasangan efektif adalah adanya pendekatan yang ketat dan paling standar untuk menulis kode dalam perintah. Sebagai contoh, kami menggunakan eslint, lebih cantik, rubocop sehingga kode berada dalam gaya yang sama dalam proses penulisan itu. Sebagai lingkungan pengembangan kami menggunakan VS Code, dan terminal iTerm c zsh. Standarisasi ini memungkinkan Anda untuk dengan cepat memutar insinyur dalam pasangan sambil meminimalkan periode adaptasi.
Menurut saya, pasangan perlu dirotasi setelah menyelesaikan satu tugas. Ini memberikan rotasi efektif serendah mungkin. Perubahan peran dapat terjadi dalam satu hari, tetapi ini tetap pada kebijaksanaan seorang insinyur yang lebih berpengalaman dalam berpasangan. Adalah penting untuk tidak terbawa suasana, untuk tidak mencoba menyelesaikan semua masalah sendiri, karena tidak adanya perubahan peran dapat secara negatif mempengaruhi efektivitas pasangan secara keseluruhan.
Pasangkan pemrograman dengan San Francisco
Secara pribadi, saya memiliki pengalaman pemrograman pasangan jarak jauh dengan seorang kolega dari kantor Vineti American, untuk ini kami menggunakan plugin Live Share untuk VS Code. Pengalamannya menarik, tetapi situasi ini memiliki beberapa kelemahan dibandingkan dengan pemrograman pasangan standar. Yang pertama adalah kurangnya komunikasi pribadi langsung. Dalam kasus saya, ini juga merupakan perbedaan besar dalam zona waktu. Saya harus menulis kode setelah hampir sehari penuh, yang bagi saya pribadi, sangat melelahkan.
Bagaimana beradaptasi dengan pemrograman pasangan
Cobalah untuk menggunakan pengalaman perusahaan lain dan pada akhirnya kembangkan pendekatan Anda dalam perusahaan. Pilihan ideal yang nyaman dan berfungsi untuk semua, sayangnya, tidak ada.
Saya juga tidak yakin bahwa metodologi ini cocok untuk semua perusahaan. Misalnya, jika Anda hanya memiliki 3 pengembang dalam satu tim, Anda jelas tidak akan bisa mendapatkan banyak manfaat dari implementasi pemrograman pasangan. Atau, jika Anda memiliki terlalu banyak keuntungan untuk jones di tim, akan sangat sulit bagi Anda untuk membangun pasangan yang baik.