Dolayısıyla, bunun bir röportaj sorusu olduğunu ve gerçek bir gerçek yaşam senaryosu olmadığını göz önünde bulundurarak doğru yaklaşımın (ve muhtemelen anketörün aradığı şeyin) netleştirici bir soru sormak ya da yazmak olduğunu düşünüyorum. bitmiş "ve devam et. İşte nedeni.
Mülakatçı Ne İstedi:
Asla aynı değeri iki kez döndürmemeyi garanti eden bir fonksiyon yazın. Bu işleve aynı anda birden fazla makine tarafından erişileceğini varsayalım.
Mülakatçının İhtiyacı Olan:
Bu aday gereksinimleri etkili bir şekilde değerlendirir ve gerektiğinde ilave girdi ister mi?
Asla varsayma.
Bir mühendis bir gereksinimi ele aldığında (bir SOW veya Spesifikasyon veya başka bir gereksinim belgesi aracılığıyla), bazıları açıktır ve diğerleri tamamen belirsizdir. Bu, ikincisinin mükemmel bir örneği. Önceki cevapların göstermiş olduğu gibi, (a) sorunun niteliğine ilişkin olarak ya da (b) sistemin niteliğine ilişkin birkaç önemli varsayımlarda bulunmadan bu gereksinime cevap vermenin bir yolu yoktur, çünkü gereklilik yerine getirilemez. yazıldığı gibi (mümkün değildir).
Cevapların çoğu sorunu bir dizi varsayım yoluyla çözme girişiminde bulundu. Biri, hızlıca halletmesini ve yanlış olması durumunda müşterinin endişelenmesini bekler.
Bu gerçekten kötü bir yaklaşım. Bir müşteri olarak, net olmayan bir gereklilik verirsem ve mühendis gider ve bana işe yaramaz bir çözüm geliştirirse, işe gitmeleri ve ilk önce bana sormadan rahatsız olmadan paramı harcadıkları için üzgün olacağım. Bu tür bir şövalye karar vermesi, ekip çalışması eksikliği, eleştirel düşünememe ve kötü karar vermeyi gösterir. Güvenlik açısından kritik bir sistemde can kaybı da dahil olmak üzere her türlü olumsuz sonuca yol açabilir.
Neden Soru Sor?
Bu alıştırmanın, belirsiz gereksinimlere göre inşa edilmesinin pahalı ve zaman alıcı olduğu anlamına gelir. OP'nin durumunda, size imkansız bir görev verildi. İlk işleminiz açıklığa kavuşturmak için sorulmalıdır - gerekli olan nedir? Ne dereceye kadar benzersizliğe ihtiyaç var? Bir değer benzersiz değilse, ne olur? Bu soruların cevabı birkaç hafta ile birkaç dakika arasındaki fark olabilir. Gerçek dünyada, karmaşık sistemlerdeki (çoğu yazılım sistemi de dahil olmak üzere) maliyetlerin en büyük itici güçlerinden biri belirsiz ve anlaşılamamış gereksinimlerdir. Bu, proje yeterince büyükse, pahalı ve zaman alıcı hatalara, yeniden tasarımlara, müşteri ve ekip sıkıntılarına ve medya kapsamını benimsemeye yol açar.
Farz edince ne olur?
Havacılık endüstrisindeki geçmişim ve havacılık başarısızlıklarının son derece görülebilir doğası nedeniyle, önemli noktaları göstermek için bu alandan örnekler getirmeyi seviyorum. Mars İklim Orbiter ve Mars Polar Lander - Başarısız bir çift Mars görevini inceleyelim. Her iki görev de yazılım sorunlarından dolayı başarısız oldu - çünkü mühendisler, kısmen belirsiz ve kötü iletilen gereksinimler nedeniyle geçersiz varsayımlarda bulundular.
Mars İklim Yörüngesi - bu dava genellikle NASA İngilizceyi Metrik birimlere dönüştürmeye çalıştığında ne olacağı olarak belirtilir. Bununla birlikte, gerçekte neyin nakledildiğinin aşırı basit ve zayıf bir temsilidir. Doğru, bir dönüşüm sorunu vardı, ancak tasarım aşamasında yetersiz iletişim gereksinimleri ve yanlış bir doğrulama / onaylama şeması vardı. Ayrıca, iki farklı mühendis, uçuş yörünge verilerinden açıkça belli olduğu için sorunu fark ettiğinde, sorunu bir iletim hatası olduğunu varsaydıkları için uygun seviyeye çıkarmadı. Görev ops ekibi konunun farkında olsaydı, düzeltmek ve görevi kurtarmak için yeterli zaman vardı. Bu durumda, ne olduğunun tanınmaması imkansız bir mantıksal durum vardı, bu da masraflı görevin başarısız olmasına yol açtı.
Mars Polar Lander- bu durum biraz daha az tanınmıştır, ancak Mars İklim Orbiterinin başarısızlığına geçici olarak yakın olmasından dolayı muhtemelen daha utanç vericidir. Bu görevde, yazılım roketin itici destekli inişini Mars yüzeyine kontrol etti. Yüzeyin 40 metre yukarısındaki bir noktada, iniş yapan kişinin bacakları inişe hazırlanırken açıldı. Ayrıca, yazılımın motoru durdurmasını bildirmek için hareket algılayan (çarptıklarında sinyal veren) bacaklarda bir sensör vardı. NASA'nın ne olduğuna dair en iyi tahmin (çünkü birden fazla olası başarısızlık ve eksik veri var) bacaklarda rastgele titreşimlerin aynı anda konuşlandırılmaları nedeniyle aynı anda ve yanlış bir şekilde kapatma mekanizmasının yüzeyin üzerinde 40m yukarı harekete geçmesi ve 110 $ 'ın çökmesine ve tahrip olmasına yol açmasıdır. M uzay aracı. Bu olasılık gelişimde artırıldı, fakat asla ele alınmadı. Sonuçta, yazılım ekibi bu kodun nasıl çalışması gerektiğine dair geçersiz varsayımlarda bulundu (böyle bir varsayım, sahte bir sinyalin, aksine gösteren testlere rağmen, alınamayacak kadar kısa sürdüğü) ve bu varsayımlar sonrasına kadar asla sorgulanmadı. gerçek.
Ek Hususlar
İnsanlarla görüşmek ve değerlendirmek zor bir iştir. Bir adayın araştırmak isteyebileceği bir adayın birkaç boyutu vardır, ancak en önemlilerinden biri bir bireyin eleştirel düşünme yeteneğidir. En azından eleştirel düşüncenin iyi tanımlanmadığı pek çok nedenden ötürü, eleştirel düşünme becerilerini değerlendirmek için çok zor bir zaman geçiriyoruz.
Bir mühendislik eğitmeni olarak, öğrencinin eleştirel düşünme yeteneğini değerlendirmenin en sevdiğim yollarından biri, biraz belirsiz bir soru sormaktı. Daha keskin öğrenciler, sorunun hatalı öncülünü tespit eder, not eder ve öncül verilen cevap ya da tamamen cevap vermeyi reddeder. Genellikle, aşağıdakine benzer bir soru sorardım:
İş yığınınızdan bir çizim alırsınız. Çizim çeşitli farklı bilgiler içerir, ancak en önemlisi yatay bir yüzeye işaret eder ve "Mükemmel derecede düz" der. Yüzeyi 5 "genişliğinde 16" uzunluğunda ve kısmı alüminyumdan yapılmıştır. Bu özelliği yaratacak parçayı nasıl işleyeceksiniz?
(Bu arada, böyle kötü bir spesifikasyonun işyerinde ne sıklıkta göründüğüne şaşıracaksınız.)
Öğrencilerin mükemmel bir özellik yaratmanın mümkün olmadığını ve cevaplarında bunu ifade edeceklerini fark etmelerini bekliyorum. Tasarımcıya geri döneceklerini ve rol yapmadan önce açıklama isteyeceklerini söylerlerse genellikle bir bonus puanı veririm. Eğer bir öğrenci bana .001 düzlemciliğini veya başka bir telafi değerini nasıl elde edeceğini söylerse, sıfır puan alırım. Bu, öğrencilerime daha büyük resmi düşünmeleri gerektiğine dair bir noktaya değinmemde yardımcı oluyor.
Alt çizgi
Bir mühendisle (veya benzer bir mesleğe) röportaj yapıyorsam, eleştirel düşünebilen ve önüne ne koyduğunu sorgulayabilecek birini arıyorum. "Bu mantıklı mı?" Sorusunu soran birisini istiyorum. .
Mükemmel düz bir parça istemek mantıklı değil, çünkü mükemmel diye bir şey yok. Asla yinelenen bir değer vermeyen bir işlev istemek anlamsızdır, çünkü böyle bir garanti vermek imkansızdır. Programlamada sık sık "çöp içeri, çöp dışarı" ifadesini duyarız. Gereksinimler için çöp size verilirse, gerçek niyeti ortaya çıkarmanıza yardımcı olacak soruları durdurmak ve sormak etik sorumluluğunuzdur. Eğer bir adayla röportaj yapıyorsam ve onlara belirsiz bir şart verirsem, açıklama soruları bekleyeceğim.