Telefon : +90 212 275 71 06  
Bir Kod Geliştirici Gözüyle : Kod Öğrenmenizi Gerektiren Durumlar

Bir Kod Geliştirici Gözüyle : Kod Öğrenmenizi Gerektiren Durumlar

Teknoloji topluluğunda son zamanlarda zemin kazanan bir fikir var: Herkes kodlama öğrenmeli.


Ancak bu fikirle ilgili bir de sorun var: Kodlama, yeni okur yazarlık yeteneği değil.


Silikon Vadisi'nin kültürel uyanıklıklarına düzenli olarak dikkat ediyorsanız “Kodlama Öğrenme” hareketinin mutlaka duymuşsunuzdur. Politikacılar, kar amacı gütmeyen Code.org gibi organizasyonlar, ve hatta eski New York City Valisi Michael Bloomberg bile kodlamayı geleceğin iş gücü için gerekli bir beceri olarak görüyor.


Bu bir dereceye kadar doğru olabilir, özellikle de Amerika Birleşik Devletlerin mühendis ihtiyacında hiç azalma görülmezken.


Ancak durum göründüğünden daha karmaşık.


Son derece rekabetçi bir dünyada yaşıyoruz, insanlar geçimlerini sağlamak için her türlü yola başvuruyor. Kodlamayı kitlelerin ekonomik kurtuluşuna giden bir yol olarak pazarlamak dürüst bir yaklaşım değil.


Kodlama eğitimlerini ele alalım. Ana akım, Silikon Vadisi yazılım mühendislerinin başarısını gördüğünden herkes bir şirket kurmak ya da bir mühendis olmak istiyor. HBO’nun Silikon Vadisi dizisi, gecelerini kod yazıp ot çekerek geçiren ama bir yandan da milyonlarca dolar kazanan yirmili yaşlarında gençleri konu alıyor. Amerikan halkı görünüşe göre bir gecede milyonlarca dolar kazanan Elon Musk ve Mark Zuckerberg gibi figürlerden çok etkileniyor. Kodlama tutkusu Beyaz Saray'a bile ulaştı; Başkan Obama bilgisayar bilimlerinin her devlet okulunun müfredatına alınmasına ilişkin yasa çalışmaları yaptı.


Anlaşılamaz bir şekilde, insanları kod öğrenmeye teşvik eden odaklar eğitim merkezleri ya da politikacılarla sınırlı kalmıyor.


Bireyler Hollywood'dan teknik bilgelere kadar toplumun her kesiminden, aktif olarak bunu yapmaya yönlendiriliyor. Bu giderek büyüyen söylentilere rağmen ben eğitim kurslarına yoğun bir şüphecilikle yaklaşıyorum. Bir yandan kültürümüz Silikon Vadisini çekici gösterme eğilimindeyken ve göz alıcı eğitim kursu broşürleri iyi ücretli işler vadederken, gerçekte bu kuruluşların bir çoğu onaylı değil, iş istatistikleri yayınlamıyor ve öğrencilerinin eğitim kursu sonrası başarısını sağlamada yeterince çaba göstermiyor.  Birçok eğitim kursu öğrencilerini yasallaştırıyor ve onlara özen gösterirken, bundan daha fazlası ortalama Amerikalının çaresizliğinden yararlanan modern dolandırıcılar tarafından işletiliyor.


Beni yanlış anlamayın; mühendislik ve programlamanın önemli yetenekler olduğuna inanıyorum.


Ama ancak doğru bağlamda ve yalnızca başarılı olmak için gereken kan, ter ve gözyaşını dökmeye gönüllü doğru kişiler için. Aynı yaklaşım başka bir çok yetenek için de söylenebilir. Herhangi biri, yeteneği varsa bir programcı olması için olduğu kadar bir tesisatçı olması için de teşvik edilebilir.


Kodlamaya odaklanmak, sorunu anlamaktan ziyade bir sorunu çözmek için "doğru" yöntemi bulmanın önemini ön plana çıkarıyor.


Bir kodlama sorununa bir çözüm getirme konusunda çalışmaya başlamadan önce sorunun ne olduğunu ve bunun gerçek bir sorun olup olmadığını belirlememiz gerekiyor. Eğer bir programlama sorunu olup olmadığına bakmaksızın bir sorunu kod kullanarak çözme konusunda sabit fikirli olursak bir şey elde edememe nedenimizi gözden kaçırırız.


Daha önce Stanford'ta Association for Computing Machinery International Collegiate Programming Contest yarışmasının şampiyonu olan yakın bir arkadaşım var. ACM şampiyonluk günlerinden bana kalan en önemli ders çözmeye çalıştığınız sorunun ne olduğunu anlamanın ne kadar önemli olduğu idi.


Kendinize şunu sormalısınız; ‘Gerçekten bir sorununuz var mı?’ ve ‘Buna Feynman prensibini uygulayıp başkalarının anlayabileceği bir şekilde açıklayabilir misiniz?’


Bu arkadaş seçkin okullarda bile öğrencilerin kodlama sorununa ilişkin istemi yalnızca bir kez okuduğunu ve ardından hemen kodlamaya başladığını söyledi.


Arkadaşım şampiyonluğu kazandığı yıl bir şey öğrendi: Seçkin okullarda okuyanlar bile karmaşık sorunlara tek silahları olan kodlama ile balıklama dalıyor.


Diğer taraftan arkadaşım kodunu ancak sorunu tam olarak anladıktan sonra yazdı. Neredeyse zamanının tamamını sorun hakkında düşünerek geçirdi. Kodu ancak süre bitmeden bir dakika önce yazdı.


Ve şampiyon oldu.


Çünkü doğrudan koda dalmanın değil, serin kanlı, derli toplu bir kodun sorunu çözebileceğini biliyordu.


Kodlamaya aşırı odaklanmak, mevcut geliştiricilerin içinde bulunduğu kötü durumun gözden kaçırılmasına neden oluyor.


Bu sektörde teknoloji çok hızlı değişiyor.


Daha birkaç yıl önce Objective-C kullanırken şimdi neredeyse her şeyi Swift'te kodluyorum. Şu anda Objective-C'de tek bir satır bile yazmamış olan iOS Geliştiricileri iş başvurularında bulunuyor. Swift daha kolay öğreniyor, daha güvenli, modern geliştirme paradigmaları kullanıyor ve Objective-C'nin hiç olmadığı kadar şık. Yeni geliştiricilerin Objective-C’nin eksiklikleri ile hiç karşılaşmayacak olması güzel, ama bu durum mesleğin gerçekliğinin gözden kaçmasına yol açıyor.


***


Ancak şimdiki geliştiricilerin ümitleri boşa çıkarsa ve geride kalırlarsa — ve durumun böyle olduğuna dair kanıtlar varsa — o zaman neden insanlar böyle belirsiz bir ortama girmek için teşvik ediliyor?


Gecesini gündüzünü yalnızca Objective-C çalışmak için harcadıktan sonra WWDC 2014'teki Swift duyurusundan sonra dehşete düşen kişiye ne olacak? Kullanım oranı azalan kodlama dilinde yazmaya devam mı edecek yoksa her şeye baştan mı başlayacak? Yirmili yaşlarınızda genç biriyseniz bu size biraz daha kolay gelebilir, ancak bir aile geçindiriyorsanız durum biraz süper güçler gerektirmeye başlıyor.


Bu durumdaki insanlar, tüm bunlarla, gerçek programlama ya da mühendisliği tam olarak kavramadan karşı karşıya geliyor.


Kod öğrenme ile meslek olarak programdan para kazanma arasındaki sınır, kolay geçilecek bir sınır değil.


Gerçekten.


Kendi başıma yaptığım bir işten bir şeyler kazanmadan önce bir senemi konu üzerinde çalışarak geçirdim. Bu durumda bile ücret son derece yetersizdi. Bazı zamanlarda kalacağım yerin parasını bile karşılayamıyordum ve devam edebilmek için arkadaşlarımın kibarlığına sığınmak zorunda kalıyordum.


Bir çok gece vazgeçmek istedim. Ama bir şekilde devam etme gücünü bulabildim.


Bu sektörde kalmamı sağlayan şey bu konuda ısrarcı olmamdı ve hala da öyle. Sayısız defa bilgisayar bilimleri diplomam olmadığı için bir görüşmeye bile gitmeyi reddettim.


Aslında, stajyerlik bile olsa bir geliştirme işine girmek o kadar da kolay değil. Bağlantılarınız, size referans olacak kişiler, bir Github hesabınız ve daha pek çok şey gerekiyor. Eşit fırsat konusundaki gelişmelere rağmen, yeterince temsil edilmemiş bir azınlıktaysanız, diğerlerinden iki kat iyi olmalısınız. Bu da en basit tabiriyle yeteneğinizi göstermek anlamına geliyor.


Kapıları tutanlar her yerde. Bunlar Sarmaşık Ligi mezunları ve ‘Bir ikili ağacı nasıl dönüştürürsünüz?’ gibi sorular sormanın birinin teknik yeteneğini belirlemek için en iyi yol olduğuna inanıyor. Bunlar beyaz tahtada test etmeye takıntılı proje müdürleri (itiraf ediyorum: Bende de birçok beyaz tahta var) ve iş ilanlarında “5 yıl Swift Programlama Dili Deneyimi” gibi şartlar listeleyen bihaber insan kaynakları yöneticileri (ipucu: Swift 2014'te çıktı). Bu insanlar öyle veya böyle iyi bir işle aranızda engel oluşturuyor.


Bildiğim kadarıyla, bu insanları geçmek için onların oyununu oynamaktan başka yol yok; her ne kadar adil olmasa da.


Son Düşünceler


Bakın. İstediğiniz şey bir mühendis olmaksa, benim ya da başka birinin yolunuza çıkmasına izin vermeyin. Ve eğitim sistemi gibi geleneksel sınırlandırmaların sizi yavaşlatmasına izin vermeyin. Hedeflerinize ulaşmak için doğru ya da yanlış bir yol yok.


Ama kültürümüzün Silikon Vadisi romantizminin büyüsünde gerçeklikle olan bağınızı da koparmayın. Bu alan kurtuluşa giden hızlı bir yol değil. Alanı anlamak için zaman harcamalısınız. Yalnızca "boşluğu dolduran bir geliştirici" değil bir sorun çözücü olduğunuz gerçeğine alışmanız gerekiyor. Ayrıca her an yeni bir dil öğrenmeniz ve bu konuda resmi bir eğitim almadıysanız bir iş için savaşmanız gerektiği fikrine alışmalısınız.


Yazılım mühendisliği kazançlı bir alandır, ama ‘kodlayıcı’dan ‘mühendis’e dönüşmek o kadar kolay değildir.


Buna yapışıp kalırsanız, yalnızca hayatınızı değil düşünme şeklinizi de değiştiremezsiniz.



Yazının orijinali için tıklayınız.