Neden Ciddi Yazılım Üretemiyoruz?

29 Şub

Aslında sorunun “Neden üretemiyoruz?” olması gerekirdi ama, kendimi fazla alan dışına çıkarmak istemediğimden iğneyi kendimize batıralım dedim. Evet “Neden ciddi yazılımlar üretemiyoruz?” sorusunu sormaya başladım. Yazılım sektörünün liderlerinin görüşlerini, kitaplarını okudukça ve yazılıma bakış açılarını gördükçe, yavaş yavaş sorumun cevabına yaklaşmaya başladım.

Öncelikle yazılıma ne olarak bakıyoruz, buradan sorgulamaya başlayabiliriz. Piyasada milyonlarca yazılım var. Bu yazılımlara ulaşmak için ne yapıyoruz? Hemen gidip pasajlardan “CD var oyun var, program var..” diye bağıran emek hırsızlarının ekmeğine yağ sürüyoruz. Aylar, yıllar süren çalışmaların karşılığını korsanlardan üç beş kuruşa satın alıyoruz. Bu ortamı gören kimse yazılım üretmek ister mi? Tabiki istemez. İsteyenler de kalitesizse, alın size kalitesiz yazılım üretimi için bir sebep.

Bir diğer soru, yeterince çalışkan yetiştirildik mi? Üşenmeden sıkılmadan bir işin sonucunu bekleyebiliyor muyuz? Olayın bu yönüne farklı bir alandan bakmak istiyorum aslında. Senelerimizi yiyen bitiren şu test sınav mantığı yokmu? Ham bilgi peşinde değilde, dersanelerde kısa yol kısa çözüm peşinde geçen gençliğimiz yok mu? İşte bu mantık; basma kalıp bilgilerle beynimizi doldurdu, bilgiye ulaşmamızı engelledi, bilmemiz gerekenleri hep pas geçerek seçiciliğimizi törpüledi, bizi kısa yol peşinde koşan tembeller haline getirdi. Maalesef yazılımı da aynı mantıkla öğreniyoruz. Forumlara bir göz atmanız bunu açık açık görmenize yardımcı olacak. “Şu ödevim için örnek kod var mı?”, “Bitirme çalışması için örnek konu var mı?” şeklinde açılmış konuları ve aklıma gelmeyen hazır kod isteklerini forumlarda bolca göreceksiniz. Böyle yetişen yazılımcıların ürettiği yazılımdaki ciddiyeti tahmin edebilirsiniz. O da olmadı dönüyoruz kursların peşinde. Hadi bana yazılım öğret diye. Yazılımcı kendi kendini yetiştiremiyorsa onu kimse yazılımcı yapamaz.

Takım çalışmasında başarılı mıyız? Yönetilmiş olmadan yönetmeye çalışan bireyler, takım çalışmasında başarısız olurlar. Sebebi ise bulunduğu konumu benimseyememiş olması ve gözünü yükseklere(maaşlara) dikmiş olmasıdır. Bu yüzden, kişi bulunduğu konumu kendi konumu olarak görmez ve hep yükseklere gözünü diker. Bu yüzdende yaptığı işe konsantre olamaz. Kafa hep başka yerlerdedir. Bu tarz insanlar takım arkadaşlarından bilgi saklar, aklınca arkadaşlarının kendi seviyesine çıkmasını engellemeye çalır, takım liderlerinden aldığı bilgileri takım arkadaşlarına tam iletmezler ve stres yüklü insanlar haline gelirler. Bir çıkış noktası yakalayıp yükselme peşindedirler. Bu şekildeki yazılımcıların iş kalitesini bir düşünün. Yazılım ekibi kesinlikle paylaşımcı olamlı ve o anda yaptığı işe odaklanmalıdır. Paylaşımcı olmayan takımlar başarısız olur.

Sistematik çalışma prensibine sahip miyiz? Yapılan yazılımlar da kişilere bağlı değil sistemlere bağlı olmalıdır. Kişiler herzaman değişkendir ancak sistemler sabittir. Modüler yapıda ve branşlaşmış çalışma ekipleriyle üretilen işler herzaman kaliteli olmuştur. Kariyer sitelerinde ilk defa iş ilanlarına baktığımda “vay be, insanlar ne kadar çok şek biliyormuş” diyordum hep. Sonraları komedinin farkına varmıştım. Bir yazılımcıdan istenen özellikler; Veritabanı yönetimi, programlama bilgisi, web bilgisi, tasarım bilgisi, sistem bilgisi v.s. Aklına geleni yazmış adamlar. En ilgi çekeni de esnek çalışma koşullarına ayak uydurmak. Artık gece onikide mi biret mesai bilinmez. Unutulmamalıdır ki her fazla mesainin altında bir plansızlık yatar. Her neyse, bunların hepsini yapacak bir kişi daldan dala atlamaktan ve google araması yapmaktan işini yapamaz. Çünkü kişi her konuda tecrübeli olamayacağına göre birsürü sorunla karşılaşacak. Böyle bir proje ne kadar başarılı olabilir ki?

Benimsenmiş yazılım prensiplerini uyguluyor musunuz? Bunların başında gelen çevik  süreçlerdir. Devamında ise temiz kodlama, teste dayalı programlama  gibi teknikler gelmektedir. Bu yöntemler sayesinde üretilen projeler tertemiz ve testleri yapılmış bir şekilde ortaya çıkar. Kodun yeniden düzenlenmesi için tüm yazılımın ayıklanıp incelenmesi gerekmez ve zaman kaybı önlenmiş olur.

Bence yazılım, kesinlikle kuralları olan bir süreçtir. Başarı için bu kurallara uyulması gerekmektedir. Kurallara uymadan yapılan kodlamalar sonucunda sadece çalışan kod yazılmış olunur. Bu yüzden, piyasa koşullarında rekabet edemeyen, sadece çalışan kodlarımız olur.

Asp.NET MVC 4 Beta Yayınlandı

22 Şub

Microsoft tarafında bir yandan .Net Framework 4.5 hazırlıkları sürerken Asp.Net MVC tarafında da yeni sürüm olan MVC4’te gözükmeye başladı. Bu sürümde MVC3 kullanıcılarının aşina olduğu bazı özellikler geliştirilmiş ve yeni uygulama ortamları eklenmiş durumda.

Başlıca Özellikler

  • ASP.NET Web API
  • Yenilenmiş ve geliştirilmiş proje şablonları
  • Yeni mobil proje şablonları
  • Mobil uygulamaları destekleyen yeni özellikler
  • Otomatik kod üretimleri için yeni tarifler
  • Asenkron metodlar için geliştirilmiş yöntemler

Yeni proje şablon görüntüsü aşağıdaki resimde göründüğü gibi daha şık olmuş.

Proje şablonuna javascrip destekli  yeni pencere açılarak login olabilme gibi özellikler eklenmiş durumda.

Proje ekleme sırasında yeni şablonlar göze çarpıyor. Bu şablonlar, mimariye eklenen yeni özellikleri de temsil etmektedir  aslında.

MVC3 sürümünden farklı olarak Mobile Application sayesinde mobile uygulamalar geliştirmek mümkün, Web API projesi sayesinde ise HTTP servislerini programatik bir şekilde geliştirmek mümkün hale gelmektedir.

Bu yazıda MVC4 için bir göz aşinalığı oluşturmaya çalıştık. İlerki yazılarımızda vakit buldukça diğer özellikleri derinlemesine incelemeye çalışacağız.