Görüşmeciler neden başvuru sahibinden bir kod okumasını istemiyor? [kapalı]


13

Hayatımda bir düzine röportaj yaptım (mezun olmak üzereyim) ve neden sadece bir kez bazı kodları okuyup açıklamam istendiğini merak ediyorum. Kabaca,% 90'lık işler çoğunlukla mevcut sistemleri korumakla ilgilidir. IMO'nun başkasının kodunu okuma yeteneği önemli bir beceridir.

Görüşmeciler neden kontrol etmiyor? *

* Arkadaşlarım arasında bazı kodları incelemem istenen tek kişi benim.


4
Bir röportajda bir kez C kodunu okumam istendi ve kodda çok sayıda kötü uygulamayı işaret ettim: burada tahsis edilen bellek ve orada serbest bırakılan, vb. Bu onların üretim koduydu. Teklif almadım.
kevin cline

1
Sadece diğer insanların neden bir şey yapmadığını veya yapmadığını cevaplayamadığımız için kapatmaya oy vermek. Herkes için kaynak kod okuma aşamasına gelmeden işe alım sürecinden çıkarıldığını biliyoruz. Eğer bu 'görüşmeciler gerektiriyorsa ...' olarak değiştirilirse, bu uygun bir soru olabilir.
GrandmasterB

1
@GrandmasterB Röportajcılar da bu sitede yer almaktadır. Eğer kasıtlı olarak kod okuma becerileri aramıyorlarsa, bunun iyi bir nedeni olabilir.
Izkata

Lütfen yorumlarda uzun tartışmalardan kaçının. Bu sorunun esasını daha fazla tartışmak isterseniz, lütfen Meta'da böyle bir tartışmanın ait olduğu bir soru açın. Teşekkür ederim.
maple_shaft

Ben daha önce kodu okumak istendi eklemek ve kötü uygulamalar ve herhangi bir hata işaret etmek eklemek istiyorum.
andy

Yanıtlar:


10

Röportaj soruları sorduğumda ilk başta yaptım ama yavaş yavaş aşamalı olarak kaldırdım. Mülakatta iyi kod yazabilen adayların hepsi mülakatta kodu iyi okuyabilir. Kodu okuyamayan adaylar da yazamadı. Kod okuma ile ilgili sorular hiçbir adayı gerçekten farklılaştırmamıştır.


4

Kısa versiyon

İş bir başvuruyu sürdürmekten ibaretse, görüşmeler sırasında test etmeniz gereken beceriler:

  • Büyük kod tabanını belgeleri, birim testleri vb. İle anlama becerisi .

  • Kodu yeniden düzenleme ve her şeyi bozmadan değişiklik yapma yeteneği .

İnsanlardan kodu okumalarını istemek, bu yetenekleri değerlendirmenize yardımcı olmaz.

Uzun versiyon

Kod yazmanız istendi mi? Evet ise, Sign'ın cevabında belirttiği gibi , bu yeterlidir. Biraz genelleme yaparsak, net, anlaşılması kolay kaynak kodu yazan bir kişi, başkaları tarafından yazılan kaynak kodunu okuyabilir.

Kod yazmanız istenmediyse, muhtemelen insan kaynakları departmanından bir kişi tarafından röportaj yapıldı. Bu tür röportajlar çok teknik olamaz ve çoğunlukla değersizdir, çünkü yeteneklerinize ve iyi çalışma yeteneğinize değil, üniversitede ve işle ilgisi olmayan diğer şeylere harcadığınız yılların sayısına değer verirler.

Bir bakım işi için kod okumayı istememenin birkaç nedeni daha vardır:

1. Güvenilir yapmak zor

Somut olarak, bir görüşmeci olsaydınız ne yapardınız? Adaylarınızın bazı kodları okumasını sağlayın. Hangi kod? Hangi dilde? Ne kadar iyi ya da kötü yazılmış? Yorumlu veya yorumsuz mu? Belgeleme olsun veya olmasın?

Daha da önemlisi, aday hakkında ne anlatıyor? Kod temeli ile ne kadar iyi korelasyon gösterir?

Bakmanız gereken eski bir VB.NET uygulamanız olduğunu varsayalım. Kaynak kodun çoğunlukla çirkin ve denenmemiş olduğunu ve birkaç yorumun eski veya yanıltıcı olduğunu biliyorsunuz. Son üç aydır, çözüm üzerinde çalışan çok yetenekli bir geliştiriciniz vardı; Uygulamanın en kritik kısımlarını yeniden düzenledi ve birim test etti, yorumlara ihtiyaç duyulan yorumları ekledi ve en önemlisi, genel mimari, kritik parçalar ve tuzaklar hakkında ayrıntılı belgeler yazdı.

Şimdi bu kod tabanını korumak için bir geliştirici tutuyorsunuz. Bir röportaj sırasında, bir parça eski (çirkin test edilmemiş) kod veya önceki geliştirici tarafından yeniden düzenlenmiş kod parçasını verir misiniz?

Belgeleri verir misiniz? Belgeleri okumak için adayın en az birkaç saat harcaması gerekecektir. Bu bir röportaj sırasında yapmayı imkansız hale getirir.

2. Kısa kod parçasını okumak, tanıdık bir projenin kodunu okumakla aynı şey değildir

Unutmayın, iş bir projeyi sürdürmektir. Projeye aşina olmadığınız ilk gün veya haftalarda büyük bir kod tabanını korumak zordur . Tüm belgeleri yazdıktan ve genel kod tabanını net bir şekilde görüntüledikten birkaç ay sonra bunu yapmak çok daha kolay .

Test edilecek en önemli şey, kişinin o aylarda verimli olup olmayacağıdır . Kişinin ilk iki günde hiçbir şey anlayamayacağı umrumda değil.

Bir kişiden kısa bir kod parçasını sıfırdan okumasını isteyerek, bu kişinin binlerce LOC için tanıdık, belgelenmiş bir kod çözücü ile nasıl başa çıkabileceğini test etmiyorsunuz .

3. Kaynak kodunu korumak sadece okumak değildir

Bir kod temeli bakımını yaparken, değiştirirsiniz . Sadece kodu okuyan bir geliştirici, şirketine faydalı bir şey getirmez.

Yararlı beceriler yeteneği olan refactor kodu için, birim testleri eklemek için, bir değişikliğin etkisini tahmin vb Sen görüşme sırasında şifreyi okumayı bir kişi sorarak bu becerileri test yoktur.


2

Okuma, yazma yeteneğinin mevcut olduğu gerçeğine dayanan bir varsayımdır. Kavramı herhangi bir dilde düşünün. Programlama sadece insan ve makine arasında iletişim kurmak için kullanılan bir dildir. İnsandan insana iletişim düşünün. Eğer Japonca için bir tercüman olmak için birini işe alıyorsanız, belirli bir konu hakkında 1000 kelimelik bir makale yazabilselerdi, bunu okuyabilecekleri anlamına gelmez mi?

Programcılar olarak birincil faaliyetimiz, kod oluşturulması ve soyut fikirlerin somut uygulamalara dönüştürülmesidir. Bu genellikle yazma anlamına gelir. Okumanın aynı derecede kritik olduğunu, ancak yazma yeteneğinin mevcut olduğu vakaların büyük çoğunluğunda okuma yeteneğinin de mevcut olduğunu kabul ediyorum. Ayırt edilebilir bir fark görebildiğim tek gerçek durum, zamanla gelişen çok karmaşık vakaların olduğu bir ortamda olacaktır. Bununla birlikte, bunlara rağmen, birisinin en azından bir çalışma yapmadan onları okuyabilmesini ve anlayabilmesini beklemezsiniz.

Ayrıca, kodu okumak ve ne düşündüğünü açıklamak, bir görüşmeciye eleştirel düşünme becerilerinizi nasıl kullandığınızı gerçekten ifade etmez. Biraz analiz gösterir, ancak çoğu işveren bir kutuya yerleştirilmeden düşünüp düşünemeyeceğinizi görmek ister. Bir şeyi ne veya nasıl yapacağınızı söylemek için mevcut kodun faydası olmadan (hatta koltuk değneği olmadan) kavramları kavrayabileceğinizi bilmek istiyorlar.


Oku, evet, anladýn mý? ... ille de deđil.
jmoreno

1
@jmoreno: Belki değil, ama ne kadar değerli bir zaman olduğu göz önüne alındığında, bir adaydan benzer bir şey yazmasını isterseniz, karmaşık bir şeyi okurken izleyebileceğinizden çok daha fazla bilgi edinebilirsiniz.
Joel Etherton

Katılmıyorum. Önemsiz uygulamaların ötesine geçtikten sonra, kodu okumak, kod yazmaktan çok daha zordur ve kod yazabilen ancak mevcut kodu okuyamayan çok sayıda geliştirici vardır, çünkü kodun hepsi zorunlu zamandadır. Yabancı dil metaforunu kullanmak için, geliştiriciler çoğunlukla istediklerini elde edecek kadar anlaşılması gereken zengin turistlerdir, ancak etraflarında söylenenleri anlama gereğini hissetmezler.
Dan Monego

1
@DanMonego: Ne demek istediğimi anlıyorum ve bu kesinlikle aynı fikirde değilim, fakat soru, çoğu röportajın neden okuma değerinin ne olduğunu değil de okumayı içermediğiyle ilgili. Çoğu röportaj, zamanın doğası nedeniyle okuma veya düzeltme için önemsiz uygulamaları içermez.
Joel Etherton

1

Geçmişte, okuma kodunun görüşmelerde gösterilen bir şey olması gerektiğini düşünürdüm, ama zamanla bunun hem görüşmeci hem de görüşmeci için zaman kaybı olduğunu fark ettim. Neden? Çünkü kötü kodlayıcılar bile bir kod parçasını okuyabilir.

Birinin kodu okuma yeteneğini yargılamak, yalnızca karmaşık bir şeye veya birçok sınıf ve dosyaya yayılan koda baktığınızda alakalı olur. Ne yaptığını anlamak için kodu izleyebilmek arzu edilen bir özelliktir, ancak birisinin iyi bir örnek (üretim kodu değil) bulması için yeterli zaman yoktur veya röportajda böyle bir soru sormak için zaman yoktur. .

Yani, kötü kodlayıcılar kodu okuyabilir, ancak kodu iyi yazamazlar. Çalışmakta olan adayların örneklerini görmek ya da bir adaydan mülakatta kod yazmasını istemek, becerilerinin çok daha iyi göstergeleridir. Temiz özlü kod yazabilirlerse, kod iyi okuyabilirler.

Görüşme yaptığım her adaya FizzBuzz sorununun bir varyasyonunu soruyorum . Hızlı, basit ve normalde kötü kodlayıcıları bulduğum her şeyden çok daha hızlı seçebilir. İyi bir programcı onu çok hızlı ve kolay bir şekilde alacak ve kodlama stiline ve düşünme sürecine hızlı bir şekilde bakacaktır.

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.