Uzun bir aradan sonra Merhaba. İşler yoğun ilerlediği için biraz ara vermek zorunda kaldım ama Kotlin yazıları devam edecek onu da belirteyim. Hatta bir projeyi burada anlatarak sıfırdan Kotlin kullanarak yapmayı planlıyorum.
Öncelikle bu yazıyı yazmamdaki amaç "Yazılım dili böyle öğrenilir" şeklinde bir bilmişlik taslamak değil estağfurullah. Çevremde pek çok kişi yazılımla ilgileniyor. Ve pek çok insan, "Hiçbirşey bilmiyorum nasıl başlayabilirim, Java biliyorum nasıl ilerletebilirim, Swift öğrenmek istiyorum nereden başlayabilirim, Şu an başlayacak olsan hangi dili öğrenirdin... " şeklinde pek çok soru soruyor. Bu yazıyı bu sorulara genel bir cevap olarak yazıyorum. Öncelikle nereden başlayabilirsiniz ve ben nereden başladım gibi soruların cevabını, sonra kendim yeni bir dil öğrenirken nasıl bir yol izlediğimi anlatacağım. Bu benim yaratımım olmayan, dünyada pek çok insanın kullandığı ve bahsettiği bir yöntem. Bu yöntem Golden Key dir bununla her dili öğrenirsiniz diye birşey yok. Herkesin farklı bir yöntemi olabilir. Ben sadece dil öğrenirken kendimi rahat hissettiğim, bana iyi geldiğini düşündüğüm yöntemden bahsedeceğim.
Öncelikle front end ve back end kavramlarından kısaca bahsetmek lazım.
Tıpkı bir film gibi düşünebilirsiniz. Filmin oyuncuları frontend kısmında yer alırken filmi oluşturan asıl ekip backend kısmında yer alır. Mesela bir web sitesi yazacağımızı düşünelim. Bunun 3 adet önemli kolonu olacaktır. Tasarım, Front end, Back end. Tasarımın hazır olduğunu düşünürsek front end ile buton eklersiniz back end ile bu butona tıklandığında ne olacağını yönetirsiniz. Daha derine inersek, Html ile sayfaya bir Giriş Yap butonu eklersiniz, CSS ile butona renk, boyut... gibi özellikler eklersiniz, Javascript ile animasyon, etkileşim, tarayıcı kontrolü, asenkron bir şekilde sunucu ile iletişime geçilmesi ve web sayfası içeriğinin değiştirilmesi... gibi özellikler eklersiniz .NET ile butona tıklandığında neler olacağını belirlersiniz.
Eğer yazılım alanında hiçbir birikiminiz yoksa, ve bir ucundan başlamak istiyorsanız, kişisel tavsiyem Front end e başlamanızıdır.
Herşeyden önce HTML ve CSS çok basit dillerdir. Öğrenmeniz hatta ustalaşmanız için toplamda 1 ay vermeniz yeterli olacaktır. Ayrıca Visual Studio, Android Studio, XCode... gibi ağır bir IDE ye ihtiyaç da duymazlar, duymazsınız. Çalıştır butonuna basıp saniyelerce bazen dakikalarca beklemeniz gerekmez. Hızlı bir şekilde hem öğrenirsiniz hem ilerlersiniz. Mesela kendinize bir Blog sitesi yapmak ile başlayabilirsiniz. Anasayfa, Hakkımda gibi sayfaları tek satır Back end kodu bilmenize gerek kalmadan yapabilirsiniz.
Blog sitesi yazdım buyur güzel de oldu daha yeni başladık daha ne olsun iyi bu. Ama ben buna yazı eklemek istiyorum nasıl yapacağım şimdi bunu ben? E girişi çıkışı yok güvenliği yok nolacak bu böyle... Gibi düşünceler aklınızda dolaşmaya başladıysa meraklı, öğrenmeye açık, iyi bir developer olma yolunda ilerliyorsunuz. Tebrikler! HTML CSS ile hızlı sonuçlar aldınız, Yazılım çalışmanın keyfine vardınız yapabildiğiniz gördünüz ki merak oluştu. Ve şunu bilin ki bu yola girdiyseniz, daha çoğunu öğrenme isteği ömrünüzün sonuna kadar bitmeyecek. Artık back end öğrenmeye başlayabilirsiniz. Backend de çalışmalarınıza cevap almanız biraz daha gecikebilir. Bu tamamen seçtiğiniz dile (framework e), kapasitenize, ayırdığınız vakte... bağlı olarak değişir.
Ben yazılım dünyasında tam size tarif ettiğim şekilde ilerledim. Üniversite 1.sınıftan 2.sınıfa geçerkenki yaz aylarında girmiştim bu dünyaya. Öncelikle 1 ay HTML ve CSS öğrendim. Javascript e hiç girmedim, ucundan kıyısından JQuery çalıştım. JQuery'yi öğrendim bile diyemem sadece çalıştım ve bıraktım. HTML, CSS, JS üçlüsünü pek sevdiğim söylenemez. Sonrasında Üniversitede o dönem Java dersi alacağımızı duydum ve Java öğrendim. NetBeans indirdim ve Console da Java çalıştım. (Hala çok sevdiğim bir ide dir kendileri. Android Studio yazılmamış olsaydı kesinlikle Netbeans ile Android yazardım. Eclipse i bir türlü sevemedim.) Henüz JSF, Spring MVC, Struts... gibi Java Web framework lerinden haberim yoktu. Console da Java çalışmaya algoritma bilgimi ve yeteneklerimi geliştirmeye çalıştım. Bol bol alıştırma yaptım. Az sonra size de bol bol alıştırma sorusu çözmenizi tavsiye edeceğim. Sebebi ise gittikçe o dile aşinalık kazanmanız, o dilde kod yazarken hızlanmanız ve ellerinizin kod yazmaya alışması. O yaz HTML, CSS ve Java ile bayağı verimli geçmişti. Yıl içerisinde üniversitede 2 dönem aldığım Java dersi sayesinde Java ve algoritma bilgimi daha da geliştirmeye çalıştım. Object Oriented Programming, Exceptions, Generics, File Operations, Polymorphism, Inheritance gibi üst seviye konular öğrendim.
Üniversite 2.sınıftan 3.sınıfa geçtiğim yaz staj yaptım. Ve staj esnasında ASP.NET MVC 5 Framework'ünü öğrendim. Bu framework basitçe açıklamak gerekirse, HTML, CSS ve C# ile web siteleri yazmanıza yarıyor. HTML, CSS geçmişim güzel biliyorsunuz :) C# da Java'ya yakın, hatta pek çok otoriteye göre daha basit. Bu framework üzerine çalıştım ve şu an blogumu okuduğunuz site de bununla yazıldı.
Üniversite 4.sınıfta HTML, CSS cepte; ASP.NET MVC 5 bilgim de orta seviyeydi. Ancak Java seviyem de fena olmadığı için bitirme projem olarak bir Android uygulama geliştirdim. Wi-Fi modemlerini kullanarak bina içi navigasyon konulu bir Android uygulamaydı. Sözkonusu avmden izin almadığımız için hiç yayınlanmadı. Ancak özet olarak o gün bugündür Android Uygulama Geliştiricisiyim. Ayrıca mesleğimi de seviyorum. Birşeyler üretmek fikri gerçekten güzel.
Bir dil öğrenmem gerektiği zaman ben nasıl hareket ederim ?
HTML, CSS, Java, Asp.Net MVC 5, Android, Kotlin... tüm bu diller için benim uyguladığım ortak bir yöntem vardır ki genelde en fazla 1 ay içerisinde o dilde orta seviyede bir proje yapacak seviyeye gelirim. Diyelim ki Swift öğrenmek istiyorum. Önce kalitesi tescillenmiş bir Swift video serisi ve sağlam bir Swift kitabı bulurum.
Video serisini açarım ve bir IDE kurmam gerekiyorsa kurarım. (Swift için XCode gerekli) Ardından bilgisayarımın ekranını ikiye bölerim. Bir tarafta video açık ve diğer tarafta da XCode açık olur. Videoda yazılan kodu aynen kendim de yazarım. Bu hem XCode'un özelliklerini öğrenmek, hem Swift'e aşinalık kazanmak hem Swift'te kod yazmaya alışmaya başlamak için gereklidir. Bu yöntemi uygulayacaksanız mutlaka eğitim videosu eşliğinde orada yazılan kodu yazın. Gereken yerlerde videoyu durdurun. Bu tip video serileri bölüm bölümdür. 1.bölümde genelde ekrana veya konsola Hello world yazarsınız. Her bölümün sonunda videoyu durdururum, Swift kitabımı açarım ve o videoda bahsedilen bölümü(chapter) okurum. Kitaptaki bölüm sonu sorularını çözerim. Bu şekilde bir zincir oluşturur ve video+kod -> kitap, video+kod-> kitap zincirine devam ederim.
Bu zincirde eğer yapabilirseniz benim eklediğim ve çok sevdiğim şu değişikliği de yapın. Zorunlu değildir yapmasanız da olur. Bölüm sonu sorularını çözdükten sonra o bölüm sonu sorularından bir kaçını kendimce daha da zorlaştırarak çözmeye çalışırım. Örneğin kitapta yıldızlardan merdiven yapılması istendi ve doğru bir şekilde yaptınız. Bir sonraki hedefiniz bunu biraz daha zorlaştırarak tersten yapmak olsun. Mesela soldaki şekli yapmanız istendi ve yaptınız. Ellerinize sağlık. Şimdi de sağdakini yapın. Kolay gelsin :)
Şu unutulmamalıdır ki yöntemler insanlara bağlı olarak değişir. Mesela video izleyip not almak da bir dil öğrenme yöntemidir. Mesela video izlemeden sadece kitap edinerek de çalışılabilinir. Her ne kadar sıkıcı bulsam ve önermesem de video kitap olmadan döküman okunarak da dil öğrenilebilinir. Bunları sizin tek tek deneyip size en uygun yöntemi bulmanız ve sıradaki dillere onunla çalışmanız gerekmektedir.
Ben zamanında bu konuyu araştırırken aklıma şu soru gelmişti.
Bir dili öğrendim diyebilmek için o dilde neler yapabiliyor olabilmek gerekli ? Ne yapabiliyorsak dil öğrenmiş sayılıyoruz ? Bir sonraki yazının konusu da bu olsun.
Ellerim karıncalanmaya başladı ben kod yazmaya gidiyorum. Kendinize çok iyi bakın :)