* Yazılım konusunda kendimi geliştirmek istiyorum, nereden başlamalıyım?
* Bilgisayar mühendisliği 2. sınıf öğrencisiyim, mobil uygulama yapmak istiyorum, nereden başlamalıyım?
* Programlama öğrenmek istiyorum, nereden başlamalıyım
* Üniversiteye yeni başladım turizm okuyorum ama bilgisayarlara ilgim var, yazılım öğrenmek istiyorum nereden başlamalıyım?

Hayatımın belli dönemlerinde bunlar gibi soruları çok alıyorum. Açıkcası cevaplamakta da en zorlandığım sorular bunlar oluyor. Bu dönem de benzer sorulara yine çok denk geldim ve önce kendime dönüp bu soruyu kendime sordum. Nereden başladım?

Önce kendime cevap verebilirsem belki etrafımdaki insanlara daha iyi yardımcı olabilirim. Yazılımla nasıl tanıştım, nasıl haşır neşir oldum kısaca üzerinden buradan da bir geçim ki, yıllar sonra okur okur eskiyi de tekrar tekrar anarım hem dedim.

Ortaokul dönemimde rock/metal 🤘 müzik dinlemeye başladım. Grupları, albümleri takip etmek zordu. Yazılı basın zaten yok gibiydi. Fanzinler ve düzensiz yayınlar ile takip etmeye yaşımızın yettiği kadar çalışıyorduk. İnternet ile yeni yeni tanışmaya başlıyordum. mIRC, ICQ falan derken internet ortamında bir dergi/fanzin yapmak istedim. Günümüzün havalı tabiri ile sanırım dergicilik kavramının dijitalleşmesi…

O zamanlar web sitesi yapmak için, Geocities herkesin ilk bulaştığı platformdu. Bazı sağladığı kolaylıklar ile statik HTML içerikler yaratmak ve düzenlemek oldukça kolaydı. HTML ve CSS ile tanışmam da bu vesile ile başlamış oldu. Albüm yorumları, grup tanıtımları, röportajlar falan derken içerik büyümeye başlamıştı. Album1.html, Album2.html, Roportaj1.html, Grup1.html…. falan filan. İçeriklerin artması, ergen tripleri ile sürekli görsellerin değişmesi, yeni düzenlemeler falan derken statik içerikleri kontrol etmek zorlaştı. Basit bir değişiklik için onlarca *.html dosyasında aynı değişikliği yapmak…Poffff.

Dinamik hale getirmek lazımdı ki, içerikleri yönetmek daha kolay olsun. ASP ve MS Access gibi şu an tarihin tozlu raflarında duran teknolojiler ile tanıştım. Kitaplar alıp, direkt oradaki kod örneklerini yazıp denemeler ile hızlıca bir şeyler çıkarmaya başladım. Açıkcası sadece resimlerine bakıp, dergi okumama yaklaşımı vardır ya; onun gibi. Sadece kodları yazıp, onları değiştirip, deneyerek istediğim şeyleri oluşturuyordum. Kodda if(true) ise, ben if(false) yapıp deniyordum. Hatalar yapıyordum, hata yapmaya çalışıyordum ki, neden öyle olmaması gerektiğini öğrenim. Ummadığım sonuçlar ya da hatalar olduğu zaman kitaplardaki açıklamaları okuyordum. Ziyaretçi defteri, hava durumu, ziyaretçi sayısı, download dosyaları vs… o dönemlerin alengirli parçaları ile biraz daha interaktif hale getiriyordum. Amacım sevdiğim müziği paylaşıp, benim gibi musiki insanlarına katkı sağlamaktı. Ama aslında kodlar ve yazılım müzik eşliğinde kanıma giriyormuş da haberim yokmuş.

Web sitem kendi kitlesi için, o dönemler için az biraz popüler olmuştu. IRC ortamlarında muhabbetler, yurt dışı albüm şirketlerinden gelen promo albümler, dergiler ile iletişim, konserlerde gruplar ile tanışıp muhabbetler, gelen güzel mesajlar… Bütün bunların arkasında çok farkında olmadan öğrenmeye başladığım yazılım teknolojileri vardı aslında. ASP ile başlayan PHP ile evrilen, MySQL ile çeşitlenen, HTML, CSS ve javascript ile süslenen bir alet çantam olmuştu. “Yazılım olayını öğrenmeyi” çok sevmeye başlamıştım. if…else… bir tutku haline gelmişti.

Bir şekilde üniversite de bilgisayar mühendisliği bölümüne girdim. Az biraz kodların nasıl çalıştığını ve yazılım dünyasını anlamaya başladığım için, sadece resimlerine(kodlara) baktığım kitapların yazılarını da daha dikkatle okumaya. Tekrar, tekrar… Sürekli bir şeylere dokunarak, deneyerek, kurcalayarak öğrenme alışkanlığımı korudum, ilerlettim. Bir tutkumu paylaşmak için giriştiğim yazılım, zamanla yeni bir tutkum olmuştu. Ama tabi üniversite, hayatın gerçekleri falan derken, kanıma yazılımın girmesine ön ayak olan internet dergisi olayım yalan oldu. Önceliklerimin değişmesi ile internette kayboldu, zamanla da yok oldu. Şittttt.😞😞

Neyse, çok uzattım… “Nereden başlamalıyım?” sorusuna dönelim. Açıkcası bilmiyorum. “Ulan buraya kadar okudum, şimdi de bilmiyorum mu diyorsun. Püüüüü senin kafana…” 😠

Teknik olarak bu sorunun çok fazla cevabı var. Kişinin teknik özelliklerine göre de cevabı değişen bir soru. Sıfır yazılım bilgisine sahip birinin gideceği yol ile az biraz bilen kişinin gideceği yollar çok farklı olacaktır doğal olarak. Kesin bir cevaptan çok gidilecek bu yolu çizebilmek daha önemli. Sanırım bu sorunun en yakın cevabını verebilmek için, başka bir soru sormak da gerekli. “Neden?”

Amaç; “Neden yazılım öğrenmek istiyorum?”

Yazılıma başlamak ya da başka bir kulvarına girmek için ilk yapılacak şey, “Neden” sorusuna cevap verebilmek diye düşünüyorum. Basit ve saçma gelebilir ama gerçekten de böyle. Sonuç olarak yazılım bir araç, belli ihtiyaçları ya da problemleri çözümlemek için kullanılan bir araç. Eğer ihtiyaç ya da probleminiz yoksa bu aracı kullanmanın önceliği ya da gerekliliği çok da yok sanki. Dolayısıyla öğrenmek ihtiyacı içgüdüsel olarak olmadığı için öğrenme süreci sancılı olacaktır.

Eğer belli hobilerimiz ya da tutku ile uğraştığımız konular varsa, onlarla alakalı ihtiyaçları gidermek ve problemleri çözmek, “Neden” sorusuna daha kolay bir cevap olabilir belki. Benim müzik tutkumu paylaşmak istemem gibi…

Bu bağlamda yapmak istediğiniz şeyi ortaya çıkartıp, onun motivasyonu ile yeni bir şeyler öğrenmek iyi bir şekilde etkili olabilir. Ya da zoraki bir durumunuz varsa, zaten cevap daha net bir şekilde ortaya çıkacaktır.

“Alışverişi çok seviyorum, XYZ markasının abc ürünü gelirse haber almak istiyorum hatta hemen sepete eklensin”
“Twitter’da XYZ takımı ile ilgili tüm söylenenleri arşivlemek istiyorum”
“Spotify’ın önerdiği müzikler çok kötü, albüm kapaklarından insanların sevebileceği grupları önermek istiyorum”
“Balık tutmak çok büyük ilgi alanım, bildiğim konuları paylaşmak istiyorum”
“Apartman yöneticisiyim, aidatlar belli olunca tüm daire sakinlerine otomatik SMS atmak istiyorum, kağıt israfı olsun istemiyorum”

Çok saçma örnekler belki ama belli bir sonuça ulaştıracağı için, “Neden” sorusuna bu tarz cevaplar öğrenme yolunu daha iyi çizeceklerdir diye düşünüyorum. Artık günümüzde teknoloji çok ileri bir düzeyde. Eskiden baya uğraşı gerektiren konular şimdi çok kolay bir şekilde çözümlenebiliyor. Bu yukarıdaki örnekler çok kod yazmadan belli sistemler ile çözülebilmekte bile belki. Ama yine de, yılmadan bunlar nasıl yapılabilir, nasıl geliştirilebilir denemek bazı şeyleri öğrenmek için gerçek anlamda değerli.

Sabırla ve elleri kirleterek…

İnternet, bazı konuları deneyimlemek ve öğrenmek için çok geniş bir arşiv. artık. Çözüm sağlayan araçlar olduğu gibi, bu araçların nasıl çalıştığını gösteren bilgilerde internette mevcut. Büyük bir sabırla bu bilgilere ve araçlara dokunmak onları öğrenmenin en etkili yolu. Son 3-4 yılın bu bağlamda en büyük kütüphanesi GitHub diye düşünüyorum. Milyonlarca kitaba ev sahipliği yapıyor. Bilgisayarların okuyup anladığı kitaplar belki ama bizim gibi başka insanların yazdığına göre bizim de okumamamız için bir engel yok. Sabırla oradaki kodları anlatımlı çeşitli kitaplar ile paralel şekilde okumak kodlama öğrenmenin en etkili yolu diye düşünüyorum. Sabırla GitHub’daki kodları çalıştırmak, çalışan kodları değiştirerek, değişikliğin nasıl çalıştığı görmek, öğrenmek için en etkili yöntem günümüzde.

Bu aşamada önemli bir nokta da, araştırmak. Araştırma yapabilmek de, milyarlarca içeriğin olduğu bu sanal dünyada önemli bir yetkinlik olarak artık karşımıza çıkıyor. Arama motorları içeriğe ulaşma konusundaki tek araç olduğu için sonuna kadar onları kullanmazsak bizim ayıbımız olur sanırım.

Neyse, bu kadar saçmalamak yeter. Dilim döndüğünce içimi boşaltmak, düşüncelerimi paylaşmak istedim. Özetle, bir şeyleri öğrenmeye başlamak istiyorsak; önce neden sorusuyla amacımızı ortaya koymak ve sonrasında ellerimizi kirleterek sabırla ilerlemek en doğru yol diye düşünüyorum. Öğrenmek de çok güzel bir duygu olunca, bu yollarda gitmek çok güzel oluyor.