Programlamada Nasıl Gelişiriz?

Programlamaya giriş dersini hatırlıyorum. Adını bile duymadığım, harflerini bile görmediğim ve o dönem gençlik kafasıyla aklımda bile tutmadığım bir dil ile karşılaşmıştım.
Daha sonra anlamını öğrenmeden ikinci seviyeye geçmiş ve Java ile tanışmıştım. Geceleri arkadaşlarımla saatleri harcayarak anlamaya çalıştığımızı, IDE hatalarını anlamadığımızı ve günün sonunda yarım yamalak teslim ettiğimiz ödevlerle geçme çabamızı hatırlıyorum. O dönem(ki hala hatırlıyorum) programlama söz konusu olduğunda ortaya atılmış slogan
Bir dili çok iyi öğrenin, öteki dilleri az öğrenseniz bile yapabilirsiniz.
Peki gerçekten bir dilde kendini nasıl geliştirirsin? Ne zaman “Ben oldum ya!” dersin?
Nasıl Başlanır?

Java dilini öğrenmeye başladığıma göre bunca sene sonra Java konusunda uzmanlaştığımı düşünenler olabilir. Cevabım basitçe hayır olacak. Java, güçlü bir dil olması, beni ödevleri ve projeleri ile boğuşturması ve sırf sınav için “kağıda elle yazmak zorunda kalmış olmama” rağmen Giriş seviyesini hiç geçmedi. Bunun en büyük iki sebebi:
- Gerçek hayatta çok az yerde kullanmam
- Yaptıklarımı komut satırı haricinde görmememdi(Android cihazım olmadığından Android geliştirme ile ilgilenmiyordum)
Bu da beni eski oyun bilgisayarımı satıp MacBook almaya yönlendirdi. iOS işletim sistemine sahip bir telefon kullanıyordum ve android telefonları gördükçe elimdeki cihazı kullanmak daha hoşuma gidiyordu? Neden buna dair uğraşmayaydım ki?
Cihazı ilk aldığım zaman okuldaki iOS dersini alamamak üzmüştü(sonra aldım da pişman oldum mu, evet…). Bu noktada TurkishKit ekibiyle tanışarak bu Dünya’ya giriş yaptım. Sonra ilk uygulamamı 2018’in sonuna doğru geliştirip yayınladım.
Bu noktada kendimi artık Junior Developer görüyordum. Artık Apple uygulamaları yapabilirdim. Tasarımım da iyiydi. Çok satan bir uygulama geliştirebilirdim. Değil mi? Değil mi?!
Hayır.
Pet Reminder’ın bana kattığı ilk ders bu oldu. Ben kodlama dilini bir şeyler yapabilecek kadar iyi biliyordum. Ama ben “düzgün” bir uygulama yazmayı bilmiyordum. Daha da önemlisi:
Elimdeki eğitimlerin beni iyileştirdiğine o kadar inanmıştım ki, eğitimlerin bilgilerini sorgulamak aklıma bile gelmemişti.
Kendiniz Öğrenin, Başkalarına da Öğretin

Bir kodlama dilinde her şeyi yazabilirsiniz. Fakat güncel kalmadıkça, yenilikleri yoklamadıkça o dönem bilgisi ile kalır ve bir süre sonra doğrularınız yeni öğrenenlerin yanlışları haline döner.
2 sene önce iOS kursuna girdiğimde ben bunu yaşamıştım. Dersi 1 sene sonrasında da olsa alabildiğim için çok mutluydum. Derse girdiğim sene Apple Swift 3’ü yayınlamış, Swift 4’ü duyurmasına ise aylar kalmıştı. Dersin içeriği ise Swift 2 ile geliyordu. Bu noktada bilmeyenler için Apple, Swift 2 ile Swift 3 arasında ciddi anlamda kod tabanında güncelleme yapmış, kullanılan bir çok kodun artık ömrü bitmiş, bir kısmının da ismi değişmişti. Fakat hocamız bunu bilmeden elindeki bilgiye, aslında kendi bilgisine, güvenerek eğitim vermek istemişti. Okuldaki IT çalışanların da eski bilgisayarları eski sistemelerle bırakması sonucu 3 hafta dersi düzgün yapamadık. Hocamızın yaptığı pek çok kod, diğerlerinde çalışmıyor, bazı Xcode’lar çöküyordu ve bir çok kişinin derse olan ilgisi azalmıştı. Sadece, benim gibi kendi bilgisayarı olanlar bir şeyler yapabiliyordu. Buna bir de hocanın anlatımındaki sıkıntılar, Java bilmesinden gelen “gereksiz” kod tecrübeleri üzerine uğraşması beni yardımcı asistan olmaya itmiş, hoca dahil olmak üzere pek çok kişiye hata çözmede yardımcı olmuştum.
Bu tecrübenin bana kattığı bir şey ise, öğretmeyi sevdiğimi farketmem olmuştu. Yıllarca teknoloji alanında blog yazmış olsam da, kodlama alanında insanlara yardımcı olabileceğimi düşünmemiştim. Hatta bilgimi küçük, yetersiz görüyordum. Ancak bu ders serüveni bana insanlara da bir şeyler gösterebileceğimi öğretmişti. Bu benim 1 sene liselilere iOS öğretmemi sağladı. Ama en önemlisi, ben hem kendi bilgimi tazeledim, hem de ders içeriği araştırırken yepyeni şeyler öğrendim.
Yenikleri Takip Edin

WWDC(World Wide Developer Conference), Apple’ın yıllardır sürdürdüğü etkinliklerinden biri. Ben ilk defa 2017 yılında ana etkinliği izlemiş, geliştirici videolarını ise 2019’da izlemeye başlamıştım. Burada fark ettiğim en önemli şey, kodların ilk başta bana ne kadar karışık geldiğiydi.
Kodlama eğitimlerinde kolay girişler tercih edilir. Zaman/Öğretme dengesi göz önüne alındığında bir çok şey atlanır, geçilir veya bahsedilmez.
Bunu göz önüne aldığımımda farkettiğim şey, “verimli programlama” yapmadığımdı. Kod yazıyordum, kod çalışıyordu. Fakat çalışan kod açıklarla doluydu, çirkin yazılmıştı ve başka bir gün başka bir hava koşulu olsa çökebilecek durumdaydı.
Peki kendime bu konuda ne yaptım? Kendime reset attım ve baştan başladım.
Evet, gerçekten de baştan başladım. Ancak bu sefer aradığım soru “X nasıl yapılır” değildi. Soru, “X neden böyle yapıyor, nasıl buna erişiyor ve nasıl bir sonuç veriyor” soruları oldu. Bu yaklaşım beni HackingWithSwift, Sean Allen gibi kaynaklara itti. Bu insanlar basit eğitimleri verirken bile o kodun nasıl çalıştığını ve neden çalıştığını da anlatıyorlar. Bu da bana kodlamayı daha iyi anlamamı sağladı. En büyük sınavımı ekipçe SilahtARağa ile verdik ve Müze&Artırılmış Gerçeklik alanında Türkiye’de yaratılan ilk iOS uygulamayı geliştirdik. Bu noktadan sonra artık her yenilik çıktığında ilk işim, bunu arka kısımda SilahtARağa’ya eklemek oldu. Bu nedenle uygulama hem güncel, hem de bir easter egg gibi oldu.
Öğrenmekten Vazgeçmeyin

Pandemi dönemine girdiğimizde ilk yaptığım şeylerden biri ev sistemimi güncellemek oldu. Bunu izleyen ikinci adım ise satın aldığım yazılım kitapları oldu. Başta bu kitaplara zaman ayıramamış da olsam, daha sonra üzerine düşerek epey bilgi kattım. Programlama öğrenirken sık sık baştan başladığımı söyleyebilirim. Fakat her seferinde aradaki incelikleri daha hızlı öğrenerek yepyeni yetenekler geliştirdim. Kitap bitirdikçe, eğitimi sonlandırdıkça ve konu bazlı makaleleri okudukça bilgime daha çok bilgi kattım. Bunun sonucunda da her şeyi kuralına göre yapmaya, daha temiz kod yazmaya, güvenlik sorgulamaya ve düzenli olmaya başladım. Belki eskisi gibi yaptığım şey birkaç saatte bitmiyor, ancak yaptıktan sonra onun üzerinde düzeltmeye/anlamaya/hatırlamaya harcadığım zaman epey kısılmış durumda. Sürekli bilgi öğrenmek size o alanda git gide uzmanlaşmaya yarıyor. Bu, kendimi geliştirmemde en önemli adımlardan biri oldu.
Bu yazıda sizlere ilgilendiğiniz dilde nasıl gelişebileceğinizi kendi tecrübelerimden yola çıkarak anlattım. Bu kesinlikle kolay bir iş değil ve kolay iş size verimli bir sonuç da vermeyecek. Emek, öğrenme ve yenilikçi olmayı gerektiriyor. Ancak günün sonunda yaptığınız bir uygulamayı elinize alıp kullandığınızda ve başka insanlara yardımcı olabildiğinizde aldığınız keyif bu işi yapmanın en güzel yolu oluyor. Sorularınız olursa yorum kısmında belirtebilirsiniz. Hepinize sağlıklı ve keyifli bir gün dilerim.