Orta Programlama Durumuna Ulaşma [kapalı]


32

VBA'da pozisyon programlaması yapan bir yazılım mühendisiyim (deneme ve yanılma olduğu için 'gerçek' deneyimi düşünmeme rağmen)!, Perl w / CGI, C # ve ASP.NET. Son ikisi lisans eğitimini tamamladı, “gerçek dünyaya” girdim. Üniversiteden 2 yıl sonrayım ve bahsettiğim dillerde toplam 5 yıl deneyimim oldu. Ancak, özgeçmişime gelince, sadece C # için 2 yıl, ASP.NET için bir yıldan az bir süre kaldırabilirim.

C # bildiğim gibi hissediyorum , ama yine de 'Bu yöntem ne yapıyor?' Olmak için zaman harcamak zorunda kalıyorum, oysa bazı üst düzey mühendislerin bir kısmı derhal "Ah, Yöntem X, bunu hiç görmeden yapıyor, önce yöntemi. " Bu yüzden ampirik olarak orada bir körfez olduğunu biliyorum, ama onu nasıl köprüleyeceğimi tam olarak bilmiyorum. Project Euler'de programlamaya başladım ve tasarım desenleri üzerine bir kitap aldım, ancak hala her gün ilerlemek yerine su arıtmak için harcadığımı hissediyorum.

Bu, ilerleme kaydettiğimi hissetmediğim anlamına gelmiyor, bu sadece her gün geldiğimde hala dağın tepesinde uzakta olduğumu görüyorum demek oluyor.

Sorum şu: Bu platoyu nasıl aştınız? Ne kadar zaman aldı? Bu konuda bana yardımcı olmak için hangi yöntemleri önerebilirsin?

Code Complete , Mythical Man Month ve CLR ile C #, 2nd edition adlı kitabı okudum - sorum şu: Şimdi ne yapacağım?


Düzenleme : Bu soruyu orta seviye programcı için yapılan projelerde yeni buldum . Tartışmaya katılacağını düşünüyorum (sorumu desteklemese de). Bu nedenle, soruyu "Daha Fazla Bilgi İçin" olarak ekliyorum.


2
Son zamanlarda Project Euler ile oynuyorum ve bu sadece sınırlı sayıda teknik içeriyor. Her şey çok iyi bir işlevi hatıra veya dinamik programlama ile optimize eder, ancak GUI veya webapps yazmanıza yardımcı olmaz. Zor sorunlar, zor kodlama değil zor matematik olarak tasarlanmıştır.

Her şey için iyi eğlenceler: Buna karşı hiçbir şeyim yok, sadece benim gibi temel veri türlerinin, yapıların ve belki de birkaç optimizasyon tekniğinin ötesinde bir dil öğrenmenize yardımcı olmak için tasarlanmamıştır. Mümkünse 0.1s.

@Gortok, becerilerinizi geliştirmek için yapabileceğiniz birçok özel şey olduğuna katılıyorum, ancak bu kesinlikle ne tür bir programlama yaptığınıza bağlı. Örneğin Windows geliştiricileri, gömülü aygıtların programcılarından farklı becerilere ihtiyaç duyar. Bence sorulan soru aslında iyi bir cevap alamayacak kadar geniş.
Nathan Fellman

1
2 yaşımdan beri programlama yapıyorum. Dünyanın en iyi programcısı olma konusunda başarısız oldum ve şimdi hayatımdan nefret ediyorum. Amacım bunun yerine dünyanın en iyi porno yıldızı olmak isterdim.

İlerliyor gibi hissetmiyorsunuz çünkü sezginiz size akademik uygulama ile işletme (gerçek dünya) uygulaması arasındaki boşluğu anlatıyor. Ve senin sezgin doğru. Akademik uygulama tamamen kendi kendine yeten küçük problemler ve alıştırmalar ile ilgilidir. İş bir hatayı düzeltiyor veya bir behemoth'a (genellikle) bir özellik / web sayfası vb. Ekliyor. Akademik uygulama özyinelemedir. İş okunabilirlik ve sürdürülebilirliktir. Akademik uygulama matematik ve bilgisayar bilimi bilgisidir. İş, insanların becerileri ve kodlama kadar ihtiyaç analizidir. Bunu bir cevap olarak koyardım ama Q kapandı.
Brad Thomas

Yanıtlar:


41

Tebrikler!

Açıklamanıza itibaren, olan bir ara geliştirici.

Bu aşama, anın probleminin üstünde ve ötesinde öğrenme isteğinize bağlı olarak yaklaşık 3-8 yıl sürecektir.

Süreci hızlandırmak, okumak, sörf yapmak, blog yazmak, kullanıcı grubu toplantılarına gitmek, bir danışman bulmak, bağımsız araştırma yapmak, yan projeleri kodlamak ve kendinizi yeni teknolojilere gömmek. Bu süre bir veya iki yıl tıraş olabilir.

Veya programlama dışında bir hayatınız olabilir ;-)

Ciddiyim, güncel kalın ve dikkatsiz kalın, ama #% $ @ olayını şimdi ve sonra kapatın

Zeyilname: Dışarı çıktığınızda pantolon giymeyi unutmayın.


17
ve Tolkien'den alıntı yapmaktan kaçının, bu kırılması zor bir hobbit
Steven A. Lowe

1
İyi oynadı Bay Lowe, iyi oynadı.
kemiller2002

1
Cidden, programlama dışında bir yaşam sür. Bir: koddan daha çok yaşam var. İki: diğer disiplinlerden çok şey öğrenilebilir.
kemiller2002

1
+1 - Güzel yapılır. Hiçbir şey uygulamadan (veya iyi bir mizah anlayışından) geçemez.

15

Dağa çıkmanın en iyi yollarından biri, kendin için bir şeyler yazmak, çünkü istiyorsun. En iyi programcılar 'boş zamanlarında yazdığın en ilginç program nedir?' Sorusuna harika cevaplar veriyor. Boş zamanlarınızda herhangi bir kod yazmıyorsanız, zanaatınızı daha iyi hale getirmek için yeterince sevmiyorsunuz.


8
Bu teoriden hoşlanmıyorum, İnsanların tam zamanlı işleri var ve sonra diğer sorumlulukları var. Yan projeleri olmayanların yeterince programlama yapmaktan hoşlanmadıklarını veya kötü programcılar olduklarını varsaymak sorumlu değildir. Kabul edilen cevabın belirttiği gibi, programlama dışında bir yaşamınız olsun.

10
Katılmıyorum --- en iyi programcılar en iyi yazarlar gibidir: kelimenin tam anlamıyla kendilerini en iyi yaptıklarını yapmaktan alıkoyamazlar.
Norman Ramsey

2
Kendilerini durduramayabilirler, ama hayat olabilir ve bazıları için.
Shannon Severance

@ShannonSeverance, Birçokları için, sadece bazıları için değil .
Pacerier

9

Larva aşamasından geçmelisin.

Şimdi Windows'da VB.NET'te programlamama rağmen, Linux x86'da larva aşamasını ana dilim olarak bir araya getirdim.

Bir süre için, ustalaşana kadar kendini gemiye adamalısın. Bir ana programcının içgüdüleri denilen şey gerçekten öğrenilen davranışlardır. Bu ortak bir kültürdür. Programcılar birbirleri gibi düşünmelidir ve makine gibi.

Koyunlar, koyunlar ve koyunlar gibi olurlar, ama dünyada çok uzun sürmezler. [Ağaçlar ve] Ent'ler ile daha hızlı ve daha yaklaşır ve birlikte yaşarlar. - Tolkien

Bil ve anla. En büyük beceriler, belirli bir dile bağlı olanlar değil, hemen hemen her dile uygulanabilir. Kavramları bilin, hem problem hem de dilde arayın, gerektiğinde yeni şeyler icat etmeye hazır olun.

Bu, büyüklüğe giden yoldur.


2
Bir şekilde cheetos içeriyor mu? Kafamdaki fotoğrafta cheetos var.

2
lol "Peynirli olmak kolay değil!"
gnovice

Larva evresi veya Laravel evresi? ;)
Brad Thomas

9

8 yaşımdan beri programlama yapıyorum ... Noel arifesinde 33 olacağım. Uzaktaki dağları hala görüyorum. Ne kadar ileri gelirsen gelsin, öğrenmek için her zaman daha çok şey vardır.

Paradigmaları kemerinizin altına alın ve kodladığınız dilin bu paradigmaları nasıl uyguladığını öğrenin. Programlama, öğrenecekleri her zaman daha fazla olan ömür boyu bir deneyimdir. Bu neşe, ne kadar yetkin olursan ol, her zaman daha fazlası var.

Normalde öğrenmeyeceğim yeni şeyler öğrenmenin bir yolu, burada ve insanların soru sorduğu Bytes ve Experts Exchange gibi diğer programlama forumlarında zaman geçirmektir. Soruyu cevaplayabiliyorsanız, hemen devam edin, başaramazsanız, o zaman görevi nasıl tamamlayacağınızı bulmaya çalışın, OP sadece çabanızı ve yardımınızı takdir etmeyecek, aynı zamanda yeni bir şey de öğreneceksiniz.

Diğer insanlara bilmediğim şeyler için cevapları bulmalarına yardım ederek daha fazla öğrendiğimi biliyorum.


9

Orta düzey programlama durumu, maymun maymunu “daha ​​hızlı yazın” zihniyetinden ve bir kariyer olarak gerçek sistemler inşa etmek istediğine geçtiğiniz anlamına gelir. Bu büyük bir profesyonel değişimdir ve açıkçası, aslında teknik becerilerle ilgili değildir. Orta düzeyde (aka "geliştirici") çalışmak, ileri düzeyde bir dizi insan becerisi gerektirir.

İşte düşünebileceğiniz bazı belirtiler:

  1. Çevrimiçi savaşları düzenliyor musunuz? Öyleyse, konfor alanınızdaki detaylar hakkında diğer kişinin bakış açısını anlamaya çalışmaktan daha fazla tartışmak istediğinizi gösteriyor olabilirsiniz.
  2. Dilleri gerçekten farklı şeyler olarak mı düşünüyorsunuz? C # ve Java, hem kendi platformlarını hem de kaynaklarını masaya getirir ancak ikisi de hesaplanabilirliğin etkili modelleridir. Çalışmak için para almak için yeterince hızlı bir şekilde yeni bir dil ve platform öğrenebilir misiniz?
  3. Hala yazılım görevlerini yazmak gibi düşünüyor musunuz? İş yerinde bir görev verilirse neden? Bu kod ne için kullanılacak? Hangi sistemin parçası olacak? Bu bilgi önerilen çözümünüzü büyük ölçüde değiştirebilir.
  4. Hayatının her şeyi bilen aşamasını geride mi bıraktın ? Takımın geri kalanını mı dinliyorsun yoksa bir sonraki söyleyeni düşünmeye mi çalışıyorsun?
  5. Son dakikadan oluşan bir çözüm üretmek için "çok daha iyi çekmenin" artık etkileyici olmadığını fark ettiniz mi? İlk sekiz saatten sonra, zamanın geri kalanının sadece böcek yazarken kullanıldığını kolayca düşünebilirsiniz.

Ortaya çıkarabileceğim en iyi özet, ara programcının (veya “geliştirici”) sekiz çalışma saatinde daha üretken olmayı öğrenmeleri, böylece cehenneme gidip iş dışında bir yaşam sürmeleri.

Bir eş bulup çoğalmayı başarırsanız verilen bonus puanları ...


8

Şu an yaptığınız şey harika, ancak ilerlemenizi inanılmaz derecede hızlandırmak istiyorsanız iki ek şey daha yapabilirsiniz:

1) "Öğret" - Bunu yapmanın basit bir yolu, bir blog başlatmak ve düzenli (belki de haftalık) bazda faydalı bir şeyler yapmaya çalışmaktır. Son zamanlarda öğrendiğiniz veya henüz bilmediğiniz şeyleri hedefleyin . Bu, kendinizi araştırma yapmaya, anlamaya ve yeniden açmaya zorlayacağınız anlamına gelir.

BTW, mevcut bir geliştirme topluluğunda ücretsiz bir blog edindiğiniz bir SingingEels hesabına kolayca kaydolabilirsiniz .

2) Çok sayıda mini program yazın - Bununla, haftada yaklaşık 1 tane kastediyorum. Bunu yukarıdakilerle bağlantılı olarak kullanabilirsiniz ... ya da sadece eğlence için. Genç bir geliştirici olarak yaptığım şey rastgele rastlamaktaydı (şaka yapmıyorum). Böylece, daha önce hiç görmediğiniz / kullanmadığınız bir sınıfı seçin ve onu kullanan küçük bir program yapın.


8

Dene

Daha fazla kitap okuyun Amazon'dan bu büyük kitapları toplayın ve okuyun. Örneğin, Code Complete'in yazarı, yazılım mühendisliği - Hızlı Yazılım Geliştirme, bir tane satın alma ve okuma üzerine harika bir kitap yazmıştı.

Farklı bir programlama dili öğrenin Python / ruby ​​gibi bir betik dili çalışmaya değer. Veya belki de işlevsel bir programlama dili :) Bu, programlama fikrinizi değiştirebilir. Bazı GOF kalıplarının bu tür diller için gerekli olmadığını biliyor olabilirsiniz.

Bir topluluğa katıl İnsanlar başkalarını dinleyerek ve sunum yaparak düşüncelerini değiş tokuş edebilirler.


4

Akıllı programcılar bulun ve onlardan bilgi edinin. Onları taklit et. Yaptıklarından, senden farklı yaptıklarına dikkat et.

Şirketiniz kod incelemeleri yapıyor mu? Öğrenmenin en iyi yollarından biri budur. Daha gelişmiş programcıların yaptığı öneriler ve kodlama sırasında yaptıkları şeylere hayran kalacaksınız.


3

Devam etmekte olan diğer açık kaynaklı projelere katılmaya ne dersiniz, böylece en azından işiniz birisine değecek ve gerçek dünyadaki diğer gelişmiş geliştiricilerle etkileşime girebilirsiniz.

Böylece, en azından ne öğrenmek istediğinizi veya ne tür bir proje yapmak istediğinizi sınırlamazsınız. ve zaten kullandığınız ücretsiz bir araç, daha iyi hale getirmek için gerçekten yardımcı olduğunuz için gurur duyabilirsiniz.

ve özgeçmişinizde de iyi görünüyor. :)

bu yüzden eğer hala sizi biraz boş zamana bırakıyorsanız, neden bir blogunuzu öğrenmenizi, deneyimlerinizi ve neyin olmadığını belgelemek için saklamayın. kim bilir, yazılım veya kodlama korkularında bir sonraki oyuncu olabilirsin: p


-1

C # geliştiricisi olarak başarılı olmak için aşağıdaki ikisini okuyun. Bu kitapların odağının çerçevede (.NET) değil de dilde (C #) olduğuna dikkat edin .

  1. Temel C # : bağlantı en son sürüm içindir. Aslında bir öncekini (C # 4.0) okudum, ancak yenisini daha iyi kabul ediyorum. Bu kitabın bazı temel şeyleri de var ama kapatacak kitap kapağını okuyunuz.
  2. Derinlik C: # bağlantı 10-15 gün içinde piyasaya sürülecek son baskı için tekrar. Sadece kitap olsa da inceledim, ancak okuyan meslektaşlarım buna saygı duyuyor.

CLR'yi C # üzerinden zaten okudunuz , aksi halde bu muhtemelen C # geliştiricileri için herhangi birinin üçüncü önerisidir.

Bunlar ayrıca daha iyi bir geliştirici yapmalıdır: Çerçeve Tasarım Yönergeleri ve Eski Kodla Etkili Çalışma .


neden reddedildiğini açıklamak ister misiniz?
Asim Ghaffar
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.