Bir çocuğu nasıl düzeltebilirim, fakat kendisini düşünmesi için teşvik etsin? [kapalı]


54

Herkesin bir yıldan az bir yazılım geliştirme tecrübesine sahip olduğu küçük bir ekibin lideriyim. Hiçbir şekilde kendime bir yazılım gurusu demem, ama birkaç yıl içinde yazılım yazdığım birkaç şey öğrendim.

Kod incelemeleri yaptığımızda, hataları öğretme ve düzeltme konusunda çok az şey yapıyorum. "Bu aşırı karmaşık ve karmaşık ve işte bu yüzden neden" gibi şeyler veya "Bu yöntemi ayrı bir sınıfa taşıma hakkında ne düşünüyorsunuz?" Soruları varsa veya fikirlerini reddettikleri takdirde, sorun değil ve tartışmamız gerektiğini bildirmeye çok dikkat ediyorum. Ne zaman birini düzeltsem, "Ne düşünüyorsun?" Diye soruyorum. Veya benzeri.

Bununla birlikte, nadiren anlaşmazlarsa veya nedenini sormazlarsa. Ve son zamanlarda ifadelerime kör bir şekilde katıldığına ve kendi görüşlerini oluşturmadığına dair daha açık işaretler görüyorum.

İşleri doğru yapmayı öğrenebilecek bir takıma ihtiyacım var, sadece talimatları izlemeyin. Bir genç geliştiriciyi nasıl düzeltir, ancak yine de kendisini düşünmeye teşvik eder?

Düzenleme: İşte kendi fikirlerini oluşturmadıklarını gösteren bu açık işaretlerden birine bir örnek:

Ben: Bir uzatma yöntemi oluşturma fikrinizi sevdim, ancak büyük karmaşık bir lambda'yı parametre olarak nasıl geçtiğinizden hoşlanmıyorum. Lambda başkalarını yöntemin uygulaması hakkında çok fazla şey bilmeye zorlar.

Junior (beni yanlış anladıktan sonra): Evet, tamamen katılıyorum. Burada uzantı yöntemlerini kullanmamalıyız çünkü diğer geliştiricileri uygulama hakkında çok fazla şey bilmeye zorluyorlar.

Bir yanlış anlaşılma vardı ve bu durum ele alındı. Ancak ifadesinde bir OUNCE mantığı bile yoktu! Mantığımı bana geri getirdiğini, neden söylediğine dair hiçbir fikri olmadığı zaman bir anlam ifade edeceğini düşünüyordu.



4
en.wikipedia.org/wiki/Socratic_method kullanmayı denerdim, bunun sadece programlama ile ilgili olduğundan emin değilim
jk.

10
Bu sorunun kapatılması hakkında: bu sadece bir yönü programlama olmasa da - bunun birçok insanın karşılaştığı bir şey olduğunu düşünüyorum. Bu gerçek bir soru. Açık tutmak için şiddetle oy kullanırım.
Dipan Mehta

3
Belki de daha uygun bir soru: “kıdemli seviyenizi nasıl düzeltirsiniz?”
William Pursell

2
@WilliamPursell Nice. Beni düzeltselerdi çok isterdim.
Phil

Yanıtlar:


37

Kısa cevap:

Onları meşgul et (bulmacayı zihnine koy), güçlendir (cevaplarına güven).


Bizi yönlendiren soru bu! - Matris.

Genel olarak, gözlemlerime göre, gençlerin kendi dünyaları var - nasıl düşündüklerine dair kendi sınırlı görüşlerini ve bir kısım şeyler hakkında kendi isteklerini / favorilerini / fikirlerini.

Onlara yanlış olduğunuzu söylemekten yanlış bir şey yoktur - ama en iyisi onları düşündürmenizdir. Neden? Başka yollar var mı? Aynı şeyi yapmanın daha iyi yolları var mı? Her zaman kullandığım fıkralardan biri - "Bana üç çözüm ver (bu soruna)!"

Bu çözümler hakkında düşündükleri zaman, birçok sorunu fark etmeye başlarlar. Bu onlara biraz zaman yatırımı gerektirir - ancak zamanla düşüncelerinin sınırlarını ve eksikliklerini görselleştirme eğilimindedirler. Bunu daha fazla "Düşünmedim!" Olarak görmeye başlarlar. "Yanılmışım!" hissiyle eve gitmekten daha iyidir . veya daha da kötüsü "Geçerli bakış açım olsa bile yanlış söylenmişti / kanıtlanmıştı" .

Genel olarak, çok küçük çocuklar ile ilgili daha usta olma eğiliminde olacaktır teknik üzerinde konularda (örneğin hangi tasarım deseni daha iyi çalışır!) İşlem sorunları, ancak bunları koçluk zamanla işe yarıyor.


Bununla birlikte, nadiren anlaşmazlarsa veya nedenini sormazlarsa. Ve son zamanlarda ifadelerime kör bir şekilde katıldığına ve kendi görüşlerini oluşturmadığına dair daha açık işaretler görüyorum.

Bu genellikle bir sonuçtur yapmak onları onların önerilerini almak ancak daha sonra geçersiz ve görüşleriniz konusunda eşit derecede ikna olduğu; Sadece kıdemli olduğun için kavgadan kaçıyorlar!

Geçmiş patronlarımdan birinden öğrendiğim en iyi şey: Ekip üyelerinden önce tartışmasını isteyecekler (burada oldukça eşit hissediyorlar) ve umarım tüm tartışmalar bitince, odaya sadece bir soru soracaktı - "Ne vardı? anlaşmazlıkların noktaları? " - Mesele şu ki, insanlar tartışmalara ve tartışmalara katılmaktan her zaman hoşlanırlar, ancak (geçerli) noktaları bir dahaki sefere eyleme alınmazsa, tartışmaya katılmaya değmeyeceğini düşünüyorlar.

Sadece yazılımda değil, sonuçta her yerde sadece en güçlüsü olan takım arkadaşları sistemi sorgulamalarına rağmen cevap vermeye cesaret ederler.


1
+1 - Özellikle beğendim "Bu, genel olarak önerilerini aldığın bir sonuç, ancak daha sonra onları reddediyorsun ve görüşlerin konusunda aynı derecede ikna oluyorlar; sadece kıdemli olduğun için kavgadan kaçıyorlar!" şu anda hissettiğim gibi.
Jetti

1
Evet, orada bulundum. Endişeleriniz / sorunlarınız gittikçe daha fazla göz ardı ediliyor, bu yüzden katılmaya zahmet etmiyorsunuz ve sonra saati izliyorsunuz - günün bitmesini bekliyoruz. Patronlar: Başarıyı teşvik etmekte ve tanımakta çok dikkatli olun ve sadece hataları işaret etmeyin!
Django Reinhardt

26

Eğer gençler kendileri için düşünmek istiyorsanız, bunları düzeltin yoktur: onları almak kendilerini düzeltmek .

Onlara çözümlerinde neyin yanlış olduğunu düşündüğünüzü söylemek yerine, bu konuda ilgili sorular sorun. Örneğinizde, onlara lambda oluşturmak için uzatma yöntemini kullanan birinin bilmesi gerekenler hakkında sorular sorabilirsiniz. Kadar böyle sualler onlar Bunun bir sorun olduğunu düşündürmektedir. Bu şekilde, çözümlerinin neden bir sorun olabileceğini ve ayrıca bundan daha fazla öğrenmenin daha muhtemel olduğunu anladığını biliyorsunuzdur - eğer çözümlerinin yanlış olduğunu söylerseniz, bu dışsal bir yargıdır ve kolayca göz ardı edilir. Gerçekleşmeye kendi başlarına gelirlerse (küçük bir soruyla), bunun ne kadar iyi temellendiğinin farkına varacaklar ve hatalarından ders almaları çok daha muhtemel olacaktır.

Belki de - Buna ek olarak, bu Juniors kendi tasarımını savunmak için bir şans verir gelmiş sorunun düşünce ve herhangi bir düzeltme yapmam gerek yoktur, yani senin endişelerini giderir iyi bir gerekçe var. Bu, icat fiat tarafından yönettiğiniz herhangi bir algıyı (ancak istemeden) azaltır.


7

Çok sayıda küçük geliştiriciye sahip olduğunuzdan, kod incelemelerini 1 1 değil grup olarak yapın.

"Sorun başka nasıl çözülebilir?" Grubunu sorarak açın ve diğer küçük geliştiricilerin önce uygulamalarını önermelerine izin verin. Uygulamanızı yalnızca diğer ekip üyeleri konuştuktan sonra ekleyin ve hiçbiri fikrinize benzer bir şey önermediyse ekleyin.

Ardından, küçük geliştiricilere ne olduğu söylenmeden en iyi uygulamayı seçmeye yönlendirmek amacıyla farklı uygulamaların göreceli avantajları ve dezavantajları hakkında bir yuvarlak masa toplantısı yapın.

Gençler için bir güven oluşturucu olarak, en iyi seçenek olduğunu düşündüğünüz şeyi seçtikleri bazı durumlarda başlayabilir ve alternatifinizi yarı belirgin bir kusuru olan bir pipetçi haline getirebilir ve tartışmayı orijinal uygulamanın neden en iyi olduğu üzerine yönlendirebilirsiniz.


3
Bunun en iyi fikir olduğundan emin değilim. İnsanların kendi hatalarını bulmalarına izin vermek çok daha iyi, halka açık bir gruba kodlarının neden iyi olmadığını sormak yerine.
altmış ayak parmakları

1
@sixtyfootersdude Kod incelemelerinin bir grup olarak yapıldığında daha etkili olduğunu düşünüyorum çünkü ekip içinde bilginin daha geniş bir şekilde yayılmasını teşvik ediyor.
Dan Neely

5

Bir programlama işinde ilk çalışmaya başladığımda, tarif ettiğinizle aynı şeyi yaptım: Yapabileceğim bir şey söylendiğinde, her zaman hemfikirdim. Bunun temel nedeni, aksi takdirde söyleyecek kadar tecrübem yoktu.

Bana metodolojileri ve fikirleri gerçekten tartışma yeteneğini veren, farklı yaklaşımlar ve yeni teknolojiler hakkında okumaktan başka deneyimlerden öğrenmek oldu. Ekibinizin kendileri için düşünmesi için, "aşırı karmaşık ve karmaşık" kod gibi şeylerden ne gibi problemlerin doğabileceğini bilmeleri gerekir ve öğreneceklerinin tek gerçek yolu deneyimdir.

Bireysel düşünmeyi kolaylaştırmanın iyi bir yolu, Yığın Taşması veya Programcılar SE gibi programlama web sitelerine bakmalarını sağlamaktır. Bunların, dışarıdaki farklı teknikleri öğrenmeme yardımcı olduğunu ve onlara kör bir şekilde katılmak yerine, ekibin üst düzey üyeleriyle tartışma yapmamı sağladığını biliyorum.

Mesele şu ki, deneyimsiz, kıdemli üyelerin önerileri her zaman haklı çıkacak.


İyi fikir! Ayrıca akıl hocalarımdan birinin bana fikrimi genişletmeye yardımcı olan bazı dersler verdim (kooperasyondayken). Pragmatik programcıların çoğunu (kitap) ve Joel'in sitesindeki her makaleyi okudum.
altmış ayak

5

Yazınızın etkileşimi, neredeyse her şeyi öğretmenin temel ilkesini gösterir: ne söylediklerini düşündüklerini açıklamalarını isteyin ve yanıtı dikkatlice dinleyin: tam olarak neyin düzeltilmesi gerektiğini size söyleyecektir.

Ben var utanmadan çalınmış yaklaşık 25 yıl önce benim matematik öğretmeni bu hileyi kopyalanan ve o zamandan beri beni başarısız değil. Kısa bir süre öğretmenlik asistanlığı sırasında, yazılım tasarımı hakkında konuşurken işte ve okul görevlerinden bahsederken sekiz yaşındayken sınıfta kullandım.

Elbette, az önce söylediklerinizi tekrar etmelerini isteme konusunda her zaman künt olamazsınız, bu nedenle stratejinizi ayarlamanız gerekir. Örneğin, OP’den gelen takip ifadenizi "sondalama" sorusu olarak nasıl yeniden ifade edeceğim:

Bir uzantı yöntemi oluşturma fikrinizi sevdim, ancak büyük bir karmaşık lambda'yı parametre olarak nasıl geçirdiğinizi sevmiyorum. Bu karmaşık lambdanın başkalarını yöntemin uygulaması hakkında çok fazla şey bilmeye nasıl zorladığını görüyor musunuz ?

Bu soruya vurgulamaya çalıştığınız sorunu anlamadan doğru cevap vermek mümkün değildir. Açıklamalarımı az önce söylediklerimin analizini gerektiren bir soru ile sonlandırmanın öğrenme sürecini hızlandırdığını ve düzeltmeler yapmam için bana geri bildirim verdiğini buldum.


5

Genellikle insanlar ne istediğini söylemediğinde, dinleme işinde çalışman gerektiği anlamına gelir. Dinlemek, karar vermeden önce tasarımlarının sebeplerini duymak anlamına gelir. Bu, onlara sadece muhalif olunmasının tamam olduğunu söylemekten ibaret değil, ne söyleyeceklerini göz önünde bulundurarak dürüstçe kanıtlamak ve sadece düzeltmek anlamına gelmez. Çözümleriyle ilgili iyi şeyleri arayın ve çözümünüzü bunları dahil edecek şekilde değiştirin.

Ayrıca örnek olarak liderlik etmeniz gerekir. Harika kod yazarak demek istemiyorum, kendi tasarımlarınız hakkındaki düşüncelerini sormak istiyorum. Kod incelemeleri gerçeğinden sonra beklemeyin, ancak yol boyunca birlikte çalışın. "Arayüzüm çok karmaşık görünüyor, ancak basitleştirmek için en iyi yoldan emin değilim" gibi şeyler söyleyin. Ve ilk önce kendi fikirlerine yöneltmeden cevaplamaları için onlara zaman ver.


4

Bununla uğraşmak zorunda kaldığımda şöyle dürüst şeyler söyledim:

Biliyor musun, bu asla aklıma gelmeyen yaratıcı bir çözüm. Nasıl ölçeklenir? / Gelişimi hızlandırmak veya bakımı kolaylaştırmak için kavramsal olarak daha basit olan bir yaklaşım olabileceğini düşünüyor musunuz? yapılandırma benziyor mu?

Bu genellikle insanları yeni bir yöne yönlendirmek için yeterli olmuştur.


2

Sorumluluk, onlara yardımcı olabilecek bir şeydir.

Geçmişte bir ya da iki takımı yönettim ve gençlerin parlamasını sağlayan şeylerden biri kişisel sorumluluğun yüküydü. Bir kişi eylemlerinin kendisine bir noktada etki edebileceğini fark ettiğinde, genellikle yaptığı işte kendisinin biraz daha fazlasını üstlenir. İşlerini hissettiklerinde, iyi sonuçların çok daha tatmin edici olduğunu söylemeye gerek yok.


1

Sizi körü körüne takip ettikleri için fazla endişelenmem, gençler olarak yapmaları gereken şey bu. Mesele şu ki, kod incelemelerinde ele aldığınız öğelerin gerçek nedenlerini, kötü yazılım geliştiricileri, korkunç yönetimi ve korkunç kodu olan başka bir yerde çalışıp çalışmaya başlayana kadar anlamayacaklarıdır.

O zamana kadar alışkanlık dışı iyi uygulamalar öğrenmiş olacaklar ve başkalarının yaptıkları kodlama ve tasarım hatalarını yaşamaları gerekecek ve şimdi kötü tasarlanmış ve uygulanmış yazılımlar üzerinde çalışmak zorunda olmaları için ZORUNLU.

Bu, kariyerlerinde bir noktada nihai bir kaçınılmazlık olacaktır. İyi kodlama standartlarına ve uygulamalarına alışmaları için onlara harika bir hizmet yapıyorsunuz. Ne yazık ki çoğumuz zor yoldan öğrenmek zorunda kaldı.


1

Verilen örneğe dayanarak, yorumlarınızı sorularla takip etmenin muhtemelen en iyi yol olacağını söyleyebilirim. Yorumlarınızla birlikte bir soru sorarsanız, onları en azından bir şeyi nasıl uygulayabilecekleri hakkında düşünmek zorunda olduklarını düşünmeleri gerekir.

örneğin, "Bir uzatma yöntemi oluşturma fikrinizi seviyorum, ancak parametre olarak büyük bir karmaşık lambda'yı nasıl geçirdiğinizden hoşlanmıyorum. Lambda, diğerlerini yöntemin uygulaması hakkında çok fazla şey bilmeye zorlar. "Bu kadar fazla bilgi göstermeyen bu uzantı yöntemini uygulamak?"

Bu, geliştirdikleri hatalardaki hataları görmelerine izin verirken, aynı zamanda başvuruda ortaya koydukları problemi çözmelerini sağlar.

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.