3 puan yazan GN⁺ 2024-01-16 | 1 yorum | WhatsApp'ta paylaş
  • Programlama becerisi 24 saatlik ya da 21 günlük giriş kitaplarıyla kolay kolay kazanılmaz; kısa süreli öğrenmeyle elde edilen şey çoğunlukla yüzeysel bir aşinalığa yakındır
  • Satranç, beste yapma, resim, yüzme, araştırma gibi çeşitli alanlarda uzmanlık üzerine çalışmalar, yüksek seviyeye ulaşmanın yaklaşık 10 yıl sürdüğünü gösterir; işin özü basit tekrar değil, bilinçli pratiktir
  • İyi bir programcı olmak için ilgiyi canlı tutarak bizzat bir şeyler yapmalı, başkalarının kodunu okumalı, daha iyi kişilerle çalışmalı ve geri bildirim almalısınız
  • Üniversite eğitimi ve kitaplar yeterlilik, yapı ve derinlik açısından tamamlayıcı olabilir; ancak gerçek projelerde hataları düzeltme ve bakım sürecini yaşama deneyiminin yerini tutmaz
  • İlk dil; arkadaşlar ve topluluk, basitlik, etkileşimli çalıştırma ortamı gibi ölçütlere göre seçilebilir; önemli olan birini seçip istikrarlı biçimde başlamaktır

Kısa sürede programlama öğretme vaadinin sınırları

  • Kitapçılarda ve çevrimiçi ortamda Java, C, SQL, Ruby, algoritmalar vb. konuları birkaç gün ya da birkaç saat içinde öğreteceğini söyleyen çok sayıda kitap vardır
    • Amazon gelişmiş aramasında, 2000 sonrasında başlığında teach yourself hours geçen 512 kitap görünüyordu ve ilk 10 kitabın 9'u programlama kitabıydı
    • teach yourself yerine learn ya da hours yerine days yazıldığında da benzer sonuçlar çıkıyor
  • Bu tür başlıklar, insanların programlamayı aceleyle öğrenmek istediği ya da programlamanın diğer alanlardan çok daha kolay öğrenildiği izlenimini verir
  • Felleisen ve diğerlerinin How to Design Programs kitabı, “Kötü programlama kolaydır. Aptallar bile 21 günde öğrenebilir” tarzında bu akımı hicveder

“Teach Yourself C++ in 24 Hours” gerçekte ne anlama gelebilir

  • Teach Yourself

    • 24 saat içinde anlamlı birkaç program yazmaya, başarı ve başarısızlıklardan öğrenmeye, deneyimli programcılarla çalışmaya ve bir C++ ortamında yaşamanın ne demek olduğunu anlamaya zaman yoktur
    • Bu nedenle mümkün olan şey derin bir anlayış değil, daha çok üstünkörü bir aşinalıktır
  • C++

    • Zaten başka bir dil biliyorsanız 24 saat içinde C++ sözdiziminin bir kısmını öğrenebilirsiniz
    • Ancak C++'ın neye iyi, neye kötü geldiğini ve dili pratikte nasıl kullanmanız gerektiğini öğrenmek zordur
    • Alan Perlis'in dediği gibi: “Programlamaya dair düşüncenizi değiştirmeyen bir dil, bilinmeye değer değildir”
  • 24 Hours

    • Belirli bir araca bağlanmak için C++, JavaScript ya da Processing gibi şeyleri biraz öğrenebilirsiniz
    • Bu durumda öğrendiğiniz şey programlamanın kendisinden çok belirli bir işi yapma biçimidir

Uzmanlık zaman alır

  • Bloom, Bryan & Harter, Hayes, Simon & Chase gibi araştırmacıların çalışmaları, çeşitli alanlarda uzmanlığın oluşmasının yaklaşık 10 yıl sürdüğünü göstermiştir
    • Örnek alanlar arasında satranç, beste yapma, telgraf, resim, piyano, yüzme, tenis, nöropsikoloji ve topoloji araştırmaları yer alır
  • Önemli olan basit tekrar değil, bilinçli pratiktir (deliberative practice)
    • Mevcut yeteneğinizin biraz üzerinde zorlukta görevler seçmek
    • Uygulama sırasında ve sonrasında sonuçları analiz etmek
    • Hataları düzeltip yeniden tekrar etmek
  • Mozart 4 yaşında bir müzik dehasıydı, ancak dünya çapında müzikler ortaya koyması 13 yıl daha aldı
  • Beatles, 1964'te Ed Sullivan Show ve bir numara hitleriyle dikkat çekti; fakat 1957'den beri Liverpool ve Hamburg'daki küçük kulüplerde çalıyordu ve eleştirmenlerce büyük başarı kabul edilen Sgt. Pepper’s 1967'de çıktı
  • Malcolm Gladwell 10.000 saat ifadesini popülerleştirdi; ancak burada önemli olan kesin sayıdan çok, yıllara yayılan istikrarlı pratiktir
  • K. Anders Ericsson için 10.000 saat, en üst seviyeye ulaşmak isteyen yetenekli birinin bile haftada 10–20 saatten uzun yıllar çalışması gerektiğini hissettiren bir sayıdır
  • Tek bir sayı tüm cevap olamaz
    • Programlama, satranç, dama ve müziğin tam olarak aynı süreyi gerektirdiğini söylemek zordur
    • Herkesin aynı hızda öğrendiğini söylemek de zordur

Programcı olmak için pratik yollar

  • Programlamaya ilgi duymalı ve keyif alarak başlamalısınız
    • 10 yıl ya da 10.000 saat ayıracak kadar keyfinizin sürmesi gerekir
  • Bizzat programlama yapmalısınız
    • En iyi öğrenme, yaparak öğrenmedir
    • Etkili öğrenme; kişiye uygun zorlukta net görevler, faydalı geri bildirim, tekrar ve hata düzeltme fırsatları gerektirir
  • Diğer programcılarla konuşmalı ve başkalarının yazdığı programları okumalısınız
    • Bu, herhangi bir kitap ya da eğitim programından daha önemlidir
  • İsterseniz üniversitede 4 yıl geçirebilir ya da lisansüstünde daha fazla okuyabilirsiniz
    • Diploma, yeterlilik isteyen işlere erişmenizi sağlayabilir ve alana dair derin bir anlayış kazandırabilir
    • Okuldan hoşlanmıyorsanız, adanmışlıkla kendi başınıza ya da sahada benzer deneyimler edinebilirsiniz
    • Sadece kitaplardan öğrenmek yeterli değildir
  • Diğer programcılarla ortak projeler yapmalısınız
    • Bazı projelerde en iyi programcı olup liderliğinizi ve vizyonunuzu sınayabilirsiniz
    • Başka projelerde en zayıf kişi olup usta kişilerin ne yaptığını ve ne yapmaktan kaçındığını öğrenebilirsiniz
  • Diğer programcıların ayrılmasından sonra kalan mevcut projelerle uğraşmalısınız
    • Başkasının yazdığı programı anlamak ve düzeltmek için ne gerektiğini öğrenirsiniz
    • Daha sonra bakımını yapacak kişiler için nasıl tasarım yapmanız gerektiğini de düşünmeye başlarsınız

Diller ve sistemler hakkında geniş deneyim

  • En az altı farklı programlama dili öğrenmelisiniz
    • Sınıf soyutlamasını vurgulayan dil: Java, C++
    • Fonksiyonel soyutlamayı vurgulayan dil: Lisp, ML, Haskell
    • Sözdizimsel soyutlamayı destekleyen dil: Lisp
    • Bildirimsel belirtimi destekleyen dil: Prolog, C++ templates
    • Paralelliği vurgulayan dil: Clojure, Go
  • “computer science” ifadesinin içinde computer olduğunu hatırlamalısınız
    • Komut yürütme, bellekten sözcük getirme, cache miss, diskte sıralı okuma, disk seek gibi işlemlerin ne kadar zaman aldığını bilmelisiniz
  • Dil standartlaştırma çalışmalarına katılmak da faydalı olabilir
    • Bu, ANSI C++ komitesi gibi büyük bir faaliyet de olabilir; yerel kodlama stilinde girintinin 2 boşluk mu 4 boşluk mu olacağına karar vermek kadar küçük bir şey de olabilir
    • Başkalarının bir dilde neleri sevdiğini ve neden bunlara güçlü duygularla bağlandığını öğrenebilirsiniz
  • Standartlaştırma faaliyetlerinden mümkün olduğunca erken çıkacak sağduyuya da ihtiyaç vardır

Kitaplar ve eğitim tek başına yeterli değildir

  • Çocuk yetiştirme üzerine çok kitap okusanız bile ilk çocuğunuz doğduğunda kendinizi acemi gibi hissedebilirsiniz; ikinci çocuk doğduğunda ise tekrar kitaplara dönmekten çok kişisel deneyiminize yaslanırsınız
  • Fred Brooks'un No Silver Bullet makalesi, iyi yazılım tasarımcıları bulmak için üç parçalı bir plan önerir
    • Üstün tasarımcıları mümkün olduğunca erken ve sistemli biçimde belirlemek
    • Gelişimlerinden sorumlu olacak ve kariyer dosyalarını yönetecek kariyer mentorları atamak
    • Gelişmekte olan tasarımcıların birbirleriyle etkileşime girip birbirlerini teşvik edebileceği fırsatlar sunmak
  • Alan Perlis, “Herkes heykel yapmayı öğrenebilir; ama Michelangelo'ya muhtemelen heykel yapmamayı öğretmek gerekirdi” demiştir
  • Üstün programcılarda eğitimin ötesine geçen içsel özellikler olabilir; ancak bunun doğuştan mı geldiği yoksa çalışkanlıkla mı geliştirildiği kesin söylenmez
  • Java, Ruby, JavaScript, PHP kitapları faydalı olabilir; ama 24 saatte ya da 21 günde hayatınızı ya da tüm uzmanlığınızı değiştirmez
  • 24 ay boyunca sürekli daha iyi olmaya çalışarak sıkı çalışmak anlamlı bir başlangıç noktasıdır

Bilgisayar işlem sürelerine dair sezgi

  • Tipik bir PC'de çeşitli işlemlerin yaklaşık süreleri şöyledir
    • Normal komut yürütme: 1 nanosaniye
    • L1 cache belleğinden getirme: 0,5 nanosaniye
    • Dallanma tahmini hatası: 5 nanosaniye
    • L2 cache belleğinden getirme: 7 nanosaniye
    • Mutex kilitleme/açma: 25 nanosaniye
    • Ana bellekten getirme: 100 nanosaniye
    • 1Gbps ağ üzerinden 2KB aktarma: 20.000 nanosaniye
    • Bellekten 1MB sıralı okuma: 250.000 nanosaniye
    • Diskte yeni bir konuma seek: 8.000.000 nanosaniye
    • Diskten 1MB sıralı okuma: 20.000.000 nanosaniye
    • ABD ile Avrupa arasında paket gidiş-dönüşü: 150 milisaniye, yani 150.000.000 nanosaniye

İlk programlama dilini seçme ölçütleri

  • İlk dil konusunda tek bir doğru cevap yoktur
  • Arkadaşlar ve topluluk ölçüt alınabilir
    • İşletim sistemi seçerken arkadaşlarınızın kullandığını kullanın cevabına benzer
    • Arkadaşlardan öğrenebilme avantajı, işletim sistemi ya da dilin kendi farklarını dengeleyebilir
    • Seçtiğiniz dilin büyüyen bir topluluğu, kitapları, web siteleri ve çevrimiçi forumları olup olmadığını da değerlendirmelisiniz
  • Basitlik önemlidir
    • C++ ve Java, deneyimli programcıların büyük ekiplerde profesyonel geliştirme yapması için tasarlanmıştır ve çalışma verimliliğini dikkate alan karmaşık yönleri vardır
    • Yeni başlayan biri için bu karmaşıklık gerekli değildir
  • Etkileşimli çalıştırma ortamı öğrenmeyi kolaylaştırır
    • Piyano çalarken bir tuşa basar basmaz sesi duymanın, tüm parçayı bitirdikten sonra dinlenen toplu çalışma biçiminden daha kolay öğrenilmesi gibi
    • Programlamada da etkileşimli mod sunan diller avantajlıdır
  • Bu ölçütlerle ilk dil olarak Python veya Scheme önerilir
  • JavaScript, yeni başlayanlar için kusursuz tasarlanmış bir dil olduğu için değil, çevrimiçi eğitimleri çok olduğu için bir seçenek olabilir
  • Tek haneli yaşlardaki öğrenciler Alice, Squeak, Blockly tercih edebilir; daha büyük öğrenciler de bunlardan keyif alabilir
  • Önemli olan birini seçip başlamaktır

Önerilen kitaplar ve kaynaklar

1 yorum

 
GN⁺ 2024-01-16
Hacker News yorumları
  • 1999’da CompUSA’dan "Sams Teach Yourself C++ in 24 Hours" kitabını almıştım; kasiyer kitabı görünce güldü ve bana bu yazıdan bahsetti.
    16 yaşındayken Borders’ta programlama kitaplarına bakarken biri bana "The C Programming Language" kitabını uzattı; bu hayatımı değiştirdi.
    Kariyerimin önemli bir kısmı, gerçek dünyada geliştiricilerle ya da programlamaya ilgi duyan insanlarla tesadüfen karşılaşmalarla şekillendi.

    • O kitapların bazıları gerçekten gülünç derecede kötüydü ama o dönemde tek bir kitap, insanın kafasındaki tuhaf program fikirlerini gerçekten yapabilmesini sağlayacak bir başlangıç anahtarı gibi geliyordu.
      En son böyle hissettiğim an, Microcenter’dan yeni bir MacBook ve iPod Touch ile çıkıp sıradaki Angry Birds’ü yapmaya hazır olduğumu düşündüğüm zamandı.
    • Benim hayatımı değiştiren kitap, C64’ün yanında gelen BASIC kılavuzuydu.
      Yaklaşık 8 yıl sonra Turbo Pascal aldığımda da ihtiyacım olan tüm belgeler içindeydi; bu sayede hızla öğrenebildim. 1995’te Linux’a başladığımda ise man sayfaları ve info belgeleriyle, o sistemde program yazmak için gereken neredeyse her şeyi öğrenebilmiştim.
      90’ların sonunda EGCS kılavuzunu baştan sona okuduğumu da hatırlıyorum.
      Yazılımın gerekli tüm bilgileri yanında getirdiği zamanları özlüyorum; bugün ürün sayfası ya da kılavuz bulmak için Google’da eşelenmek zorunda kalmak üzücü.
      Bir 5 yıl sonra ilgili bilgiler yalnızca Discord’da paylaşılıp indekslenmediği için, kılavuz yerine kullandığımız Google aramasını bile özleyeceğiz gibi geliyor.
      2000’lerin başında Linux ve FreeBSD’de soket programlamayı da yalnızca man sayfalarından öğrendim; daha sonra Stevens’ın kitabını okuduğumda, man sayfaları ve yazdığım birkaç programdan gelen deneyim sayesinde çok hızlı okuyup anlayabildim.
    • Benim başlangıç noktam, 1997’de Barnes and Nobles’tan aldığım "Visual Basic Professional 3.0 Programming by Thomas W. Torgerson" idi.
      AOL’den Visual Basic 3.0’ı 100 e-posta eki halinde indirip punter/prog yapmayı öğrenmek istiyordum.
      Kitaptaki kodu kopyalayıp program başlarken bir ses dosyası çaldırmaya çalıştım; gerçekten çalıştığında inanılmaz şaşırmıştım.
      Sonrasında yazılım geliştirme alanında kariyer yapabilmiş olmak büyük bir ayrıcalıktı.
    • Programlama rafındaki küçük bir kıza gülmemek gerekir.
      90’larda tavsiye almak bir yana, çoğu zaman yalnızca inanamama tepkisi almak oldukça yaygındı.
    • "The C Programming Language"ın okuduğum en iyi programlama dili kitabı olduğunu sonuna kadar savunabilirim.
      Her geliştirici, C’yi kısa süre sonra unutacak olsa bile en azından bir kez C ve K&R okuyup öğrenmeli.
  • Bu yazı, kodlamayı yeni yeni öğrenmeye başladığım ergenlik yıllarımda ilk okuduğum için benim için özel bir anlam taşıyor.
    Yeniden okuyunca Malcolm Gladwell’in geçtiğini görüp şaşırdım; çünkü Outliers’ın gündeme gelmesinin çok daha sonra olduğunu hatırlıyordum.
    Ratatouille göndermesini görünce yazının 1998’de yayımlandıktan sonra güncellendiğini anladım; orijinal metin arşivde duruyor ve çok daha kısa: https://web.archive.org/web/19980206223800/https://norvig.co...
    Peter Norvig’in yıllar boyunca kendi yazısını düzeltmeye devam etmiş olması saygı duyulacak bir şey.

    • Lisede okumamız istendiği için olabilir, Gladwell’i hâlâ pek sevmiyorum.
      Çok sık alıntılanıyor ve 10 bin saat kuralı artık bana yalnızca bir meme gibi geliyor.
    • 10 yıl önce üniversite kütüphanesinin bilgisayar laboratuvarında bu yazıyı okuyan hâlim aklıma geliyor.
      Şimdi programlamayı kendi kendime öğrendim ama o yolculuk, o zaman hayal ettiğimden çok daha zor ve dolambaçlıydı.
    • "Outliers"dan önce de "The Tipping Point" ve "Blink" vardı.
  • Ben de kitaplardan öğrenmeye yatkınım, ama bu tutum çoğu zaman değişimin yavaş olduğu matematik ve fizik gibi bilgisayar dışı alanlarda daha iyi işliyor.
    Yakın zamandaki kötü bir örnek O'Reilly’nin Quantum Programming kitabıydı; kuantum devrelerini, ne yaptığımı gerçekten anlayacak kadar ayrıntılı ele almıyordu.
    Yine de bu, kuantum bilişimin kendisinin şişirilmiş olmasından da kaynaklanıyor olabilir; şu an okuduğum Nielsen/Chuang çok teorik ama anlatımı son derece net, bu yüzden ileride tekrar dönebilirim.
    Kitaplar yalnızca bir öğrenme aracıdır; hobi projeleri de deneyim kazandırdığı için hatta daha etkili bir öğrenme aracı olabilir.
    Yine de bilgi güçtür ve kitaplar, kendi ihtiyacınıza uygun kitabı bulduğunuz varsayımıyla, doğru yönü bulmada harikadır.
    Bir kitabı sonuna kadar okuyabileceğinden emin değilse hiç açmayan insanlar tanıyorum; bence bu tutum saçma.
    Az önce O'Reilly’nin Generative Deep Learning kitabını sipariş ettim; kariyerimde kullanabileceğim birkaç parça bilgi bile çıkarsa fazlasıyla değer.
    En azından kitaplıkta güzel durur.

    • Temel ilkeler değişmez.
      Her hafta yeni bir frontend framework’ü çıkıyor ama sonuçta hepsi HTML üretiyor.
  • Bunlar 16 yıllık thread’ler
    Yeniden paylaşım yaklaşık bir yıl geçince sorun olmuyor; geçmiş thread bağlantıları da daha fazlasını merak eden okurlar için
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=33287618 - Ekim 2022, 112 yorum
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=27411276 - Haziran 2021, 115 yorum
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=20543495 - Temmuz 2019, 87 yorum
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=16574248 - Mart 2018, 51 yorum
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=9395284 - Nisan 2015, 61 yorum
    Teach Yourself Programming in Ten Years (1998) - https://news.ycombinator.com/item?id=5519158 - Nisan 2013, 86 yorum
    Teach Yourself Programming in Ten Years by Peter Norvig (2001) - https://news.ycombinator.com/item?id=3439772 - Ocak 2012, 29 yorum
    Teach Yourself Programming in 10 Years. - https://news.ycombinator.com/item?id=1060176 - Ocak 2010, 32 yorum
    Teach Yourself Programming in Ten Years - https://news.ycombinator.com/item?id=191235 - Mayıs 2008, 19 yorum
    Norvig: Teach Yourself Programming in Ten Years - https://news.ycombinator.com/item?id=43243 - Ağustos 2007, 7 yorum

    • 2007~2013’te yorum yazmış kişilerin son 10 yılda öğrendiklerini paylaşabileceklerini merak ediyorum
    • Yazı paylaşılmadan önce geçmiş thread’leri bildiren bir yol olsa iyi olurdu
    • Bunun “fazla yeniden paylaşım var” eleştirisi mi, yoksa yılda bir kez civarı sağlıklı bir tekrar anlamına mı geldiğini tam anlayamadım
  • Sayfadaki eski Amazon.com bağlantısının, epey karmaşık sorgu parametreleri ekli olmasına rağmen hâlâ ilgili sonuçları döndürmesi etkileyici
    “Cool URIs don't change” için iyi bir örnek
    [0] http://www.amazon.com/gp/search/ref=sr_adv_b/?search-alias=s...
    [1] https://www.w3.org/Provider/Style/URI

    • İlginçtir, o Amazon bağlantısı bende hata döndürüyor
  • İşte ya da başka bir yerde programlama işi nasıl bulunur diye soran epey kişiyle karşılaştım.
    Kendi yolumu—çocukluktan beri öğrenmeye başladığımı, bunu büyük bir hobi haline getirdiğimi, bilgisayar bilimi diploması ve stajlardan geçtiğimi—anlatınca hızlı bir yol olmadığına şaşırıp hayal kırıklığına uğruyorlar.
    Yoksa hızlı bir yol var mı? Sıfırdan bire götüren bir bootcamp’i başarıyla bitirmiş biri var mı merak ediyorum.

    • Bir bootcamp’ten çıktım ve 8 yıldır profesyonel olarak programlama yapıyorum.
      Lisede ve üniversitede eğlence için birkaç programlama dersi almıştım ama bilgim çok sınırlıydı.
      O bootcamp adının hakkını veriyordu; resmi saatler 9-5’ti ama birçok kişi sabah 7’de gelip gece 10’da çıkıyordu.
      Hafta sonları da gidiyorduk; bazen yalnızca pazar günleri dinleniyorduk.
      Sosyal hayatın dikkatimi dağıtmaması için özellikle başka bir şehirdeki bootcamp’i seçmiştim.
      Ruby ve JavaScript’e odaklanıyordu; mezuniyetten birkaç ay sonra C#/.NET stajyeri olarak işe girdim.
      Doğrudan junior geliştirici pozisyonuna ikna etmenin zor görüneceğini düşündüğüm için stajı seçtim ve 2 hafta içinde junior geliştiriciliğe terfi ettim.
      O okul Kaplan tarafından satın alındıktan sonra ortadan kayboldu.
    • Bootcamp ile başarılı olanlar ya zaten çok zekiydi ya da teknoloji/ileri matematik geçmişinden geliyordu.
    • Bilgisayar bilimini 3 ay sonra bıraktım; ondan önce hiç programlama yapmamıştım.
      Annemin evinin bodrumunda 8 ay boyunca JavaScript temellerini kendi kendime öğrendim ve iş bulabildim.
      Sonrasında programlamaya muazzam miktarda zaman ayırdım; bugüne kadar on binlerce saati aştı.
      Derleyiciler, 3D grafikler, yarı iletkenler ve oyun motorlarıyla çalıştım.
      Deneyimim sanki iki tarafı da destekliyor.
      2012 civarında az deneyimle bile sektöre girmek görece kolaydı; ama sonrasında insanların ilginç projeleri için işe almak isteyeceği iyi bir mühendis olmak muazzam emek gerektirdi.
    • Bootcamp mezunlarını işe aldım ama kendim bootcamp yapmadım.
      Sınırlı veriye bakınca, geleneksel eğitim almış geliştiricilerde olduğu gibi şans işi.
      En iyi sonuçlar fizik, kimya, mühendislik gibi klasik eğitimlerden gelen ve kariyer değiştirmek isteyen kişilerdeydi; öğrenme eğrileri hızlı olan üst seviye junior’lara yakındılar.
      Saf programlamanın daha az önemli olduğu bir yazılım alanına istekli bir yeni mezun koymak istiyorsanız harika bir işe alım olabilir.
      Standart sapma büyük, ama iki yıllık okul mezunlarından daha büyük mü pek emin değilim.
    • Bir danışmanlık şirketinin 3 ay eğitim verip 2 yıllık sözleşmeyle çalıştırdığı mezun programından geçtim.
      Üniversitede beşeri bilimler okumuştum ve hiç kod yazmamıştım.
      İlk 2 yıl gerçekten zordu; temelim olmadığı için sürekli akıntıya karşı yüzüyormuşum gibi hissettim.
      Ancak 2 yıllık programın sonlarına doğru bağımsız olarak değer üretebileceğimi hissettim.
      Bilgim oldukça uygulama odaklı; bilgisayar bilimi temellerim eksik olduğu için aralarda temelleri öğrenerek ilerlemem gerektiğinden bazen daha da zor oluyor.
      Yine de şu anki rolüm veri mühendisi olduğu için veri yapıları ve algoritmalar gibi geleneksel bilgisayar bilimi alanları görece daha az gerekiyor.
  • Esas mesele kasıtlı pratik.
    Sadece tekrar etmek değil; mevcut yeteneğinizden biraz daha zor görevlere meydan okumak, denemek, uygulama sırasında ve sonrasında analiz etmek, hataları düzeltip yeniden tekrar etmek gerekir.
    Öğrenmeye devam etmek için kendinize meydan okumalı ve konfor alanınızın dışına çıkmalısınız.

    • GitHub Copilot gibi AI araçlarının insanların öğrenme alışkanlıklarını nasıl değiştireceğini merak ediyorum.
      Birkaç ay kullandıktan sonra tesadüfen çıkış yapmışım; resmi dokümanlara bakmanın getirdiği ufak zahmeti aslında değerli bulmaya başladım.
      İlk hafta çok daha hantallaşmış gibi hissetmeme şaşırdım.
      Birincil kaynaklardan öğrenmek için ekstra adımlar atmak ve bazen rahatsızlığı değerli görmek, programcı olarak gelişmek için önemli.
    • Yazılım geliştiricisi ve tutor/asistan deneyimi olan biri olarak, bir sonraki nesil geliştiricilerin gerçekten kod yazıp yazamayacağından endişeliyim.
      Özellikle 1.-2. sınıf düzeyindeki ödevleri yalnızca Copilot ile tamamladılarsa, kendi faydalarını otomatikleştirip ortadan kaldırmış olabilirler.
      Öte yandan “iPad çocukları” hakkında da benzer şeyler söylüyorduk.
      iPad’in de bir dosya sistemi var; uygulamalar da Apple’ın onayladığı sınırlar içinde sürekli daha fazla özellik kazanıyor, bu yüzden dizüstü bilgisayarın kötü bir yaklaştırması sayılmaz bence.
      Ben de Copilot kullanıyorum ama çoğunlukla değişkenleri ayarlamak veya ufak tekrarlı işler için akıllı otomatik tamamlama olarak.
      Amacı, problem çözmeyi bağlama oturtmaya ve ekip arkadaşlarıyla etkileşime ayırmam gereken zamandan tasarruf etmek; mühendislerin yerini alacak bir şey değil.
    • Doğru, ama daha iyi ifade edersek esas mesele hobi olarak bir şeyler yapmak.
      Uzmanlık deneyimden gelir; deneyim de ancak tekrar tekrar geri dönünce birikir.
      Kendini sonsuz eziyete sürükleyebilen insanlar var, ama sıradan insanlar için bilgelik, yazılımın gerçekten sevebilecekleri bir parçasını bulup onu büyütmekten başlamaktır.
    • Meydan okunmayı sevmek gerekir.
      Kodlama alanında benden bariz şekilde daha zeki insanların, fazla zeki oldukları için ayrıldığını gördüm.
      Ya artık zorlayıcı olmadığını düşünüyorlardı ya da “başkalarının yetişmesini beklemek” gibi yanlış bir meydan okumadan yorulmuşlardı.
      Genellikle birkaç yıl sonra standart haline gelen en ileri teknolojilerle uğraşan kişilerdi.
      Eğer motivasyon büyülenme duygusuysa, çok zeki olmadığınız için belki de şükredebilirsiniz.
    • Eğitim kuramında buna yakınsal gelişim alanı denir.
  • 1998 tarihli bir yazı olarak gösteriliyor ama Clojure ve Go gibi atıflar içerdiğine göre sonradan güncellenmiş görünüyor.

    • Sayfanın sonunda Peter Norvig (Copyright 2001—2014) yazıyor.
  • Güzel bir yazı
    Günde 8 saat, haftada 40 saat üzerinden 10 bin saati doldurmak 250 hafta sürer
    Neredeyse hiç ara vermeden programlama yapsanız bile yaklaşık 5 yıl eder; gerçekçi olarak hedefe ulaşmak 10 yıla daha yakındır

    • Gerçekte bu, programlamadan ne kadar keyif aldığınıza bağlı
      Çok programlama yaparsanız yılda 3 bin saate kolayca ulaşabilirsiniz
      Ben çoğu gün günde 12 saat, çoğu hafta haftada 6-7 gün programlama yapıyorum
      Motivasyonumun çok yüksek olduğu günlerde 18 saat de yapıyorum
      Yaklaşık 10 yıldır neredeyse böyle devam ettim; ara sıra bir ay kadar mola verip haftada 3-4 gün uzun saatlere düşürdüğüm de oldu
      Muhafazakâr hesapla bile yılda yaklaşık 3500 saat ediyor
      Bu kadar çok çalışmamın nedeni programlamayı gerçekten sevmem ve sabah sörfü dışında bundan daha çok yapmak istediğim bir şey olmaması
    • 10 bin saat sezgisel kuralı özellikle kesin değil, sadece ünlü
      Yine de sağlam bir geliştirici olmak için yaklaşık 10 yıllık profesyonel deneyim gerektiği genel olarak doğru görünüyor
      5 yılda gerçekten o seviyeye ulaşmış birini hiç görmedim
      Ergenlikten beri takıntılı şekilde yapanlar birkaç yılı kısaltabiliyor, ama bir noktadan sonra o süre de çakışıyor
      Elbette “1 yıllık deneyimi 10 kez tekrarlamak” sorununa dair eski söz de var
      10 yıldan fazla deneyimli olup da sağlam olmayan birçok geliştirici de gördüm
    • Haftada 40 saatten 5 yıl, fiilen bir yazılım işi değil mi?
      Junior bir role girip 5 yıl boyunca çalışarak yükselmek yeterliymiş gibi görünüyor
    • Her meslekte aynı
      Sezgi, giderek daha zor görevleri yerine getirdikçe birikir
      Bir noktada bir alanda bildiklerinizi başka bir alana bağlayıp uygulayabilir hâle gelirsiniz ve o zaman yaratıcılık devreye girmeye başlar
  • 5-6 yıl önce izlediğim videonun kaynağını bulamıyorum ama programcı sayısı arttıkça çoğunluğun 5 yıldan az deneyimli olduğu yönünde bir şey söylüyordu
    BT ve web’in hayata giderek daha fazla dahil olduğu bağlamda mantıklıydı
    [0] https://youtu.be/ecIWPzGEbFc?si=A4qBR2YdX-0CV2bM wild_egg yorum sayesinde buldum
    20 yıl yapınca artık bilmem gerekmeyen epey bilgi olduğunu görüyorum; 5 yıldan az deneyimi olanların muhtemelen hiç ihtiyaç duymayacağı çok şey de var
    Öte yandan deneyim deneyimdir; şeylerin nasıl bir yapıyla üretildiğini ve neden var olduklarını bilmek her zaman yardımcı olur
    Benden daha az deneyimli olup benim hayal bile edemeyeceğim birçok şeyi yapabilen çok sayıda programcı da var
    Açıkçası Turing tamlığı olan bu alan oldukça geniş

    • 40 yıldır programlama yapıyorum, bunun 33 yılı meslek olarak geçti; ama öğrenmenin boşa gittiğini düşündüğüm şey olarak Scrum dışında aklıma bir şey gelmiyor
      Sözdizimini ayrıca ezberlemedim; hep man sayfaları ve kılavuzlar açıkken programlama yaptım
      Ama öğrendiğim her dil ve teknoloji, bilişim ve sistemlerin temel sorunları hakkında faydalı bir şey öğretti
      Sorunları ele alma biçimleri farklı kıyafetler giyer, ama sorunların kendisi aynı kalır
      Kestirme yol yok; bir programcı olarak bugünkü hâlimin 5. yılımdaki hâlimden birkaç mertebe daha yetkin olduğunu kesin olarak biliyorum
      Yeni şeyler öğrenmeyi ve yeni işler yapmayı her zamankinden daha çok dört gözle beklememin nedeni, bunların bu teknolojinin daha fazla bölümünü açacak olması
      Endişelendiğim tek şey, bir gün bedenimin ve zihnimin buna ayak uyduramaması; öğrenecek şeylerin tükenmesi ya da gençlerin beni geçmesi değil
    • Bu, Bob Martin’in "The Future of Programming" konuşmasındaki içerik olabilir
      https://youtu.be/ecIWPzGEbFc?si=A4qBR2YdX-0CV2bM
    • Bu alan genç olduğu için hızlı gelişiyor; bu yüzden çok fazla geçici bilginin birikmesi de doğal
      Hâlâ simyacıların dönemi gibi hissettiriyor
      Bir gün kimyacılar ortaya çıkıp geçici gözlemleri sistematik hâle getirecek ve birçok şeyi çöpe atacak
      O zamana kadar… Newton da bir simyacıydı ama yine de epey büyük katkılar yaptı