CS derecesi olmayan başarılı bir programcı nasıl olunmalı [kapalı]


46

Feragatnameler (Lütfen yanıtlamak için atlamadan önce okuyun):

Sormak istediğim soruna benzer birkaç soru gördüm, işte bazı benzer sorular.

IMHO Ne tam olarak ne istediğim değil, umduğum kadar da eksiksiz değiller (aşağıdaki soruların cevaplarını silmek istemiyorum, ne de istemcileri itibarsızlaştırıyorum, sadece bir biraz daha ayrıntılı):

Bir CS derecesi eski bir programcıya faydalı olabilir mi?

https://softwareengineering.stackexchange.com/questions/80024/importance-of-certifications-for-java-programmer-without-bs-degree

https://softwareengineering.stackexchange.com/questions/81591/in-the-absense-of-a-cs-degree-how-can-i-fill-in-the-gaps-so-to-speak

İş başvuruları için başvuruda CS derecesinin önemi?

Açık konuşayım, aşağıdakileri sormuyorum:

  • Kendimi sıfırdan programlamayı öğretiyorum (CS de bir derece olmadan)
  • Kendimi iyi bir yazılım geliştiricisi olarak pazarlamak (CS’de bir derece olmadan)
  • Yazılım geliştiricisi olarak yüksek ücretli bir iş bulma (CS derecesinde olmadan)

Küçük bir içerik:

Artık yolumdan vazgeçmediğim için, bir yazılım geliştiricisi olarak deneyimlerimin kısa bir geçmişinden başlayarak sorumu açıklamama izin verin.

Öncelikle inanılmaz şanslıydım. Yazılım geliştirme hakkında bildiğim her şeyi öğrendiğim birkaç iş fırsatı (birkaç ağır arka uç PHP / MySQL projesi ve XAML / C # 'daki çeşitli WP7 uygulamaları) verildi. Neredeyse sahip olduğum tüm yazılım geliştirme işlerinin sahibi olmaya hak kazanamadığım kişilerdi (ve beni işe almadan önce işverenlerime açıkça ifade ettim). Olmadığı yerde kendime kredi vermek istemiyorum, ama mükemmel tevazunun alçakgönüllülükle dağıldığını söyleyebilirim .

Neredeyse her gelişim işinde, işverenimin beklentilerini aştım ve değerli bir varlık olduğunu kanıtladım. Tabii istisnalar 1 vardır . Ancak, benim açımdan oldukça zekiyim ve işimde başarılı olmak için bilmem gerekenleri kendime öğretebildim. Yaptığım her işte daha çok gerildim.

Ben katılmak Washington Üniversitesi 'nin Seattle kampüs ve Matematik eğitimi sırasında, sol iki yıl ile benim dördüncü yılda şu anda duyuyorum. Sahip olduğum çeşitli işler sırasında ( bu listeyi görmek istiyorsanız özgeçmişime bakın ) Ayrıca tam zamanlı bir öğrenci olarak okula devam ediyorum.

Ben çoğu geliştirici gibi tipik genel ed lisans dersleri, eğitim, kabul edeceğini düşünüyorum gibi tanıtım programlama kursları KESİNLİKLE gerçek kod yazmadan bina ile karşılaştırıldığında sönük kalır gerçek 2 ürünleri ile çalışan müthiş insanlar ve olumlu yaşamını etkileyen kullanıcıları 3 .

Böylece ... işler gittikçe ... Çalışmalarıma odaklanmak yerine zamanımı ve enerjimi çok daha fazla harcadım. Zaman zaman çok korkunç performans gösterdim , ancak çoğunlukla notlarımla ayakta kalacağım.

Ancak UW'deki bilgisayar bilimleri programı çok , çok , çok , çok rekabetçi.

Bu yüzden, program tarafından reddedildiğimde benim için sürpriz olmadı. İki defa. İronik bir şekilde, her zaman kibar, ehliyetle reddetme ihbarına rağmen her zaman kibar aldığım aynı yarım saatlik pencerede, Amazon'dan bana SDE olarak yaz stajı 4 teklif eden bir telefon aldım .

Başkalarına bakarken, yazılım geliştirmede kendimle aynı hedefleri paylaşan yaşımdaki (21) kişilere bakarken, nerede olduğum, öğrendiğim, kim olduğum ve ne olduğum konusunda kendimi oldukça iyi hissediyorum Yapabilirim. Tabii ki, kendimden 21 yaş büyük, çok, çok, çok daha parlak var, bir kalabalığın içinde göze çarptığımı söylemek istemiyorum, sadece ortalama akranımın ilerlemesinin gerisinde kalmıyorum. .

Yazılım dünyasında başarılı olabilme konusunda kendime güveniyorum. Daha da önemlisi, gerçekten ihtiyaç duyduğumda büyümeye, öğrenmeye ve utanç verici bir şekilde alçakgönüllü olmaya devam etme yeteneğime ve arzuma güveniyorum.

Matematik Derecesi

Kendimi yalnızca bir dereceye sahip olmak amacıyla bir Matematik derecesiyle takip ederken buluyorum. Şimdi ayrılmam ve çalışmaya başlamam gerektiğini söyleyenler var (yapma fırsatım olduğu gibi) ve derecemi gerçekten bitirmem gerektiğini söyleyenler var. Her iki kampın ortaya çıkma eğiliminden tamamen farklı nedenlerle dereceme devam etmek için karar verdim, bu yüzden lütfen beni bu konuda bir şekilde teşvik etmeyin. "Kapalı" konusunu düşünün :)

* DERİN BREATH * ... üzgünüm bu beklediğimden daha uzun.

Bu özünde benim sorum:

  • Şu an sahip olamayacağım veya eksik olabileceğim bir CS derecesi ile hangi çalışma alanlarını, genel bilgileri ve diğer becerileri kazanacağımı nesnel olarak nasıl belirlerim?
  • Bu becerileri en önem sırasına göre nasıl sıralarım?

  • Eğitimimi, bu nitelikleri elde etmek için üst düzey bir üniversiteden mezun olmuş bir CS seviyesini eşleştirecek hatta ondan daha yüksek olacak şekilde eğitimimi desteklemek için (gelecek iki yıl boyunca) en iyi yol nedir?

İşte şimdiden attığım adımlar:

  1. Geliştirme topluluğuna sorun (bu gönderi)
  2. Benimle benzer bir kariyer yolunu paylaşan tecrübeli geliştiricilerle mentorluk yapma
  3. Kısa ve uzun vadeli "öğrenme" hedeflerini ve çalışma konularını ana hatlarıyla izleyen müfredatları tanımlayın.
  4. Kod yazmaya ve tutkulu olduğum projeler üzerinde çalışmaya devam et

Eğer bu kadarını aştıysan, bir kurabiyeyi hakediyorsun :) Benimle oynadığın için teşekkür ederim.

Öyleyse ... kalkınma topluluğu, deneyimli geliştiriciler, benimle aynı botta olan diğer öğrenciler, ne tavsiye edersiniz?

Ayrıca ... Ben ettiğimi ilgili bu yayının üst tarafındaki akılda benim yasal uyarılar tutmak lütfen DEĞİL soran.

Güncelleme:

Sorumu / sorularıma başarılı bir "cevap" olarak kabul ettiğim şeyler için somut parametreler sağlamadığımı fark ettim. Bence sorunun çok belirsiz olduğu ve bir dizi "doğru" cevabı garanti edebileceğini düşünüyorum.

Makul bir süre sonra, aşağıdaki özelliklere uyan cevabı seçeceğim:

  • Cevaplarının arkasındaki nedeni açıklar
  • Belli bir tecrübe düzeyinden bahsedebilir (ayakkabılarımın içinde / içinde olan biriyle birlikte çalışmak / işe alım veya etkileşimde bulunmak)
  • Özlü ama eksiksiz, özel örneklerle birleştirilmiş geniş ilkeler sunar
  • Son olarak, yukarıdakilerin eşleşmesinin gerektirdiği uzunluğu göz önünde bulundurarak, lütfen bunu iyi bir şekilde iletilmiş ve cevap vermesi iyi bir cevap olacaktır. Gelecekte bununla ilgilenebilecek diğerlerinin de cevaben eğitilmesinin yanı sıra eğlendirileceğini umuyorum.

Yani "doğru" için bazı parametreler var. Sanırım çok yüksekler, ama onları "en iyi" cevabın ne olacağını düşündüğüm bir taslak olarak tasarladım. Açıkça yeterli zaman verildiğinde, en yakın eşleşen cevabı "cevap" olarak seçeceğim.


(1) - Bu web sitesinin önceki bir sürümünde çalıştım ve henüz bir açıkımız olmadığı sürece 
      bunun hakkında konuşma, hiç de iyi yapamayacağımı hissettim (bu olabilir 
      o zamandan beri web sitelerini tamamen değiştirdiği gerçeğiyle kanıtlandı)
(2) - Öncelikle, evet, gerçek bir ürün (bu yazıyı Chrome'da yazıyor olmama rağmen ...), ve
      kıç tekmeliyor. İkincisi, testte bir lise stajyer geliştiricisiydim, ispatını yazdım
      IE8’in yeni özelliklerinden bazıları için konsept kodu ... bu yüzden bir süre önceydi.
(3) - Bu ilan sırasında ben bu uygulamayı yazan geliştiriciyim, artık değilim
      bu kod tabanından sorumlu
(4) - Stajım 2012 haziran ayında başlayacak ve Web Mağazasında çalışacağım 
      takım.

17
Dünyanın matematik derecesi ile daha fazla programcıya ihtiyacı var. Nuff dedi.
Pieter B

1
Psikologlar ve diğer bireysel danışmanlık veya danışmanlık hizmetleri veren pazarlar çok büyük olmalıdır. İşleri değiştirmeyi düşünüyorum ....
Ingo

16
Bu soruyu düzenleyerek başlayın ve ikiye bölün.
JeffO

8
@PaulHazen son derece ayrıntılı arka planınızı ve feragatname içeriğinizi kaldırdığınızda ve gerçek sorularınıza ulaştığınızda, üç şey soruyorsunuz: CS derecesine sahip olmamaktan ne kaçırdığınızı nasıl belirliyorsunuz, ne kaçırdığınızı nasıl alıyorsunuz ve ne kaçırdığınızı nasıl önceliklendireceğiniz. Her üç soru da çoğaltılmış soru tarafından tamamen ele alınmaktadır. Cevapları beğenmezseniz, bir ödül verin : bunun için oradalar.

7
Eğer eğer, Alternatif @PaulHazen değil (daha önce söz aynısı olan) Listelenen sorulara ilgilenen, özellikle yalnızca yeni bir şey sormak için sorunuzu revize. Sorunuz çok fazla bilgiye sahip olmadığından muzdariptir - çoğu muhtemelen sahip olduğunuz problem için gereksizdir - ve zaten başka sorular tarafından ele alınmayan çok özel bir problem hakkında sorular sormak için eşleştirilmelidir.

Yanıtlar:


17

Tamam, sorunuza cevap vermeyecek kadar çekici buluyorum, bu yüzden işte ...


İlk önce benimle ilgili birkaç şey


Ben 26 yaşındayım ve ben hayatımın çok erken aşamasından itibaren şans yaşadım babam (btw bir matematikçi ve halen öğretim üyesi olarak çalıştıktan) sayesinde bilgisayarlar civarında olduğu. (1986 yılında doğduğumda, o günlerde en yaygın olan şey olmasa da, evde her zaman bir ya da iki bilgisayar vardı). Bu söyleniyor ve - açıkça meraklı ve matematiksel eğilimli / problem çözme yönelimli doğam yüzünden - kendimi programlamaya aşık bulmam çok uzun sürmedi. Önce Pascal'la, 7-8 yaşlarında ve sonra hemen hemen her şey onu takip etti.

Öncelikle, okulda iken her zaman matematikle ilgili her şeyi mükemmelleştirdiğimi söyleyeyim, basitçe sevdim ve dürüst olmak gerekirse babamın örneğini kolayca takip edebilir ve bir matematikçi olabilirim. Ama bu olmadı.

Ne oldu muhtemelen hayatımın (şimdiye kadar) büyük hataydı: Ne diyorsunuz ne zaman birisi koduyla aşık , konuşur mikro çekirdek ve web'e derleyicilerinden kod satırları binlerce (15+ dil ve yazmış çerçeveler) 18 yaşından tarafından, aniden () nedenler hala çok aklımda gizleyebilir, ancak sizin çevrenin, hatta ince olursa, genel etkisi çok önemsiz asla bir kariyer karar verir Tıp ? Sanırım bir "hata".

Sonuç? 5 yıl sonra (23 yaşında) ve Med derecemi bitirmeden 1 yıl (hala kişisel açık kaynaklı programlama projeleri üzerinde her zaman bir hobi olarak çalışıyorum), yeterince sahip olduğuma karar verdim ve istifaya karar verdim. Ve sadece bu yeni alandan (Tıp) bu kadar nefret ettiğimden değil, aynı zamanda tüm bu durumda rahatsız edici bir şey olduğu, içinde saklanan doyumsuz bir kaşıntı olduğu için… ( eğer ... ne olurdu? ) Üstelik sadece benim fark etmişti hobi ben ne kabul, harika ama daha gerçek bir iş olarak hayal etmemişti, sadece biraz para getirmek ama bana bunun bir sürü getirmek + beni bir birey olarak mutlu tutamadı. Bu yüzden bırakmaya karar verdim. (= en iyi seçim, biraz geç olsa bile, şimdiye kadar yaptım).

Öyleyse, şimdi buradayım, bir zamanlar doktor olacak (kesin olarak sinir bozucu bir sinir bozucu psikiyatrist olacak) ( CS ; ve dürüst olmak gerekirse, bu korkunç tipik niteliklerden yoksun kalmamak için peşinden koşmak ...) ve çok sevdiğim ve sevdiğim bir konu üzerinde çalışmaktan ve kesinlikle en çok sunmam gereken bir konu üzerinde çalışmaktan mutlu bir profesyonel.


Birkaç gözlem (kendi tecrübelerime göre)


  • Programlama, gerçekten iyi olanların ne olursa olsun her zaman yollarını bulabilecekleri çok az alandan biridir. Ve bu kesinlikle tipik nitelikler meselesi DEĞİLDİR (dürüst olmak gerekirse, eğer bir şirketim vardı ve programcıları işe almak istersem, birkaç dakika içinde kimin iyi olduğunu kolayca söyleyebilirim - derecesine sahip olup olmadığına bakılmaksızın)

  • İyi bir programcı olmak için gereken şey şudur: matematik odaklı zekâ (fakat kendisi matematiği değil) ve tutku (bu, sonsuz saatlerce bir yük yerine zevk almak için çalışacak, ve bunu farketmemiş olsam bile, güven) ben hayatımdaki konuyla ilgili TONS materyallerini çalıştım, tamamen kendi başıma) . Örgün eğitim güzel bir şey ama biraz fazla abartılıyor. Başarının temel unsurları ilk ikisidir.

  • Matematik kesinlikle CS doğdu nerede. Fakat CS artık sadece matematik değil. Her zaman güçlü bir matematik odaklı beynim oldu, ama hiçbir şekilde bir matematik gurusu değilim. Ve dürüst olmak gerekirse, her gün programlamada, (bir grafik motoru ya da çok yerelleştirilmiş bir şey yapmazsanız) büyük olasılıkla hiçbir zaman basit aritmetik (toplama, çıkarma, çarpma, bölme, modulo) ve birkaç şeyden başka bir şeye ihtiyacınız olmayacak diziler hakkında. (birçoğu benimle aynı fikirde olmayacak, muhtemelen matematikçiler ya da akademik odaklı programcılar, ama kesinlikle matematikte ustalaşmak iyi bir programcı olmak için gerekli değildir). İyi bir matematik geçmişine sahip olmak size yardımcı olabilir, fakat matematikten dolayı DEĞİL; bu iki alanın paylaştığı ortak bir şeye dayanarak size yardımcı olacaktır: problem çözme becerileri.

  • Matematik bir bilimdir (ve saygı duyduğum bir bilimdir).

  • Programlama bir sanattır. (Ve uygulamalı bir bilim de, eğer ısrar ederseniz) Ama şunu aklınızda tutun: bir sanat - ve her zaman böyle davrandım. Ve tüm sanatlarda olduğu gibi, öğretilemez. Size bir yüz çizmenin biçimsel yolunu öğretebilir ve sizi ortalamanın üzerinde bir hale getirebilirim ama bu sizi ne Da Vinci ne de Klimt yapmaz. Mona Lisas, dikkatlice eğitimli ressamlar tarafından değil, Da Vincis tarafından boyanmıştır. Harika kod, harika kod sanatçıları tarafından yazılmıştır. Beceri ve bağlılık, örgün eğitimi kolayca dengeleyebilir.


Peki, * gerçekten * iyi bir programcı olmak için ne gerekiyor?


  • Akıllı olmak, büyük problem çözme becerileri ve konuyla ilgili bir tutku (eğer yoksa, sadece bırakın; vasat olmak mazeret değil)
  • Konuya ayırmak için çok zaman var
  • Her zaman çalışıyorum ('çünkü hepsini asla bilemeyeceksiniz; çünkü not edin:' 'çalışma' 'neden bir dereceye kadar ilişkili olmak zorunda? Bunu her zaman kendi hızımda yapmaktan daha fazla zevk buldum ... )
  • Her zaman kod yazma (kaç kitap okuduğunuz önemli değil; kodlama seviyeniz doğrudan yazdığınız kod miktarına eşittir)
  • Ve yine, konuya SEVGİ (eğer yeterince sevmiyorsanız ve gerçekten sevmeyi kastediyorsam , yukarıdakilerin hepsi er ya da geç katlanamaz hale gelecektir; benim için, bir iş olarak kodlama hala para kazanmak için .. Film izlemek: kesinlikle saçma ama yine de harika

Sorularınıza


  • Şu an sahip olamayacağım veya eksik olabileceğim bir CS derecesi ile hangi çalışma alanlarını, genel bilgileri ve diğer becerileri kazanacağımı nesnel olarak nasıl belirlerim?

Yine de, Matematik derecesinin neyin dahil olduğunu gerçekten bilmek zorundayım, CS derecesinde en çok neye sahip olacağınızı özetlememe izin ver (dersler / dersler / vb . ). :

  • Sayısal Sistemlerin Mantık Tasarımı (bazı düşük seviye devre olayları ve / veya / xors / etc - görünüşte fazla ilişkili değil, fakat yine de gerçekten eğitici)
  • Bilgisayar Mimarisi (bazı Assembly kodlamasıyla birlikte; hiç bir zaman kullanmayacaksınız, ancak bir programcı olarak tutumunuzu ne kadar şekillendirdiğini söyleyemezsiniz)
  • Veri Yapıları (bağlantılı listeden, karmaşık ağaçlara, vb. Göründüğü kadar basit, er ya da geç bunlar için iyi bir arka plana ihtiyacınız olacak; anlamadığınız hazır çözümleri kullanmak iyi bir programcı değil. yapardım)
  • Derleyiciler (evet, derleyici Hiç bir derleyici yazmak muhtemelen etmeyeceğini;!? Ama sürece olabilir ... bir yazmak, gerçekten işlerin nasıl biliyorum asla)
  • İşletim Sistemleri (yukarıdaki ile aynı)
  • Bilgisayar ağları
  • Yapay Zeka ve Uzman Sistemler (Prolog'da asla kod yazmazsınız; fakat hala kodlama beyninizi şekillendiren ve şeyleri radikal olarak farklı bir perspektiften görmesini sağlayan şeylerden biri)
  • Bu becerileri en önem sırasına göre nasıl sıralarım?

Sürekli değişen bir alanda neyin önceliklendirileceğini bilmek, CS olarak daima bir kumar olacaktır - bir tahmin oyunu .

Ne yapmak istediğinizi öğrenin ve içgüdülerinize güvenin. Tabii ki, sağlam bir temel bilgiye sahip olmak şarttır. Ama içine gireceğin şey, tamamen sana kalmış. Ayrıca, kariyerinizi dikkatlice planlayın: istihdam edilmek istiyorsanız, hedefinizi seçin ve bu konuda mükemmel olun (örneğin Google tarafından işe alınmak isteyin ve basit bir Python betiğini nasıl okuyacağınızı bilemeyin) muhtemelen gitmeyen durumlardan biridir. ) . Kendi başınıza bir şirkete (şirket) başlıyorsanız, tatmin edecek bir “patronunuz” yoktur; sadece sana en uygun olanı seç.

Örneğin, web ile ilgili bir şey yapmak istiyorsanız, kesinlikle gitmenizi öneririm: PHP / MySQL / HTML / CSS / JavaScript (+ jQuery / AJAX) . Ama bu sadece benim. Birisi Ruby (Rails ) ' de PHP'den daha çok hoşuna gidebilir (veya daha fazla gelecek görebilir)

Mesela, ben şimdi esas olarak Objective-C / Cocoa'yı kodluyorum . Bunu sürdürmeni tavsiye eder miyim? Kesinlikle hayır. Yani: Mac'lerde değilseniz veya Mac / iPhone ile ilgili yazılım satan bir kariyer istemiyorsanız. Windows geliştirmeye geçerseniz, C # / .NET Framework uygulamasına geçmek muhtemelen en iyi seçim olacaktır. (En çok neye bulaştığım hakkında bir fikir edinmek istiyorsanız, StackOverflow Profilime bir göz atın )

  • Eğitimimi, bu nitelikleri elde etmek için üst düzey bir üniversiteden mezun olmuş bir CS seviyesini eşleştirecek hatta ondan daha yüksek olacak şekilde eğitimimi desteklemek için (gelecek iki yıl boyunca) en iyi yol nedir?

Çok çalışın (kitaplar, internet, başkalarının kodu, her neyse) ve olabildiğince çok kod yazın.

Ah, ve ilgili herhangi bir kodda bir iş bulmaya çalışın. (Önce bir freelancer olarak çalışmaya başladım ve gerçek hayatta gerçekten işlerin nasıl yürüdüğünü görmek gerçekten değerli bir deneyim oldu).


Sadece .2 dostluk kuruşlarım ... :-)

Sidenote: Bazı noktalarımın tartışmalı görünebileceğini biliyorum ve benimle aynı fikirde olmayacak birçok kişi olacağından eminim. Bu kabul edilebilir. Ancak bu, şeyleri görme biçimimi değiştirmiyor - özellikle de sevdiğim şeyleri.


Bu tam olarak aradığım şeydi. Teşekkürler! Hemen hemen her cevap da iyiydi, çok azı yanlış veya yararsız bir şey içeriyordu. Bunu neden seçtiğimle ilgili küçük bir bölüm ve bu konuyu daha ayrıntılı bir şekilde açıklayan bir blog yazısı bağlantısı (Programcılar yerine blogumda böyle bir açıklama yapmamın nedeni) Zaten BÜYÜK uzunluğun uzunluğunun yanı sıra, sorunun çoktan bu site için uygun olmadığını düşünen ilgili moderatörler de artmaktadır). Gönderilmiş kal. Ve tekrar teşekkürler.
Paul Hazen

@ PaulHazen Gerçekten hoş geldiniz! Yardım etmekten memnun oldum (Yapsaydım) ... (Şimdi, cevabımın BÜYÜK uzunluğuna gelince ... argh ... Sistem bunu otomatik olarak "topluluk wiki" yazısı olarak tanıdı ve almaya çalışıyorum moderatörler ilk durumuna geri
dönüyor

Meta üzerinden ( meta.programmers.stackexchange.com/questions/3513/… ) Aslında daha uygun bir hedefe gitmelerini tavsiye ediyorum. Resmi SSS’ye göre, soru bu forum için uygun değil. Ancak, Programcıların fiili kullanımına bakıldığında, burada olmanın uygun olduğunu düşünüyorum. Moderatörler en uygun yere karar verebilirler. Hareket etme hakkındaki düşüncelerimi özetlemek gerekirse: Programlayıcıların olması gerekenlere göre, buraya ait değil, programlayıcıların tam olarak ne olduğuna göre .
Paul Hazen

@PaulHazen En azından benim için (SO konularında uzman olmadığım halde) kesinlikle uygun görünüyor.
Dr.Kameleon

Evet, sadece ellerimi havaya fırlatıp atacağım. İnsanlar en azından cevapları bulmak için google veya stack exchange kullanabildikleri sürece mutluyum. İçeriğin gelecekte aynı soruyu yaşayan insanlar tarafından kolayca keşfedilebilir olması gerekir.
Paul Hazen

18

Şu an sahip olamayacağım veya eksik olabileceğim bir CS derecesi ile hangi çalışma alanlarını, genel bilgileri ve diğer becerileri kazanacağımı nesnel olarak nasıl belirlerim?

UW'deki CS bölümünün müfredatına göz atın, ödünç alın ve gereken okumalara göz atın, önceki sınavlara ve laboratuar alıştırmalarına (ev ödevleri) bakın. Soruna nasıl yaklaşacağınız hakkında hiçbir fikriniz yoksa, bilginizde bir delik vardır.

Bu becerileri en önem sırasına göre nasıl sıralarım?

Gelecekte ne tür bir programlama yapmak istediğinizi düşünün. Web siteleri ve CRUD uygulamaları oluşturmaktan memnunsanız, ihtiyacınız olan tüm bilgilere zaten sahipsiniz.

Veritabanlarının, web sunucularının, derleyicilerin ve tercümanların, işletim sistemlerinin, ağ protokollerinin başlık altında nasıl çalıştığını anlamak ve bu tür sistemler kurmakla ilgileniyorsanız, CS eğitimi resme girer .

Eğitimimi, bu nitelikleri elde etmek için üst düzey bir üniversiteden mezun olmuş bir CS seviyesini eşleştirecek hatta ondan daha yüksek olacak şekilde eğitimimi desteklemek için (gelecek iki yıl boyunca) en iyi yol nedir?

Bilmiyorum. Benim için üniversitenin en büyük yararı 1) ufkumu genişletmek (üniversitede öğrendiğim ayrıntıların% 90'ını unuttum, ancak kavramları ve fikirleri hatırlıyorum), ve 2) materyalleri öğrenmek için kendime özgü motivasyonumu korumak waning: Mezun oluncaya kadar bir hedefe - sınava, başka bir sınava, vb. doğru çalışırken motivasyonunuzu sürdürmek daha kolaydır. (Ayrıca, öz-eğitimi yapılandırmak kolay bir iş değildir.)

[Eklendi: CS programını takip etmek istediğiniz bir üniversiteyi seçin, ilgilendiğiniz konulardaki dersleri seçin ve müfredatı kendiniz uygulayın: ev ödevleri, sınavlar, vb. Çoğu kurs, önceki yılların ders slaytlarını ve ödevlerini / sınavlarını yayınlar. .]

Yine de bir tavsiye kelimesi: Matematik derecenizi bırakmayınız. Herhangi bir parlak insan programlamayı öğretebilir, ancak eğer CRUD / frontend dışındaki uygulamalar üzerinde, örneğin akışkan ve mekanik simülasyonlar, bilgisayar grafikleri, görüntü işleme, tanıma ve makine öğrenme uygulamaları gibi uygulamalar üzerinde çalışmak istiyorsanız, size rekabet avantajı sağlar. (hatta finans!) vb.

GÜNCELLEME 2 - deneyim [uzun]: EE fakültesinde yüksek lisans derecesi aldım: ilk iki yıl ortak müfredattı (fizik, elektrik mühendisliği, analog ve dijital elektronikler ve çok fazla matematik - lineer cebir; ayrık matematik; gerçek, vektör ve karmaşık uygulamalı analiz.) Bu çok değerliydi, esp. Enerji Verimliliği ve elektronik bölümü - karışık HW-SW projeleri üzerinde çalışmamı sağladı ve HW tasarımcılarıyla işbirliği yapmak çok heyecan vericiydi. HW tasarımına hiçbir şey katkıda bulunmadım, ancak HW tasarımcısının şematik diyagramını "hata ayıkladığını" izleyebildim ve mantıklı sorular sordum [hatanın SW veya HW'de olup olmadığından emin değildik - sonuçta HW'de oldu: -)].

Sonra çizgiler dallandı ve ben CS çizgisini seçtim. "Ayrıntıların" bazıları, kavramların (örneğin, "Dijkstra'nın algoritmasını elle çalıştırmak" gibi) güçlendirmeye katkıda bulundu. Ayrıca öğrendiğim ayrıntıları eskimiş Motorola 68000, zaten o zaman, örneğin üzerinde (otobüs diyagramlar, yürütme vb yorumlama, otobüs sinyalleri) nasıl CPU'lar çalışmaları hakkında, ancak ayrıntılar aracılığıyla öğrenilen kavramların da, modern CPU'lar için çok farklı değildir.

Diğer detaylar, esp. SW uygulamaları (örneğin, Dijkstra'yı uygulamak) benim içindi (çünkü lisede kodlama konusunda oldukça iyiydim) hata ayıklamada anlamsız bir egzersiz yaptım ve SIFIR'ın kavramları anlamalarına katkıda bulundu.

Daha sonra zorunlu dersler almam gereken doktora programına kaydoldum. Birçoğu endüstrinin taleplerine yönelik gibiydi (örneğin, Python'u bilimsel veri analizi için kullanmak - teşekkür ederim, programlayabilirim ve kendimi bu konuda çok yetenekli bir şekilde öğretebiliyorum.) - temel kavramların öğretilmesinden ziyade yine çok fazla anlamsız kodlama içermekteydi (Neyse ki, kesikli optimizasyon, programların statik analizi ve Promela ile resmi analiz üzerine dersler çıkardım).

Bu nedenle, bazı detaylar, kavramların anlaşılması için kullanışlıdır, bazıları ise tamamen gereksiz bir yük oluşturuyordu (başka bir örnek: iki bilgisayar arasında seri port iletişimini programlamak. Ben zaten o zamanlar HW özelliklerini okumak ve yorumlamak için kullandım ve kayıtlar aracılığıyla HW programlamak için kullandım. Belki de ortalama hale gelmek üzere olan CS mühendislerinin HW belgelerini nasıl okuyacakları konusunda eğitilmeleri gerekmediğini varsayarım.

Sonuç olarak: Kendinizi birçok farklı konsepte (üst düzey fikirler) gösterin ve öncelik sırasına koymak ve son derece iyi olmak isteyenler için ayrıntılara girin. [Her şeyde son derece iyi olamazsın!]


+1 kesin. Ayrıntıların% 90'ını unuttuğunuz gerçeğine rağmen, bu ayrıntıları öğrenme deneyiminin kavram ve fikirlerin temelini oluşturduğunu ya da daha az ayrıntı ve daha kavramsal / daha üst düzey fikirleri öğrenmeye zaman harcamanın daha değerli olacağını mı söylersiniz? ?
Paul Hazen

@PaulHazen Yeni düzenlemeye bakın (UPDATE2'den başlayarak - yorum alanına sığmadı;))
zvrba

Şu anda attığım adımları çok onaylıyorum. Eklenen bölüm paha biçilmezdir. Ayrıntılarını öğrenmek istediğim şeylerin listesinin makul olamayacak kadar uzun olduğunu hissediyorum, tarihsel olarak bu konuda kapsamlı bir sorunum var. Sektöre bakmanın ve ilgimi çekenlerin içinde hangi konuları hakkında bilgi edinmenin en yararlı olacağını belirlemenin iyi bir yolu var mı? Yoksa daha küçük bir gruba derinlemesine daldığım sürece hangilerini öğrendiğim önemli değil mi? Sanayinin bu konuda öngörmesi zor olabilir gibi görünüyor.
Paul Hazen,

1
Endüstriyi tahmin etmeye çalışmak, önceden kaybedilmiş bir oyundur [örneğin, Twitter'ın - (neredeyse) IRC'nin web için klonunun - bu kadar garip olacağını tahmin edebileceğinden emin olamadım. Uzun vadede nasıl para kazanmayı düşündükleri hala bir sır. Bir almak zorunda proaktif bir seçim tür işin yapmanız ve bu almak için gerekenlere öğrenmek istediklerinizi hakkında. Nasıl? Hedef endüstrinizde çalışan birilerini bulun ve onlarla konuşun.
zvrba

1
@Paul Kavramlar hayatidir, ancak detaylar (genellikle) değildir. Ayrıntılara ihtiyaç duyduğunuzda bakabilirsiniz, ancak ilk önce bölgeye bakmaya değer bir şey olduğunu bilmek için büyük resmi öğrenmek zorundasınız.
Donal Fellows

7

Üniversiteden yeni çıkan birçok genç insanla röportaj yapıyorum. Henüz hangi programdan aldıklarını, konu alan becerilerinden yola çıkarak işe almadım. Bunun nedeni basittir: Karşılaştığım hiçbir CS programı (veya başka bir program yok), profesyonel veya ticari bir düzeyde olan programlama veya yazılım geliştirme ile ilgili somut beceriler öğretiyor . Modelleri ve çözümleri karmaşık diferansiyel denklemlere ayırabilmek ve optimize edilmiş özel amaçlı sıralama algoritmaları yazabilmek akademik ve / veya bilimsel bir değere sahip olabilir, ancak genel yazılım geliştirme üzerinde hiçbir etkisi yoktur.

O zaman ne arayacağım? Bir üniversite mezununun öğrenme sanatını mükemmelleştirmesini bekliyorum. Sonuçta, ne iyi bir kolejin, öğrencilere ne öğretmesi gerektiğidir. Genel problemler tahmin edilebilecek şekilde çözülebilir mantıksal, ayrık bileşenlere nasıl analiz edilir ve parçalanır. Bilgi ve bilgiyi bir çözüme yönelik bulmak, değerlendirmek, düzenlemek ve uygulamak için metodik bir yaklaşım.

Ayrıca, birlikte çalışan ve iletişim kuran bir grup insanın, bireylerin toplamından daha değerli olduğunu anlayan insanları arıyorum. Bu vade ve alçakgönüllülük ve hem yardım hem de yardım isteme yeteneğini gerektirir.

Bu nedenle, sorunuzun kapsamına geri dönebilmek için: bir CS derecesi kolejden ilk röportajı alma şansınızı artırabilirken, bir geliştirici olarak başarınız veya yeterliliğiniz üzerinde hiçbir etkisi olmadığını görüyorum. Her zaman "tutum için işe al, beceri için eğit" felsefesini takip ettim ve iyi para kazandım.

Tavsiyem: sizi ilgilendiren bir şeyse matematik derecenize devam edin. Herhangi bir bilimsel eğitim sizi iyi idare eder, bu yüzden en çok seveceğiniz kişiyi seçin, daha sonra muhtemelen en iyisi olanı seçin. O zaman önemli şeyleri öğrenmeye odaklanın: nasıl öğrenilir, nasıl çözümlenir ve problem çözüme nasıl yaklaşılır? Yapısal bir yol, diğer insanlarla nasıl etkileşime geçileceği ve işbirliği yapılacağı, hem kendi hem de takım arkadaşlarınızın teslimatı için nasıl liderlik ve sorumluluk alınacağı. Gerisi sadece teknoloji ve kodlama, ticaret araçlarıdır. Bunlar, kendi başınıza öğrenebilir ve öğreneceksiniz. Popüler tasarım desenleri ve mimari paradigmalar gibi genel amaçlı bilgileri toplayın ve inceleyin. Uygulama yapmak için programlar yazmaya başlayın. Oldukça güncel olan bir dil ve teknoloji temeli seçin, ancak bunu düşünerek hata yapmayın. öğreneceğin son şey. Araçlar ve diller her zaman değişir, bu nedenle yazılım geliştirme zaten sürekli bir öğrenme sürecidir.


Sizin bakış açınıza göre, CS programında başarılı bir programcı olma yolunda kendi başına yardımcı olabilecek hiçbir şey olmadığını söylemek doğru olur mu? Şu anda cevabınızı en çok seviyorum, kesinlikle anlamaya ve anlamaya çalıştığım şeylerin çoğunu vuruyorsunuz. İşe aldığınız CS içinde hangi alana ek bağlam ödünç verebilir misiniz? İşletim sistemlerinde çalışmak için yeni sınıflar işe alan çalışanların, kendinizden farklı bakış açıları olabileceğini (ancak bu konuda tamamen yanlış olabilirim) hayal ediyorum. Aldığın zamanı takdir et, bu çok yardımcı oldu
Paul Hazen

0-1 yıllık tecrübe parantezinde oldukça yoğun çalışan bir bilişim danışmanlık şirketi için çalışıyorum. İşletim sistemi geliştirme dükkanlarıyla (kaç kişi var?) İlgili güvenle cevap veremiyorum, ancak akıllılar da aynı şeyleri kabul ediyorum. Çok az sayıda puan bu konuda tek başına rekabet edebilecek kadar yeterli konu becerisine sahip olacak, bu nedenle tutum, potansiyel ve öğrenme yeteneği için işe alıyorsunuz.
pap

İlginç. Size "+1" mi verdiniz ve ben herkesten daha fazla söylemek zorunda olduğunuz şeyi seviyorum, ancak "doğru bir şekilde yazılım geliştirme alanına nasıl girebilirim" sorusunu daha doğru yanıtlıyorsunuz. Ancak benim ilgim, başarılı bir programcının özniteliklerini anlamaktır, kiralanabilir bir programcının özniteliklerini değil (evet elbette ki başarılı programcılar da işe alınabilir, ancak her zaman tersi gitmez).
Paul Hazen

Başarılı olmadığım ya da başarılı olma potansiyeli ve kapasitesi olan insanları işe almam. Bana göre, "işe alınabilir" ve "başarılı" aynı şeylerdir. Birisi başka kriterlere göre işe alım yapıyorsa, yetenek tespitinde ya yanlış ya da kötüdür. Her iki durumda da, muhtemelen çalışmak için iyi bir yer değil. Ancak, bir işveren olarak anahtar, halkınızın potansiyelinden nasıl faydalanacağını bilmek ve bunu gerçek başarıya dönüştürmektir. Bu, eğitim, mentorluk ve koçluğun bir karışımıdır ve eğer sahip değilseniz, ne kadar yetenekli insanları işe aldığınızın önemi yoktur.
pap

7

Bu özünde, benim sorum: “Şu anda eksik olabileceğim veya bulunamayacağım bir CS derecesi aracılığıyla hangi çalışma alanlarını, genel bilgileri ve diğer becerileri kazanacağımı nesnel olarak nasıl belirlerim?

cevap 1

Çalışmanızdan yeni bir şey öğrenirseniz . Öyleyse nesnel olarak bunu CS derecesi ile kazandığını söyleyebilirsiniz.

A1. Neden

Bir CS derecesi kavramsal olarak öğrenme ile ilgilidir. Biri CS farkından net farkı olmayan dönerse, asıl amacı yerine getirilmez. Sınavlar ve kurslar öğrenilenlerin "resmi" ölçüsüdür. Ancak, bireysel anlama (yeni bir şey öğrendim mi?) Daha iyi bir objektif önlem olmalıdır.

A1. Deneyim

İkisi de akademide bulundum ve şimdi profesyonelce çalışıyordum. Bilgisayar Bilimleri alanında yüksek lisans seçtim çünkü anlayışımı genişletmek istedim ve öğrenmeye tutkum var.

Bilgisayarım yüksek lisansını almanın bir sonucu olarak dünyam genişledi. Benim dünyam da profesyonelce çalışmaktan genişledi.

Bu becerileri en önem sırasına göre nasıl sıralarım?

Cevap 2

Önemi olan nispi soruyu kimin sorduğunu üzerinde ve hangi durum için. Kişisel gelişim için ise , o zaman hepsi önemlidir. Endüstri için ise, algoritmalar ve iyi OOP / standart yazılım uygulamaları gibi şeyler önemlidir.

A2. Neden

Önemin "kapsamı", "bağlam" a oldukça bağlıdır. Bir bağlam olmadan, becerilerin haklarını sıralamak zordur.

A2. Deneyim

"Üniversite" den "vs" alanında edinilen becerilerin farklı olduğunu buldum. Üniversitede "beceriler" daha "teori" dir, sanayiden daha "uygulamaları" dır. Bu nedenle, bu fark, becerilerin gerçekten önem açısından farklı sıralandığı anlamına gelir.

Eğitimimi, bu nitelikleri elde etmek için üst düzey bir üniversiteden mezun olmuş bir CS seviyesini eşleştirecek hatta ondan daha yüksek olacak şekilde eğitimimi desteklemek için (gelecek iki yıl boyunca) en iyi yol nedir?

Cevap 3

Kendinizi kırılma noktasının ötesine itin ve kırdığınızda kendinizi tekrar kırmaya devam edin.

Ne demek istiyorum?

Anlamadığınız bir noktaya gelirseniz, kendinizi kırmışsınız demektir. Sen anlayana kadar öğrenmeye devam et. Sonra anlamadığınız başka bir şey bulana kadar ileri itin (reklam sonsuz) .

A3. Neden

Sadece kendi sınırınız dahilinde öğrenir ve kalırsanız, sadece "iyi" olacaksınız. Sadece "tamam" olmak istemezsin. Olabileceğin "en iyi" olmak istiyorsun. SINIRLI sınırınızı aşmazsanız KESİNLİKLE gerçek potansiyelinize ulaşamazsınız.

A3. Deneyim

Ben her zaman yaşam boyu sürecek bir öğrenci olacağım, şu anki beceri setimi saymayacağım, merak ediyorsanız profilimi görebilirsiniz.

Söyleyeceğim tek şey bu. Mevcut bilgilerimle hiçbir zaman tatmin olmadım. Daha yükseğe uçmak, daha fazla görmek ve daha derine gitmek istiyorum.


Elbette iyi açıklamalar, bu benimle çınlıyor. Herhangi bir yanıtı neden henüz "doğru" olarak işaretlemekten kaçındığımı merak ediyorsanız güncellemeye bakın.
Paul Hazen

Ve güzel güncellemeler. İnancınızı koruyun, zamanı geldiğinde böyle bir cevabı işaretlemeyi unutmayacağım.
Paul Hazen

1
Lütfen cevabınızı temizler misiniz? Her birinin altında farklı ancak benzer içeriğe sahip iki tekrarlanan bölüm başlığınız var.
Paul Hazen

Merhaba Paul, nasıl temizlememi istediğinden emin değilim. Sanırım biraz kafa karıştırıcı görünüyor. Her alt başlık, her soruya ilişkindir, yani her "soru", cevabınızı güncellemenizde istediğiniz şekilde destekleyecek bir "Neden" ve "Tecrübe" ye sahiptir. Netlik konusunda herhangi bir değişiklik yapmaktan çok mutluyum.
Karanlık Gece

Ohhh ... bu benim için kafa karıştırıcı olan şeydi, başlıkları arttırır mısın ya da alt başlıkları işaretlemek için ** kalın ** metin kullanır mısın? Ben netlik geliştirilmesinde yol boyunca gideceğini düşünüyorum.
Paul Hazen

4

Şu an sahip olamayacağım veya eksik olabileceğim bir CS derecesi ile hangi çalışma alanlarını, genel bilgileri ve diğer becerileri kazanacağımı nesnel olarak nasıl belirlerim?

Derecesi gerekliliklerine bakın, sonra her sınıf için müfredata bakın.

Bu becerileri en önem sırasına göre nasıl sıralarım?

Bunu gerçekten kendin yapmanın yararı olmadan yapamazsın. En çok kendi kendini öğreten programcıların sahip olamadığı en önemli şeyin algoritma analizi ve tasarımı olduğunu söyleyebilirim. Gerisi parça yemek toplanabilir.

Eğitimimi, bu nitelikleri elde etmek için üst düzey bir üniversiteden mezun olmuş bir CS seviyesini eşleştirecek hatta ondan daha yüksek olacak şekilde eğitimimi desteklemek için (gelecek iki yıl boyunca) en iyi yol nedir?

Programa kabul edilmemiş olsanız bile, diğer bölümlerden seçmeli olarak ders alabilirsiniz. En sevdiğim derslerden biri, küçük bir uydu için elektronik ve bellenim üzerinde çalıştığım havacılık mühendisliği projesiydi.

İstediğiniz sınıfın kullandığı ders kitabını da satın alabilirsiniz. Bunu bir kaç ders için programıma uymadım. Diğer bir seçenek ise MIT açık eğitim yazılımıdır .


Böyle tecrübeli bir kullanıcı, diğer kullanıcıların gönderdiği cevapları okumak için zaman ayırmadığınıza şaşırttı, cevabınız neredeyse burada olanlarla aynı. Lütfen önceden var olan cevapları gözden geçirirken dikkatli olun ya da cevabınızın farklı olduğunu düşünüyorsanız, benim için açıklığa kavuşturmaya yardımcı olun.
Paul Hazen

Seçmeli dersler için CS dersi almayı öneren başka hiç kimsenin görmedim, ki bu pek çok kimsenin farkına varmadığının farkında. Gerisi üzerindeki neredeyse tekrarlama, büyük bir çok parçalı soru sormanın sonucudur :-)
Karl Bielefeldt

Özür dilerim, haklısın. Başka hiç kimse seçmeli ders olarak CS dersi önermedi. Bu iyi bir tavsiye ve kesinlikle yanlış olmasa da, diğer cevapların bazıları daha ayrıntılı bir şekilde ele alınmış ve sorumun geri kalanıyla daha iyi bağlamda üç soruyu ele almıştır. Verdiğiniz tavsiyelerin hiçbirini ihmal etmemek (size bir + 1 veririm), kesinlikle, içtenlikle, çok teşekkür ederim ve hata için tekrar özür dilerim.
Paul Hazen

3

CS derecesinin Başarılı bir programcı olmak için neden bu kadar önemli olduğunu düşünüyorsunuz ?

Başarılı bir programcı olmak için ihtiyacınız olan şey:

  • Programlama tutkusu
  • Yeni teknolojiler hakkında bilgi için bitmeyen bir susuzluk
  • Sektöre bir şekilde girin

Genellikle CS derecesi sizi sektörün içine sokar, ancak bilgi tutkusuna ve susuzluğa sahip değilseniz acı çekersiniz ve asla iyi bir programcı olmazsınız.

Sektöre çoktan girmiş gibisiniz ve kesinlikle bilgi tutkusu ve susuzluğa sahip olduğunuzu hissediyorsunuz.

Yapmanız gereken şey, araştırmaya ve öğrenmeye devam etmek ve tecrübe kazanmaktır. Endüstri derecesi olmadan sizi nasıl takdir edeceğini bilir.

Çalıştığım birinden bir örnek

Takımımda çalışan Yazılım Geliştiricilerden birinin hukuk diploması var ... birkaç yıl sonra hiç hukuku sevmediğini ve programcı olmak istediğini anladı. programcı olarak iş bulamadı (deneyim yok, derece yok), bu yüzden 6 aylık bir bilgisayar kursu yaptı, sonra bir iş buldu ve o zamandan beri harika bir geliştirici.


Bu harika bir içerik olsa da, sorumu yanıtlamak için işarete pek çarpmadığını hissediyorum (yanlış ifadelerde benim hatam olabilir. CS derecesine sahip olmanın başarılı bir programcı olduğuna inanmıyorum. Benim sorum bir CS derecesi içinde öğretilen konuların hangi" daha yapmak bir programcı başarısına katkıda eğilimindedir ve nasıl objektif ben bu konularda ölçmek nasıl belirliyorsunuz ve nasıl Isupplement / zenginleştirmek Mevcut tutku, açlık yapmak bilgi birikimi ve bu tür konulardaki endüstri deneyimi için mi? " Cevabınız kesinlikle yanlış değil.
Paul Hazen

2

IMHO programlama işi yoktur (veya satış işleri ya da sysadmin işleri vs.), sadece problem çözme işleri vardır. İnsanları sorunları çözmek için işe alıyor ve ödüyoruz, kod yazmak sorunu çözmenin yalnızca bir parçası. Evet, hatta satışlar bir problem çözme şeklidir. Bu yüzden bir Matematik derecesi, bir CS derecesinin yanı sıra problemin çözülebileceğini kanıtlar.

İlanınızdan çok fazla deneyim / staj aldığınız anlaşılıyor. Harika! Mezun olduktan sonra iş bulma konusunda endişelenme.

Sorularınızı cevaplamaya çalışmak için:

sınıflar? Kod yazma sınıflarından ziyade bazı teorik CS sınıfları seçin. Örneğin bazı CS / matematik dersi bulun. felsefeden kalabalıktan sıyrılmanıza yardımcı olacak

öncelikler? yeni şeyler öğren (yarının zaten bildiğin kolay dersler değil)

önümüzdeki iki yıl insanlarla konuş, öğren, ilişkiler kur, dış aktiviteler ara. (Hobiler / sporlar / iş yerinden / çalışmadan uzakta oyun yapmak, bir başvuru sahibinin ne kadar motive olduğunu görmek için bir ipucudur).

Son ipuçları: En kısa zamanda mezun ol. Bir rehber ağı oluşturun. Ve tek güvenli iş kendi işini yaratmak. Kendi işinizi kurabileceğiniz fikirlere / fırsatlara bakın. İyi şanslar.


Bu harika, cevabınız için teşekkür ederim. Ben bir "+1" veriyorum, ancak cevabı işaretleyemiyorum, diğer tepkiler nedenini iyice savuşturdu ve öğrenme hedeflerini objektif olarak belirleme yollarını tanımladı. Bunların hiçbiri cevabınızı olumsuz etkilemiyor, söylediklerinizi kalbe alıyorum ve gerçekten yardımcı oluyor, bu yüzden tekrar teşekkür ederim.
Paul Hazen

@ PaulHazen - 'neden?' Bilmek istiyorsanız sonra bir felsefe dersi seçin :-) Ama cidden, 4 yıllık teorik bir CS derecesi yaptım, burada C dersi yoktu çünkü 'bu, kendinize öğretebileceğiniz bir şey' Aydınlatmak için bir sömestr küçük bir felsefe dersi seçtim ve sonra başka bir şey yaptım. Zorlu olmasının yanı sıra harika bir grup insan ve canlandırıcı fikirler oldu. Ve sorunuz açıkça, herhangi bir matematik / CS sınıfı için gerekli olan yazma becerilerine sahip olduğunuzu açıkça göstermektedir.
jqa

1

Öncelikle, bu soruyu sorduğunuz için çok mutlu olduğumu söylememe izin verin, çünkü yıllar boyunca kendime sorduğum bir soru.

Sanırım şimdiye dek bu alanda kendimi biraz başarı olarak değerlendirebilirim. Bazı üniversite deneyimlerim var ve sonunda Bilgisayar Bilimi bölümündeki üniversite eğitimimi bitirmek istiyorum, ancak hayatımın bu noktasında henüz bir dereceye kadar haklı değildim. Bununla birlikte, bu dezavantaja rağmen (10 yıl devam ediyor) yazılım mühendisliğinde oldukça başarılı oldum. Size karşı dürüst olmak zorundayım, ancak mutlaka yapılması gereken kolay bir şey değildi (elbette, yapmaya değer bir şeyin genellikle kolay olmadığı konusunda bahse girerim). Ayrıca bunun hala en kolay şey olmadığını söyleyeceğim. Doğru adayı şans tanımak isteyen pek çok şirket var, ancak o üniversite eğitimi "onay mührü" yokluğunda sıkışma yapacak başkalarıyla temas kurdum. Ancak,

Net'te çok büyük bir şirkette başladı. Programcı olmayan küçük bir süre (o zamanlar teknik destek temsilcisi olarak çalıştığım), çalıştığım şirkete uygulanan diller ve teknolojiler hakkında elimden gelen her şeyi öğrendim. Ayrıca, ve bu muhtemelen en önemli şey, ben ağa. Yazılım Mühendisi'nin bulunduğu dizinde bulabildiğim her kişiye bir e-posta gönderdim. Can sıkıcı mıydım? Muhtemelen. Ben her zaman kibar ve öğrenmeye istekli olduğum için kendime zarar verdim. Öğle yemeği ayarlarım ya da sadece kafeteryada bulur ve sohbet etmek için otururdum. Bazen utanç vericiydi ya da rahatsız olurdum ama sonunda beklenen sonuçları aldı. Bazı iç veritabanlarına küçük zamanlı kimlik bilgileri alabildim ve bir süre sonra kendilerine ait platformlarında yazılım geliştirmek için gerekli kimlik bilgilerini aldım. Kısa bir süre sonra, o zaman üzerinde çalıştığım analiz ekibi için iç araç geliştirme konusunda bazı beceriler vermek için kendimi şirket içinde bir pozisyonda buldum. Oradan her zaman sadece en iddiasız şekilde odadaki en zeki adam olmaya çalıştım. İstekliydim ve herkesin bildiğinden emin oldum. Her zaman mümkün olan her yerde bir çözüm sunmaya çalıştım ve yeterince sıkı çalışırsanız çözülmesi mümkün olmayan çok az sorunlu alan olduğunu gördüm (belki de kuantum teorisi dışında). O zamanlar üzerinde çalıştığım analiz ekibinin iç araç geliştirme konusunda bazı becerileri ödünç vermek için kendimi şirket içinde bir pozisyonda buldum. Oradan her zaman sadece en iddiasız şekilde odadaki en zeki adam olmaya çalıştım. İstekliydim ve herkesin bildiğinden emin oldum. Her zaman mümkün olan her yerde bir çözüm sunmaya çalıştım ve yeterince sıkı çalışırsanız çözülmesi mümkün olmayan çok az sorunlu alan olduğunu gördüm (belki de kuantum teorisi dışında). O zamanlar üzerinde çalıştığım analiz ekibinin iç araç geliştirme konusunda bazı becerileri ödünç vermek için kendimi şirket içinde bir pozisyonda buldum. Oradan her zaman sadece en iddiasız şekilde odadaki en zeki adam olmaya çalıştım. İstekliydim ve herkesin bildiğinden emin oldum. Her zaman mümkün olan her yerde bir çözüm sunmaya çalıştım ve yeterince sıkı çalışırsanız çözülmesi mümkün olmayan çok az sorunlu alan olduğunu gördüm (belki de kuantum teorisi dışında).

Uzun bir hikaye olabilir ne sarmak için (ve Kuzeybatı Pasifik ise bir bira üzerinde tartışmak isterim), bana küçük bir başlangıçta bana bir şans vermek isteyen "büyük mola" var . Daha az maaş almak için deneyim eksikliğimi değiştirdiler ve ben yere koşarken çarptım. Sonra birkaç yıl içinde küçük bir dev mağazadan diğerine geçip, sonunda küçük bir mühendislik şirketinin lider geliştiricisi ve yöneticisi olarak bulunduğum yerde arkadaşlıklar ve beceriler kazandım.

Buradaki önemli bir paket servisi, yeterince etkili bir şekilde iletmediyseniz, ağ kurmanız gerektiğidir. Arkadaş edin, bira içip gülün, ve çalışmak istediğiniz alanda (tercihen tercih ettiğiniz teknoloji yığını içinde) kişileri bulun. İnsanların, ne kadar anıtsal olursa olsun, işi yapmak için ne gerekiyorsa yapmaya istekli olduklarını bilmelerini sağlayın. Temel olarak örgün eğitim eksikliğinizin "üstesinden gelmek" zorundasınız. Atla ve onunla eğlen. Bu endüstri dünyadaki en iyisidir IMHO. Bana bir yerden bir yere diğerine yardım eden uzun süreli dostluklar ve temaslar kurdum ve fırsat kendini gösterdiğinde onlar için de aynısını yapmaya devam edeceğim.


1
Bunu cevap olarak işaretleyemediğim için kendimi kötü hissediyorum. Diğer pek çok yanıt gibi, benim söylediğim hiçbir şeyin yanlış olduğunu düşünmüyorsunuz , ancak sorumun temel noktası başarılı bir programcı olunca, kariyerimi nasıl ilerleteceğinize tamamen odaklanıyorsunuz. Başarılı programcı iyi bir kariyer ifade ederken, "başarılı programcı" yönüne odaklanmayı tercih ederim ve kariyerin düşünce sonrası (önemli ve çok kasıtlı) olmasına izin verdim. Sorumu kısmen cevaplayan değerli bilgiler için size "+1" veriyorum.
Paul Hazen

Oh, ve ağ iletişiminden bahsederken, hikayen hakkında daha fazla şey duymak isterim! Görünüşe göre aynı yolu / hedefleri paylaşıyoruz. Paulhazen.net/about adresinde hangi iletişim yönteminin sizin için en uygun olduğunu seçmekten çekinmeyin ve o birayı alacağız.
Paul Hazen,

1

İlk önce, Grand Opus'unuzun sonuna yakın "özlü ama eksiksiz" şartını vermeme izin verin. Aşağı iş:

Şu an sahip olamayacağım veya eksik olabileceğim bir CS derecesi ile hangi çalışma alanlarını, genel bilgileri ve diğer becerileri kazanacağımı nesnel olarak nasıl belirlerim?

Diğerlerinin de belirttiği gibi kurs kataloğundan başlayabilirsiniz . Fakat bu listenin sınırlarının dışına çıkmanızı tavsiye ederim. Aslında Matematik dersine girmen iyi . Çalıştığım birçok mühendis basit entegrasyonun nasıl yapıldığını hatırlayamıyor ve geleneksel CS ayrık matematik derslerinin duvarlarının dışına hiç çıkmadı.

Bu cevap, özellikler açısından oldukça seyrek görünüyor. CS derecem yok ve kendimi gerekli alanlarda eksik bulamadım. Bununla birlikte, beni ilgilendiren diğer şeylere daha fazla zaman harcamayı diliyorum. Örneğin Tarih, Dilbilim ve İngilizce.

Bu becerileri en önem sırasına göre nasıl sıralarım?

Ne sevdiğini öğren

Senin için önemli olan ne? İşverenler için önemli olan nedir? Benim kişisel sezgiselim her zaman benim için en ilginç görünen şeyi öğrenmek olmuştur - yaptığınız şeyi sevmeniz gerekir ; Aksi takdirde, yanarsınız. Yazılım, çok yetenekli bir çalışma alanıdır ve bu becerilerden herhangi biri hakkında tutkulu olan, yetenekli bir geliştirici için her zaman uygun bir iş olduğu görülmektedir .

Öğrenmeyi öğren ve kendini zorla

Sanırım bu beni geri kalanın üzerine yerleştirdiğim iki meta-beceriye götürüyor: işlerini acımasızca öğrenmek ve çok çalışmak. Bunlar klişe ve acı verici şekilde açık gelebilir, ancak kombinasyon nadirdir. “Gereken” beceriler açısından haritanın her yerinde bulundum - ön uç HTML / javascript, mobil geliştirmeye yönelik dil geliştirmelerine, bilgisayar vizyonuna, sistem yönetimine geri döndüm ve tekrar 7+ dilde. Tüm cehaletimi bir alışkanlık haline getirmeyi başaran tek gerçek yetenek.

Jack White'ın gitar ve müzik konusundaki felsefesini gerçekten seviyorum (ciddiyim, git izle) ve bence programlama dünyasına üstün uygulanabilir. İşleri ulaşamayacağı yerlere biraz daha koyun. Kendinizi itin. O zaman herkesin yapmanı istediği şey senin işin olduğunda kolay olacak.

Eğitimimi, bu nitelikleri elde etmek için üst düzey bir üniversiteden mezun olmuş bir CS seviyesini eşleştirecek hatta ondan daha yüksek olacak şekilde eğitimimi desteklemek için (gelecek iki yıl boyunca) en iyi yol nedir?

  1. Büyük olmayan CS sınıfları

    Senin gibi, UW’deki CS departmanı da beni reddetti ... ... ancak duyularıma gelmeden üçüncü kez yapmalarına izin versem de. Enformatik dalında uzmanlık ve Uygulamalı Matematik dallarında yanlislik yaptim. Ama hala bütün büyük olmayan CS izlerini aldım . Bu CSE 373, 410, 413, 415 ve 417'dir. Bu nedenle, önce tutkunuzu takip etmeniz gerektiğine inanıyorum. Benimki beni o sınıfa yönlendirdi. Ve bence teorik açıdan biraz hafif olsa da, onlarla oldukça kapsamlı bir çekirdek eğitim aldığınızı düşünüyorum.

    Şimdi, işte en güzel şey: Bilişimde, bunların çoğu benim seçmeli derslerime göre sayıldı. Matematik bölümünde, açık bir onay almanız gerekebilir ve CSE 417 hariç herhangi biri için bir uzatma olabilir.

    Bir DARS sorgusu toplayın (muhtemelen sadece UWNetID bağlantısı) ve işlerin nerede durduğunu görün. Bunu çeşitli ana ad müzeler için yapardım .

  2. AMATH Sınıfları

    Aynı satırlar boyunca, Uygulamalı Matematik bölümünün seçmeli şartlar altında çalışılabilecek bazı sınıfları vardır. AMATH’ta bile sizinki gibi küçük olabilirsiniz.

    Bundan neden bahsediyorum? Sayısal hesaplama - örneğin AMATH 301/352 - çoğu programcı için büyük bir gizemdir. Ondan başka bir şey alamazsanız, ilginç blog yazıları yazabileceksiniz . Ancak bir dilin sayısal türlerini çevreleyen sorunları bilmek ve onları nasıl ölçmek ve iyileştirmek olduğunu bilmek çok önemli.

  3. Bir şeyler yap!

    Yapabileceğiniz en önemli şey yeni bir şey inşa etmektir. Baştan sona kadar bir fikir edinin. Konfor bölgesi içinde kolay olan bir şey olmasına izin verme.

    Aldığım en verimli programlama dersleri her zaman büyük bir uygulamalı programlama bileşenine sahipti. Bir mühendis için teori inanılmaz derecede önemli - gerçek bir şeye dönüştürülebildiği sürece. Öyleyse gidip harika bir CS CS kağıdı bulun ve uygulamayı deneyin. Ciddi anlamda.

  4. Bir meslek edin

    Şimdi, Amazon'da staj yaptığınızdan zaten bahsettiniz. Bu harika. Gerçek iş deneyimi gerçekten önemli! Orada bol ıslak kağıt torba tarzlarını dışarı programlayamadığını CS derece olan kişilerin. İyi iş tecrübesi olması değer yolu daha bir dereceye daha.


BU. Bu çok iyi. Aslında bunun daha geçerli bir cevap olduğunu düşünüyorum. İşaretlenmiş cevap biraz daha geçerliydi ... * iç çekiyor * çok büyük cevaplarla yargılamak çok zor :( Keşiflerinize daha fazla yardım edebilmeyi diliyorum. Ama sizi gerçek hayatta tanıdığım için Daha önce konuştum haha), teselli ödülü olarak sana bir bira ya da biraz viski almak zorunda kalacağım
Paul Hazen

-2

Üniversiteden mezun olmadan önce birkaç milyoner insanın milyoner olduğu, belki de en çok duyduğum kişi Bill Gates. Niş kabiliyetine sahip insanlar, bir dereceye kadar diplomasız damgalı CS mezunlarından daha iyi yapma eğilimindedir.

Çok az insanın içine girdiği, genellikle sıkıcı, sıkıcı veya öğrenmesi zor olan ve iyi öğrenen, saplantılı olan bir şey bulun. Duyduğum bazı alanlar Unix'in arka uçları (Linux değil, gerçi gerçi gerçi olmasa da), Flash (Flash'ın ne olduğunu tam olarak hatırlamak için flash hakkında yeterince bilgim yok, ama hareket eden bir adam tanıyorum. hızla bilerek ve o STILL bunun için bir pazar olduğunu söyledi, çünkü çoğunlukla insanlar bunun öleceğini ve öğrenmeyeceğini söylüyorlar). İlerlemek için birkaç ders almanız gerekebilir, ancak eşyalarınızı biliyorsanız ve etkileyici bir portföyünüz varsa, size ihtiyaç duyacak işler var!


1
Soruma cevap vermediğim için -1. Yanlış değilsin, ama "aradığım şeyi" bölümümü atlamış görünüyorsun ve aradığım hiçbir şeyden etkilenmedin.
Paul Hazen
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.