Web Uygulaması Geliştirme: Nereden Başlamalıyım?

Günümüzde yazılım geliştirme web ortamına doğru bir yönelim göstermektedir. Gelecek en az 10 yılında bu ortam üzerine olacağı düşüncesindeyim. Peki bu ortama yazılım geliştirmek istediğimizde hangi dil veya dilleri öğrenmeliyiz? 

Yazılım geliştiricileri geçmişte bir dilde ve veritabanı konusunda uzmanlaştıklarında çok kolay şekilde uygulama geliştirebiliyorlardı. Ancak günümüzde web uygulamaları için bir dil ve veritabanı konusunu bilmek ne yazık ki yeterli olmamaktadır. Yazılım geliştirici birçok  biçimleme diline ve programlama diline hakim olmak zorundadır. Peki tek bir programlama dili öğrenip web uygulaması geliştirebilir miyim?

Microsoft firması .Net’i ilk çıkardığı yıllarda ASP.Net Web Forms ortamını tanıttığında web ortamını bilmeyen birinin bile kod yazabileceği bir ortam kazandırmıştı. Sürükle-bırak yaparak ve olaylar için metotlar yazarak bu ortamda hızlıca kod geliştirme imkanına kavuştunuz. HTML bile bilmenize gerek olmadan web için uygulama geliştirebiliyordunuz. Ancak sunucu tarafında yükün arttığı gören Microsoft dahi bu fikirden vazgeçti ve MVC ortamında bu kolaylıkların hepsi kayboldu. MVC ortamında dahi artık birden fazla dil bilmek zorundasınız. Bu durum diğer programlama dillerindeki web geliştiricileri içinde günümüzde geçerlidir. Peki hangi dilleri öğrenmeliyiz?

Web Tasarımı ve Programlama dersinin içeriğini hazırlarken ders içeriği istemci ve sunucu tarafı olarak iki konuya bölmeye karar verdim. Özellikle derslerimde önerdiğim http://www.w3schools.com/ adresi üzerinden ders notlarımı hazırladım. İstemci tarafı W3C standartlarından ve sunucu tarafında PHP, ASP.NET Web Forms ve ASP.Net MVC gibi programlama dillerini / ortamlarından bahsediyorum.  Peki istemci ve sunucu tarafında hangi dilleri öğrenmeliyiz?

İstemci tarafında HTML ve CSS gibi işaretleme dilleri öncelikle bilinmelidir. Bir site tasarımı için CSS dosyalarını sıfırdan yazmak zahmetli bir süreçtir. Bu durumda BootStrap ve benzeri çözümleri düşünülmelidir. Bu çözümler özellikle duyarlı web tasarımı yapmamıza olanak sağlar. Başka bir deyişle, web uygulamamız farklı cihazlarda farklı bir şekilde görüntülenmesine olanak sağlar. Ayrıca XML ve JSON gibi veri değişi formatları öğrenilmelidir. Özellikle AJAX (:) bu şart bilinmeli) ile birlikte bu veri değişim formatlarının önemi artmıştır. Aslında istemci tarafında daha birçok konu vardır. Örneğin ben JPG ve GIF gibi resimler yerine kod ile resim çizmek isterim diyorsanız SVG ve Canvas gibi konuları da öğrenmenizi tavsiye ederim. HTML, CSS, XML, JSON ve SVG işaretleme dilleridir. Web istemci ortamının programlama dili Javascript’tir. Sayfanıza dinamiklik kazandırmak için Javascript olmazsa olmaz bir dildir. Özellikle AJAX işlemini ile birlikte sayfayı tazelemeden (yeni bir HTTP isteği yapmadan) sayfanızı sunucu üzerinden güncelleyebildiğiniz için Javascript önemi bir kat daha artmıştır. Çok Javascript kodu yazdığınızı düşündüğünüzde JQuery öğrenmenizde kesinlikle tavsiye ederim. JQuery her ne kadar bir JavaScript kütüphanesi olsa da kod söz dizimi dahi farklıdır. Bu açıdan yeni bir programlama dilidir. Javascript’e göre en büyük artısı (sloganı: Write Less Do More) daha az kod yazıp daha çok iş yapabileceğiniz bir yapı sunar. Ayrıca, Javascript kütüphanesi olarak birçok çözüm üretilmiştir. Örneğin, tek sayfa uygulamaları için AngularJS gibi framework’leri de öğrenmekte yarar vardır.  Bu işe yeni başladıysanız yakınmaya başladığınızı ve hatta ben web geliştirici olmaktan vazgeçtim dediğinizi duyar gibiyim. Ancak, konunun mantığını çözdüğünüzde bu konuları çok hızlı çözebilirsiniz. Öncelikle etiket, ID, CLASS ve özellik gibi kavramları çözüp, biraz kodlama mantığını anlayın gerisi çorap söküğü gibi gelir.

Bir web uygulaması geliştiricisine sunucu tarafında hangi programlama dilini öğrenmeniz gerektiğini sorsanız büyük ihtimalle “benim dilim” diyecektir. Çoğu geliştiricide birçok standart özelliğin sadece kendi dilinde olduğu düşünür. Benim bu konuya bakış açım farklı tüm diller iyidir:) Perl, PHP, Python, Ruby, Node, Scala, Java, Go, ASP.NET (Web Forms ve MVC) ve ColdFusion… Korkmayalım, istemci tarafı gibi bunların hepsini öğrenmemize gerek yok. Bir tanesi seçin ve seçtiğiniz dil için framework’leri araştırın. Framework nereden çıktı diyeceksiniz:) Örneğin Ruby yerine Ruby On Rails web programlama framework’ünü öğrenmenizde yarar vardır. ASP.Net Web Forms yerine kesinlikle ASP.Net MVC öğrenmenizi öneririm. Node.js günümüzün popüler web programla dillerinden biri oldu. PHP belki de bu işin temeli, en baştan beri var. Hatta PHP tabanlı birçok framework çıktı. Kısacası, bu dillerin hepsi birbirinden güzel 🙂

Sunucu tarafında öğrenirken web programlama mantığını çözerek anlamaya çalışın.  Aşağıdaki temel konular tüm web programlama dilleri için standart, aslında ana mantıkları hepsinin aynı diyebilirim.

  • Programlama diline ait değişkenler, döngüler, şartlar, fonksiyonlar ve HTML doküman içine çıktı üretme
  • Form işlemleri (POST, GET, ACTION)
  • Form Doğrulama (Validation): Hem istemci tarafında doğrulama hem de sunucu tarafında doğrulamayı öneririm. Örneğin FORM içinde bir INPUT text değeri say mı kontrolü olsun. Javascript ile bu kontrol yapılabilir ve istemci tarafında olduğu için network ve sunucu yükünü hafifletmiş olursunuz. Ancak, bir hacker basitçe Javascript kodunu aşar ve sunucu bu text değerini sayı formatında göndermeyebilir. İşte bu noktada sunucu tarafında da bir kontrol yazmanızda güvenlik açısından yarar vardır. Güvenlik demişken veritabanı işlemlerinde SQL Injection ve XSS gibi saldırı tekniklerinden kurtulma tekniklerine bakın. Her dilin kendine ait özellikleri vardır. Konu konuyu açıyor, burada kapatıyorum 🙂
  • Oturum yönetimi: Cookie ve Session
  • Veritabanı işlemleri: (Kullandığınız framework’ün ORM’i olabilir, bir bakmak lazım)
  • XML veya JSON sonuç hazırlama (AJAX işleminde tercih edilir)
Bu arada bu konuları yazarken istemci tarafını bildiğinizi varsaydım:) Unutmadan web uygulamanızda XML ve JSON üreten bazı fonksiyonları Android, IOS veya Windows ortamları içinde kullanabileceğinizi unutmayın. Web ortamı her ne kadar zor gibi gözükse de mantığını çözüp bir de uygulamalarınız ortaya çıkmaya başladığında kolay kolay bırakamazsınız.
Bol kodlu günler…