Bir amatör için iyi bir programcı olabilir mi? [kapalı]


46

Profesyonel bir tam zamanlı programcı, çalışmalarını sürekli olarak öğrenerek harika bir iş çıkartabilir. Bir amatör programcı nasıl iyi bir programcı olabilir?

** Müzik çalmayı veya şarkı söylemeyi seviyorsanız, bunu hobiniz olduğu ve ilgilendiğiniz için yapabilir ve iyi bir şarkıcı veya müzik çalar olabilirsiniz. Ancak, profesyonel bir şarkıcı olmanıza veya yaşam için şarkı söylemenize gerek yok. Bu programcılar için de geçerli mi? Ünlü herhangi bir amatör programcı?


3
Sağ. Böylece Wozniak, ilk Apple satılıncaya kadar iyi bir programcı değildi (ve böylece "profesyonel" oldu).
KeithS

"İyi" yi tanımlayın ..

2
Her "iyi" programcı bir zamanlar amatördü.
spudwaffle

Yanıtlar:


84

Gerçekten iyi olmanın anahtarı iyi bir takımda çalışmaktır. Birçok amatör yalnız çalışır, bu yüzden sadece o kadar uzakta olurlar. Bir takımda, diğerlerinden ders alırsın ve disiplinli olursun;

Bu nedenle, açık kaynaklı bir proje gibi bir takıma katılmanızı veya bazı arkadaşlarınızla bir hobi projesi oluşturmanızı öneririm.


9
+1 İyi bir takımda çalışmak için. Takımınızda eşit veya daha yüksek kalifiye insan bulundurmak son derece motive edicidir.
BenR,

'Tuzaklar' listemdeki takım bölümünü unuttum, +1
keppla

2
+1 Bunun anahtar olduğunu düşünüyorum: Sizden daha fazla deneyime sahip iyi insanlardan öğrenmek. İyi bir takıma katılmak, söylenenden çok daha kolay.

1
İyi takım biti için +1 . Eğer takım senin kadar iyi veya daha iyi değilse, öğrenemezsin.
Spencer Rathbun

4
Diğer insanlardan öğrenmek için bir takımda olmanıza gerek yok.
Emanuil Rusev

53

Programlamada iyi olmanın yolu şarkı söylemek veya müzik çalmakla aynıdır: pratik, pratik, pratik. Birkaç yıl düzenli olarak yazılım geliştirmek için yeterli zaman harcıyorsanız, çalışma saatleri içinde veya dışında olabilir.

Şimdi, pratik yapmak için daha fazla zaman harcamak dışında, profesyonellerin genellikle belirli anlamda amatörlerden daha iyi olmalarının bir nedeni daha var (programlamada olduğu gibi müzikte). Profesyonel iseniz, mutlaka sevmediğiniz ancak yapmanız gereken daha geniş bir yazılım geliştirme işine (örneğin test etme, müşterilerle tartışma, dokümantasyon yazma, geliştirme / oluşturma ortamı kurma, derleme komut dosyaları yazma vb.) ). Ve her şimdi ve sonra yeni dilleri veya platformları öğrenmek için yabancı alanlara adım atmaya da zorlanıyorsunuz. Bir amatör olarak, istemediğiniz bir şeyi yapmak zorunda kalmazsınız, bu da yaşamınızın çoğu için konfor bölgesinde kalmanızı sağlar. Başka bir deyişle, en çok sevdiğiniz bir veya birkaç belirli alanla kolayca sınırlandırılabilir,

OTOH birçok profesyonel geliştirici de buna katılıyor, aynı şirkette aynı rutin işi yapıyor, onlarca yıl boyunca yeni bir şey öğrenemiyor ... Bu yüzden daha iyi olmanın anahtarı tavrınız. Öğrenmeye devam ederseniz ve bilinçli bir şekilde, rahat bölgenizden yeni, tanımadığınız bir bölgeye taşınmak için fırsatlar ararsanız, en sonunda yavaş yavaş fosilleşen "profesyonelleri" sürüden üstün kılarsınız. Bunun iyi bir yolu, bazı açık kaynaklı projelere katkıda bulunmak olabilir.

Önerilen bir okuma ise Pragmatik Programcı: Yolculukçulardan Ustalara , nasıl daha iyi olmaya devam edebileceği konusunda birçok harika ve pratik öneriler.



Bir profesyonelin nahoş işleri yapmak zorunda olmasına rağmen, bunun başka bir tarafı var - bu nahoş işler genellikle çok az sıkıcı, sıkıcı işlerdir. IOW amatör ilginç projeler geliştirmeyi seçerek sıklıkla aynı anda daha fazla şey öğrenebilir. ANCAK önemli bir ders, elbette, sıkıcı ve sıkıcı iş yapmaya hazırlıklı olmanız gerektiğidir. Özellikle "açık kaynak kodlu projelere katkıda bulunmayı"
beğeniyorum

@StuperUser bağlantınız koptu (köprüde yer almayan ikinci parantez içinde).
Paperjam

Şimdiye kadar okuduğum en iyi tavsiyelerin bir kısmı, "İyi bir sanatçı olmak istiyorsan, çiz. Her sabah, eskiz yap, yardım edemezsin ama daha iyi olsun." .. bir proje bul. kar orada yardıma ihtiyacı var. tavsiye isteyin (“faturalandırma sistemi kuruyorum, nereden başlarım?”, “bağlamsal güvenliği nasıl işlerim?” vb.) başarısızlığın maliyeti düşüktür ve sadece bir ödeme işini alabilirsin ..
Bobby D

@ Steve314, daha iyi profesyoneller sıradan sıkıcı görevleri otomatikleştirmek için araçlar yazacak. Doğru iş için doğru araçları kullanarak, bazı görevlerin zamanını yüzlerce faktörle azalttım. (Daha da iyisi araçları tamamen bu görevi uzak otomatikleştirmek mümkün olabilirdi ama aracı yazma çaba ve zaman kaydedilen iyi bir denge gibi ne hissetti ulaştı.)
sarnold

18

Ancak amatör bir programcı için nasıl iyi bir programcı olmak için eğitim alabilirim?

Bir kısmı olan, yapılanları yansıtan kısmı öğrenerek daha iyi olursunuz.

Dolayısıyla, temel olarak, hobi ve profesyonel arasında bir fark yoktur, ancak 'tuzaklar' biraz farklı olarak düzenlenir.

Amatör Tuzaklar, imho

  • Projenizi tamamlama ihtiyacı, ne olursa olsun, profesyonel olmadığınızda o kadar güçlü değildir . Bu iyi bir şey olabilir, çünkü kalite açısından köşeleri kesmek için alışkanlık kazanmayacaksınız, ancak bitirmek (hiç olmadığı kadar iyidir!) Amatör olarak eğitilmesi zor olan çok önemli bir beceridir. çünkü bir projenin ölmesine ve başka bir projeye başlamasına izin vermek kolaydır.

  • İyi iletişim kurma ihtiyacı o kadar güçlü değil. Profesyonel bir projede, sorunu çözmek istediklerinin yalnızca tek bir tutarlı cümle oluşturamasalar bile, müşterileri gerçekten anlamak için güçlü bir teşvik vardır. Onları yanlış anlarsanız veya (olağan davada) farketmezseniz, anlamanız gereken bir şey hakkında konuşmadıklarını fark ederseniz, er ya da geç, bu sizin sorununuz olacaktır. Amatör bir proje, problemlerini çözmediği için tüm potansiyel kullanıcıları kolayca kaybedebilir ve teknik olarak 'bitmiş' olabilir.

Profesyonel Tuzaklar

  • İyileşmek için genellikle çok az motivasyon vardır . Kanser tedavisini bulursanız ya da verimli görünecek şekilde kahve içerseniz, haftada 40 saat oradasınız. Öğrenme, esas olarak kendiniz için yaptığınız bir şeydir ve çoğunlukla, öğrendiğiniz şeyleri uygulamaya çalışırsanız, buna karşı çalışan güçler vardır (muhafazakar grup düşüncesi, hiyerarşiler, hatta stil kılavuzları, geliştirmelere karşı silah olarak kullanılabilir). Mesleğin yalnızca pes etmemesi, saatlerinizi kesmesi ve hayattaki alternatif amaçları araması çok fazla sevgi ister.

  • Öğrenecek çok az şey var . Evet, bir kişi her şeyi bir meydan okuma olarak almaya çalışabilir, ancak dürüst olmak zorundayız: 1 Yıllık Spagetti kodundan sonra, daha fazla yılınız olan bir dilde yeniden yönlendirmeye izin veremezsiniz ("zorlaştırıyorsunuz!"). Muhtemelen dayanacağından daha fazla tecrübe, birinin öğrendiği tek şey, hayal kırıklığına ve kurumsal politikaya karşı bir tolerans oluşturmaktır.

Müzik çalarsanız ya da şarkı söylerseniz, ilgi için çalabilirsiniz, yine de iyi bir şarkıcı ya da müzik çalar olabilir, ancak profesyonel bir şarkıcı olmaya gerek kalmadan ya da yaşamak için şarkı söylemeye gerek kalmaz.

Tabii ki gerek yok, ama kaç müzisyen işini bırakma ve müzikleriyle para kazanma fırsatını geri çevirir?

BT'de, bu fırsatlar Müzik'ten biraz daha muhtemeldir, bu yüzden bence, ünlü bir amatör olmanın imkansız olmadığı, ancak çoğu zaman, amatörlerin tutkularını işlerine bırakmaları (müzisyenlerin mecbur oldukları zamanlardaki benzer sorunları ile) Ticaret ve sanat arasındaki çizgiyi bulmak


Bu canımı acıtıyor benim için çok doğru, lol. Spagetti kodunun 1 Yılı, yeniden canlandırmaya izin verilmez (“zorlaştırıyorsunuz!”)
Terrance

1
"İyileşmek için genellikle çok az motivasyon vardır." Yazılım geliştirmeyi bu şekilde ele alan herhangi bir çalışanım olsaydı, onları yanlışlıkla denemelerinden koparsalar bile, daha iyisini yapmaya çalışan bir kişiden daha çok kovardım.

@Hris Marisic: o zaman seninle çalışmaktan mutlu olurum. ne yazık ki, benim işveren doğrultusunda istisna olurdu
keppla

8

Korkarım, amatörler için tam zamanlı şirket dronlarından daha fazla öğrenme imkanı var. Bir amatör olarak, herhangi bir teknoloji, çevre, tasarım ve geliştirme metodolojisi ile sınırlı değilsiniz. Kişisel gelişiminiz için faydalı bulduğunuz her şeyi yapabilirsiniz. Tam zamanlı bir geliştirici olarak, aynı rutini izleyerek, aynı kurumsal kurallarla sınırlı olarak, aynı ürün üzerinde yıllarca çalışacaksınız. Birçoğumuz için bir durgunluktan başka bir şey değil. Ortak bir temele aşina olduğunuzda, bir şirket ortamından çok az şey öğrenilebilir.

Pek çok tam zamanlı geliştiricinin de amatör olmasının nedeni işten sonra kodlamaya devam etmeleri, kendi oyuncak projeleriyle oynamaları - büyümek için biraz özgürlük.


6

Amatör bir programcı olarak, bugünlerde becerilerinizi geliştirmek için birçok imkanınız var. Yazılım mühendisliği okurken becerilerimi geliştirmek için aşağıdakileri yaptım.

Tabii ki bilginizi de uygulamanız gerekir. Bunu bir staj, arkadaşlarınızla bir proje ya da çalışma kursu aracılığıyla yapın. Kendinizi geliştirmenin birçok yolu var, sadece boş zamanınızı harcamak için istekli olmalısınız. Ayrıca, yeni bir şeyler öğrenirken eğlenin !


4

Bir amatör için iyi bir programcı olabilir mi?

Evet, mümkün , ancak uzun zaman alıyor:

satranç oynamak, müzik kompozisyonu, telgraf operasyonu, resim, piyano oyunu, yüzme, tenis ve nöropsikoloji ve topoloji araştırmaları dahil olmak üzere çok çeşitli alanlarda uzmanlık geliştirmek yaklaşık on yıl alır. Anahtar müzakere edici pratiktir: sadece tekrar tekrar yapmak değil, mevcut yeteneğinizin hemen ötesinde bir görevle kendinize meydan okumak, denemek, performansınızı ve sonrasında performansınızı analiz etmek ve hataları düzeltmek. Ardından tekrarlayın. Ve tekrarla.


Bir amatör programcı nasıl iyi bir programcı olabilir?

Yine aynı kaynaktan :

  • Programlamaya ilgi duyun
  • program
  • Diğer programcılar ile konuşun
  • Eğer istersen, dört yılını üniversiteye koy
  • Diğer programcılar ile projeler üzerinde çalışın
  • Diğer programcılardan sonra projeler üzerinde çalışmak
  • En az yarım düzine programlama dilini öğrenin

Ben sadece bağlantılardan oluşan sık değil 1 cevapları, ama bu yazı olduğunu okunmaya değer. Teşekkürler.
sarnold

Bunu daha ayrıntılı olarak açıklar mısın - sorulan soruyu nasıl ve neden cevaplıyor? Yığın Borsası'nda "yalnızca bağlantı yanıtları" oldukça açık değildir
gnat

1
@gnat Bağlantı her şeyi söylüyor - umarım düzenlemeden sonra daha iyidir.
BЈовић

3

Bir amatör olarak, birçok profesyonelden daha iyi uygulamalar aramak için daha fazla seçeneğiniz var. Profesyoneller genellikle "sadece halletmek için" baskı altındadır.

Programlamayı öğrendiğim gibi bir ders görmedim, ancak katıldığım Üniversite tarafından sunulan bazı kısa (1-3 saatlik) ücretsiz derslerden öğrendim. İş Adamlarının kendileri için yazılmış kodları anlamalarını sağlamak için tasarlandılar. Kurslar, yaygın bir gerçek yaşam problemini çözen çok iyi yazılmış bir kod (yorumlar dahil) sunmuştur. Kod daha sonra dil özellikleri ve neden oldukları gibi kullanılmalarının açıklanmasıyla gözden geçirildi. Gördüğüm tam dil kurslarının hiçbiri, o kurstan öğrendiklerimin kalitesinin yakınında hiçbir yerde kodla sonuçlanmıyor. Bilgisayar Bilimleri dersine geçmeden önce birkaç yıl oldu.

İnternet ve kütüphane birçok kaynak ve örnek sunar. Örneklerin birçoğunun hiçbir şey için iyi olmadığını ve yapılmasını sağladığını biliyorum. Örneklere bakarken, önce koda bakın. Açıklama olmadan amacını ve yapısını anlayabiliyor musun? Öyleyse, iyi bir örnek bulmuş olabilirsiniz.

Öğrenmeniz ve uygulamanız gereken bazı temel uygulamalar:

  • KURU (Kendini Tekrarlama).
  • DRO (Diğerini Tekrarlama); Standart dil kütüphanelerini kullanın, diğer kütüphaneleri kullanın.
  • Kodu basit tut. Şık kod, bakımı daha zor olma eğilimindedir. Daha da kötüsü, optimize ediciler genellikle daha basit olan koddan daha yavaş makine kodu üretir.
  • Modüllerin tek bir amacı olmalıdır. (Bu amacın iş yapmak veya karar vermek olması daha iyidir.)
  • İyi isimler kullanın. Yazmayı önlemek için kısa adlar kullanmayın, bunun yerine otomatik tamamlama özelliğine sahip bir IDE kullanın. Dilinizin adlandırma kurallarını anlayın.
  • Kodunuzu optimize etmeyin. Performansını ölçebilene kadar bekleyin ve optimizasyonun belirgin bir etkisi olacağını unutmayın.
  • Öğrenmeye devam et. Şimdi kullanabileceğiniz faydalı bilgiler sağlayacak kaynakları tanımlamayı öğrenin.

2

Müzik çalmayı veya şarkı söylemeyi seviyorsanız, bunu yapabilirsiniz çünkü hobiniz ve ilgilendiğiniz ve iyi bir şarkıcı veya müzik çalar olabilirsiniz. Ancak, profesyonel bir şarkıcı olmanıza veya yaşam için şarkı söylemenize gerek yok. Bu programcılar için de geçerli mi? Ünlü herhangi bir amatör programcı?

Bir şey değil. Yazılım mühendisliği . “Doğal yetenek” e dayanmıyor. Harika bir programcı olmak, yılların eğitimine ve yılların deneyimine dayanır . Bunu sadece gerçek projeler üzerinde çalışacaksınız .


2
Aslında, önemli ölçüde, doğal bir yetenek. Fakir bir yazılım mühendisini harika olmak için eğitemezsiniz, ancak genellikle iyi olmak için herkesi eğitebilirsiniz. Müzikal veya sanatsal yeteneklere çok benziyor, hemen hemen kimseyi oldukça iyi olmak için eğitebilirsiniz, ancak kimseyi mükemmel olmak için eğitemezsiniz, kendilerini eğitirler ve muhtemelen eğitmenlerinin HERHANGİ BİRİNDEN daha iyidir. Ayrıca dünya standartlarında sporcular gibi çok az kişi, çoğu programcının neden var olduğunu bilmediğini açıklayabilen birinci sınıf bir programlama yeteneğiyle tanıştı. :)
Bill K

2

Yaptığım iş görüşmelerinde (işverenin tarafında), her zaman görüşülen kişinin amatör olarak programladığı şeyleri (okul ödevleri hariç) - bunu yapmış olmak, bu alanda gerçek ilginin kesin bir işareti olduğunu ortaya koymuştur. kendi kendine öğrenme tutkusu. Sadece mümkün değil, iyi olmak için neredeyse bir gereklilik .


2

Mümkün mü? Evet. Ancak, programlama için ne kadar çok zaman harcıyorsanız o kadar iyi olmalısınız. Teknik bir beceride uzmanlık geliştirmek için 10 yıl / 10 000 saat süren müzakere alıştırması gerektiği söylenir . Konfor bölgenizde aynı kodlama işlemini yapmak için 10 000 saat (örneğin, farklı web siteleri için basit bir jQuery kodu yazmak) değil, programlama / kaynak kodunu okumak / kaynak kodu yazmak / diğer dilleri öğrenmek hakkında 10 000 saat öğrenme / okuma / başkalarıyla çalışmak, vb.

Bu zaman seviyesini buna adayacaksanız; programcı olarak bir iş bulup amatör durumunu bırakabilirsin. (Bağımsız olarak varlıklı olmadıkça).


1

Herkes bir noktada her konuda amatör. İyi bir programcı olmak istiyorsanız ve yapmaktan zevk aldığınız bir şey olacak. Anahtar kendi başına programlama. Okul sana hiçbir şeyin yanında öğretir. Öğrenmenizin çoğu kendi başınıza ve işte yapılacaktır. Eğer iyi olmak istiyorsan, git iyi ol.


1

Verilen gerçek orijinal kelimenin anlamı (Fransızca amatör Eski Fransızcadan "nin sevgilisi" ve sonuçta Latince gelen amatorem . nom amator , "sevgili" - Vikipedi), bir profesyonellerin çok sayıda da amatör olduğuna inanmak istiyorum. Eğer zanaatını sevmiyorsan, pratik yapar mısın?

Tabii ki mümkün - eğer programlamayı seviyorsanız, pratik yapacaksınız ve zamanla bu konuda iyi olacaksınız. (Belki de hiç bir zaman harika, kişisel yetenekler veya eksiklikler göz önüne alındığında), fakat en azından iyi


Amatörün asıl anlamı, OED ya da NOAD'da bulduğunuz anlamdır. Bir kelimenin etimolojisi anlamını dikte etmez. “Mesleği değil, peşini koşmak, çalışmak, bilim veya spor yapmak isteyen biri”.
Django Reinhardt

doğru. belki de "gerçek anlam" yerine "orijinal anlam" yazmalıydım. Şu anki dilin “bir şeyi yapan insanlar, gerçekten yapmayı sevdikleri için” için ortak bir söz sahibi olmaması talihsiz bir durumdur. OP'nin sorusuna, "Bir amatörün iyi bir programcı olması mümkün mü?" Sorusunun cevaplanmasına yardımcı olacağını düşünüyorum. Tabii ki mümkün - eğer programlamayı seviyorsanız, pratik yapacaksınız ve zamanla bu konuda iyi olacaksınız. (Belki de hiç bir zaman harika, kişisel yetenekler veya eksiklikler göz önüne alındığında), fakat en azından iyi.
StevenV

0

İyi bir programcı olarak tanımladığı şeyi bilmiyorum. Ancak kendilerine ait bir şeyi öğrenmek ve bir grup insanla çalışmak farklı bir şeydir. Tutkulu amatör programcılar gerçekten yeni şeyler öğrenmeye ve hacklemeye geldiler. Daha ilginç şeyler buldular. Ancak, bir grup insanla çalışmak, bu alandaki uzmanlardan bilgi topladığınız, işbirliği yaptığınız, bilgi paylaştığınız / bilgi edindiğiniz disiplinli bir eylemdir.

Ancak bilgi edinmek sadece tutku meselesidir. Kendilerini öğrenmek için gece harcayan insanlar var ve sonunda Bill G Mark Zuck gibi dünyaya yeni bir şey getirdiler. Kolayca karşılaştıramazlar. ancak daha iyi bir Yazılım mühendisi olmak istiyorsanız (Programcı demiyorum) bir şirkete katılmak veya başkaları tarafından kullanılan bazı iyi ürünler için çalışmak.

Sonunda becerilerinizi, tavrınızı, endüstri güncellemelerinizi geliştirmek, lezzet geliştirmek ve tutkuyla ilerlemek için çok şey okuyun. İşler sizi kolayca takip edecek!


Hem Bill Gates, hem de Mark Zuckerberg, Hardvard'da bilgisayar işleri üzerinde kendi işlerini kurup çıkıncaya kadar okudu. İyi bir amatör örneği değil .
vartec

Harvard'ın geeky ortamı dışındaki programlama becerilerini geliştirmede önemli rol oynadığından şüpheliyim!
sarat

0

"Herhangi bir amatör programcı meşhur oldu mu?" Sorusuna. Cevabı "Evet, ama çoğu bu şekilde kalmadı." Aklıma gelen en ünlü örnek, üniversitede ücretsiz (inanıyorum tarafından ödenmemiş olan amatör) anlamına gelirken en önemli çalışmalarından bazılarını yapan Roy Fielding.

Profesyonel kalitede olmanın püf noktası, bir mentor veya mentorlar grubunun (açık kaynak kodlu bir projedeki ekip gibi) ve konuyla ilgili ciddi zamana bağlılığıdır. Eskiden profesyonel bir müzisyen olarak, benim deneyimim, her ikisinin de bir profesyonel ya da amatör olarak iyi olması için gerekli olduğudur. Bazıları kitaplar tarafından öğrenilebilir, ancak tutarlı bir dış eleştiri olmadan acemi olarak edinilen kötü alışkanlıklardan kurtulmak çok zorlaşır.

Bununla birlikte, programcı durumunda, müzisyenden çok öğrenmek daha kolaydır - bir müzisyen olarak, pedagojik hatalarınızı görmek için bir müzisyen olarak daha zor olduğunu görmek benim tecrübemdi. çalışmıyor Öte yandan, iyi bir geliştirici olmak için büyük ölçüde daha fazla zaman yatırımı gerektiriyor.


0

Başka bir şey gibi, bir şeyde daha iyi olmanın en iyi yolu, kendinizi iyi olmak istediğiniz ortama daldırmak ve kendinizi, sizi tolere etmek ve size öğretmek isteyen sizden çok daha üstün insanlarla çevrelemektir. Yapması kolay değil, fakat bulduğum şey en hızlı bir şeyde iyi olmayı öğrenmenin en iyi yoludur.

Ancak, gerçekten yetenekli bir programcı olmak söz konusu olduğunda, sadece bu yetenekli olmalısınız. Eğer doğal olarak yetenekli bir kemancı değilseniz, ne kadar çok deneseniz veya hangi enstrümanı satın alırsanız kullanın, ustalar kadar iyi olmayacaksınız. Aynı şekilde, programcıları gerçekten dehası yapan bir hediyeye sahip değilseniz, asla onlardan biri olmayacaksınız.

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.