Yeni geliştiriciler için en iyi ipuçlarım: (çoğunlukla) kendi kendini yetiştiren bir yazılım mühendisinin tavsiyesi

Blog okuyucularından aldığım en yaygın soru “Yeni programcılar için tavsiyeniz nedir?” Derken düşüncelerimi yazmanın zamanı geldiğini düşündüm.

Gelecekte tüm hikayemi yazacağım ama üniversitede iki bilgisayar bilimi dersi aldım. Sonra kısa bir süre sonra bir yazılım mühendisliği stajı yaptım. Web geliştirme çalışmaları yapmaya başladım. Başlangıçta, arka uçta, sonra da ön uçta çalıştım. Üniversitem kesinlikle o ilk birkaç bilgisayar bilimleri dersinde web geliştirme öğretmedi, bu yüzden kendimi öğrendim.

Hikayemin benzersiz olduğunu sanmıyorum. Tüm programcılar bir dereceye kadar kendi kendine öğretilirler, ister tamamen kendileri öğrettiler, ister bilgisayar bilimlerinde uzmanlar. Herkes yol boyunca RegEx gibi bir şeyler öğretti. Aslında, kendi kendine öğretim, geliştirici olarak sahip olabileceğiniz en önemli becerilerden biri olabilir.

Kendi tecrübelerime ek olarak, aynı zamanda insanlara öncelikli işim ve gönüllü olduğum organizasyonlar olarak kodlamayı öğretiyorum. Yani bu yazı da bu deneyime dayanıyor.

İşte başlamam için ipuçlarım.

Yeni Programcılar İçin İpuçları

1. Sebep olsun ve hatırla

Programlamaya başlamak istiyorsanız, bunun bir nedeni olmalı. Bu sebep, kod yazmayı sevmeniz veya daha kazançlı bir kariyer yapmak istemeniz olabilir. Bir sürü Excel işi yapıyor olabilirsiniz ve bunu daha verimli hale getirmek istersiniz.

Bu sebebi takip et. Programlama zordur ve bazen sinirleneceksiniz. Bu nedeni göz önünde bulundurmak ve ona bağlı kalmak çok önemlidir. Bilgisayarınıza bir yapışkan not veya ana ekranınıza bir not ekleyebilirsiniz. Ya da (benim gibi) aynanın üstüne kuru silme kalemiyle yaz.

2. sağlam bir temel oluşturmak

Bu daha az yaygın bir öneri olabilir, ancak bunun gerçekten yararlı olduğunu düşünüyorum. Kod yazmaya başlamadan önce, bir süredir matematiğe bakmadıysanız, Cebir 1'deki kavramları tekrar gözden geçiririm. Programlama, fonksiyonlar ve değişkenler gibi Cebir 1 matematiği üzerine kurulur. Bu kavramları programlama dışında anlamak, gelecekte çok değerli olacaktır. Khan Academy’nin Cebir 1 dersini öneririm!

let x = 1; // kavramsal olarak cebirsel değişkenlerle aynı!
function add (x, y) {// cebirsel fonksiyonlarla aynı!
  x + y döndür
}

3. Bir topluluk bul

Kod yazmaya başladığınızda sizi destekleyecek bir topluluk bulmak yardımcı olacaktır. Bu topluluk değerli olacak, çünkü diğer insanlar sizinle aynı yerde olacak. Onlara yardım eden ve cesaretlendirici kaynaklar sunabilirler.

Bölgenizdeki en iyi çözüm olarak bir buluşma bulmanızı öneririm. Küçük şehirler bile yakınlarda bir grup oluşturma eğilimindedir. Eğer bir tane yoksa, ben ve CodeNewbie topluluğuna iki mükemmel alternatif olarak önerebilirim. CodeNewbie'nin haftalık bir Twitter sohbeti, bir Slack grubu ve dinlenecek podcast'leri var. Dev.to'nun bir sürü blog yazısı ve sorularınızı yayınlayabileceğiniz bir #discuss etiketi vardır.

4. Sorunları küçük sorunlara bölmek

Programlamanın en önemli parçalarından biri büyük bir problem almak ve bu parçalar çözülene kadar daha küçük ve daha küçük parçalara bölmektir. Nereden başlayacağınızı bilmeyen boş bir metin düzenleyicisine bakıyorsanız, bunun nedeni sorunu yeterince çözmemiş olmanız olabilir!

5. Sözde kodu

Bir önceki noktaya gelince, çoğu zaman kod yazmayı denemeden önce düz kelimelerle ne yapmaya çalıştığınızı ayrıntılı olarak yazmak faydalı olur. Bu işleme sözde kodlama denir ve istediğiniz şekliyle alabilir. Bir problemi önce kağıt üzerinde yavaşça çözmek de yardımcı olabilir. Bu sorunu çözmek için atacağınız adımları tek tek düşünür veya hatta yazarsınız.

// kullanıcının ondan fazla puanı varsa
// sayfada "galibi" göster
// Başka
//     oynamaya devam et

6. Öğrenme döngüsünü benimseyin

İkinci bir kariyer olarak kodlamayı öğreniyorsanız, özellikle bir süre sınıftan uzaktaysanız, nasıl öğreneceğinizi öğrenmek sürecinizin büyük bir parçası olacaktır. Çok doğal iniş çıkışlar var, bu çok doğal! Başlamadan önce bu rollercoaster için kendini hazırlarım.

7. Ücretsiz kaynaklar ile başlayın

Kodlamayı öğrenmek için bir milyon ve bir kaynak var. Bazıları ücretsiz, bazıları ücretli. Özgür kaynaklar ile başlardım. İlk önce kod yazmayı sevdiğinizden emin olun. Ondan sonra, ücretli kaynaklara veya hatta bir bootcamp'a geçmeyi düşünebilirsiniz.

8. Nişinizi bulun

Programlamada birçok dünya var, bu yüzden sevdiğiniz ve buna odaklandığınız bir dünya bulmaya çalışın. 8 programlama dilini öğrenmek yerine, ön uç ve arka uç, derlenmiş ve yorumlanmış diller, tüm metin editörleri, geliştirici araçları vb., Gerçekten ilgilendiğiniz birkaç şeyi bulun ve onlarla iyi geçinin.

9. Örüntü tanıma konusunda başarılı olun

Kodlardaki kalıpları tanımak, sahip olabileceğiniz en önemli becerilerden biridir. İnsanlar “DRY” kodunu yazmaktan bahsettiğinde (yani, Kendinizi Tekrarlama) kodunuzdaki kalıpları azaltmaktan bahsediyorlar. Desen tanıma seti oyununu öneririm - hatta her gün New York Times’ın web sitesinde çevrimiçi olarak oynayabilirsiniz!

// DRY kodu değil
letersedString = string.split (""). reverse (). join ("")
letersedString2 = string2.split (""). reverse (). join ("")
// temizleyici kodu
const reverse = string => string.split (""). reverse (). join ("")
letersedString = reverse (string) olsun
tersine çevirirString2 = reverse (string2)

10. Erken iyi alışkanlıklar edin

Erken alışkanlık haline gelirseniz ileride temiz kodlar yazmak daha kolay olacaktır. Kötü alışkanlıklar kırmak zor olabilir. İşte temizleyici kodunu yazmak için ipuçlarım. Web geliştirme yapıyorsanız, HTML ve CSS doğrulayıcıları kodunuzda çalıştırmak tam olarak ne düzeltmeniz gerektiğini söyleyebilir!

// Harika değil
avg (a) {işlevi
  s = a.reduce olsun ((x, y) => x + y)
  geri dönüş uzunluğu
}
// Çok daha iyi!
function sumArray (array) {
  return array.reduce ((number, currentSum) => number + currentSum)
}

İşlev ortalamasıArray (dizi) {
  dönüş sumArray (array) / array.length
}

11. Öğrenme tarzınızı tanımlayın

Herkes farklı öğrenir. İster görsel, sesli veya kinestetik bir öğrenci olun, bir sonraki kişiden farklı bir şekilde öğrenirsiniz. Nasıl en iyi öğrendiğinizi belirleyin ve bu stile uygun olan kaynaklara güvenin. Örneğin, belgeleri ve kod örneklerini okumayı en iyi şekilde öğreniyorum. Derslerde kolayca odak kaybediyorum.

12. Mücadele, ama çok fazla değil

Öğrenirken biraz mücadele etmek çok önemli. Sorunu kendiniz çözmek ve var olan kaynakları kullanarak bir cevap bulmak istiyorsunuz. Bununla birlikte, bir problemle çok uzun süre mücadele etmenin verimsiz ve moral bozucu olduğunu söyledi. Birkaç saat sonra yardım için birine ulaşın!

13. Arıza durumunda rahat olun

Programlama zordur ve doğru cevabı bulmak hemen olmaz. Programlama yolculuğumdaki en önemli anlardan biri bir Sudoku çözücü yazmadı. Her şeyi hemen almamak ve bu hata mesajlarını görmek için ayarlamak zor olabilir. Ama bu programlamanın çok büyük bir parçası.

14. Hata mesajlarını sev

Hata mesajları çok faydalı! Başlarken, bu kırmızı hata mesajı korkunç olabilir! Atılması gereken büyük bir adım, bu mesajları okumak, onları anlamak ve sonra sorunu çözmek için onları kullanmaktır. Aslında, sessizce başarısız bir programın yararlı bir hata mesajından çok daha sinir bozucu olacağı bir noktaya ulaşırsınız.

Python Hata Mesajı

15. Bazı programlama dilleri diğerlerinden daha kolaydır

İlk olarak hangi programlama dilinin öğrenileceği konusunda doğru bir cevap yoktur. Bazıları almak daha kolay olacak. İlk üçüm Python, Ruby ve JavaScript. Onları severim, çünkü onların arkasında büyük bir topluluk var, daha açık sözdizimine sahipler ve yorumlanıyorlar, bu yüzden derleme sürecinden geçmeniz gerekmez.

16. Her şeyi bilmenize gerek yok

Programlama hakkında her şeyi bilmek% 100 imkansızdır. Her programlama dilini, orada bulunan her bir yöntemi, her kütüphaneyi ve çerçeveyi ya da her sorunun mükemmel çözümünü kimse bilmiyor. Her şeyi öğrenmekle ilgili endişelenmeyin, bildiklerinize odaklanın ve bunu genişletin.

17. Genişlik üzerindeki derinliğe odaklanın

Bir şeyi derinlemesine öğrenmek, özellikle de ilk başta olmak üzere pek çok şey hakkında çok az şey öğrenmekten daha iyidir. Bu derinlemesine bilgi devam edecek ve bir sonraki şeyi daha kolay öğrenmeyi kolaylaştıracak. Körlüğü tak, böylece öğrendiklerini bırakıp yeni bir şeye geçmeyeceksin.

18. Önce temellere odaklanın

Programlamanın temelleri paha biçilmezdir. Programlama ile ne yaparsanız yapın, onları kullanacaksınız. Herkesin hakkında konuştuğu harika kütüphaneyi öğrenmeye devam etmeden önce döngüler, koşullamalar, işlevler, veri türleri ve (çoğu dilde) nesne yönelimli programlama hakkında sağlam bir bilgi sahibi olmaya odaklanın.

Temelleri gerçekten iyi öğrendikten sonra bu kütüphaneyi öğrenmek çok daha kolay olacaktır. Aynı zamanda dilden dile geçecekler, bu yüzden onları bir kez gerçekten öğrenmelisin. Ondan sonra sadece sözdizimi var!

19. Problem çözme konusunda iyilik

Problem çözme programlamanın temelidir! Bu konuda daha iyi olmak önemlidir. Bilmeceleri çözmek, kağıda kod yazmak ve problemleri yıkmak gerçekten problem çözmede yardımcı olabilir.

Bazen yeni geliştiricilerle gördüğüm bir şey, problem çözme projesi yerine bir araştırma problemi gibi programlamaya yaklaşmalarıdır. Google’ı yeterince iyi bir şey yaparlarsa, bir çözümü olur. Evet, Google ve Yığın Taşması çok faydalıdır, ancak bazen kendinize de güvenebilirsiniz. Araştırmadan önce bir şeyleri birkaç farklı yolla deneyin. Veya, sorunun kendisi yerine sorunun küçük parçalarını araştırın - yani “ters dizge JavaScript” yerine “dizgiyi JavaScript dizisine dönüştürün”.

20. Araştırmada başarılı olun

Öğrenilmesi gereken en büyük şeylerden biri, sorularınıza nasıl iyi cevaplar bulacağınız veya dilinizin veya kütüphanenizin yeni özelliklerini öğrenmektir. Google’ı kullanmak önemlidir, topluluklara katılmak ve kaynaklara abone olmak da önemlidir. Normalde kullandığım Google şablonu, mümkün olduğu kadar az sayıda ve dolgu içermeyen “sorunlu dil / çerçeve / kütüphane” dir. Bu nedenle, "sıralama dizini JavaScript", "spin element CSS" veya "yönlendirici Vue oluştur".

21. Sevdiğiniz projeleri oluşturun

Öğrenirken, becerilerinizi uygulamak (ve göstermek) için çeşitli projeler inşa edeceksiniz. Sizin için ilgi çekici olan proje fikirlerini seçin - bunları bitirmeniz ve çalışmalarına katılmak istemeniz çok daha muhtemel olacaktır. İlgili: bu projeleri tamamlayın. Gerçekten iyi bitmiş birkaç proje, bitmiş yarı bitmiş projelerden çok daha etkileyici!

22. Kendinizi yalnızca kendinizle karşılaştırın

Orada kod yazmayı öğrenen çok insan var. İlerlemenizi başkasıyla karşılaştırmayın. Bunun yerine, kendinizi kendinize göre karşılaştırın ve kendi gelişiminize odaklanın.

23. Bir sürü kod zorluk yapın

Hızlı kod sorunları yapmak, temelleri sağlamlaştırmanıza gerçekten yardımcı olabilir. Problem çözme ve görüşme için pratik yapmak için mükemmeldirler. Onları başkalarıyla çözmek istiyorsanız #CodingPuzzle hashtagiyle her gün bir tane Twitter'da gönderiyorum!

"""
Öğeyi yalnızca bir kez oluşan bir dizide bulun
https://www.hackerrank.com/challenges/ctci-lonely-integer adresinden
"""
Koleksiyonlardan ithalat ithal
def lonely_integer (a):
    a_counter = Sayaç (a)
    l için a_counter.items () 'da sayın:
        eğer sayısı == 1 ise:
            l dönüş

24. Kazandıklarınızı kutlayın

Programlamayı öğrenmek gerçekten zor bir süreç olabilir, bu yüzden bir şeyi başardığınızda, küçük olsa bile, kutlayın! Kazançlarımı Google Keep'te izliyorum, böylece kötü bir gün geçirirseniz, bu kazançlara geri dönebilir ve onları hatırlayabilirim.

25. Programlama harika

Programlama gerçekten harika çünkü bir şeyler inşa edebiliyorsunuz. Ben her zaman bu Sandi Metz alıntılarına geri dönerim:

Çalışmaları yazılım yazmak olanlarımız inanılmaz derecede şanslı. Bina yazılımı suçsuz bir zevktir, çünkü yaratıcı enerjimizi işleri halletmek için kullanırız. Hayatımızı her iki şekilde de yapması için düzenledik; Yazdığımız kodun kullandığı bilgisine sahip olduğumuzdan emin olarak saf kod yazmanın tadını çıkarabiliriz. Önemli şeyler üretiyoruz. Modern zanaatkarlar, günümüz gerçeğini oluşturan yapılar inşa ediyoruz ve tuğla ustalarından veya köprü inşaatçılarından daha az değil, başarılarımızla haklı gurur duyuyoruz.
Bu programcılar, en hevesli acemilerden, görünüşte yorgun yaşlılara kadar, en hafif İnternet başlangıcında veya en sağlam, uzun süre dayanan girişimde çalışıp çalışmadıklarını paylaşıyorlar. En iyi işimizi yapmak istiyoruz. Çalışmalarımızın anlam kazanmasını istiyoruz. Yol boyunca eğlenmek istiyoruz.
Sandi Metz

İrtibatta olalım!

Bu makaleyi beğendiyseniz, nereden geldiği ile ilgili çok şey var! Her hafta en sevdiğim linkler ve o hafta yazdıklarımdan oluşan bir bülten gönderirim. Gönderilerimin çıktığını görmek için beni Twitter'da da takip edebilirsiniz!

Aslen zen-of-programming.com adresinde yayınlandı.