Üniversiteden mezun olan her programcının sahip olması gereken beceriler nelerdir? [kapalı]


9

Okulumuzda mezun olduğu ve beklediği beceri seviyesine kadar teğet geçtiği misafir öğretim görevlisi vardı. Java, C ++ veya C # gibi büyük bir derlenmiş dil hakkında bilgi, Python veya Ruby gibi bir komut dosyası dili, bir web çerçevesi. Mezun öğrenci için kesinlikle kritik olması gerektiğini düşündüğünüz diğer beceriler nelerdir?


Üniversiteden mezun olmak istediğini mi sanıyorum?
Michael Shaw

1
@Ptolemy: Amerika Birleşik Devletleri'nde kolej terimi doğrudur.
Kasım'da Macneil

1
Kendini kıçından tekme ve kısa mesajdan haberdar etme isteği, genç punklar! socializedpr.com/…
İş

Yanıtlar:


27

Açıkçası, öğrenmeye hevesli diyebilirim. Kolej gerçekten size bir programcı olmak için ihtiyaç duyduğunuz becerileri vermek için tasarlanmamıştır. Size gereken becerileri öğretmek niyetiyle öğrenmek bu yetenekleri.


Daha iyi söyleyemezdim.
Chris

4

Yeni mezunlar sadece bir öğrenme arzusundan daha fazlasına ihtiyaç duyarlar, bir öğrenme takıntısına, nasıl öğrenileceğini anlamaya ve yazılımın gerçeklerine sağlam bir temelde ihtiyaç duyarlar. Genel olarak hangi dilleri bildiğinizi umursamıyorum, ancak her çocuk:

  1. Tarihi anlayın . Bilgisayar bilimi, birçok çözülmüş problemi olan iyi araştırılmış bir alandır. Bu gerçeği bilmek, önünüzde gelenlerden öğrenmenin kapısını açar. Bilginin madenciliği için zengin bir tarih olduğunu bilmek bile birçok mezuntan daha fazladır. Bu, büyük O gösterimi, algoritmaların geçmişi, peygamberlerin ilkeleri (Knuth, K&R, Hofstdater, vb.) Ve yaygın olarak kabul edilen uygulamalar ve kalıpları içerir.

  2. Çözülebileceğini bilin . Bir geliştirici bir sorunla karşılaştığında her zaman şaşırırım. Öğrenmeyi öğrenmenin bir parçası, problemlerin her zaman kolayca çözülebileceği basit ilkedir. Bunu öğrendikten sonra, aklı başında bir cevap bulma düşüncenizi çerçeveliyor.

  3. Ayrışmayı anlayın . Sorunlar sadece çözülmekle kalmaz, bunu yapmanın yolu bölmek ve fethetmek kadar basittir. Daha basit bileşenler için bir sorunu azaltın ve cevabınız her zaman kendini gösterecektir.

  4. Nasıl ölçüleceğini bilin . Sorunları çözebilmenin yanı sıra, yeni geliştiricilerin bu sorunlar hakkında gerçekleri nasıl toplayacağını bilmesi gerekir. Ne kadar? Ne kadar büyük? Ne kadar hızlı? Kaç? Basit gerçekler anlama ve nesnel düşünmeye giden bir adımdır. Gerçekler olmadan varsayımlarda bulunmak sorun alanında kaybolmanın kolay bir yoludur.

  5. Objektif olun . Tüm problemler basitçe çözülebilir, ölçülebilir ve anlaşılabilir. Anlaşılamayan sorunlar sadece ek ayrışma, ölçüm ve anlayış gerektirir. Kızgın ya da sinirli olmanın hiçbir faydası yoktur, ne de teorileri tartışmak ya da suçlamak için verimli değildir. Sorun çözme süreciyle ilgili herhangi bir mantıksız davranış veya inanç zehirdir ve çözümleri bulmayı çok zorlaştırır.

  6. Desen ve ilkeleri tercih edin . İşleri, dilleri, programlama modellerini, bilgisayar mimarilerini ve hatta mühendislik yöntemlerini yapmak için düzinelerce doğru yolla karşılaşacaksınız. Tek bir doğru yol yoktur, ancak tekrar tekrar uygulayabileceğiniz altta yatan sağlam kavramlar vardır. Bu kalıpları görmeyi öğrenin, çünkü yolunuza çıkan her adımda öğrenmenize ve düşünmenize rehberlik edeceklerdir.


1
  1. İyi programlama tutkusu
  2. alçakgönüllülük
  3. Yeni şeyleri hızlı bir şekilde öğrenme yeteneği

0

Bir işveren olarak, sadece programcı olarak insanları istihdam edeceğim:

  1. Kod üzerinden tek adım atma deneyimine sahip olun.
  2. Basit bir problemi çözmek için uygun bir tasarım modeli seçebilir.
  3. Seçtikleri tasarım desenini yansıtan kod uygulayabilir.

Deneyimlerime göre, programlama işleri için başvuran bilgisayar bilimleri mezunlarının% 5'inden daha azı temelde bu becerilere sahiptir. Bunlar ticari olarak yararlı olmak için gereken asgari becerilerdir ve daha da önemlisi, herkes bu becerileri öğrenemez.

Diğer güzeller:

  • Takım projesi üzerinde çalışma deneyimi
  • Kaynak kontrolünün kullanımı
  • Birim testi deneyimi

Bunlar mevcut geliştirme ekibi ile entegrasyonunu kolaylaştırır, ancak normalde iş başında öğretilebilen derslerdir.


0

Bir zamanlar çoğunlukla yeni mezun olan personelden "miras aldığım" bir ekibim vardı ve orada çalışmayı "birazdan" gerçek programlama yapanların (fazladan para kazanmak için) en yetenekli ekip üyeleri olduğu konusunda deneyimlerim vardı. Bu yüzden deneyim anahtardır ve hangi dilde çok az bir önemi yoktur .

Ancak, işe alım yapanların ne aradığına bakarsanız (jobserver.com vb.Gibi ortak işe alım sitelerinde), C ++, C #, Java için sorulan çok şey olduğunu gözlemlemek ilginçtir, ancak başkaları da arandı ve Ayrıca COBOL gibi "egzotik" şeyler hala ortalıkta.


0
  1. Kişilerarası ve iletişim becerileri
  2. Pragmatik yaklaşım (akademik teori değil)
  3. Teknik olarak eğimli olmayan bir müşteri olarak düşünebilme
  4. Neyin önemli / neyin göz ardı edilebileceğini maliyet / fayda açısından değerlendirebilme
  5. Takım halinde çalışabilme
  6. Stratejik düşünebilme: mimari, genişletilebilirlik, ölçeklenebilirlik
  7. Üniversite öğretilerinin gerçek dünyayla ilgisi olmadığını kabul etmeye açıklık (üniversiteye bağlıdır - bazıları bunun için daha iyi).

Bu meslekte öğrenme süreci asla bitmez. Kişi kendini sürekli olarak öğrenmeli ve geliştirmelidir, aksi takdirde oyunun gerçek “hızlı şekilde dışına çıkar”.


Bunların hepsi faydalı. Bununla birlikte, neredeyse sıfır üniversite mezunu vardır ve çoğu işyerinde kolayca elde edildikleri için kritik değildirler. Bence farklı bir soruya cevap veriyordun.
dbkk

@dbkk - Affedersiniz, ama soru "mezun olan programcıların sahip olduğu yetenekler" değil, "sahip olması gereken şeyler" idi. Ayrıca, hayır, kolayca elde edilemezler. Tam tersi - daha sık olmamakla birlikte, yıllık tecrübesi olan insanlar hala çoğunu kaçırıyorlar.
Kale

1
Bunlar genel becerilerdir ve birçoğu okulda öğrenmeye gerçekten uygun değildir.
David Thornley

-1

Diğer cevaplar iyi, ama üniversitedeki 1 numaralı gözden kaçan becerin gerçek yazılım mühendisliği gibi göründüğünü söyleyebilirim .

OOP ve Java gibi bir dili öğretmek için temel sınıflar harika, ancak 3. ve 4. yılda öğrenciler (en azından yerel üniversitemde) neden iyi bir mimariyi tanımlamayı ve oluşturmayı öğrenmek yerine derleyiciler ve işletim sistemleri yazıyor? gereksinimleri incelemek ve bundan teknik şartnamelerin bir listesini oluşturmak ve belki de en önemlisi, iyi çalışan kod ile çalışan kötü kod arasındaki fark nedir?

Üniversitelerimiz neredeyse yazılım mühendisleri yerine kodlayıcıları dağıtmak istiyor gibi . Asla mühendislikte beceri / yetenek sergilemeyen birini işe almam.


4
Çünkü insanlara öğretilen şey yazılım mühendisliği değil bilgisayar bilimi. Üniversiteler ve öğrenciler bilgisayar bilimi! = Yazılım mühendisliği, bilgisayar bilimi bir bilim, bilgisayar bilimi programlama ile ilgili değilse ve yazılım mühendisliği de programlamadan çok daha fazlası olduğunu fark ederse bu sorun ortadan kalkacaktır.
Thomas Owens

-1. Davranışların altında nasıl çalıştığını öğrenmek (derleyiciler, işletim sistemleri, montaj dili, vb.) Bu seviyede asla çalışmasanız bile önemlidir, çünkü bir noktada sızdıran soyutlamalarla karşılaşacaksınız.
dsimcha

@dsimcha, buna inanıyorsanız, şu anda gerçek dünyada şirketler tarafından ne tür yazılım mühendisleri istihdam edildiğine dair çok dar bir görüşünüz var. Bu şeyler herhangi bir değer katmıyor değil - daha önemli bir şey öğretmemenin fırsat maliyeti.
Nicole
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.