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
Hep birilerini bekliyoruz, bir süper kahraman, bir kısmet, bir mucize… Hayatımızda değişmesini istediğimiz herşeyi kendimizden başka herşeye bağlıyoruz ve bekliyoruz…bekliyoruz….bekliyoruz….Kendi hayatımızın kahramanı olduğumuzun farkına varamıyoruz çoğu zaman. Peki ya ben size o beklediğiniz kahramanın kendi içinizde saklı olduğunu söylesem? Gülüp geçer misiniz, yoksa okumaya devam mı edersiniz? Çoğumuzun gerçek hayatta karşılaştığı zorlukları super kahramanın karşılaştığı ejderhalardan ya da sorunlardan daha az önemli olduğunu kim söylüyor? Ben değil:)
İşte bizi super kahraman olmaktan alıkoyan 7 davranış paterni:
1. Etrafımızdaki çağrıları görmezden geliyoruz.
“Heroes may not be braver than anyone else. They’re just braver 5 minutes longer. ― Ronald Reagan
Ünlü mitolojist Joseph Campbell (bkz: wikipedia) eski hikayeleri ve mitleri değerlendirerek bir çalışma yaptı ve bu çalışmada tüm kahramanların ilk aksiyonunun harekete geçmek olduğunu gördü. Yani çağrıya yanıt vermek. Eğer siz yapılan bir imdat çağrısına yanıt vermiyorsanız ve bu konuda bir adım atmazsanız, çok üzgünüm ama hayatımızda kahramanca bir şeyler de olamıyor. Buna konfor alanımızdan çıkmak da diyebiliriz:)
2. Hepimiz mutlu son bekliyoruz.
“And will I tell you that these three lived happily ever after? I will not, for no one ever does. But there was happiness. And they did live.” ― Stephen King
Eğer hayatımızda hedef, amaç ya da plan yoksa bu da çocukken okuduğumuz masallar gibi sonu hep iyi biten bir pembe toz bulutu olarak kalır. Masalların tarihçesini inceleyecek olursanız, aslında çocukları gerçek hayatla yüzleştirmek üzerinedir. Ben yeğenlerime okurken bazen hayretten ağzım açık kalıyor ve duraksıyorum, bu kadar acımasız mı hayat diye…İnanın masallar gerçeklerden daha acımasız çoğu zaman, sonunun iyi bitmesi onları daha az korkutucu yapmıyor maalesef. Siz yine de kışa gore hazırlanın, varsın bahar gelsin:)
3. Kurtarıcı olmaktan ziyade kurban olmayı seçiyoruz.
“We are all ordinary. We are all boring. We are all spectacular. We are all shy. We are all bold. We are all heroes. We are all helpless. It just depends on the day. ― Brad Meltzer
Siz istemedikçe kimse sizi kurtaramaz biliyor musunuz? Çok sert bir cümle oldu ama siz istemedikten sonra kimse sizi gerçekten de kurtarmayacak, öyle bir dünya yok maalesef. Istemeniz gerek, bedel ödemeniz gerek ki gerçekten değişmek ve bir şeyleri başarmak istediğimizi kendimize ispatlayalım.
4. Güçten etkileniyoruz fakat güçlü olduğumuza inanmıyoruz.
“You don’t need superpowers to be someones hero ― Ricky Maye
Hepimizin çocukken onlar gibi olmak istediğimiz kahramanları vardı. Benimkisi Red Kit’ti mesela:) En derinde belki hepimiz gizli bir gücümüz olsun isteriz, bizi diğer insanlardan daha özel ve daha güçlü yapan. Kendi hayatımızı ve başkalarının hayatını değiştirebilen, dünyayı değiştirebilen. Asıl gücün ne olduğunu bilmiyoruz çoğu zaman. O yüzden beyaz atlı prensi ya da uyuyan güzeli beklemekten ziyade kendi hikayemizin kahramanı, kendi filmimizin hem yönetmeni hem de baş oyuncusu olmamız gerekiyor. Neden mi? Çünkü bunu yapabilirsiniz ve hak ediyorsunuz:)Yazının Tamamı İçin
SSO Ayarları, JDeveloper IDE screenshotları kullanılarak açıklanmıştır.
1) ApplicationName: acme
2) Context Root ayarı: protected_acme , weblogic.xml de session tab’inde “/” kullanarak context root ismi yazılır.
3) Ear Adı: acme (optional)
4) Application Deployment ayarlarında iki maddenin tiki kaldırılacak
CANLIDA SSO AYARI İÇİN aşağıda seçili olan radio butonu işaretledikten sonra next next ile finish yapılır.
TEST ORTAMI İÇİN GÖNDERİLECEK DEPLOYMENT AYARINDA HHTP_BASIC VEYA FORMS BASED SEÇİLİ KALIR.
CLUSTERED ORTAM AYARLARISSL (Secure Sockets Layer): 2 uygulamanın ağ üzerinde birbiriyle ilk iletişim kurarken ve veri alışverişi yaparken birbirlerinin (sadece server yani tek taraflı da olabilir) kimliklerini çeşitli sertifika tipleriyle tanıttıkları ve bir şifreleme algoritması üzerinden haberleştikleri güvenlik katmanıdır.
HTTPServerlara (örneğin Oracle tarafında OHS)uygulanabildiği gibi WL Admin ve managed serverlara da uygulanabilir. http serverlarda genel olarak (eğer browserlara https://hostname şeklinde yazılıp port belirtilmezse 443 olarak varsayılır, http için bu 80 dir) 443 iken WLS da bu port default olarak 7002 dir. Console üzerinden değiştirilebilir
WLS üzerinde SSL konfigürasyonunun etkin (enabled) olduğunu anlayabilmenin ilk yöntemi https://myserver:7002 şeklinde kontrol etmektir. Ancak enabled olmasına rağmen port değişikliği yapılmış olabileceğinden console üzerinden Servers bölümünden ilgili sunucunun General-> Configuration tabına erişilip kontrol edilebilir.
Bu şekilde enabled olduğunu gördükten sonra https üzerinden ilk erişimde tarayıcı sertifikasyon bilgisini client tarafına getirecektir.
Sertifika ayarlamalarında test ortamı için selfsigned sertifikalar yada piyasadaki otoritelerce kabul edilen merkezlerin sunduğu geçici deneme sertifikaları kullanılabilir. (ör: https://www.symantec.com/page.jsp?id=how-ssl-works&tab=secTab5) Ancak production ortamında bu önerilmez ve production ortamı için oluşturulan sertifikanin CN(common name) alanının sunucunun hostname i ile eşleştiğinden emin olunmalıdır. Doğru bir örnek için aşağıdaki resim dikkate alinabilir.
1: Sertifika oluşturma:
a: Sunucu üzerindeki komut satırından setDomainEnv script i çalıştırılır yada keytool u kullanabileceğimiz ortama geçiş yapılır.
b: Bu private – public key pair i oluşturmak birkaç farklı tool ile olabilmekte ancak biz jdk içerisindeki keytool u kullanıyoruz.
keytool -genkey -alias client -keyalg RSA -keysize 2048 -keystore identity.jks -storepass password -keypass password
c:Certificate Signing Request (CSR) dosyasını aşağıdaki gibi oluşturarak CA ‘ya (sertifika almak istedğimiz otorite) gönderip cevap istiyoruz.
keytool -certreq -keyalg RSA -keysize 2048 -alias client -file certreq.csr -keystore identity.jks -storepass password
CA bize RootCA ile birlikte bazen IntermediateCA yı gönderecektir.
d: Elde ettiğimiz sertifikaları keystore dosyasının içine koyacağız.(import process) Bu işlem iki farklı şekilde yapılabilir. Birincisi RootCA, IntermediateCA ve cevap olarak gelen sertifikyı hiyerarşik olarak import etmek. İkincisi de .pem dosyası içinde bir sertifika zinciri oluşturmak.
Biz ikinci yöntemi takip edelim, “CertChain.pem” adıyla bir dosyada toplayalım. Aşağıdaki kodda client key alias tır değiştirilebilir.
keytool -import -file CertChain.pem -alias client -keystore identity.jks -storepass password
e: Keystore oluşturma: RootCA sertifikası olmayan bir keystore kullanılarak oluşturulabilir yada yada mevcut birisinin içine import edilebilir.
keytool -import -file rootCA.cer -alias RootCA -keystore trust.jks -storepass password
Kontrol etmek için aşağıdaki komut kullanılır.
Keytool –list –v –keystore <keystore-name> -storepass <keystore-password>
2: Keystore u WLS ye uygulamak:
a: Admin console a giriş yaparak SSL uygulanacak sunucu seçilip Configuration->Keystores seçilir.
Keystores bölümündeki Change butonuna tıklanarak Custom Identity and Custom Trust seçilip Save edilir.
b: Sunucu Identity konfigurasyonu
Sunucu kimliğini belirleyebilmek için SSL sekmesine geçilip oluşturulan private key in alias ı (bu anlatımda client idi) ve passphrase i girilir.
NOT: Bu anlatımda yapıldığı gibi sunucuda yalnızca SSL aktif edilirse varsayılan olarak OneWaySSL aktif olacaktır.(Genelde kullanılan durum budur, yani sunucunun kendini tanıtması) Eğer 2Way SSL olarak değiştirilmesi isteniyorsa Advanced seçeneğinden değiştirilebilir.
Server loglarında aşağıdaki gibi logların yazılması beklenmektedir.
<Notice> <Security> <BEA-090171> <Loading the identity certificate and private key stored under the alias client from the JKS keystore file C:\Wonders\WebLogic\Security\SSL-Certs\Verisign\identityVerisign.jks.>
<Notice> <Security> <BEA-090169> <Loading trustedcertificates from the JKS keystore file C:\Wonders\WebLogic\Security\SSL-Certs\Verisign\trustVerisign.jks.>