Çift programlama sırasında akışı nasıl elde edebilir ve koruyabilirsiniz?


17

Akış Mihaly Csikszentmihalyi tarafından sunulan bir kavramdır; Kısacası, "bölgeye" girmek demektir. Görevinize dalmış, odaklanmış hissedersiniz; görev aynı zamanda zor ama zor olabilir. İnsanlar akış elde ettiklerinde verimlilikleri artar. Programlama çok fazla zihinsel odaklanma gerektirir, çünkü çoğu zaman aklımızda birçok şeyi aynı anda oynatmamız gerekir. Birçoğu, tüm dikkatlerini göreve yönlendirebilecekleri sessiz bir ortamda çalışmayı sever. Kesintiye uğrarlarsa, akışa geri dönmek birkaç dakika hatta saatler sürebilir.

Çevik geliştirme ve aşırı programlamada çift programlama adı verilen bir uygulama olduğunu anlıyorum. Bu, iletişimin sorunsuz olması için tüm yazılım geliştirme ekibini bir odaya yerleştirdiğiniz anlamına gelir. Çiftinizle kod yazıyorsunuz çünkü bu şekilde anlık kod incelemeleri alıyorsunuz ve daha az hata geçiyor.

Sürekli kesintiler nedeniyle çift programlama yaparken akış elde etmekte her zaman sorun yaşadım. Bir konu hakkında derin düşünürüm o zaman aniden biri bana başka bir çiftten bir soru sordu. Düşünce trenim kayboldu.

Çift programlama sırasında akışı nasıl elde edebilir ve koruyabilirsiniz?


4
Diğer çiftlerin herhangi bir zamanda araya girebileceğini kabul etmiyorum.
JeffO

3
Flow'a bir alternatif, Ballmer Peak'teki pozisyonu tanımlamak ve korumaktır . Bu, başarmak için iyi miktarda deneme, zaman ve Scotch gerektirebilir.
Hovercraft Eels Eels

Kod yazmam gerektiğinde bu soruyu okurken dikkatimi dağıttım. Birisiyle eş-programlama yapsaydım, bu soruyu okumak için açmazdım ve muhtemelen daha fazla iş yapardım.
TehShrike

Yanıtlar:


15

Edit: Feragat - Ben bu şekilde "bölge" tanımlamak: 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.

Bu durumdan kaçınmaya çalışıyorum, çünkü bölgede doğru kodu üretebilirim, ancak ben ve diğer geliştiriciler bunu daha sonra anlamakta zorlanacaklar. Kısaca söylemek gerekirse: bölgede yazılmış olan kodların okunması çoğu zaman okuyucunun bölgede olmasını gerektirebilir. Bu kısıtlama benim sorunum.

The Clean Coder'da Bob Amca'nın "bölgeye girmenin" neden delice olarak kötü bir fikir olduğunu ikna edici bir şekilde açıkladığı hoş bir bölüm var .

İşte "bölgeye girmek" ten daha iyi bir alternatif: doğrudan düşünün ve ne yaptığınızı sakince ve profesyonelce düşünün. İletişim kurmak. Düşüncelerinizi ortaklarınızla paylaşın. Gerçek problemleri tanımlayın. Olası çözümleri tartışın. Aşırı derecede odaklanmış hissetmeyebilirsiniz, ancak muhtemelen iyi kararlar ve yaklaşılabilir tasarımlar verebilirsiniz.

Siz ve çift partneriniz, her ikisi de aşırı derecede odaklanmadan sorunu tartışabiliyorsanız, sorunu daha basit doğasına kaynatmış olabilirsiniz. Bu, ihtiyacınız olduğunda tekrar anlayabileceğinizi gösterir.

Flip tarafında ... Kafanı düzleştirmek için biraz zamana ihtiyacın varsa (bazen hepimiz yaparız), sadece al. Düşüncelerinizi bir araya getirin. Sorunu önce kafanda halledin.

Ama mesele şu ki eğer yaparsanız - üretim kodunu yazmak için o zamanı kullanmayın. Bunun yerine, örnek kod ve prototiplerle oynayın. Henüz çözümleri düşünmeden sorunu anlamaya çalışın. Her şeyi düz ve yazılı hale getirdikten sonra, ekibinizle ve eş partnerinizle, hatta masanızdaki lastik ördekle tartışın. Hala eklemleyemiyorsanız veya anlayamıyorlarsa, fikirlerinizi geliştirin. Bunların hepsini çiviledikten sonra - tüm bu düşünce ve örnek kodları gerçek, çalışan bir çözüme entegre edin.


2
Mümkünse, milyonlarca kez vekalet ederim, profesyoneller "bölgede" olsun ya da olmasın çalışmayı öğrenirler. Profesyoneller, soru sormak, etraflarında gürültü olmak üzere insanları aralarında çalışabilir ve diğer insanlarla birlikte birlikte çalıştıkları herhangi bir görevi nasıl yapacakları hakkında konuşabilirler. Konsantre olmak için özel çalışma koşullarına sahip olan prima donnas ile çalışmak istemiyorum.
HLGEM

7
@HLGEM - Gerektiğinde çalışmak için oldukça uygun bir yere erişmenin çok fazla bir şey olduğunu düşünmüyorum.
JeffO

2
@HLGEM: Elbette bir profesyonelin ortalama çalışma koşullarında ortalama üretkenliğe sahip olması beklenir. Ancak öte yandan, aynı profesyonelin çok odaklanmış bir şekilde çalışmasına izin vermek işverenin yararınadır, çünkü bu verimliliği ve kaliteyi büyük ölçüde artırabilir.
Giorgio

2
"Bana öyle geliyor ki insanlar" bölgeye "sanki bir düşünme şapkası gibi problemleri çözmek için sihirli bir hızlı çözüm gibi davranıyorlar.": Hayır, daha önemsiz olarak, bölge daha üretken olduğunuz bir konsantrasyon durumudur. çünkü dikkatiniz dağılmadan görevinize odaklanmışsınızdır. Bölge sizi her şeye kadir kılmaz, sadece sizi daha üretken yapar.
Giorgio

2
@Yam Marcovic: Bu benim aklımda olan bir üretkenlik değil (daha düşük kalitede daha fazla kod üreterek): eğer kişi istediklerini yapmak için bir bahane olarak izolasyon kullanıyorsa, daha üretken olmuyorlar. Benim için akış, ortalığı karıştırmak ve daha sonra çok sayıda kod yazmak değil, belirli, başka bir ilgisiz görevler tarafından kesintiye uğramadan belirli bir görev üzerinde sistematik olarak çalışmak anlamına gelir.
Giorgio

5

Çift programlama bazen eşinizden tecrit dönemleri gerektirir.

Misal

Belirli bir sınıf üzerinde birlikte çalışıyorsunuz ve bazı karmaşık mantık üzerinde derin düşünce gerektiren bir yöntem yazmanız gerektiğini fark edersiniz, ancak aksi takdirde sıradan bir sonuç döndürürsünüz. Bu yöntem için birim sınamaları oluşturmak için birlikte çalışırsınız ve bu yöntemin yazılmasını, tek başına çalıştığınız bir süreye ertelersiniz. Yöntem tamamlandığında, bir çift olarak bir araya gelir ve sonuçları değerlendirirsiniz.


Neden çift programlamada uygulama yapılmamalıdır?
try-catch-nihayet

5

Ben çifti programlama için hangi sorunların küçük bir sınıf buldum. Örneğin, bir çapraz platform ürünü üzerinde çalışıyorsanız ve Winders adamı OS'ye özel kod gerektiren bir özellik uyguladıysa, Mac adamını sürerken Mac adamının Mac kodunda aynı özelliği uygulamasına yardımcı olabilir.

Ancak benim deneyimime göre, çift programlama alışılmadık bir şekilde net bir verimlilik kaybıyla sonuçlanır. Çoğu zaman iki geliştiriciye bir işi yapmak için para ödüyormuşuz gibi geliyor.

Evet, bir geliştiricinin iş günü boyunca yığın değişim molası verebileceği dehşet verici olasılığı azaltır.

IMHO, geliştiricilerinin arkasında durmak için her geliştiriciyi özel bir güvenlik görevlisi ile eşleştirmek ve geliştiriciyi yavaşlatırsa veya gerekli olmayan bir noktaya ulaşmaya çalışırsa dev bir copla vurmak için geliştiricilerine polis yapmak isteyen şirketler için daha ucuz olurdu. internet sayfası.


1
Çift programlama noktası birbirinin gevşemesini engellemez; bu bile etkili olmaz. Buradaki nokta, gerçek zamanlı olarak kod incelemesi yapmaktır.
Lev

3
@Seviye: Taahhüt etmeden önce bir kod incelemesi yapmak çok daha etkilidir: inceleme, tüm iş günü yerine birkaç dakikadan yarım buçuk saate kadar sürer.
Giorgio

@Giorgio Pek değil. Örneğin, bir hata yaparsınız, daha sonra onu yakalamak için zaman kaybedersiniz ve ancak daha sonra kodunuzu gözden geçirin ve taahhüt edin. Eğer programlanmış bir çift olsaydı, ortağınız hatayı fark eder ve hata ayıklama zamanından tasarruf ederdi.
Lev

1
@Lev: "Programlanmış bir çiftiniz olsaydı, ortağınız hatayı fark eder ve hata ayıklama zamanını kurtarırdı.": Bir programın ya da kod incelemelerinde bir hatanın fark edileceğine dair bir garanti yoktur. Örneğin, altı saatlik bir çift programlamasından sonra o kadar yorgun olabilir ki biri kolayca hatalara bakabilir.
Giorgio

Açıkçası bir garanti yok, ama yardımcı olabilir.
Lev

3

Bölgeye girmeye çalışan bir geliştirici olarak, kendinizi rahat ettirmek ve zihninizi temizlemek için elinizden geldiğince izole etmeye çalışacaksınız. Neden çift programlama farklı olmalı?

Siz ve eşiniz, her ikisi için de çalışan bir bölgeyi indükleyen ortam bulmalısınız. Bu muhtemelen bazı şeylerden ödün vermeyi gerektirecektir, ancak asıl nokta, çift ortamın soloya benzemesi gerektiğidir. Dış dünyayı kapatın. Parite birlikte programlama yapıyor; diğer çiftler (genel olarak diğer iş arkadaşları) kesintiye uğramamalıdır (kritik, yaptığınız düşme sorunları hariç).


0

Akış, bir sorunu çözmek için tam adımları bildiğinizde içinde bulunmak için harika bir durumdur. yani bilinmeyen az bilinmeyen. Sessiz bir köşede oturun ve çözümü kırın. Ancak, çoğu sorun / öykü / özellik programlamaya başladığınızda çok net değildir. Beklenen son durum ile beyninizin bunu nasıl planladığı arasında her zaman bir “boşluk” olacaktır. Aslında "yaptığınız" zaman çok şey öğrenirsiniz. Beyniniz hokkabazlık yapıyor

  • Kod Tasarımı

  • Yazıyor

  • Alan adı ve kod hakkında yeni şeyler öğrenme

Yalnız programladığımda, bunları dengelemek için mücadele ediyorum. Batık maliyet yanlışlığımın bir adım geri çekilip büyük resme bakıp tasarımımı değiştirmemi engellediği "tavşan deliklerine" girme eğilimindeyim. Hayali bir lastik ördekle ya da bu konuda gerçek biriyle konuşmak benim için zor. Sonuçta ben "akış".

Verimli bir şekilde programlamayı eşleştirdiğimde, alternatif yazım dönemleri ve ardından düşünme ve düşünme dönemleri alıyorum. Burası birçok gizli şeyin kendini ortaya çıkardığı ve farklı bir tasarımın ortaya çıkabileceği yerdir. Bir tavşan deliğine girersem, eş eşim beni ondan çıkarabilir. Bir şeyi gerçek bir insanla konuşmak / açıklamak, düşüncelerinizi bir şekilde daha net hale getirmenin bu harika etkisine sahiptir. Bazen, "akış" içinde olmayı özlüyorum, ama sanırım programı eşleştirdiğimde solo programladığımdan çok ekibime daha fazla katkıda bulunduğumu düşünüyorum. Sonuçta programlama! = Yazmak. Programlama beyinde gerçekleşir ve iki beyin birbiriyle işbirliği yapıp eleştirdiğinde daha iyi programlama gerçekleşir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.