Öncelikle kendi hikayemden yola çıkarak başlayacak olursam; boğaz tokluğuna (asgari ücretin yüzde 20 daha fazlası idi sanırım) bir maaşla başlamıştım. Sonra zamanla yükselerek piyasa ortalamalarına tekabül etti.Bu konu oldukça aranan merak edilen bir konu.  Ve arama yapılan keyword lerde sıkça geçmekte. Bu konuya uzun yıllar önce Cihat arkadaşım değinmişti, ben de güncel bir anketle konu hakkında merakımı ve merakları gidermek için yola çıktım. Cihat Altuntaş’ın ilgili yazısına buradan ulaşılabilir.Tabi bu işin biraz da kısmet işi olduğunu düşünüyorum ben kendimce. Aynı eğitim basamakları, benzer teknolojiler ve çalışılmış yıllar olsa da bazı kimseler aynı unvan ile piyasanın taban fiyatini alırken bazıları tavan fiyatını yada farklı ünvanları dahi alabilmekteler. İster network, ister kendini ifade yeteneği, ister doğru zamanda doğru yerde olma yada şans faktörü deyin ama bu gözlemlenen bir gerçek.Genel olarak kriterlerin, çalışılan teknoloji ve deneyim yılı olduğunu düşünerek bu şekilde bir anket sunmaya çalıştım.

Konuyla ilgili webrazzi detaylı bir çalışma yayınlamış => görmek için tıklayın.

Buyrun ankete, sonuçları görelim.

Sonuçlar

Katılanların; %63′ ü Java Geliştiricisi%25′ i .Net Geliştiricisi%9′ u Front End Geliştiricisi

%60′ ı 2-5 yıl arası çalışan%25′ i 0-2 yıl arası çalışan%12’si 5-10 yıl arası çalışan%3’ü 10+ yıl çalışan

%6′ sı 1500-2500 TL aralığında kazanmakta,%18’i 2500-4000 TL aralığında kazanmakta,%53’ü 4000-6000 TL aralığında kazanmakta,%13’ü 6000-7000 TL aralığında kazanmakta,%10’u ise 7000 ve yukarısında kazanmakta imiş.

Javacılar genel olarak 2-5 yıl arasını işaretleyerek 2500-4000 ile 4000-6000 aralığını işaretlemişler..Net geliştiriciler ise genelde 2-5 yıl arası ile 2500-4000 ve 6000-7000 aralığında seçim yapmışlar.Front End geliştiriciler 0-2 yıl çalışma ile 2500-4000 arasında yoğunlaşmışlar.Mobil Geliştiriciler 2-5 yıl ile 6000-7000 seçeneğinde yoğunlaşmışlar.

Kendisinin izniyle, Akın Hoca’mın  hislere tercüman olan bir yazısını paylaşmak istiyorum.

Bir genç arkadaşımın, “okuldan tanıdığım, sağlam çocuktur, iş arıyor” deyip bana CVsini gönderdiği emaili ülkemizin BT piyasasında hatırı sayılır işler yapan insan kaynakları  şirketine sahip bir tanıdığıma gönderdim. O da bana “deneyimi yok ama olsun sağol :)” diye cevap yazdı. Bu arkadaşımla zaman zaman buluşup konuşuruz, ortak bir şeyler yapalım vs. diye, dolayısıyla kendisini iyi tanıyorum. Bu “deneyimi yok ama” kısmı aslen onun düşüncesi değil, burası, tamamen arkadaşımın iş yaptığı ve daima “tecrübeli” aday arayan insanların yani BT yöneticilerinin zihin yapısını ifade ediyor.

Evet malesef öyle bir ülkede yaşıyoruz ki, kimse yeni öğrenene tahammül edemiyor. Diğer sektörlerde de öyle mi bilmiyorum ama en azından BT ve futbol sektörümüzde durum bu. “Biz tecrübeli programcı arıyoruz!” Zannedersin uzaya füze fırlatan rampa sisteminin yazılımını yazacak! Ya da CMMI-5 seviyesinde bir yazılım şirketinde ya da BT biriminde yönetici, o yüzden bu kaliteye ayak uyduracak yazılımcı arıyor. Sorsan “nedir tecrübeli?” diye sadece yıl cinsinden bir tarif yapabilir: “işte, 5 sene falan Java ile uğraşmış olsun”. Aslında bunu diyen, “5 sene ile Java ile uğraşmış olma”nın daha detayda ne anlama geldiği hakkında emin olun bir cümle daha söylemekte zorlanacaktır, hatta söylediklerinin 5 senelik Java tecrübesiyle alakası olmadığını anlayarsınız. Şunun gibi: “yani CVS’le falan uğraşmış olsun”!

Bütün bunları ben, bu sektörde iş ararken hiç yaşamadım. Çünkü juinor programmer olarak iş ararken ABD’deydim ve orada gerek önüme konan sınavlardan gerek ise benimle yapılan iş görüşmelerinden, benimle ilgilenen kişilerin tam da benim gibi, bilgisi olan ama tecrübesi olmayan kişiler aradıklarını rahatlıkla anlayabiliyordum. Çünkü pozisyon, bekletiler vs. hakkında konuşurken benimle görüşen kişiler, örneğin “2 senedir bizimle olan ve başından bu yana projede bulunan, … tecrübeli bir arkadaş var, onunla çalışacaksın” diye sağlam bir alt yapıya sahip olup da tecrübesi olmayan kişiye uygun bir konumlandırma yapabiliyorlardı. Bu ülkede ise herkesin “Alex” olması bekleniyor. “Ama tecrüben yok!” Eeee, sen iş vermezsen, stajyer olarak gelene de “aman gölge etme dersen”, insanlar nasıl tecrübe sahibi olacaklar ki? Sanırım bu yüzden sadece 22 yaşında olup henüz üniversiteden mezun olmamış bir gencin bana gönderdiği CVsinde “6 yıl tecrübe” yazıyordu! Bir insan MIT ya da Stanford’dan doktora bile alsa, tecrübesi “0”dır. Ama işte böyle yaparak, BT sektörüne girmek isteyenleri de bu şekilde saçma davranışlara sürüklüyoruz. Sonuçta iki yanlış bir doğru etmiyor.

Zaten size bir şey söyliyeyim mi? Tecrübeden kastedilen ise aslında sadece “hızlı iş çıkarmak”. Kimse, “bizim projemizde performans çok önemli, o yüzden yazılacak kodun kalitesi kritik, ancak tecrübeliler yazabilir bunu” diye düşünmüyor. İşin komik yanı zaten bu: Tecrübe bu ulkede sadece yıl ile ölçülüyor, kişinin gerçekten ne yaptığıyla değil. Mesela ben 2001’de ABD’den dönüp te bu ülkenin en büyük krizini geçirdiği günlerde iş ararken iki kişi hariç hiç kimse benimle CVmin üzerinden geçip, ABD’de ne yaptığımı sorgulamadı. Kimse hangi projelerde, hangi rollerle yer aldın, neler yaptın, sorumlulukların neydi vb. sorulara girmedi. Herkes, ABD’den gelmişliğimle ve yaşımın  30’u geçmişliğiyle ilgilendi. Ben teknik pozisyonlara başvurdum ama insanlar beni kendi yöneticileriyle kıyasladılar. Sadece iki kişi CVmdekiler üzerinen tek tek gitti, detayını öğrendi. İlki, zaten yabancı bir şirketin IT müdürü olan ABDli bir adamdı, diğeri de ABD’de 18 sene kalıp, bu ülkeye dönmüş ve BT işi kurmuş Türk bir patrondu.

Bir diğer konuda aslında her projede her türlü tecrübeye sahip kişilere ihtiyaç olacağı gerçeğidir. Bu durum hem tecrübe, hem de yetenek vb. çok şey için geçerli. Yani tutun 10 tane Alex bulup Fener’e koyun mesela. Fener, Bayern’mi olacak? Her projede diğerlerine yol gösterecek tecrübe, zeka ve özgüvende insanlar kadar, onlardan sayıca daha fazla olan ama daha az tecrübeli ve bilgili çalışanlara da ihtiyaç vardır. Savaşı sadece generallerden kurulu bir orduyla kazanamazsınız ki! Bana her tecrübeli 1 yazılımcının yanına yarı tercübede 2-3 kişi koyacak şekilde bir proje verin, hiç bir tecrübe zaafiyeti yaşamadan, projenin büyüklüğüne göre muhtemelen pek çok yeni mezun ile projeyi yapabilirim. Yeni mezunları seçerken ince eler sık dokurum o ayrı. Sertifikası olana daha olumlu bakarım örneğin. Biz bir binayı yaparken herkesin tecrübeli inşaat mühendisi olmasını bekliyor muyuz? Neden o zaman bir yazılım projesinde herkesin mühendis ve tecrübeli olmasını bekliyoruz ki? Herkesin tecrübeli yazılımcı olduğu yerde aslında pek çok ufak-tefek, basit ve tekdüze iş, çok pahalı çalışanlar tarafından yapılıyor demektir. Aslında yönetimden anlamadığımız için, hasbel kader yöneticilere sahip olduğumuz için, tecrübesizleri çalıştıracak yetkinliğe sahip değiliz. Tecrübeli olan zaten iyi çalışır, tecrübesiz ise iyi çalışmayı öğrenmeye ihtiyacı vardır, dolayısıyla yönetilmeye, yol gösterilmeye, yetiştirilmeye ihtiyacı vardır. Tecrübesizi işe almayarak kendi tembelliğimizi gösteriyoruz aslında.

Zeki, yetenekli ve iyi eğitimli az sayıda insan ile, orta seviye zeka ve yeteneğe sahip insanlarla, karmaşık işler bile ne kadar basit, öngörülebilir hale getirilir görmek isterseniz, ABD’yi bir ziyaret edin ederim. Bakın o “aptal” dediğimiz insanlar, bizim zekilerimizin bu topraklarda yapamadığını ne kadar basit bir şekilde yapıyorlar.

Bir diğer nokta da yeni mezunların ortama bir enerji ve canlılık getirdikleri gerçeğidir. Yeni mezunların, ortamları daha neşeli kıldıkları, daha yaratıcı çözümler bulduklarını çok defa gözlemlemişimdir. Nasıl hep aynı tipten insanların buludukları yerler tekdüze oluyorsa, sadece tecrübelilerin yanına koyacağınız tecrübesizlerle bu tekdüzeliği aşabilir, taze kan ve enerji alabilirsiniz. Örneğin ben, azimli, motivasyonunu kaybetmemiş 2-3 sene tecrübeli kişilerle harmanlanmış, iyi seçilmiş yeni mezunların, düzgün bir yönetim ile uzun vadede, 10 küsur senelik tecrübeli, ama bu kültür içinde motivasyonunu kaybetmiş kişilerden oluşmuş bir takımdan daha çok ve kaliteli iş çıkarabileceğime inanıyorum.

Her şey gibi insan da her yaşında ögretilmeye, eğitilmeye ve yol gösterilmeye muhtaçtır. Herkes, bilmediğinin, yaşamadığının tecrübesizidir. İyi yöneticiler de, işlerinin gerektirdiği yetkinlikleri ve seviyelerini iyi bilen ve takımlarını buna göre bir uyum içerisinde kurabilen ve onları motive eden kişilerdir. Bizim sektörümüzde “yıl”a indirgenmiş tecrübe ve yetkinlikten dolayı çok enerji ve insan kaybediyoruz.Kaynak: http://www.javaturk.org/?p=4505

Java ile public bir web projesi geliştirme kararı alındığında teknolojileri doğru seçmek önemlidir. Aksi halde geliştirmesi gayet yavaş ilerleyen ve çalışması hantal bir ürün ortaya çıkabilmektedir.Özellikle front end geliştirmesinde JSF2.0 üzerine konumlandırılan bir çok faces (Primefaces, ADF Faces) teknolojisi ile oldukça gelişti. Ancak küçük public web uygulamalarında bu teknolojiler ile performans ve geliştirme sıkıntıları ortaya çıkmaktadır. Geliştirme sıkıntısı JSF ve implementasyonlarının hayli kapsamlı ve component based olmasından kaynaklanmaktadır. Component based geliştirilmiş bir facelet/jsp/jsf/jspx e tasarım giydirmek yada mevcut yeteneklerinin dışında bir özellik eklemeye çalışmak oldukça vakit alan bir sürece denk gelmekte. Üzerinde kullanılan JS ile zenginleştirilmiş faces implementasyonlarını da çözmek ve nasıl davranacağını kestirebilmek de ayrı bir dezavantaj haline gelebilmektedir. Böylece asla tasarım ve back end geliştirme birbirinden ayrılamaz parçalar haline gelmekte, designer ne kadar HTML bilgiye sahip olsa da projenize tasarımını giydirememektedir.JSF2.0 ile AJAX destekleniyor. Bir JavaEE standardı olması da sebebiyle kullanımı ve doküman erişimi çok geniş.  Avrupa’da hayli yaygınlaşan ZK Framework ile kıyaslarsak, ZK’nın öğrenmesi ve uygulaması oldukça kolay ve performance testlerinde JSF’i geçiyor.  Responsive design ile tasarlanmış bileşenleri sayesinde geliştirmeniz için ekstra çaba sarfetmeden mobilde de kullanıma olanak sağlıyor. Bütün bir framework olmasına rağmen sadece view katmanında kullanılarak SpringMVC ile çalışabilme imkanı bulunmaktadır. Olumsuz olarak ise, JSF e göre daha az kullanım sebebiyle yaygınlaşmış ve biraz daha fazla memory kullanımı sağlıyor. Ancak business logic’i sunucuda tutarak ajax enterprise based bir frameworkte şüpheyle yaklaşılan güvenlik konusunu çözmeyi başarmış olduğunu söylemeliyim. JSF ile ZK nın benchmark raporları=> http://www.zkoss.org/resource/file/report/ZK_JSF_Performance_Report_2012.pdfYine performans olarak JSF i geçen ancak günümüzde artık kullanımının yaygınlaşamayacağından neredeyse emin olunan Apache Wicket var. Bunun bence en önemli özelliği clean html yazılabilmesi. XHTML dosyalarıyla wicket ta çalışırsınız. Yani okunabilir bir html kodu olduğundan tasarım yapabilmek de olduça kolay. Yine ajax desteği var. Normal html markuplar ile sayfanızı tasarlıyorsunuz, special markup lar  oldukça az ve anlaşılır şekilde kullanılıyor.  Java tarafında model binding işlerinizi programatik olarak hallediyorsunuz.  Bu işi JSF te declarative yapıyorsunuz. Ancak Wicket’ın component leri zayıf ve kullanım sebebiyle  dokümantasyonu hayli az.İşte bu durumda;Yani backend java iken view tarafında ise java kutusunun dışına çıkmayı tercih etmiş bazı büyük şirketler olduğunu da biliyoruz.  Java ile birlikte, Web UI da PHP kullanılmış azımsanmayacak sayıda web uygulaması mevcutmuş.Spring, Java dünyasında kendini kanıtlamış ve yıllardır büyüyen community siyle üzerine inşa edilen bir çok alandaki teknolojiyle büyük bir ekosistem halini almıştır.  Yaygın kullanımı hakkıyla kazanmış ve mainstream framework olarak kabul görmüştür.IoC ve EE container olmadan JavaEE nin yeteneklerini servlet container barındıran lightweight bir web serverda bile çalışarak gözleri üzerine çekmiştir. İşte bu noktada; REST serviceler in hem SOA mimarisi göz önüne alınarak mimarlarca önem verilmesi hem de REST service security ve knowhow ‘a web geliştiricileri ve back end geliştiricilerince sahip olunmasıyla gözler Javascripte çevrildi.  MVC JS Frameworklerin gelişerek kendini kanıtlamasıyla performansı göz dolduran REST serviceler ile JSON üzerinden komünikasyona başlandı.  Controller gibi REST serviceler istenen dil ile(framework ün önemi olmadığı gibi RESTful teknolojisini destekleyen herhangi bir dilde yazılabilir) backend developer larca yazılır, front-end developer larda JS libraryleri ve HTML ile bu serviceleri çağırarak temiz kodlarla işi bitirebilirler. Böylece roller birbirine karışmamış olduğu gibi bağlılık azalmış ve entegrasyon noktaları kendiliğinden çıkmış oldu. JS framework olması ile elbette bir güvenlik zaafiyeti doğmuş oluyor view tamamen client side a yıkıldığı için ancak bunların best practice i mevcut görünüyor. Böyle bir implementasyon nasıl yapılıyor, aşağıdaki tutorial serisinde çok iyi anlatılmış. Not: Bunu seyretmeden önce eğer JS, jquery, bootstrap, bower, ORM teknolojileri hakkinda hicbir şey bilmiyorsanız öncelikle bunları hızlıca araştırıp bilgi edinmek yararlı olacaktır.