Flow adalah konsep yang diperkenalkan oleh Mihaly Csikszentmihalyi; singkatnya, itu berarti masuk ke "zona". Anda merasa terbenam dalam tugas Anda, fokus; tugasnya bisa sulit tetapi sekaligus menantang. Ketika orang mencapai aliran, produktivitas mereka meningkat. Pemrograman membutuhkan banyak fokus mental karena kita sering perlu menyulap beberapa hal dalam pikiran kita sekaligus. Banyak yang suka bekerja di lingkungan yang tenang di mana mereka dapat mengarahkan perhatian penuh mereka pada tugas tersebut. Jika mereka terganggu, mungkin perlu beberapa menit atau bahkan berjam-jam untuk kembali ke aliran.
Saya mengerti ada praktik dalam pengembangan tangkas dan pemrograman ekstrem yang disebut pemrograman pasangan. Ini berarti Anda menempatkan seluruh tim pengembangan perangkat lunak dalam satu ruangan sehingga komunikasi menjadi lancar. Anda menulis kode dengan pasangan Anda karena dengan cara ini Anda mendapatkan ulasan kode instan dan lebih sedikit bug yang lolos.
Saya selalu mengalami masalah mencapai aliran saat melakukan pemrograman berpasangan karena interupsi yang konstan. Saya berpikir mendalam tentang suatu masalah maka tiba-tiba seseorang bertanya kepada saya pertanyaan dari pasangan lain. Kereta pikiranku hilang.
Bagaimana Anda bisa mencapai dan mempertahankan aliran saat memasangkan pemrograman?
sumber
Jawaban:
Sunting: Penafian - Inilah cara saya mendefinisikan "zona":
A state of extreme focus, in which one is able to understand how many intricate details connect together, regardless of whether these do so elegantly (or simply) or not.
Saya mencoba untuk menghindari keadaan ini karena, sementara saya dapat menghasilkan kode yang benar di zona tersebut, saya dan pengembang lain akan kesulitan memahaminya nanti. Singkatnya: membaca kode yang ditulis di zona mungkin sering mengharuskan pembaca berada di zona. Kendala itu adalah masalah saya.
Ada bab bagus tentang The Clean Coder di mana Paman Bob secara persuasif menjelaskan mengapa "masuk ke zona" adalah ide yang sangat buruk.
Inilah alternatif yang mungkin lebih baik daripada "masuk ke zona": berpikir jernih dan pertimbangkan dengan tenang dan profesional apa yang Anda lakukan. Menyampaikan. Bagikan pemikiran dengan pasangan Anda. Identifikasi masalah nyata. Diskusikan kemungkinan solusi. Anda mungkin tidak merasa fokus luar biasa, tetapi Anda cenderung membuat keputusan yang baik, dan desain yang mudah didekati.
Jika Anda dan pasangan-pasangan Anda dapat mendiskusikan masalah tanpa Anda berdua menjadi sangat fokus, maka kemungkinan Anda telah merebus masalah menjadi sifatnya yang lebih sederhana. Itu menunjukkan Anda akan dapat memahaminya lagi kapan pun Anda perlu.
Di sisi lain ... Jika Anda hanya perlu waktu sendirian untuk meluruskan kepala Anda (kadang-kadang kita semua melakukannya), ambil saja. Kumpulkan pikiran Anda. Selesaikan dulu masalahnya di kepala Anda.
Tetapi masalahnya adalah jika Anda melakukannya - jangan gunakan waktu itu untuk menulis kode produksi. Sebaliknya, bermain-main dengan kode sampel dan prototipe. Cobalah untuk memahami masalahnya, tanpa memikirkan solusinya dulu. Setelah Anda meluruskan semuanya dan menuliskannya, diskusikan dengan tim dan pasangan Anda, atau bahkan bebek karet di meja Anda. Jika Anda masih tidak dapat mengartikulasikannya, atau mereka tidak dapat memahaminya, maka perbaiki ide-ide Anda. Setelah Anda menyelesaikan semua itu - mengintegrasikan semua pemikiran dan kode sampel menjadi solusi yang nyata dan berfungsi.
sumber
Pemrograman pasangan terkadang membutuhkan periode isolasi dari pasangan Anda.
Contoh
Anda bekerja bersama pada kelas tertentu, dan Anda menyadari bahwa Anda perlu menulis metode yang membutuhkan pemikiran mendalam pada beberapa logika kompleks, tetapi sebaliknya mengembalikan hasil yang biasa. Anda bekerja bersama membuat tes unit untuk metode itu, dan menunda penulisan metode itu ke periode waktu ketika Anda bekerja secara terpisah. Ketika metode ini selesai, Anda kembali bersama sebagai pasangan dan mengevaluasi hasilnya.
sumber
Saya telah menemukan ada kelas kecil masalah di mana pemrograman pasangan bekerja. Misalnya, jika Anda bekerja pada produk lintas platform dan Winders guy telah mengimplementasikan fitur yang memerlukan kode spesifik OS, ia dapat membantu pria Mac mengimplementasikan fitur yang sama pada kode Mac saat pria Mac mengemudi.
Namun dalam pengalaman saya, pemrograman berpasangan secara tidak biasa menghasilkan hilangnya produktivitas bersih. Seringkali kami merasa seperti membayar dua pengembang untuk melakukan satu pekerjaan.
Ya, itu mengurangi kemungkinan mengerikan bahwa seorang dev mungkin mengambil istirahat stackexchange selama hari kerja.
IMHO akan lebih murah bagi perusahaan-perusahaan yang ingin mengawasi dev mereka untuk hanya memasangkan setiap dev dengan penjaga keamanan swasta untuk berdiri di belakang pengembang dan memukul dev dengan pentungan jika dia melambat atau mencoba untuk memuncak pada yang tidak penting halaman web.
sumber
Sebagai pengembang yang mencoba masuk ke zona tersebut, Anda akan berusaha mengisolasi diri Anda sebaik mungkin untuk merasa nyaman dan menjernihkan pikiran. Mengapa pemrograman pasangan harus berbeda?
Anda dan pasangan Anda harus menemukan lingkungan pemicu zona yang bekerja untuk Anda berdua. Ini mungkin membutuhkan kompromi pada beberapa hal, tetapi poin utama saya adalah bahwa lingkungan pasangan harus serupa dengan solo. Matikan dunia luar. Pasangan ini pemrograman bersama; pasangan lain (rekan kerja lain pada umumnya) tidak boleh mengganggu (kecuali masalah kritis, apa yang Anda lakukan).
sumber
Flow adalah kondisi yang bagus untuk dilakukan ketika Anda tahu langkah-langkah tepat untuk menyelesaikan masalah. yaitu beberapa tidak diketahui yang tidak diketahui. Anda duduk di sudut yang tenang dan memalu solusinya. Namun, sebagian besar masalah / cerita / fitur tidak begitu jelas ketika Anda mulai memprogram mereka. Akan selalu ada "celah" antara kondisi akhir yang diharapkan dan bagaimana otak Anda telah "merencanakan" itu. Anda belajar banyak hal ketika Anda benar-benar "melakukannya". Otakmu juggle
Desain Kode
Mengetik
Mempelajari hal-hal baru tentang domain dan kode
Ketika saya memprogram sendiri, saya berjuang untuk menyeimbangkan hal-hal ini. Saya cenderung masuk ke "lubang kelinci" di mana kekeliruan biaya hangus saya mencegah saya mengambil langkah mundur dan melihat gambaran besar dan mengubah desain saya. Juga sulit bagi saya untuk berbicara dengan bebek karet imajiner atau yang nyata dalam hal ini. Bagaimanapun, saya dalam "aliran".
Ketika saya memasangkan pemrograman secara produktif, saya mendapatkan periode mengetik yang berganti-ganti diikuti oleh periode pemikiran dan refleksi. Di sinilah banyak hal tersembunyi mengungkapkan diri mereka dan desain yang berbeda dapat muncul. Jika saya masuk ke lubang kelinci, pasangan pasangan saya dapat menarik saya keluar dari sana. Berbicara / menjelaskan sesuatu kepada manusia nyata memiliki efek luar biasa untuk membuat pikiran Anda lebih jelas. Kadang-kadang, saya rindu berada di "aliran", tapi saya pikir saya berkontribusi lebih banyak kepada tim saya ketika saya memasangkan program daripada ketika saya memprogram solo. Lagi pula pemrograman! = Mengetik. Pemrograman terjadi di otak dan pemrograman yang lebih baik terjadi ketika dua otak berkolaborasi dan saling mengkritik.
sumber