 |
| Türkiye 2012 Yazılımcı Raporu | Özcan Acar |
Türkiye'de en çok
Java programlama dili kullanılıyormuş. Bu istatistiği Java Uzmanı yazılım mühendisi
Özcan Acar hazırlamış, onun yaptığı bir anket sonucunda ortaya çıkmış:
http://www.kurumsaljava.com/2013/01/01/turkiye-yazilim-raporu-2012/
Ankete 500'e yakın yazılımcı katılmış. Bence bu oranlar gayet iyi görünüyor, tam olarak Türkiye'ye yansıtıyor diyebiliriz.
Ben de bir kurumsal firmada JavaEE Uzmanı olarak çalışıyorum, web projelerinde Java / JSP kullanıyoruz. Aslında JSP'nin tercih edilmesinin nedeni Scalability'den dolayı, yani daha fazla kullanıcıya daha hızlı ve sağlam (robust) web uygulaması sağlayabiliyorsunuz. Aynı sistemi PHP, Ruby on Rails, ASP.NET c# gibi farklı dil seçenekleri ile de yapabilirsiniz. Fakat internette bu dilleri karşılaştıran yazıları okursanız Java'nın pek çok konuda üstün olduğunu görebilirsiniz.
Benim Cybersoft bünyesinde üzerinde çalıştığım proje Vergi Dairesi Tam Otomasyon Projesi (VEDOP), 1998 yılında başlatılmış ve bugün
itibariyle bütün illerdeki vergi dairelerinde, gelir müdürlüklerinde, gümrüklerde ve mal müdürlüklerinde kullanılıyor.
Bizim VEDOP'taki projeler farklı farklı sistemler kullanıyorlar. VDINTRA diye adlandırılan ve benim geliştirici ekibinde bulunduğum proje ilk yıllarda C++ ve Microsoft'un eski ASP sistemi kullanılmış. Active Server Pages ( Türkçe: Etkin Sunucu Sayfaları) kısaca ASP, Microsoft'un ilk dinamik web sayfaları üretmek için geliştirdiği sunucu taraflı betik motoru. Ayrıntılı bilgi için
Wiki Makalesi.
ASP teknolojisi 1996'da piyasaya sürülmüş. ASP.NET ise ASP'yi içeriyor ve 2002'de sürülen .NET teknolojisini de içeriyor. ASP.NET C# kullanılarak da süper web projeleri yazılıyor. ASP.NET, Microsoft tarafından geliştirilmiş ve ilk sürümü 2002'de yayınlanmış olan bir web uygulama gelişimi teknolojisidir. Özdevinimli (dinamik) web sayfaları, web uygulamaları ve XML tabanlı web hizmetleri yaratılmasına olanak sağlar.
Bizim projemiz ilerleyen aşamalarda 2004 yılında yeni baştan yazılmış, bu sefer
Java teknolojisi kullanılmış. Java Server Pages (JSP), front-end tasarım için kullanılıyor, arkaplanında yine Java class'ları çalışıyor.
Büyük projelerde
çeşitli ekipler olur ve farklı uzmanlık alanlarına bakarlar. Koca bir sistemden bahsediyoruz, o sistem sadece Java'dan oluşmuyor.
Bizim projede 200'den fazla server var ve intranet kullanılarak Türkiye'deki bütün vergi dairelerine ulaşılması gerekiyor.
Sistemci ekip bu serverları ve networkü yönetiyorlar.
Çok büyük veritabanları var. Bu veritabanları için
veritabanı ekipleri çalışıyor.
Ayrıca
web servisleri için ayrı bir ekip var. Web servisleri çok önemli. Farklı sistemlerin birbiri ile bütünleşik çalışmasını sağlamak gerekiyor. Web servislerinde SOAP kullanıldığını gördüm, ama 50'den fazla proje olduğu için her birinin altyapısı farklı olabiliyor.
Bütün bunların yanında asıl kullanıcının gördüğü ve kullandığı web uygulamasını yazan
yazılım ekibi var. İşte bu yazılım ekibi Java kullanarak yazılım geliştiriyorlar.
Bu 4 grupta çalışan herkes birbirinin işini bilmek zorunda. Yani gerçek hayatta T şeklinde kendini geliştirmiş olman gerekiyor. Her şeyden biraz biraz bileceksin, ama
bir konuda derinlemesine bilgi sahibi olacaksın. Mesela ben SQL sorguları yazabilmeliyim, ya da veritabanında yeni bir tablo yaratabilmeliyim, ve bu sistemin devamlı açık/kullanılabilir olduğundan emin olabilmeliyim. Bir sorun olduğunda herkes sorumluluğu alabilmeli.
Aslına bakarsanız "yazılım mühendisi hangi dilleri kullanıyor" önemli değil, hangi teknolojilerde kendini geliştirmek istiyor daha önemli :) Ben PHP uzmanı olarak 1 yıl çalıştım, PHP'de çok iyi seviyeye gelmiştim ama birden JavaEE konusunda çok iyi olmak istiyorum dedim ve o konudaki teknolojilere yöneldim, ama yarın daha iyi bir teknoloji çıkar ve JavaEE kullanmaktan vazgeçersem, o zaman o teknolojide çalışmaya devam ederim. Fakat PHP'den tamamen kopmuş değilim. Çalıştığım yerde yapmam gereken bazı işleri PHP ile hızlıca yapıyorum, işin türüne göre neyi tercih edeceğim değişiyor.
Bilgisayar mühendisliği altyapısı olan bir insan, zaten algoritmaları, tasarım kalıplarını ve veritabanı tasarımını/kısıtlarını bildiği müddetçe farklı dillerde zorlanmaz. Genelde bu zorlanmayı bilgisayar mühendisliği lisans diploması almamış olanlar yaşarlar. Ben genelde çevremde ve internetteki kişilerde bunu gözlemliyorum. Bir dile bağlanıp ondan kopamıyorlar, mesela Android uygulaması geliştirebiliyor ama kendine sorması gereken bir soru: 10 yıl sadece Android uygulaması geliştirmiş olsan, 10 yıl sonra ne yapacaksın? Ya da 10 yıl boyunca PHP developer oldun, sıkı sıkıya fanatik bir şekilde PHPciyim diye geziyorsun, 10 yıl sonra seni proje yöneticisi yaparlar mı? Proje yöneticisi olmak için PHP'den daha fazlası gerekli değil mi? Hadi bir Java projesini yönetmen gerekirse?
Bizim ekip liderimize projenin iPhone ve Android uygulamasının yapılmasını söylediler, web servisi grubundan bir arkadaşımız Android uygulamasını yazdı, bizim ekip liderimiz de iPhone uygulamasını yazdı. Düşünün ekip liderimiz 12 yıldır bu firmada çalışıyor ve adam oturup kolayca ve hızlı bir şekilde uygulamaları yazıp verdi. İşte yazılım mühendisliği budur. O konuda uzman olmanıza gerek yok, sadece mühendis kafasıyla düşünmeniz yeterli. Yeni teknolojilere kolayca adapte olabilmek de mühendislik kafasıyla alakalı.
***