Django Öğrenmek-1: Django öğrenmek neden zor?

Django Unchained (2012)

Bu seride, Django öğrenirken kendi yaşadığım zorlukları ve internette okuduklarımı referans alarak Django öğrenmeye yeni başlayanlara destek olmaya çalışacağım.

Mesleki kimliğimi ön planda tutarak var olmayı tercih ettiğim Linkedin, Medium, Stack Overflow gibi sitelerde her zaman İngilizce yazıp çizmeyi tercih etmişimdir. Bunun en büyük nedeni, İngilizce deneyimimi arttırabileceğim her fırsatı değerlendirmek istememdir ve bunu herkese tavsiye ederim. Fakat, Django hakkında Türkçe kaynağın görece az olduğunu görmem ve verebileceğim katkı/emek oranının en yüksek olduğu dilin Türkçe olduğunu düşünmem sebebiyle bu yazı serisini Türkçe olarak yayınlamayı tercih ediyorum. Ek olarak, terminolojiyi anlaşılması daha zor bir hale getirmemek adına, bolca İngilizce terim kullacağımı de belirtmem gerekiyor.

Yanlışlarımı düzeltirken ve eksiklerimi tamamlarken lütfen çekinmeyin.

Seriye ait tüm yazılara ulaşmak için:
Django Öğrenmek-1: Django öğrenmek neden zor?
Django Öğrenmek-2: Temel yapı taşları, URL, Template, Django App
Django Öğrenmek-3: Django Kurulumu, izole geliştirme ortamı “virtualenv”, Örnek Proje “Hello World”
Django Öğrenmek-4: Farklı Çalışma Ortamları İçin Farklı “settings.py” Kullanmak

Django öğrenmek neden zor?

1- Nereden başlayacağınızı bilmiyor olmanız: Bu soruna sunulacak çözümler kişisel yorumlar içerebilir. Bunun yanında problem, ilgili kesim tarafından denenmiş ve yaygın kullanılan kaynaklar takip edilerek çözülebilir. Örneğin Youtube videoları izleyebilir, Udemy’den (https://udemy.com) ücretsiz ve yüksek puanlı bir kurs alarak başlayabilir ya da kendi öğrenme becerilerinize uygun olarak kendi çizdiğiniz bir yol haritası izleyebilirsiniz (basit bir blog projesine başlamak ve sorunlarla karşılaştıkça Google yardımıyla öğrenerek ilerlemek gibi).

Şahsen başlangıç noktası olarak Udemy’i diğer yöntemlere tercih ediyorum. Maddi kaygı içerdiği için Youtube videolarından daha derli toplu olduğunu düşünüyorum. Ayrıca ders tercihi aşamasında kullanıcıların yorumlarından ve puanlamalarından destek almak Youtube yorumlarına kıyasla daha sağlıklı geliyor.

2- Django’nun, ihtiyacınız olan iş için gereğinden daha karmaşık olması: Örneğin elektronik bir donanım aracılığıyla sensör verisi topluyorsunuz ve bu veriyi basitçe uzak bir veritabanında biriktirmek istiyorsunuz. Bu durumda web development sırasında adı geçen onlarca yeni konsepti öğrenmenin size yük olması ve sizi yavaşlatması çok doğal! Bu proje benzeri bir ihtiyaç içerisindeyseniz herhangi bir web framework’ü kullanmanıza bile gerek olmayabilir. Belki de probleminiz, socket üzerinden server’ınızda çalışan basit bir uygulamaya ilettiğiniz datanın bir sql query’si aracılığıyla database’e yazılması kadar basit çözülebilir.

3- Sıfır noktasından başlayarak tamamlanmış bir web projesi geliştirme deneyiminizin olmaması: Daha önce üzerinde çalıştığınız projelerin en başından itibaren projede yer almadıysanız, deneyimlemediğiniz ya da öğrenme ihtiyacı duymadığınız birçok konsept ile karşılaşırsınız. Çok iyi Object Oriented biliyor olabilirsiniz; SOLID-KISS-DRY-… geliştirme bakış açılarına çok hakim olabilirsiniz. Fakat, özellikle web development üzerinde yeterince çalışmadıysanız web servisleri, URL mapping, html template’ler, database modelleme, REST, AJAX, SOAP, Authentication/Authorization, web security, session, SSL, Cache, Cookie, Token,…. ve sayılabilecek onlarca konsept hakkında bilgi ve deneyim sahibi olmayabilirsiniz. Django öğrenmeye başladığınızda üzerinize yağan yeni bilgi yağmuru sizi bu nedenle zorluyor olabilir. Bu durumda yukarıdaki 1. maddeye yakın sayılırız ve çözüm olarak yine aynı maddede belirttiğimiz yoldan ilerlemeyi deneyebiliriz.

4- Django’nun dökümantasyonun çok kötü olması: Aslına bakarsanız Django çok iyi dökümante edilmiş (https://docs.djangoproject.com/en/2.1/) bir framework. Dökümantasyonun kötü olduğunu düşünmenizin bir sebebi, bu büyüklükte bir web framework’ünün sırayla okuyup öğrenilebilecek bir yapısının olmayışı olabilir. Django “Batteries Included” olarak bahsedilen bir framework’tür. Bunun anlamı, yukarıda saydığım “web servisleri, URL mapping, html template’ler, database modelleme, REST, AJAX, SOAP, Authentication/Authorization, web security, session, SSL, Cache, Cookie, Token,….” terimlerin çoğunun Django içerisinde hazır kütüphane ve Django Application’ları ile kullanıma sunulmuş olmasıdır. Herhangi bir projede bu terimlerin her birine ve belirli bir sırayla ihtiyaç duymayacağınızı düşünürsek, bu dökümantasyonu, sıraya konulmuş bir içerik listesi üzerinden öğrenip “bitirmek” pek mümkün görünmüyor. Daha verimli yöntem, genel kullanıma aşina olduktan sonra kendi projenizde ihtiyaç duyduğunuz konseptleri belirleyip özellikle o kısımları öğrenmeye odaklanmanız olabilir.

Serinin kalanına daha teknik devam edeceğiz ve sıradaki paylaşım ile birlikte Django öğrenmeye başlayacağız.

Serinin, yorumlarınızdan yardım alarak gelişeceğini belirtmek istiyorum. Bu bağlamda yukarıda bahsedilen sorunları yaşadığınızı düşünüyorsanız ya da bu sorunlar dışında yaygın olarak karşılaşılan farklı sorunlar olduğunu görüyorsanız lütfen yorum bırakarak bana ve diğer kullanıcılara tavsiye ve görüşlerinizi sunmaktan çekinmeyin.

Takip etmeyi, beğenerek ve paylaşarak destek olmayı unutmayın! :)

Software Engineer, Growth & Gamification Enthusiast

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store