Programlama bana yabancı değil. İlk önce işaretleme yapmaya başladım (HTML, şimdi lütfen bana gülmeyin) 13 yaşındayken biraz TEMEL olduğumda (bu noktada Flowcharts, Pseudocodes hakkında çok şey biliyordum), ama daha sonra Lisede biyoloji ve dolayısıyla C, Java, vb gibi dillerin "gerçek" programlama bilgisini kaçırdı. UG B.E. için CS'yi aldım. (BS'ye benzer, ancak çok daha teorik). C & C++ 'ı (daha az bir ölçüde) kendi başıma öğrendim (proforum tam bir acıydı ve sınıf kod okullarıyla doluydu (okulda zaten öğrenmişti ve bu nedenle sınıfa hiç dikkat etmedi ve benim gibi daha az ölümlülerin de sınıfa dikkat etmesine izin verin)) ve müthiş bir ekleme veya çarpma programı (şimdi bile daha nazik bahçıvanların daha incelikle kırbaçlananlar) ve iştahsız bir = Java (son zamanlarda paslanmış bile).
Benim asıl sorun, her zaman yetersiz ve sınırlı programlama becerilerim tarafından boğulduğumu ve kod sporcuları tarafından küçüldüğümü hissettim (inanın bana, yıllar önce bu siteye rastladım, ancak şimdi gerçekten yayınlamak için cesaret oluşturabilirdim bir soru) ve zaman zaman söz konusu yetersizliğe bile depresyonda kalmışlardır. Çoğu insan Programlamanın mutlaka dil değil, kişinin sahip olduğu zihin durumu ve sorunları/sorunları çözmek için kullandıkları tekniklerle ilgili olduğunu söyler. Bu tür duyguları kabul ediyorum, ancak böyle bir "akıl durumu" edinebilir miyim ve eğer öyleyse "Programlama/Kodlama" ya nasıl yaklaşmalıyım ve herhangi bir belirlenmiş yol ve adım varsa, "Zen msgstr "% s". Bunu nasıl yaparım? Ayrıca, bazı Azizler bu gerilemiş $ $!.
Not; Beni zaman ayırmaya değer olarak gören herkese sonsuza dek minnettar olurum ve bir bonus olarak onlardan sonra gönderdiğim ilk Yazılım parçamın adını söylerdim. (Eğer birini gönderirsem, yani)
TL; DR: Asla öğrenemediğim "Programlama/Kodlama", denesem bile sorunları çözemez. Bana yardım et!
En iyi yolun sadece daha fazla zaman harcamak olduğunu iddia ediyorum (10000 saatlik kuralı arayın). Yapmak istediğiniz bir şey bulun ve halletmek için yola çıkın. Mevcut yeteneğinizin ötesinde bir şey seçin, ancak o kadar da değil, makul bir sürede bitiremeyeceksiniz. Gerçekten hoşlanıyorsanız, gerçekten iyi olana kadar bunu tekrarladığınızı göreceksiniz. Eğer hoşlanmıyorsanız, belki de sizin için doğru şey değildir. Kendinize meydan okumaya çalışın, muhtemelen tadını çıkaracaksınız.
Gemi işleri . Tek yol bu. İşleri halledin. İşte, kendi projeleriniz, açık kaynak projeleriniz. Bir şeyler göndermeye başlayın. Hata düzeltmesi veya minimum pazarlanabilir özellik gibi çok küçük şeyler olabilirler. Sadece bir şeyler göndermeye başlayın . Hiçbir şey başarıdan daha tatmin edici veya güven arttırıcı değildir.
Düzenleme: Okumalısınız Gönder . Bu harika.
Tekrar düzenleme: Gönderim dışında herhangi bir şey yapma deneyimi sadece başarısız bir deneyimdir. Ben ana deneyimi şeyler nakliye (ve onları nakliye değil için bahane bulmak) olan bir çok "kıdemli" geliştiriciler gördüm. Gerçek sanatçılar gemi .
'problem', 'yetersiz', 'boğulmuş', 'sınırlı X becerileri', 'köreltilmiş', 'depresif', 'yetersizlik', tek bir cümleyle, hepsi kendinize doğru yönlendirilmiş, bana geçmişten gelen bazı iyileşmemiş yaraları hala acıtıyor sen. Bunların üstesinden gelmenin yollarını bulursanız, programlama veya herhangi bir sanat/zanaatın ustalaşması çok kolay olacaktır. Belki de diğer insanların dayanıklılığı hakkında okumak burada yardımcı olacaktır. Herkes hayatında acı zaman geçirir. Eğer bu acı/yaralar iyileşmezse, başarıları gelmezdi. Önce yaranızı iyileştirin. Programlama daha sonra bekleyebilir.
Programlama becerilerine gelince, yeni bir dil nasıl öğrenirim ve o dilde zaten program yapan diğerleri gibi düşünmeye nasıl başlarım, ilk olarak, o dil ile ilgili üzerine elimden koyabileceğim her şeyi okuyun. Sonra, yeterince okuduğumda, küçük programlar yazmaya başlayın.
Gerçekten başlamanız gereken birkaç şey:
Azim: İyi bir programcı olmak zaman alır. Herhangi bir iyi kod yazmadan önce çok sayıda kötü kod yazmanız gerekir - kötü kod bir lot. Neyse ki, size yardımcı olacak bu site gibi kaynaklarınız var. Programlamayı öğrenmeye devam ettiğiniz sürece, basit oyunları ve yardımcı programları hemen bir araya getirebileceksiniz!
Goller: Kendiniz için bazı hedefler belirleyin. İki hafta içinde C++ 'da STL kullanmayı öğrenin. Ne kadar iyi yaptığınızı görün. Daha uzun süre alırsanız, ne kadar uzun sürdüğünü takip edin, gelecekte daha iyisini yapmanıza yardımcı olacaktır. Bu numarayı bir iş arkadaşından öğrendim; neredeyse her görevin ne kadar zaman alacağını tahmin edebiliyordu. Bunu yapmak, kişisel projelerde ne kadar zaman harcadığımı takip etmeme yardımcı oldu ve onları kontrolden çıkmama engellememe yardımcı oldu (kapsam yönetimi diyorlar).
Merak: İlgilenmek ve ilgilenmek zorundasınız. Çözümü bulma arzusu ile sorunlara yaklaşmayan bir kişi değilseniz, programlamaya başlamak başlangıçta zor olacaktır ve hata ayıklama kabus olabilir. Ama böyle olmak zorunda değil. Bir sorununuz varsa, böyle sitelerde sorun, google hata. Bir şeyi nasıl uygulayacağınızı anlayamıyorsanız, sorun! Orada her zaman yardım etmeye istekli insanlar var!
Güven: Ne yapmak istediğinize emin olun ve soru soracak kadar emin olun. Birisi size bir şey yapmanın başka bir yolunu gösteriyorsa, savunma yapmayın ya da yanlış yaptığınızı düşünmeyin; Sorunu çözmek için farklı bir yaklaşım öğretildiğini düşün!
Her şeyden önce, olumlu bir Outlook tutun, birçok öğretici okuyun ve birçok soru sorun ve mutlu bir programcı olacaksınız! Vermek zorunda olduğum bir diğer tavsiye, bir dil seçmek, daha emin olana kadar bir sopa seçmek. Bir dizi dili öğrenmek için çok zamanınız var, ancak işe başladığınızda sadece biriyle çalışın.
İyi şanslar! Ve unutmayın, bunun eğlenceli olması gerekiyordu! = D
Gelişimde "ne kadar çok bilirsen, bilmediğini o kadar çok bilirsin" paradoksu geçerli gibi görünüyor.
Düşünceli, dürüst bir insansanız, bu gerçeği kabul etmeniz ve onunla başa çıkmayı öğrenmeniz gerekecektir.
Sorunun ima ettiği anlamda güven, belirli bir beceri seti veya metodolojisi ile gerçekten ilgisi olmayan çok kişisel bir şeydir.
Daha sığ bir notta, http://www.kalzumeus.com/2011/10/28/dont-call-yourself-a-programmer/ (bölüm: takıldığınız kalabalık nedeniyle ortalama rekabet yeteneği bana her zaman yardımcı oldu.
Bir bütün olarak becerilerinize güven duymanın aksine, yaptığınız işte daha emin olmayı öğrenmenizi öneririm. Bunu yapmanın en iyi yolu, tüm kodlarınız için tekrarlanabilir testler yazmaktır. Ruhunuzda harikalar yaratacak.
WhiteFang34 tamamen doğru. Bir biyolog olarak, programlamayı öğrenmenin tek yolunun bunu yapmaya başlamak olduğunu keşfettim. Birkaç kitap okuyun, google ve SO her zaman elinizin altında ve "sadece yapın". Programlarınız başlangıçta çok temel, kötü kodlanmış ve buggy olacak ve daha iyi olacak ve Programlama dersleri almak için zamanım yok, ama kodlama için çok zaman harcıyorum (çünkü bunu yapmak eğlenceli).
Ne yapmak istediğinizi ve nasıl yapacağınızı daha az düşünmenizi sağlayacak bir dil seçin. c buna çok iyi bir örnek değil. Java veya c # gibi daha üst düzey dilleri deneyin, çünkü daha fazlasını yapmanıza izin vereceklerdir, böylece daha fazla deneme cesaretini alacaksınız.
(Tabii ki, profesyonel bir programcı olarak kariyer yapmadığınızı varsayarsak, bu durumda okula geri dön derim ...)
İyi şanslar ve mutlu bir kodlama
PS: Oh, ve çok fazla tembellik, sabırsızlık ve kibire ihtiyacınız olacak
Komik olan şey:
programcının zihni bilgisayar, programlama dili,
tasarım modelleri veya algoritmalar
Gerçek dünyanın inceliklerini, şeyler arasındaki etkileşimi anlamakla ilgilidir. soyut düşün. bir şeyleri fark et ve hatırla onları. Bu kaçınılmaz olarak iyi bir problem çözmeye yol açar.
Uygulama, kodun kendisi ancak bundan sonra gelir - başarılı bir şekilde
zihninizde verilen problemi çözdü.
Güven, becerileriniz hakkında hissetmeye çalışmanız gereken bir şey değildir. Güven, gerçek beceri ile zayıf (muhtemelen olumsuz) ilişkilidir. Mevcut beceri seviyeniz hakkında ne hissediyor olursanız olun, profesyonel (veya değerli hobi) beceri setinizi geliştirmek için çalışmalısınız.
Güven, yetkin olduğunu düşündüğünüz diğer insanların sizinle çalıştıktan veya işinizi gördükten sonra becerilerinizi hissetmek için gelmesi gereken bir şeydir.
Çok basit: ilgileniyorum! Zaten öyle görünüyorsunuz, bu yüzden yapmanın havalı olacağını düşündüğünüz bir şey bulun ve sonra yapın, yolda ihtiyacınız olan her soruyu sorarak, mümkün olan her türlü kaynağı kullanarak projeyi tam istediğiniz gibi bir araya getirin istiyor. Durulayın ve tekrarlayın ve yol boyunca ilginç/eğlenceli olduğu için kendinizi fazla çaba harcamadan harika bir programcı olarak bulacaksınız.
Ayrıca, bir şeyleri bulmak ve birçok soru sormak arasında ince bir denge kurun. Başlangıçta, özellikle, başkalarının size nerede yanlış yaptığınızı söylemesini sağlamak, öğrenme eğrisinin ilk bölümünde sizi güçlendirmek çok büyük bir yardımcıdır. Oradan, kendi başınıza anlamaya çalışın ve bir süre sonra sıkışırsanız, o zaman bir soru sorun. Sık sık yaptığım şey, SO üzerine bir soru göndermek ve daha sonra cevap aramaya devam etmek, SO zaman zaman süreçte. Bazen cevabı önce bulurum, bazen beni önce bulur.
Hangi teknolojiden endişelenmeyin, HTML5 + JavaScript + canvas etiketi ile grafik yapmak gerçekten eğlenceli olabilir, çünkü kurulumu oldukça kolaydır, ödüller anındadır ve bunları paylaşabilirsiniz.
Programlamaya daha olumlu, öğrencilerin tutumu ile yaklaşın. Kimse her şeyi bilmiyor. İkincisi, hoşunuza giden programlamaya neden ilginizi çektiğinizi öğrenin:
Programlama hakkında neyi sevdiğinizi öğrendikten sonra, öğrenme çabalarınızı bu yönde odaklayabilirsiniz. Ben tamircilik/problem çözücüyüm. Beni son derece pragmatik yapıyor. Algoritmalar ve veri yapıları, genel olarak bilgisayar bilimi teorisi beni uyutuyor.
Geçmişim sizinkine benzer. 10 yaşında bilgisayar inşa etmeye başladım. Gençlerimde küçük bir HTML/C++ yaptım ... sıkıldım ... birkaç yıl için bıraktım. Bilgisayarla oynamayı hiç bırakmadım.
Şimdi programlamayı çok seviyorum. Peki ne değişti? Motivasyonumu buldum. Çözülmesi gereken çok fazla sorun olduğu yerde çalışmaya başladım. Karmaşık sorunlara akıllıca ve basit çözümler bulmak ateşimi yakıyor.
Son olarak, başkalarının nasıl kodladığı veya "doğru" olup olmadığı konusunda endişelenmeyin. Yapmasını istediğiniz şeyi yaparsa doğru. Bir ekip üzerinde çalışmaya başladığınızda standartlar önem kazanır. Bu, diğer insanların çalışmanızı yorumlayabilmeleri ve değiştirebilmeleri gerektiğinden kaynaklanmaktadır. Tasarım standartları, yeni bir programcının kendilerini ilgilendirmesi gereken bir şey değildir.
Yeni şeyler öğrenirken daima aşılması gereken eylemsizlik vardır. Biliyorum meraklı programcılar yeni diller ve paradigmalar öğrenmeye devam etme motivasyonunu bulmak için mücadele ediyorlar. "X'i denemek için bir projeye ihtiyacım var" derler. Birkaç kişi bu projeyi bulacak/icat edecektir.
Programlamada bir kariyerin, yel değirmenlerine karşı yaşam boyu sürecek bir hayal kırıklığı, çalışma, deney ve eğim süreci olacağı konusunda tavsiye olun. Yapay zeka her şeyi ele geçirene kadar.
Hala gerçek bilim yapıyorsanız, o zaman bir tür proje/ihtiyaç hayal edebilmelisiniz. Örneğin, birden çok kaynaktan alınan verileri internette veya internet dışında birleştirmek. Bu, javascript veya R hatta Excel/VBA öğrenmenize ilham verebilir. Alanınızdaki diğer kişiler için bazı noktalar bağlayabilirseniz, tanınacaksınız ve bir programcı olacaksınız.
Mentorlara karşı dikkatli olun. Soru yetkisi.
Ve bu arada, "zen kodlama" bir oksimorondur.
Programlama becerileriniz hakkında asla kendinize güvenmeyeceksiniz.
Becerilerinizi tanımlama şekliniz, becerilerinizden asla memnun kalmayacağınız bir zihniyete işaret eder. C++ konusunda uzmanlaştınız mı? Java bekleyin! Java konusunda uzmanlaştınız mı? Paralel Programlama olmasını bekleyin. C++ ve Java'da Paralel Programlama konusunda uzmanlaştınız mı? Bekleyin SOA var! OOD var! Ve MVC! KATI! Fonksiyonel Programlama! Web Programlama! Bulut Programlama! Mobil Programlama!
Mesele bu yüzden depresif hissetmemek. Kafanıza bazı düğmeler basmanız gerekiyor: Becerilerinizle ilgili şüpheniz saf yakıt. Muhtemelen tatmin edici düzeyde programlama becerilerine asla ulaşamayacaksınız. Bu durumda, ilerleyeceksiniz. Zor kısmı bunu gerçekleştirmek ve ona karşı bir şey yapmaktır, ancak asla bir hedef olmayacaktır. Ne kadar uzun süre dayanırsanız, beceri seviyeniz o kadar yüksek olur.
Eskiden de aynı şekilde hissettim ve aslında bana güven vermesine yardımcı olan Stack Exchange siteleriydi.
Sorularıma cevap bulmak için StackOverflow'u kullanmaya başladım ve bir gün cevabı bildiğimi gördüm. Cevabı gönderdim, iyi oylar ve bunun iyi bir cevap olduğunu söyleyen bir yorum aldım ve bu da cevaplayabileceğim diğer soruları araştırmamı teşvik etti.
Yakında benim için bir bağımlılık haline geldi, çözebileceğim cevapsız sorular buldum ve zaman geçtikçe cevaplarıma güvenmeye başladım. Artık "Sanırım bunun nedeni ...." ya da "Bu neden olmalı ..." demek zorunda kalmadım ama bunun yerine "Bunun nedeni ..." ya da "Bu nedenler ..."
Bulmacaları severim ve bana SO sorular mini programlama bulmacaları gibiydi, yanıtı doğru anladıysam bazı olumlu geri bildirimler almanın faydası var. sildi ve diğer insanların aynı soruna çözümlerinden öğrendi.
Bu yüzden benim tavsiyem SO gitmek ve ilgilendiğiniz etiketteki sorulara göz atmak ve cevaplarını bulabileceğinizi düşündüğünüz bazılarını aramak olacaktır. İnsanların size söylediği gibi bir şey yoktur. programlama cevaplarınız programlama yeteneğiniz konusunda size güven vermek için faydalı/iyidir :)
Beyniniz çok fazla çalışmayı sevmiyor. Seçim göz önüne alındığında, kolay çıkış yolunu tercih ediyor. Bu yüzden çok iddialı bir şeyle uğraşmaya çalıştığınızda şeylerden vazgeçmek kolay - öğrenecek çok fazla, doğru olmak için çok fazla ayrıntı, çok fazla yak tıraş.
Bununla mücadele etmek için yapabileceğiniz birkaç şey var. Birincisi enerjidir. İyi dinlenmiş ve iyi beslenmişken pratik yapmaya çalışın, aksi takdirde beyniniz tam anlamıyla karmaşık soyut düşünce için yeterli yakıta sahip olmaz. İkinci numara ilgi veya önemdir. Beyninizi, maven bilmenin sizi kovalayan kaplandan kaçmak için hayati olduğuna ikna edebiliyorsanız, beyninizin gerçekten ne istediğinize giden yolda anlamsız bir yan görev olduğunu düşündüğünden daha fazlasını öğrenecek ve tutacaksınız. Önemli olan üçüncü bir faktör, aşırıya kaçmadan germek. Biraz çaba size başarıdan gelen bu vızıltı verecek ve ulaşılamaz olmadan yeni zihinsel yollar oluşturmanıza yardımcı olacaktır.
Tekrarlanan uygulamalar için söylenecek bir şey de vardır. Yeni olmak için yeterli varyasyon istiyorsunuz, ama aynı eylemleri uygulayıp onları içine alacak kadar benzerlik istiyorsunuz.
Bir başka nokta da kollarınızı yuvarlamaya ve ellerinizi kirletmeye çalışmanızdır. Hiç başlamadığınız ölçüde alternatif yaklaşımları veya ideal çözümü düşünerek çok zaman harcamak kolaydır. Bu beyninizin daha kolay çıkarmaya çalışan bir örneğidir. Bunun size ne zaman geldiğini anlamaya çalışın ve başlamak için kaçının. Bir test veya deney bile iyidir. Bu ayrıca beyninizin görevi tamamlamanın veya daha iyi bir çözüm bulmanın kapanmasını istemesinin yan faydasıdır.
Burada uygulama hakkında birçok iyi yorum var, gerçekten tüm farkı yaratıyor.
"Kod jocks" hakkında daha az endişelenmeli ve ne olduklarına dair öneri veya yorum almalısınız. Bir iş parçacığında uğraşmak zorsa, gerçek hayatta da başa çıkmak zor olabilir; ve gerçekten, kimin sosyal beceriksizliği hakkında endişelenecek zamanı var?
Sonuç olarak programlama görevlerine yaklaşmanın binlerce yolu vardır. Bir çok şey kişisel tercihlere dayanıyor. Örneğin, kiracı operatörleriyle kod okumaktan nefret ediyorum. Diğerleri onları sever. Bence doğru mu yanlış mı? .. aslında, ikisi de değil. Konuyla ilgili çok fazla ateşli tartışma yaşanacak olsa da kişisel tercih.
Eğer birisi 20 yerine 25 satır aldığınız için kodunuzu alırsa, mantıkta gerçek bir kusur bulamadıkça onları görmezden gelme eğilimindeyim. Bazen gerçek dünyada, sadece işleri halletmek zorundayız (ve kimin ne kadar karmaşık olduğu konusunda nefes alan birisini dinlemek isteyenler ... err, zarif, 10 dakikada yapılması gereken bir kod parçası yapmayı başardılar) . Soyut şeylerin ne kadar uzak olduğuna dair sonsuz felsefi tartışmalardan bir şeyler öğrenebilir misiniz? Tabii ... ama sürekli% 100 zarafete çekilmenin getirileri azalıyor. Her zaman olduğu gibi gerçekçi olmamak istiyoruz. Herkesle paylaşmak için utandığım en küçük zarif kodumdan bazıları (kariyerimin başında yazdım) haftalar süren haftalar boyunca insanları kurtardı, on yıl önce kuruluşundan bu yana kullanıldı ve kullanıcıların soğuk ölü parmaklarından meraklı olmak (ve aynı zamanda çalışır, asla kırılmadı bu yüzden geri dönmek ve her zaman hikaye "temizlemek" için asla zaman verilmemiştir).
Joel Spolsky'nin Duct Tape Programmer adlı harika bir blog yazısı var. Harika bir okuma ve IMO bazı korkularınızı perspektife sokuyor.
Ben bok kodu yazma demiyorum ve en iyi uygulamaları görmezden gelmek, ama tuzlu bir tahıl ile ranty programcılar almak.
Dikkate alınması gereken üç şey: (Ya da tabii ki değil.)
Kendine neden güven eksikliği hissettiğini sor. Bence akranlarınızın ne düşündüğünü önemsiyorsunuz ve bu tamamen anlaşılabilir. Ancak bu konuda gerçekten zen olmak için, bu tür düşünceleri temizlemeniz ve kendinizi zamanla yalnızca kendinizle karşılaştırmanız gerekir. İlginize göre hareket edin, öğrenin ve çok çalışın, tüm psişik BS olmadan iyi bir programcı olacaksınız.
İhtiyacınız olan gerçek bir güven değil, ilerleme yolunuzda daha az gürültü var.