“Kopyala ve yapıştır” kodlayıcılarını nasıl hızlıca ayıklayabilirim? [kapalı]


15

Ben sadece kopyala-yapıştır kodu sonra çalışır ve umarım eğer kontrol millet özgeçmişleri filtrelemek için bir yol gerekir. Tüm bunlar, sistemdeki kodun geri kalanını anlamaya (veya dikkat etmeye) gerek kalmadan gerçekleşir.

Tabii ki, kopyalama ve yapıştırma kodunun yeni bir nesne, kontrol vb.

Belki de yetenekleri proje için çok eski veya alakasız olan bazı üst düzey çocuklar ile karşılaştım, yaptıkları tek şey google, kopyala-sonra yapıştırın, bir bütün olarak çözümü düşünmeden yapıştırın. Sonuç olarak, aynı projede JSON, AJAX, geri aramalar, ASMX, WCF ve geri dönüşler hakkında bir yanlışlık var. Her bir teknolojinin kullanıldığı yerde bir tutarlılık veya mantık olmadığı açıktır.

En kötü durumda, bu tür geliştirici saldırı için güvenlik sorunları ve vektörler oluşturur.

Soru

Programlama geçmişi zayıf olan kişileri filtrelememi nasıl önerirsiniz? Özgeçmiş düzeyinde yapabilir miyim? Değilse, görüşme sırasında bunu nasıl yaparım?


Projeniz için bir teknoloji mimarına ihtiyacınız var gibi görünüyor. Birisi WRT yasasını kullanılan standartlara, kullanılan teknolojilere koymalı ve onu haftanın evcil hayvan fikrinden uzaklaştırmalıdır.
quickly_now

Yanıtlar:


47

Belki de yetenekleri proje için çok eski veya alakasız olan bazı üst düzey çocuklar ile karşılaştım, yaptıkları tek şey google, kopyala-sonra yapıştırın, bir bütün olarak çözümü düşünmeden yapıştırın. Sonuç olarak, aynı projede JSON, AJAX, geri aramalar, ASMX, WCF ve geri dönüşler hakkında bir yanlışlık var. Her bir teknolojinin kullanıldığı yerde bir tutarlılık veya mantık olmadığı açıktır.

Sorun geliştiricilerin becerilerinin olduğunu düşünmüyorum. Sorununuz başka yerlerde, belki de daha iyi kodlama disiplinlerini "teşvik etmek" için kendine güveni olmayan bir takım lideri veya mimarı ya da teknik borcu yönetmenin önemini anlamayan ve geliştiriciler bunu yapmak için zaman ve kaynak. Şirketiniz kod incelemelerine sahip mi?

Liderlik sorun olabilir, geliştiricileri kopyalayıp yapıştırma.


16
+1 Leadership may be the problem, not copy-paste developers. Bu benim yorumumdu.
George Marian

Ciddi anlamda. İletişim bölümünde ciddi bir şey AWOL.
MIA

+1: George Marian'ın yorumları üzerine Ditto. Çok iyi dedi Robert.
Jim G.

bu iyi olanı. Umarım mülakatçılara ulaşır, yöneticileri işe alır.
Saar

bu cevap üzerinde çok fazla fikir birliği var gibi görünüyor, ama dont "kıdemli" düzey çocuklar işlevselliği dikte ve daha sonra uygulama kodlayıcılara bırakıldı, değil mi? Demek istediğim, üst düzey düzeydeki adam "Hey, bir teknoloji kullanmayın, sadece <bu ikisini> kullanın" diyebilir, ama yine de kopyala yapıştır geliştiricileri kopyala yapıştır yapacaktır! Yanlış mıyım ?
Chani

13

Programlama yapamayan programcıları ayıklamanın yolu, tarama veya röportaj aşamasının bir parçası olarak onlara pratik bir programlama alıştırması yapmaktır. (İkincisi muhtemelen daha iyidir çünkü hile yapmayı önlemek için çevreyi kontrol edebilirsiniz.)

Ama bunun gerçekten sorununuzu çözeceğini sanmıyorum.

... aynı projede JSON, AJAX, geri aramalar, ASMX, WCF ve geri gönderimlerle ilgili bir karışıklık var. Her bir teknolojinin kullanıldığı yerde bir tutarlılık veya mantık olmadığı açıktır.

IMO, buradaki asıl sorun, ekibinizin yeterli dahili kod incelemesi yapmaması ve bilinen sorunlara tercih edilen çözümlerin bir "oyun kitabı" geliştirmemesidir. Bu kısmen bir kültür meselesi, kısmen bir iletişim meselesi ve (muhtemelen) kısmen proje son teslim tarihleriyle ilgili bir meseledir.

Başka bir konu, projenin genellikle uzun bir ömre sahip olması ve bu ömür boyunca yeni teknolojilerin / tekniklerin ortaya çıkması ve eskilerinin lehine düşmesidir. Teknolojilerin / tekniklerin "köpek kahvaltısı" kullanımından kaçınmak istiyorsanız, şunlardan birini yapmanız gerekir:

  • proje başına kullanılabilecek teknolojilerin / tekniklerin bir listesini oluşturmak ve uygulamak veya
  • bir proje tarafından kullanılan teknolojilerin yenilenmesi için çaba sarf etmelidir.

1
Röportaj sırasında yazılı bir test yapmıyorsanız, kendinizi ayağınızdan çekiyor olabilirsiniz. Onları son dört işverenimde gördüm ve bazı soruların ne kadar basit olduğuna şaşırdım. Bir yerde, başka bir adayın testi tamamlamadan ağlayarak ayrıldığı söylendi.
Adrian J. Moreno

1
Röportaj sırasında yazılı bir testin, katılımcılarınızın gerçekten iyi programlama becerilerine sahip olduğundan emin olmanın tek yolu olduğuna kesinlikle katılıyorum. Ancak cevabımın ana itkisi, sadece geliştirici becerilerinin SO'nun sorununu çözmek için yeterli olmadığıdır .
Stephen C

Düzenleme zamanlayıcısı tarafından yakalandı. Standartların ve incelemenin gerekli olduğunu tamamen kabul ediyorum. Kısa bir süre önce yeni bir kodlama standartları belgesi yayınladık ve bunu QA'ya gönderecek çok daha az hataya sahip olduğumuz bazı yeni kod inceleme süreçleriyle birleştirdik. Bir sonraki hedefim iç eğitim ekibine başlamaksa.
Adrian J. Moreno

10

3 aylık gözetim altında insanları işe alın. Emdikleri takdirde onları kov.

MUAYENE yapmazsanız BEKLEMEZSİNİZ. Kod incelemeleri, denetim araçları. Bir CI sunucusu bunları otomatik olarak çalıştırabilir.

Gerçek koddaki sorularda olduğu gibi görüşmelerinizde de gerçek sorular sorun.

Beyaz tahtaya kod yazmalarını sağlayın.

Teknik olmayan bir yöneticiyseniz, bunu yargılamak için vasıfsızsınız.

Kalifiye değilseniz, testi yapmak için saygın bir üst düzey profesyonel danışman alın. Mevcut insanlarınıza ve iş rakiplerinize 100x üretken bir kişi tanıyıp tanımadıklarını sorun. Görüşme yapmak için onlara ödeme yapın.

Ameliyat başı olmayan bir hastane işletmek istiyorsanız, hemen devam edin.


deneyimli olandan mı bahsediyorsun? Neden işinden ayrılmalı ve berbat etmeleri için 3 aya ihtiyaç duydukları bir yere katılmalılar :) Neden insan kaynakları var?
Saar

Deneyimli, yetkin insanlardan bahsediyorum. Uzun vadede daha ucuzlar. İnsan kaynakları iş yasalarını ihlal ettiğiniz için dava açmanızı durdurur. Aslında Henry Ford'un sayısal yöneticileri için dokunaklı şeyler yapmak için orada. Gerçek hikaye, bak. Kişinin iyi çalışacağını zaten biliyorsanız, bunda benden daha iyisiniz. Kişi iş değiştirecek, çünkü çalışmak için çok harikasın, harika bir çalışma ortamı var ve denetimli serbestlikten sonra yağ bonusu alıyorlar. Kalıcı olarak gereksiz hale getirilirse, şirketiniz fazladan üç ay öder. Böyle bir şey
Tim Williscroft

9

Son birkaç yıldır insanlarla görüşerek ve adayların% 90'ının programlayamadığını tespit ettim. Programlamayı belirlemek için mülakat tekniğim, adaya aşırı basit bir kısa bilgi vermek ve adayın bir işaretleyici ve bir beyaz tahta kullanarak çözmesini sağlamaktır.

Hata modları şunları içerir:

bir tasarım bulmak ve daha sonra farklı bir şey uygulamak. Bu adaylar bir takım için tehlikeli oldukları için reddedilir. özellikleri takip etmeyin, böcek vb yazın.

Bir tasarım icat edememek. Şaşırtıcı sayıda "deneyimli" adayın uygulama tasarımını içerecek bir spesifikasyona ihtiyacı vardır.

CV iddia deneyimine rağmen programlama dilini bilmemek.

Daha ayrıntılı teknik özellikler çıkarmak için ek sorular sormamak.

Tasarım kararlarını açıklayamamak. Bu çok önemli. Birisi nedenini açıklayamazsa, her seferinde bunu farklı yapacak ve tutarlılık kaybolur.

Sonuç olarak, çok sık görüşmemek için çok fazla zaman ayırdım. Ancak, geliştirme ekibi çok iyiydi ve tüm şirkete tam saygı duydu ve teslim oldu!


Deneyiminiz oldukça normal geliyor.
quickly_now

5

FizzBuzz'a Jeff Atwood'un http://www.codinghorror.com/blog/2007/02/why-cant-programmers-program.html adresindeki gönderide bahsettiğini öneriyorum .

1'den 100'e kadar sayıları yazdıran bir program yazın. Ama sayı yerine üç baskı "Fizz" ve beş baskı "Buzz" katları için. Hem üç hem de beşin katları olan sayılar için "FizzBuzz" yazdırın.


9
-1. FizzBuzz toplam salakları tespit eder. Kopyala ve yapıştır kodlaması yapmak için tam bir aptal olamazsınız.
back2dos

@ back2dos - Yüz yüze mülakat yaptığınızda "toplam salakları" ayıklamış olmalısın. FizzBuzz, birisine sorunu ve en iyi nasıl çözeceğini düşünmesini sağlar. Bu zor değil, bu yüzden kopyalayıp yapıştıranları ortaya çıkarmalı çünkü kopyalayıp yapıştıranlar şeylerin arkasındaki "neden" i öğrenmiyorlar.
Jetti

3
+1. FizzBuzz toplam aptallardan daha fazlasını algılar. Ayrıca, teknik beceri eksikliğini eşit sosyal becerilerle telafi eden insanları da tespit eder. Bu insanlar ilk tarama testini geçme şansına sahipler. Örneğin, meşru derecelere sahip olabilirler.
MSalters

1
Bana fizzbuzz soruyorsun ve ben hemen ayrılıyorum. :) Junior kategorisinde IMO gerçekten faydalı değil, çünkü yine de çocukları eğiteceksiniz ve kıdemli kategoride işe yaramaz + saldırgan. akıllı + olsun-thngs yapılan insanlar başka yollarla mümkün olmalıdır. Nokta benzeri soruların kodlanması, gelincik çiftlik şirketlerinin IME göstergesidir. Eğer aslında birisinin kodlama becerileri ile ilgileniyorsam bir kod inceleme sorusu veriyorum . Ve tüm ilgili cevapları hayal kırıklığı olmadan alın.
Balog Pal

@BalogPal: İki dakika boyunca gülüp deli gibi yazmaya başlarım ve sonra ilk kez derlemez, çalıştırmaz ve çalışmazsa kendimden utanırdım.
16:13, gnasher729

2

Üç röportaj sorusu soruyorum

  1. Koleksiyon çerçevesinden bir şey içe aktarmadan, Java'da bazı sayısal türleri depolayabilen bağlantılı bir liste yazın
  2. Bu listeye nasıl düğüm ekleyebileceğinizi / kaldırabileceğinizi gösteren bir kod yazın
  3. Bu listeden maksimum / dak değerini nasıl alabileceğinizi gösteren bir kod yazın

İnsanların bunu 5 dakikada tamamladığını gördüm ve insanların vazgeçmeden önce 30 dakika boyunca mücadele ettiklerini gördüm.


İlk gereklilik daha spesifik olmalıdır. java.util.LinkedList l = new java.util.LinkedList()hiçbir şey içe aktarmaz, ancak kesinlikle yerleşik koleksiyonları kullanır .
Barry Brown

Bu özellikle yeni mezunlar için adil bir soru. Herhangi bir dikkat gösterdiyseniz veya programlama yapmak için herhangi bir zaman geçirdiyseniz, bu neredeyse önemsiz olmalıdır. Kesin olmak zorunda olmadığını, ancak yeterince yakın olduğunu varsayıyorum.
Bryan Harrington

3
@Bryan, henüz kimse denemedi. Ve cevabın% 100 doğru olup olmadığını gerçekten umursamıyorum. Sadece sorunu anlamaları ve ona yetkin bir şekilde yaklaşmaları. En yaygın sorun, ekleme / kaldırma işleminin listenin başında veya kuyruğunda çalışmadığı sorundur. İnsanların bana işaret eden tepkilerine dayanarak işe alınmasını tavsiye ettim.
sal

2

Bunu özgeçmiş düzeyinde yapamazsınız, çünkü bunu yazmak için sonsuz zamana sahiptirler, ancak yaptıklarıyla ilgili teknik bilgi gerektiren birkaç soru sorarsanız, bir telefon görüşmesinde yapabilirsiniz. Bu size hem cevabı (iyi ya da kötü) hem de oraya ulaşmalarının ne kadar zaman aldığını verir.

Bir röportajda onlara kod yazmalarını sağlayın. Gerçekten programlayıp programlayamadıklarını anlamanın tek yolu budur. Sorunu basitleştirin, onlara internet bağlantısı olan bir bilgisayar verin ve kullandığınız IDE, herhangi bir soru sormalarına izin verin (gimme-hte-codez hariç) ve nasıl çalıştıklarını izleyin.


DÜZENLEME: Post-mortem analizi için PMD'nin bulmak için bir kopyala / yapıştır dedektörü olduğu görülüyor: http://pmd.sourceforge.net/cpd.html


"... ve kullandığınız IDE" ye kadar sizinle anlaştım. Kodlayıcılar çalışma ortamlarımızla ilgilidir ve $ random-IDE hakkında bilgi sahibi olma olasılığı yoktur. 20 yılı aşkın bir süredir kodlama yapıyorum ve ilk 10 dakikayı, bana bir tane attıysanız IDE'yi nasıl çalıştıracağınızı anlamaya çalışıyorum. Bir editör (webby şeyler yaparken lüfer, diğer her şey için emacs) ve diğer her şey için komut satırı araçları (revizyon kontrolü, gerektiğinde derleme vb.) Kullanıyorum. Hata ayıklayıcı kullanmıyorum. Bir hata ayıklayıcıya ihtiyacınız varsa bunu yanlış yaptığınızı öğrendim: hata ayıklama kodu bunun için!
HedgeMage

@ HedgeMage, onu kullanmak zorunda olduklarını söylemedim ... Bir kişinin bu durumu nasıl ele aldığını görmek çok anlatıyor. Not defteri + javac yeterli olacak mı? NetBeans'i indirip kuruyor mu? IDE'nizde X'in nasıl yapılacağını, biraz hacklenip Y ve Z'yi isteyecek mi?

@HedgeMage, bilmeniz gerekebilecek tüm olası şeyleri önceden belirleyebiliyorsanız, hata ayıklama kodu harikadır. Hata ayıklayıcılar, bir sonraki soruyu belirlemek için soruların yanıtlarını görmeniz gereken durumlarda iyidir, hata ayıklama kodu ile yeni bir ikili kod gerektirir ve yeniden başlatılıp tekrar konuma gider.

1
@ Thorbjørn: Faturalarım, son birkaç yıldır yorumlanmış dillerde çalışarak ödendi, ancak C kodlama günlerimde bile, hata ayıklayıcıyı iyi hata ayıklama kodu lehine reddettim. Belki de benim açımdan bir önyargı: Kendi başına kod yazmayı asla öğrenmeyen bir sürü insanla üniversiteye gittim - birlikte bir şeyler tokatladılar ve hata ayıklayıcı "tür" çalışana kadar çığlık atan her şeyi düzelttiler. Bu tür bir kayma kodlamasına dayanamıyorum. Hata ayıklayıcıların kötü olduğunu ima etmek istemedim, sadece onlar ve diğer IDE özellikleri tüm iş akışlarına ait değil.
HedgeMage

@HedgeMage, hata ayıklama için "işe yarayana kadar döv" yaklaşımının iyi olmadığını kabul ediyorum, ancak hata ayıklayıcıların kötü olduğu sonucuna varabilmek belki de biraz geniş bir uzlaşmadır.

1

Basit

  • (1) Bir odaya + Serbest Oksijene kilitleyin.
  • (2) İnternet bağlantısı + IDE seçeneği + Yiyecek erişimi olan bir PC verin.
  • (3) Tüm gelen ve giden trafiği kaydetmek için wireshark veya benzeri bir yöntem kullanın.
  • (4) Ona orta düzeyde bir görev verin.
  • (5) Atama tamamlandıktan sonra tüm HTTP trafiğini inceleyin.
  • (6) Konu büyük miktarda kaynak kodu kopyaladıysa, Konuyu sonlandırın .....

Düzenle:

Makerofthings7'nin işaret ettiği gibi, pratik açıdan bir video yakalama (ekran yakalama) yapabilir.


Yeni ama sonuçta pratik değil.
Robert Harvey

... ya da sadece bir video çekimi yapın, mantıksal ilerlemeye bakın. Güzelliğin (veya kaosun) ortaya çıkışını izleyin.
goodguys_activate

1
Konu sonlandırılsın mı? Serbest oksijeni geri çekerek? Dağınık!

@ Thorbjørn: Kaynak kodunun büyük parçalarını kopyaladıktan sonra kendilerini ayağa vurdukları kadar dağınık değil.
Joe D

1
İnterneti kendi yararına kullanamayanlar dünkü modlarda kilitlidir. Ben her zaman soru ne kadar önemsiz olursa olsun bakmak için orada bazı iyi örnekler olduğunu varsayalım. Kopyalayıp yapıştırmıyorum, iyi örneklere bakıyorum ve en iyi tekniği uyguluyorum. Ben tam bir programcıyım, yani bir uzman değil, bir genelciyim ve dünyanın geri kalanına güveniyorum. Açıkça günahkar!
Junky

1

Zayıf kodlayıcıları "ayıklamak" istiyorsanız, örneğin Programcı Yetkinlik Matrisi'ni deneyebilirsiniz (yararlıdır, ancak olası tüm alanlar için geçerli değildir - elbette kendi yapabilirsiniz) veya codility.com (görevler çok iyi ve çok zaman kazandırır).

Genel olarak, iyi kodlayıcılar kiralamak zordur ve genellikle uzun yıllar uygulama gerektirir. Motivasyon sorularından bahsetmemek için sadece kodlama hakkında sorular sormakla kalmayıp aynı zamanda matematik, mantık ile kendi röportaj soruları veritabanınızı başlatabilirsiniz.


0

Adaylarınızla ilgili sorunun hiç programlayamadıkları değil, iş için doğru aracı kullandıklarını hissetmediklerini söyleyebilirim. Benim önerim, yeni bir sistem için üst düzey gereksinimler verilecekleri ve bir mimari sağlamaları ve bileşen seçimlerini haklı göstermeleri istenecekleri bir deneme sorusudur. Ancak tarayıcı olmadan kod yazamayan adaylar için FizzBuzz'ı saklayın.

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.