“Kod örneğim” neye benzemeli? [kapalı]


24

Çok iyi bir telefon görüşmesi yaptım (CakePHP ile ilgili bir pozisyon için, özellikle soru için önemli değil). Görüşmeci özgeçmişim ve kişiliğimden etkilenmiş gibiydi. Sonunda, yine de, bana, gizlice korkunç bir programcı olmadığınızı kontrol etmek için mevcut çalışma projemden bir kod örneği e-postayla göndermemi istedi, ha ha!

Ben değilim de benim kod kendi ayakları üzerinde duramaz endişe, ama çok bir ara programcı ziyade uzmanıyım. Eminim benim kod örneği yapmalıdır bariz Ne tuzaklar gelmez durumda düşmek, onlar yerinde beni ekarte? İkincisi, ve bu muhtemelen cevaplanması gereken sorunun zor kısmıdır, bir kod örneğindeki hangi özellikler o kadar etkileyici olur ki, sizi anında programlayıcıya karşı daha uygun bir şekilde eğimli hale getirirler ?

Tüm fikir veya önerileri memnuniyetle karşıladı!


2
Gönderilecek kod örneğinde herhangi bir gereksinim var mıydı? Oldukça anlamsız görünüyor, herkes web'den güzel kodu kopyalayıp yapıştırabilir. Tabii bu hakkı bile alamayan insanları ayıklamaya çalışıyorlarsa ...
SinirliWorFDesignDesigner

5
Sadece vuruşlar için, isminin şeklini alan bir Perl betiği gönderebilirsin ...;)
Sinir

2
@ thesunneversets: Sanırım kişisel projelerinizden kesinlikle muhteşem kaynak kodu çıktı ...;) Cidden, bu kolayca sahte olabilir . Şu andaki işvereniniz, kaynak kodunuzun temsili bir örneğini vermenizde sorun yok mu? Sakıncası var mı bazı kod bir meslektaş (zaman içinde belki dosyanın gitti ve geriye birkaç kişi arasında) tarafından yazılmıştır?
SinirliFormsDesigner ile

2
Etik çıkarımlar biraz endişe vericidir ... ama sadece biraz. Ben yok düşünüyorum ben bir sanayi casusluğu tuzağına düşüyorum. İş arkadaşlarına gelince, ne yazık ki, sadece iki kişi bu kod temeli üzerinde ellerini ele geçirdi. :)
thesunneversets

4
@ thesunneversets, işvereninizin kodunu sağlamak sadece etik değil, birçok yerde yasadışıdır. Böyle yapma.
HLGEM

Yanıtlar:


17

Temiz kodu görmek isterim :

Temiz kod : Başka bir kodlayıcının kolayca okuyabileceği veya değiştirebileceği şekilde doğru ve düzenli bir şekilde biçimlendirilmiş yazılım kodu.

Bunun anlamı:

  • İşlevsellik - Önemsiz olmayan bazı basit işlev parçaları (bir grup alıcı / ayarlayıcı, hiçbir şey bildiğinizi göstermez)
  • Tutarlı, temiz stil - Popüler veya en azından genel kasa, girinti, aralık ve braket stilleri
  • İyi Adlandırma - Kalite adları - itek artış değeri değilse, kullanmayın . Anlamsız değişken isimleri kullanmayın.
  • Temiz kodun diğer nitelikleri - Hata kontrolü, koşullar, döngüler, uygunluk yöntemleri veya faydalı yöntemler ve iyi endişelerin ayrılması (yöntemler arasında) konusunda iyi uygulamalar. Ve bu% 100 KURU olmak için iyi bir zaman - tekrarlama yok!

Onlara ilginç olabilecek kadar karmaşık bir şey göndermek istiyorsun ancak iyi bir geliştiricinin ne yaptığını hemen anlayabileceği kadar temiz .

Yukarıdaki yorumlardan bazıları, bunun ne kadar kolay bir şekilde sahte olabileceği ile ilgili gibi görünmektedir.


* At Görüşmeci, ön geçmiş projeler hakkında sorulan çok az ise o zaman bu projeden bir numune için istedi ve bunu yazmanı gerekli sordu ya nasıl gelişti, ben süreç oldukça yalancı geçirmez olacağını düşünüyorum. Ben en çok adaylar düşünmek istiyorum yalan zaten başka alanlarda sorunları göstermek için gidiyoruz.


Kişiden kodu açıklamasını isterseniz ve yazamazlarsa yazmazlar veya ilk önce bunu anlama zahmetine girmeden başkasının kodunu ayarlamışlardır. Şaşırtıcı, yıllar boyunca kendi örneklerini açıklayamayan kaç kişiyle röportaj yaptım.
HLGEM

İşaretçinizin temiz koddan nefret etmesi durumunda bazı yorumlar ekleyin.
Ewan

9

İş ararken, birkaç farklı dilde bir dizi ACM programlama yarışması sorusu çözdüm ve o zamandan beri kod örnekleri için kullandım. İyi kod örnekleri yaptıklarını düşünüyorum çünkü:

  • Zorlu problemleri çözdüler
  • Sorun çok fazla bir bağlam gerektirmiyordu, ayrıca soruları almak kolaydı
  • Yazılan kodun kendisiyle ilişkili herhangi bir IP riski yoktur.
  • Her sorun makul bir şekilde tek bir dosyada bulunabilir ve genellikle çok uzun sürmez, bu nedenle herkesin çözümünüzü derlemesi ve test etmesi kolay olmalı ve sorulardaki test verilerini kullanabilir.
  • Karmaşık bir sorunu daha küçük parçalara ayırabileceğinizi gösterir.
  • Çözümünüzün herhangi bir yönünün nasıl çalıştığı hakkında sorular sorulursa, size, ne hakkında konuştuğunuzu bildiğinizi göstermek için harika bir fırsat verir, özellikle de çok eskiyse ancak ne olduğunu hızla çözebilirsiniz.

Ve sonra, oluşturduğunuz kod açık, tutarlı, okunması kolay ve anlaşılması kolay olmalıdır.

Ve son olarak:

  • Onları sadece eğlence için çözmeye değer ve iyi bir pratiktir.

Bu harika bir çözüm. Bunu yapacağım. En sevdiğin özel sorular var mı?
zkent

1
Benden bir yorum olarak, kod veya algoritmaları optimize etmek için bir pozisyon için başvuruda bulunmadıkça, tek dosyalı bir kod örneğine sahip olmanın mutlaka iyi bir fikir olmadığını düşünüyorum. Kod kesinlikle büyük olmamalıdır, ancak gerçekte neyi başarabileceğinizi gösteren bir temsilci olmalıdır (örneğin, iyi bir OO kodu yazıp kodu modüle bölüştürüyorsanız, bunu göstermelidir).
Namey

6
  • Hatayı derlemel / yorumlamalı ve en yüksek katılık derecesinde ücretsiz uyarmalıdır.
  • Her gün yazdığınız boyler kodu olmamalıdır. Eşsiz ve ilginç olun, bu yüzden kopyala / yapıştır yapmadınız.
  • Bunları neden / neden yaptığınızı açıklayan yorumlarla bazı ilginç tasarım kararları olmalıdır.
  • Yazdırılan en fazla 2-3 sayfa hedefleyin.
  • Başvurduğunuz dilde olmalıdır.
  • İlk defa okuduğumda beynimi acıtmamalı. Bir arkadaşınıza bakın ya da kod yazarken gönderin.

3

Seninle röportaj yapıyor olsaydım , kodunu görmek isterdim .

Temizlik iyi, problem çözme iyi, fakat gerçek kod daha iyi. İyi bir programcı, ne zaman başka bir programcı tarafından kandırıldığını bilir, böylece güven azalır.

Başka bir kişinin kodunu okumak, dans etmekle seks yapmak gibidir: gerçek şeyin ne zaman olduğunu bilirsiniz ve eğer diğer kişi sahte ise, sonunda bir felaket meydana gelir. (sadece gerçek inekler dans etmeyi bilmediğini farkettim)

Sadece kendine ve kodlama yeteneklerine güven . Görüşmecinizi gerçekten tanımıyorsanız, kodlama stilinizden / becerilerinizden ne beklediğini tahmin edemezsiniz.


10
İneklerin dans edebileceğini düşünmediğini seviyorum ama cinsel yeteneklerinden eminsin! : D
thesunneversets

Hayır, sadece çok fazla felaket gördüm ... :)
Machado

Okulumda, sosyal dans dersleri / toplarına katılan tek kişi mühendislik ana dalları.
Eva,

Daha doğru olması için seks oyununu bazı oyun referansları ile değiştirmelisiniz :)
zkent

2

Ayrıca şu anki işvereninizin kodunun OLMADIĞINDAN çok dikkatli olun (Size sahip olmadıklarını ve paylaşmayı sevmeyeceklerini garanti ederim.). Gurur duyduğunuz bir şeyi alın ve işvereninize özel olmamak için kendiniz yeniden çalışın (veritabanı tablolarına veya sunucu adlarına, vb. Referanslardan kurtulun). Ne yaparsanız yapın, hatalı olan veya kod türü için kötü bir teknik olan kod göndermeyin (set tabanlı bir işlem daha kolay olduğunda ve SQL kodunu incelerken daha iyi performans gösterdiğinde imleci gönderen birini reddederim.) Diğer diller için, diğer daha yaygın problemler için kullanılabilecek fakat diğer problemler için en iyi seçenek olmayan, nispeten nadir görülen bir problem problemini çözmek için var olan benzer teknikler vardır.


Tamamen elden geçirmeyi kabul ediyorum, böylece artık işverenlere özel herhangi bir bilginin artık iyi bir fikir gibi görünmediği anlamına geliyor. Etik önemlidir - bahşiş için teşekkürler!
thesunneversets

0

Renesis'ten yazılanları temiz kodla ilgili olarak ikinci olarak söylerdim, ancak gönderdiğiniz koda kalite ve iyi belgelenmiş birim testleri sağlayan listeye eklerdim. İyi bir programcının kodları için birim testleri yazması gerekir.


0

Adayları değerlendirirken kod örnekleri talep eden birinden bir görüş olarak, birkaç yüksek seviye özellik (kodun içeriği) ve birkaç düşük seviye özellik (kodun yapısı) vardır. Yüksek seviye özellikler:

  1. Kimlik : Kodun tadı. Kendinizi bir UI / HCI kodlayıcı olarak faturalandırıyorsanız, çalıştırdığımda görsel bir şey için iyi bir görünüm / his görmek istiyorum. Bir DB oluşturucusuysanız, veri gösterimi veya analiziyle ilgili ilginç bir şey görmek istiyorum. Örnek gurur duyduğunuz bir şey olmalı . Bunlardan en az birine sahip değilseniz kimliğiniz yoktur.
  2. Olgunluk : Farklı problemler için stratejileri değiştirir misiniz? İlginç problemleri mi çözüyorsun? Kod veya yaklaşımın benzer bir soruna yol açması kolay olur mu? Sohbette, bir kargo kültesi cemaatinin bir üyesine bakıyormuş gibi hissediyorum mu?
  3. İletişim : Kod ne yaptığını ve neden olduğunu kolayca açıklıyor mu? Bu, kodun basit olması gerektiği anlamına gelmez. Aslında, karmaşık kodun anlaşılmasını kolaylaştıran bir avantajdır.

Düşük seviye yönleri daha basittir:

  1. Stil : Kod temiz, tutarlı (bazı belirlenmiş yönergeleri izler) ve iyi belgelendirilmiş olmalıdır.
  2. paketleme : En azından kısa bir benioku, çalıştırılabilir bir versiyon ve çalıştırılabilir testler olmalıdır. Benioku bana bu ikinci kodun nasıl çalıştırılacağını ve bu özel kod örneğini neden gösterdiğinizi anlatmalıdır.
  3. Dil (ler) : Tipik olarak birinden pozisyon için dilden bir örneklemenin yanı sıra en güçlü hissettiğini de isterim. Kişinin mevcut tavanları hakkında iyi bir fikir verir.

İyi bir aday için, bir örneğin olmasını beklerim: A) Kurşun geçirmez küçük bir örnek veya B) Daha büyük ve ilginç bir projenin iyi bir parçası (örneğin, bir Github kişisel deposundan bir modül). Kişisel projeler ya da akademik projeler olmalarını bekliyorum. Birini ücretli bir projeden gönderirlerse, kullanmalarına izin verildiğine dair bir not bekliyorum. Eğer o notu alamazsam, onları adaylardan keser (zayıf aday) veya görüşme sırasında (güçlü aday) sorarım. İznin olmaması büyük bir kırmızı bayrak (muhtemelen yenilmez) olacaktır. İleri bir aday için, işlerinin bir parçası olarak yapıldığı için en iyi kaynak örneklerinden bazılarının gösterilemediğini belirten bir feragatname bekliyorum. Bununla birlikte, bu gösterilemez tasarımla neden gurur duyduklarının ve bir çocuk gibi nasıl sevildiklerine dair feci bir ifade bekliyorum.

Son olarak, bazı insanlar "Ah, birisi internetten sadece bir kod örneği alabilir" diye hile yaptığında, karşıt argüman, üretim kalitesi kodunu iyi anlamayan çoğu kişinin de gördüklerinde bunu anlamadıklarını ifade eder. . Ayrıca, kişi her zaman Google’ın kodun kontrol etmesi için ayırt edici bir satır olabilir. Ayrıca, en iyi durumda, kod çalmak adayı kendilerini utandırdıkları bir röportaja yönlendirecektir (“Peki neden bu şekilde yaptın…?”).

Önceki istihdam kodundan son bir not: Sadece yapma. Bir İK açısından, önceki istihdamdan kod istemek uygunsuzdur ve şirket hakkında bir kırmızı bayrak vardır. Her ikinizin de yasal sorumluluğu vardır (yani, her ikiniz de dava edilebilir) ve ne yaptıkları hakkında hiçbir fikirleri olmadığını gösterir. Önceki bir işveren için yapılan kod, kod zaten halka açık değilse veya bu işverenden açıkça izniniz olmadıkça asla verilmemelidir. Daha kötüsü, büyük bir şirkette doğrudan patronunuz size izin verme yetkisine sahip olmayabilir, bu durumda hukuk departmanıyla iyi eğlenceler mi? Çıkmakta olan bir çalışan için IP’lerini göstermekten çok mutlu olacaklarına eminim.


Ayrıca, tam açıklamada, doktora için kabul edildiğim lisansüstü laboratuarına bir kod örneği verdiğimi de not edeceğim. Bu kod örneği özerk bir robotun (5-10k satır) tam koduydu ve belirli bir üç dosyayı seçti. Belgelendirme saygındı, ancak bozulmamış değildi. Tekrar yapmak zorunda kalsaydım, büyük olasılıkla kodumun basılı bir versiyonunu yerinde röportajıma getirmezdim (büyük harflerle "ROOKIE MISTAKE" yazan 100 sayfa getirebilirdi). Tam bir burs aldım, bu yüzden çok fazla sahte pas değildi. Ahlaki: Çok fazla> = çok az.
Namey
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.