Udemy Eğitimlerim Üzerine

Sevgili arkadaşlar,

Sıklıkla sizlerden, “eğitimlerin hangi sırayla takip edilmesi gerektiğini” ile ilgili sorular alıyorum. Bu sorunun daha genel ama Java’ya özel “Java’ya nasıl başlar ve ilerlerim” şeklinin cevabı “Java ile Nesne-Merkezli Programlamaya Giriş” eğitiminin “Java’ya Giriş” isimli 2. bölümündeki “Java’yı Öğrenmek” başlığı altında var ve bu bölümün tamamı herkese açık. Aslında bu konu ile ilgili olarak burada daha önce bir kaç yazı yayınladım. Bu yazılara buradan ulaşabilirsiniz. Fakat bu yazıların içeriğinin geneli hale geçerli olmakla birlikte detayda bazı kısımları aradan geçen zamana bağlı olarak, gelişen teknolojiler ve değişen eğilimlerden dolayı bir miktar, geçersiz demeyeyim ama alternatifli hale gelmiş olabilir. Örneğin web arayüzlerinin backend yerine JavaScript tabanlı tarayıcı istemcilerine kayması dolayısıyla Spring MVC ya da JSF yerine RESTful web servislerinin daha öne çıkması ya da ülkemizde Java EE yerine ezici çoğunlukla Spring’in tercih edilmesi gibi. Ama öte yandan dünyada hala Spring MVC, JSF ya da EJB kullanan tonla proje var.

Udemy’deki eğitimlerim noktasında ve daha güncel şekilde yine de bu sorunun cevabını kısaca burada açıklayayım:

Java’yı bilmiyor ve öğrenmek istiyorsanız ya da iyi-kötü bir şekilde biliyor, mesela işinizde kullanıyor ama teorisi ve pratiğiyle, nedeni ve nasılıyla, kitabi bir şekilde öğrenmek istiyorsanız kesinlikle Java ile Nesne-Merkezli Programlamaya Giriş ile başlamalısınız. Peki bilmenin kriteri nedir? Java’daki en temel konuları, hatta bir cümlede ifade edilen kuralları, örneğin “Tam sayı tiplerde varsayılan tip int’dir.” kuralını, nedeni ve nasılıyla birlikte bir lise öğrencisine anlatabilecek haldeyseniz o konuyu biliyorsunuzdur; aksi takdirde bilmiyorsunuzdur ve Java ile Nesne-Merkezli Programlamaya Giriş ile başlamalısınız. Dolayısıyla eğitimlerin içeriklerine bakıp, örnek içerikleri izleyip yukarıdaki kritere göre o eğitimi alıp almamaya karar verebilirsiniz.

Üniversite öğrencisiyseniz kesinlikle bu eğitim ile başlamalısınız. Bildiğinizi düşündüğünüz yerleri bile atlamadan çalışmalısınız. Çünkü bir programlama dilini iyi bir şekilde öğrenmek ülkemizde üniversitede başarılabilecek bir şey değil. Nitekim işinde bir kaç senedir Java kullandığını söyleyen pek çok arkadaşımız, bu eğitimde bilmediği ya da iyi anlamadığı pek çok şeyi öğrendiğini yorumlarda ifade ediyor.

Sonrasında Java ile Nesne-Merkezli ve Fonksiyonel Programlama ile devam ederek hem object-oriented programming yani OOP hem de functional programming yani FP kısımları yanında torbalar ya da sıra dışı durum yönetimi (collections, exception management) vs. konuları halletmelisiniz. Bu eğitimi bitirince Java SE’de iyi bir yere gelmişsiniz demektir. Java SE’nin JDBC ile veri tabanı iletişimi, threading, I/O vb. daha ileri konularını ya kendiniz artık rahatlıkla öğrenirsiniz ya da planladığım, henüz açılmamış olan “İleri Java” eğitimine devam edersiniz. Örneğin masaüstü uygulamalar için Java’da olan AWT, Swing ve daha modern bir yapı olarak JavaFX’i kendiniz daha rahat öğrenebilir neyi nerede bulacağınıza kendiniz karar verebilirsiniz.

Bundan sonra kurumsal projelerin olmazsa olmazı olan web teknolojilerine geçmeniz doğru olur. Modern zamanlarda web teknolojileri deyince akla gelen web servislerinin en sık kullanılan şekli olan RESTful web servislerini öğrenmeniz gerekir. Sonrasında da devam edilebilecek bir başka konu ise Spring frameworküdür. RESTful da olsa Spring de olsa her halükarda Java’nın 8 sürümü seviyesinde Java ile Nesne-Merkezli ve Fonksiyonel Programlama içeriğine hakim olmalısınız. Ben bu iki eğitimin tanıtım sayfasında da ilk derslerinde de ön şart anlamında Java ile Nesne-Merkezli ve Fonksiyonel Programlama ön şartını zikrediyorum. Planım Spring ve RESTful ile ilgili ileri konuları ele alan yeni eğitimleri de eklemek. Dolayısıyla şu anda var olan RESTful ve Spring eğitimlerinden sonra daha ileri olanlarına geçebilirsiniz.

Clean Code ve Design Patterns eğitimleri sadece Java developerlarına değil, Pyhon, C++, C#, vb. herhangi bir dilde, tecrübesi olan ve OOP ve iyi, kaliteli kod yazma yetkinliklerini artırmak isteyen herkese hitap ediyor. Bu iki eğitimden Clean Code daha giriş seviyesinde olup iyi bir OOP altyapısına sahip, örneğin Java ile Nesne-Merkezli ve Fonksiyonel Programlama‘da OOP ile ilgili kısımları özümsemiş kişiler alabilir. Design Patterns ise daha soyut ve karmaşıktır ve iyi anlamak için sadece iyi bir OOP altyapısına değil ama aynı zamanda ciddi bir iş tecrübesine ihtiyaç duyar, çünkü problemi anlamadan herhangi bir design pattern öğrenilemez. Dolayısıyla örneğin öğrenci arkadaşlarımızın, iş hayatına yeni başlamış developerların, Design Patterns yerine Clean Code‘a öncelik vermeleri yerinde olur.

Tabi burada ele aldığım senaryolar dışında pek çok farklı durum olabilir. Örneğin C++, C# ya da Python ile geliştirme yapan bir developer Java eğitimlerini alarak kendi geliştirme yaptığı dildeki OOP ve FP kısımlarını çok daha iyi anlar hale gelecektir. Bunu türden örnekleri, gerek yüz yüze gerek ise online eğitimlerde gördüm, Udemy’deki eğitimlerde bu yönde yorumlar da var. Örneğin benim Spring eğitimlerimi alan bir .NET uzmanı arkadaşımız var ve alternatif olarak neler geliştiriliyor, öğrenmek istiyorum diye aramızda bulunuyordu. Ya da Kotlin, Scala, Groovy gibi JVM dillerini öğrenmek isteyenler önce Java öğrenerek işe başlayabilirler çünkü bu diller Java ile beraber çok organik bir şekilde kullanabilir. Ya da bir başka arkadaşımız Android mobil dünyaya geçmek için Java eğitimlerini hatta sonrasındaki Clean Code ve Design Patterns eğitimlerini alabilir. Bir başkası Spring’e hiç girmeden saf Java EE içinde ilerleyebilir, RESTful’dan sonra belki eğitimlerini ileride paylaşabileceğim JPA, EJB vb. teknolojilere devam edebilir. (Ülkemizde Spring kullanımı ezici derecede yaygındır ama yurt dışında saf Java EE kullanımını da ciddi seviyelerdedir.)

Böyle pek çok çapraz ilerlemeler, hedeflerinize bağlı farklılıklar içeren öğrenme yolculukları olabilir. Ama aslolan temelleri iyi atmak, detayı öğrenirken nasıllığa takılıp kalmayıp, nedenliği de anlamak ve böylece yavaş yavaş büyük resmi de görmeye başlamaktır. Bu şekilde “ne iş olsa yaparım” paradigmasını kırıp, daha odaklı, hedefli, özelleşmiş yetkinliklere sahip developerlar olabilirsiniz.

Toplam görüntülenme sayısı: 5420