Programcı olduğunu iddia eden birinin, birkaç YouTube videosunu izlemiş ve kavramları gerçekten anlamadan bazı jargonları öğrenmiş bir sahtekar olup olmadığını nasıl anlarsınız?
Profesyonel bir programlama işi için başvuran herkes, işe alım sürecinin birden çok aşamadan geçtiğini ve haftalarca veya aylarca sürebileceğini bilir. Ama ya daha az resmi ya da daha az finanse edilmiş bir programcı arıyorsanız? Bir kişinin sırf yapabileceğini söylediği için kod yazabileceğine güvenmek zorunda mısınız?
Programcı olduklarını iddia eden ama aslında programcı olmayanları ayırt etmenin bir yolu bir araştırma anketinin sorularına yanıt vermelerini isteyerek ödeme alabileceklerini belirtmek olabilir. "Gerçekten kodluyor musunuz? Programcılarla Çevrimiçi Anketler için Tarama Soruları Tasarlıyor ve Değerlendiriyor" başlıklı makaleyi yazan Bonn Üniversitesi'ndeki araştırmacılar; programcılık tecrübeleriyle parola saklama ve güvenlik içerikli çalışmalar konusunda tecrübeli ve köklü programcıları sahtekarlardan elde ettikleri bilgilerle nasıl ayırt edecekleri bir araştırmaya yönlendirildi. Aynı ekip bu çalışmalardan birinde 1600 bilgisayar bilimi öğrencisinden yalnızca 40'ını 100 avro ödeme karşılığında çalışmaya katılmaya ikna edebildi. Deneyimli profesyonel programcıları işe almak daha zordur çünkü genellikle bu tür bir çalışmaya harcayacakları zaman için çok fazla talepleri bulunur.
Araştırmacılar, GitHub, Stack Overflow, Meet-up grupları gibi platformlardan ve sosyal medyada bilgi paylaşarak ve gazetelere ilan vererek, yeterli sayıda katılımcı çekmek için sorun şudur ki:
Araştırmacılar genellikle son kullanıcı deneyim çalışmalarından önemli ölçüde daha yüksek ücretler sundukları için, katılımcıların programlama becerisi olmamasına rağmen araştırmaya katılmaları için bir istek oluşturulabilir.
Bu gibi çalışmalara güveniyorlar aynen online Clickworker ajansını kullandıkları gibi.
"Gerçek programcıları" hızlı bir şekilde tanımlayabilmenin avantajları olacağı bellidir ve bu nedenle ortaya çıkardıkları sorular sadece akademik araştırma olarak kalmayı daha geniş bir alanda kullanılacaktır.
Çalışmanın amacı, aşağıdaki gereksinimleri karşılamayı hedeflemektedir:
-
Etkililik: Programcılar ve programcı olmayanlar arasında ayrım yapabilme - soruların alan bilgisine dayanması ve yeterince karmaşık olması gerekir, böylece sadece programcılar makul bir süre içinde cevap verebilir ve sadece tahminler için herhangi bir kapsam bırakmamalıdır.
-
Verimlilik: Mümkün olduğunca az zaman harcama - amaç, programcıların hızlı bir şekilde yanıtlayabilecekleri soruları bir araya getirmek ve ayrıca programlama becerisi olmayan katılımcıların, yanıtlayamayacaklarına hızla karar vermelerini sağlamaktır.
-
Kopyaya karşı güvenl: Soruların sorulduğu sistem, programlama becerisi olmayan katılımcıların örneğin online arama motorları veya forumları kullanarak cevaplara ulaşmasını zorlaştıracak şekilde tasarlanmalıdır.
-
Dil bağımsızlığı: Katılımcıların yetenekli olduğu programlama dili ne olursa olsun sistem çalışmalıdır.
Başlangıçta 16 soru önerildi ve başlangıçta programcı olduğu bilinen 50 kişiye - profesyonel ya da öğrenciler ve 100 programcı olmayan kişi, 35'i bazı programlama becerileri olduğunu iddia edenlere sunuldu. Test, iyi bilinen programlama dillerindeki temel bilgiyle başladı ve ardından aşağıdakilerle devam etti:
S1: Daha az bilinen bu programlama dillerinden hangileriyle daha önce çalıştınız?
Seçeneklerin tümü kurgusaldı ve programcılardan biri hariç tümü doğru yanıtı verdi, "Yukarıdakilerin hiçbiri". Bununla birlikte, programcı olmayan grubun %91'i aynı cevabı verdiği için soru iyi bir ayırt edici değildi.
Bir sonraki soru, programcıları programcı olmayanlardan ayırmayı sağladı. Soru:
S2: Programlama sırasında bu web sitelerinden en çok hangisini yardım alıyor veya kullanıyorsunuz?
Ardından, Star Trek için bir kaynak olan Memory Alpha, Stack Overflow, Wikipedia, LinkedIn'ı içeren bir liste. Tüm programcılar Stack Overflow'u seçti ve başka hiçbir seçenek seçilmedi. Programlama yapmayan grubun %60'ı programlamadıklarını itiraf etti, %15 listelenen sitelerden hiçbirini kullanmadıklarını söylemişler, %9 Memory Alpha, %8 Wikipedia, %2 LinkedIn ve sadece %6 Stack Overflow seçmiş.
Sonraki beş soru, temel bilgileri çoktan seçmeli cevaplarla test etti ve programcılar ile programcı olmayanlar arasında ayrım yapmak için en iyi sonucu verenler şunlardı:
S3: Bir derleyicinin işlevinin açıklamasına en iyi uyan yanıtı seçin.
S4: Recursive bir fonksiyonun tanımına en iyi uyan cevabı seçin.
S6: Bu değerlerden hangisi bir Boolean için en uygun değerdir?
Programcı olmayanların dörtte biri ila üçte birine kıyasla tüm programcılar bunları doğru yanıtladı.
Programcı olmayanların daha yüksek bir oranı doğru yanıt verdiğinden ve bazı programcılar yanlış seçim yaptığından, iki çoktan seçmeli soru pek işe yaramadı:
S5: Bir algoritmanın açıklamasına en iyi uyan cevabı seçin
S7: Lütfen 2'nin tüm güçlerini seçin.
Bu sorular, programcı grubundan en az %98 doğru cevap oranına ulaşamadıkları veya programcı olmayan grubun %40'ından fazlasının doğru cevabı verdiği gerekçesiyle reddedilmiştir.
En kötü performansı gösteren soru şuydu:
S10: Lütfen tüm geçerli onaltılık sayıları seçin.
Programcıların yalnızca %70'i ve programcı olmayanların %6'sı doğru yanıt verdi.
Programcıların sırasıyla %20 ve %24'ünü şaşırtan koda dayalı iki soru bunlardı:
S12: Aşağıdaki kodun çalışma süresi nedir?
S13: Kodu çalıştırırken, 6. satır için bir hata mesajı alıyorsunuz: Array index out of range. Sorunu çözmek için neyi değiştirirdiniz?
Soruların arasında bulunun koda dayalı dizi sıralaması için kullanılan sorular, programcıları ve programcı olmayanları ayırt etmede etkiliydi:
S14: Algoritmanın amacı nedir?
S15: Fonksiyonun parametresi nedir?
Bu arada 16. soru, "merhaba dünya" kodundaki bir geriye dönük döngü ile ilgiliydi ve programcılar arasında yalnızca %94 doğru olduğu için iptal edildi.
Bu Çalışmanın bir sonucu şuydu:
Programlama eleme soruları tasarlamak önemsiz değildir ve soruları test etmeden kullanmanızı tavsiye etmiyoruz.
belki de daha önemli sonuç şuydu:
Topluluğumuzda yaygın olan yazılım geliştirici araştırmaları için, kendi kendine bildirilen programlama becerisine veya bir platformun işe alma özelliklerine güvenmeniz tavsiye edilmez. Test setimizde, Clickworker programcılarının %42'si, temel gerçeklik programcıları grubumuzdaki en kötü performans gösterenlerden daha az doğru yanıt aldı.