3/11/2017

C#.NET vs Java: Genel İzlenimler ve Geçiş Süreci

QBasic, Pascal, VB6 ile başlayan başlayan yazılım merakım, kısa süreli bir VB.NET tecrübesi ile profesyonelliğe geçiş yaptıktan sonra, çok büyük oranda C# ile devam etti. Java ile, çok büyük çaplı olmasa da, geliştirdiğim bir yazılım da vardı.

Son 9 aydır sadece Java üzerinde çalışıyorum. Dili zaten bildiğim için çok yadırgamadım ama iyice tecrübe ettiğimi söyleyebilirim. Bu geçişi yapanların neler yaşabileceğini kısaca burada bir özetlemek istedim. İleride bu başlıkları daha kapsamlı bir şekilde, kendi gözümden anlatacağım.

Dil:

Java, C#' ile çok benzer bir. Syntax olarak yadırgamayacaksınızdır kesinlikle. Hatta ve hatta çok basit bir geçiş olacağını söyleyebilirim. Şimdilik  Java 7'i ile geliştirme yapıyorum (8 ile başlamıştık ama elde olmayan nedenlerden 7'ye downgrade etmek durumunda kaldık; fakat tekrar bir upgrade geliyor). Java 7 kullanacaksaksanız, C#'a baya hasret kalacağınızı söyleyebilirim. Java 8 ile bu özlem biraz dinebilir :) 

Not: En sık yapacağınız hata String karşılaştırma :)

Geliştirme ortamları:

İlk başta, Eclipse ile başlayıp, mutsuz süren bir hayatım vardı başlangıçta. Visual Studio'dan sonra attan inip eşşeğe binmeye benziyor :) Fakat, İsviçre çakısı gibi mübarek. 

Son 9 aydır ise IntelliJ IDEA kullanıyorum. Community Edition idare ediyoruz; ama Ultimate versiyonu da kesinlikle verdiğiniz parayı hakeder.  Sadece, debug ederken mevcut işletilen satırı geri alabilsem, herşey mükemmel olacaktı.

Diğer taraftan Maven denen zıkkım ile iyi başlamasa da münasebetimiz; artık mutlu mesut geçiniyoruz. Bilmeyenler için söyleyeyim, dependency management (Nuget) ve build için (Çok doğru olmasa da MSBUILD gibi de diyebiliriz) kullanılıyor. Çok esnek bir platform ve zengin bir ekosistemi var. Diğer araçları tecrübe imkanım olmadı açıkçası, ama Gradle da ikame olarak yaygın kullanıyor.

Platform:

Java köklü bir platform. Bu noktada .NET ile karşılaştıracak olursak, bir developer olarak çok yadırgamayacağınızı söyleyebilirim.  Temel kütüphanelere alışmak biraz vakit alacak elbette ama Google amcam sağolsun, varlığı kuvvet veriyor.

Projemizde, bir OSGI container üzerinde çalışacak bir uygulama geliştiriyoruz. Değişik bir bir kafa var burada :) Belki bir ara bildiğim kadarıyla anlatmaya çalışırım.

Burada ufak bir not belirtmem gerekirse, şart olmamakla birlikte, Java uygulamanız muhtemelen bir Linux sunucu da çalışacaktır. Temel bir Linux bilgisi de gerekli olabilir.

Geri kalanını da anlatmakla bitmez herhalde :) .NET ve dünyası elimizde büyüdü diyebiliriz ama Java ile de bir 10 yıl daha geçecek ki ben de size burayı hakkını vererek anlatayım. 









12/31/2016

2017 Hedeflerim

Bugün artık 2016 yılını bitiyoruz ve 2017 yılına giriyoruz. Ne yazık ki 2016 pek iyi geçti diyemiyoruz; ama, hatalarımızdan ve yaşadıklarımızdan ders çıkardığımız bir yıl olmuştur umarım. Bir yandan da  artık arkamıza bakmamızın çok bir manası yok bence; ümitle ve azimle geleceğimizi şekillendirmeliyiz diye düşünüyorum.

Ben de kendi adıma daha iyi bir gelişim göstermek için 2017 de geçekleyebileceğim hedefler belirledim. O kadar da yenilikçi şeyler değiller aslında. Misyonum net hedefler koymak ve bunları gerçeklemek. Tabi buradaki en büyük engel de zaman kısıtı. Uykudan kısmak da  maalesef pek mümkün değil. Zira zaten yeterince uyuyamıyor çoğu gün; maalesef 4-5 saat uyuyarak yaşayabilen insanlardan da olamıyorum :) Bunu da nasıl yönetebileceğim konusunda da baya kafa yordum. Gene tavsiyelerinizi beklerim.

Haftalık olarak, aşağıdaki hedeflere ayırabileceğim vaktimi hesapladım. Bunlardan gerisi ev, iş, eğlence oluyor tabi. Eğlenceyi ve muhabbeti boş vakitten saymıyorum zira, hayatta bunlar de şart diye görüyorum. Çocuklu bir hayatta kendine ayırabileceğin zaman zaten gittikçe azalıyor :)

Hafta içi her gün 1-2 saat,
Hafta sonu da toplamda 10 saat,
eder sana haftada 15-20 saat.

1. Televizyonsuz bir hayat:

Genelde pek televizyon izleyen bir insan değilim zaten; ama harbiden bazı akşamlar öyle televizyonun karşısına geçip aptal aptal bakarken buluyorum kendimi. Zaten pek de güzel birşey yayınlanmıyor televizyonlarda. Elbette haftada 1-2 film izlemek caizdir. O kadar da kasmaya gerek yok :)

2. Yeni bir dil öğrenmek:

İngilizce dışında yeni bir dil öğrenmek çok mu şart derseniz, tartışılabilir bir konu elbette. Çok az bir Almanca öğrenmiştim zamanında, bu sene temel bir seviyeyede öğrenme hedefi koydum. duolingo.com ile günde 20 dk bir çalışma yapmaya başladım bile. Bakalım ne kadar yeterli olacak, ben de merak ediyorum.
Bir yanda da vocabulary.com'da İngilizce kelime dağarcığımı en üst seviyeye çıkarmak için gün için kısa bir göz gezdirme yapıyorum.
Esasında haftalık 5 saat diye düşünmüştüm ilk başta, ama sonradan çok gerçekçi gelmedi :) Bu süreyi serviste, işe gidip gelirken veya WC'de bile değerlendirebilirim :)

3. Okunacak kitaplar:

Kendi çapımda bir başlangıç listesi hazırladım. Çoğunlukla mesleki yayınlar okuyorum ve bu durumu da %50'ye çekmek istiyorum biraz aslında. Genellikle geek kitaplar olacak tabi elbette :) Aylık hedefimi 2 kitap (700 sayfa) olarak belirledim. Bence gayet makul bir hedef. Keşke serviste de okuyabilsem :(

4. Öğrenilecek yeni konular:

Gene kendime bir liste hazılardım. Liste biraz iş odaklı oldu ama neyse :)  Bunu bir pet project ile beraber götürürüm diye ümit ediyorum. Esasında işin burası en çok vakit alıcı yeri.

Gene iş dışı 2 konu belirledim listemde. Tabi bunlarda bir uzmanlık hedefim yok. Maksat yeni tecrübeler yaşamak.

Okuyacağım kitapların bir kısmı da buradaki listeye göre düzenlendi aslında :)

5. Biraz da sağlık:

Pek sağlığına dikkat eden bir insan değilim. Kötü bir beslenme alışkanlığı edindim son zamanlarda ve neredeyse hiç hareket etmiyorum. Geçmişte bu alışkanlığın çok kısa sürede değişebildiğini tecrübe etmiştim. 2-3 günde bir tempolu yürüyüş veya bisiklet (kapalı alan sporları çok bana göre değil) makul geldi bana.

*******

Herkese mutlu yeni yıllar dilerim.

12/04/2016

Yeni Şöyle Birşey Çıkmış, Hemen Kullanalım Mı?

Hepimiz birer bilgi çalışanıyız ve dünyamız çok hızlı bir şekilde değişiyor. Değişen dünyamızda bazı fikirler ayakta kalırken, bazıları da zaman için de yitip gidiyor.

Bu yazının konusu ise bu yitip giden fikirler veya teknolojiler. Bunlara kısaca yenilik diyeceğim yazımın geri kalanında. Spesifik olarak, şu da çok popülerdi; o da öldü gitti gibi bir otopsi yapmak sonu bitmeyen bir listeleme olurdu. O yüzden bu topa hiç girmeyeceğim ama geçmişe dönüp bakıyorum da, sadece benim aklıma bir çırpıda gelenlerin bile listesi uzar da gider. Halbuki, birçoğu ile ilgili ilk okuduğum söylemler aklımda. Ne kadar da umut bağlanmıştı.

Ortada yeni bir yenilik varsa, bunu denemeden sonuçlarının gözlemlenmesi çok zor bir durum. Bu konuda dünyanın değişik yerlerinde bir çok kişi gönüllü olarak bu yenilikleri test eder ve sonuçlarını paylaşır. Bence de, mesleğimizin en kuvvetli özelliği de budur; güçlü ve yılmayan bir topluluğuz.

Burada benim hata olarak değerlendiğim şey ise, bir fikre saplanıp kalmak. Sektörel olarak verilen gazlara ve pompalamalara karşı biraz uyanık olmak gerekiyor. Bir yenilik, sadece yeni (eski bir kavramın yeni popüler olduğu durumlar dahi oluyor) diye veya bazı problemlere deva olduğu diye; kısa ve orta vadede bunun geleceği şekillendireceğini düşünmek, hatalar silsilesinin ilk basamağını oluşturabilir. Ben de kendi namıma yeni şeylerle uğraşmaya bayılıyorum; fakat her ne kadar bir tatmin hissi yaratsa da, özellikle profesyonel çalışmalarımızda hassasiyetle ele alınması gereken bir konu.  Bu noktada, topyekün bir uygulamaya girişmeden önce, bazı şeyleri zamana yaymak iyi bir fikir olabilir.

10/25/2016

Uluslararası Ekiplerle Proje Yapmak

Yeni işimde (artık o kadar da yeni değil gerçi) , dünya üzerinde değişik lokasyonlarda yer alan birçok ekiple birlikte çalışmamız veya iş birliği yapmamız gerekiyor.

Daha evvelden yabancı kültürden insanlarla birlikte proje yapmışlığım var ama fiziksel olarak aynı ortamdaydık o zamanlar. Bu da işleri çok kolaylaştırıyordu diyeceğim ama bunun kıymetini daha yeni anlamışım aslında. Bu sefer işleri uzaktan yürütmemiz gerekiyor. Benim için de ilginç bir tecrübe oluyor diyebilirim. Bocalıyorum da dersen yalan olmaz.

Esas birlikte bir takım olarak çalıştığım arkadaşlar ile en azından aynı lokasyonda olmamız gene bir şans. Gerçi takımımızda başka şehirden arkadaşlar da var ama birbirimize işimiz çok düşmüyor şimdilik.  Bunun dışında bir de entegre olacağımız uluslararası ekipler var (3-5 tane falan değil diyim :P). İletişim araçlarımız da çevrimiçi konferans araçları, IM araçları veya email oluyor.

E-mail ile koordine olmak, gerçekten zorlayıcı. Hem yazması çok uzun vakit alıyor, hem de top gibi 50 kere sekip dönüyor aynı konu. Bir yandan yazılı olarak konuşulanların kayıt alınması gibi bir kaygısı oluyor insanların. Gene de pek etkili bulduğum bir yöntem olduğunu söylemem.

IM araçları biraz daha etkin bir yöntem olmakla beraber hala yazılı bir kanalın engellerini taşıyor. Gene de daha akıcı bir diyalog sağlaması vesilesiyle e-mail'e göre daha etkin buluyorum.

Çevrimiçi konferans araçlarına alışmak biraz zorlayıcı. Telefondaki gibi iki kişilik bir görüşme olabildiği gibi, 30 kişilik bir grupla da gerçekleştirilebiliyor. Telefon'a göre artısı, ekran paylaşmaya olanak sağlaması. Ben de bu vesileyle kendime bir stereo bluetooth kulaklık edindim bir yandan :) Ama birkaç kişi varsa görüşmede, insan bir yandan uzay boşluğuna konuşuyor gibi hissediyor. Görsel hiçbir etkileşim olamıyor. Bir söz isteyecek olsan, insan tereddüt ediyor nerede konuya gireyim diye. Yanlış anlaşılmalar da çok olası bir yandan.

Bu arada belirtmek isterim ki çalıştığım şirketin iyi bir toplantı kültürü var. Herkes muhakkak zamanında katılır, toplantı tam zamanında bitirilir (uzayacak bir konu için mutlaka başka bir toplantı organize edilir), bir moderatör görüşmeyi yönetir ve daha görüşme gerçekleşmeden bir toplantı ajandası ilan edilir.

Herkes katılacaktır ki gene en güzeli yüz yüze iletişim. Sandalyeni birilerinin yanına çekip veya bir yere kapanıp bir konuya girişmek gibisi yok. Adabıyla uygulandığı vakit, sonuç almaya çok daha odaklı bir kanal kesinlikle.

Son olarak; mesele haline gelebilecek birkaç konu daha şu şekilde özetlenebilir:

  • Ülkeler arasındaki saat farkı.
  • Yabancı dil konuşmanın ve anlamanın zorlukları. Bazı insanları anlamak özellikle zor olabiliyor.
  • Çevrimiçi konferans araçlarında düşük ses ve görüntü kalitesi. Bazen kulaklığı neredeyse beynime kadar sokuyorum :)
  • Samimiyetsizlik 

Sonuç bölümünde, Agile Menifestonun 12 prensibinden birine atıfta bulunarak, konuyu artık kapatayım :)

The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

9/03/2016

İstanholm Sendromu

Bizim meslek, sermayesinin bilgisayar olması dolayısıyla taşınmaya müsait bir ortama sahip. Yalnız, evden ya da sağdan soldan çalışmak bir kenarda dursun, iş maalesef ancak büyük şehirlerde bulunabiliyor. Büyük şehir derken onlar da genellikle İstanbul, Ankara ve İzmir. İstanbul bu konuda da memleketin amiral gemisi zaten.

Bu dediğim, bizim sektöre özel bir durum değil elbette; daha çok bir Türkiye gerçeği. Bunun altında da bir çok sosyo ekonomik neden yer alıyor. Bakılırsa Türkiye'nin birçok kentindeki üniversitelerde teknokentler de açılıyor ama henüz Anadolumuz'da ya da Trakya da alıp yürüyen bir firma duymadım maalesef. Bu durum yakın gelecekte de değişebilir gibi görünmüyor.  Buradaki engelleri pazara yakınlık ile açıklamak bence çok mümkün değil gibi görünüyor. Halbuki büyük şehirlerin maliyetleri de çok yüksek bir yandan da. Yetenekli insanların takıma dahil edilmesi ve nispeten küçük şehirlerde yaşamaya ikna edilmesi bence mümkün ama yüksek turn-over oranının olduğu bir sektörde, hem çalışan hem de işveren için en büyük problem olarak bunu görüyorum.

Arada şöyle bir anımı da paylaşmak istiyorum. Birkaç ay önce, bizim sektörde büyük bir firma, bir işi üstlenmek için görüşmeye gelmişti. Görüşürken, bizim arkadaşlardan biri, turn-over oranlarını sordu firma yetkilisine. Sonuçta bir know-how aktarımı da yapılacaktı ve sürekli değişen insanlar bizim açımızdan büyük problem yaratabilirdi. Sayın yetkili, İstanbul'daki ofislerinde bu sürenin 1,5 sene olduğunu; ama İzmir'de nadiren işten ayrılma yaşandığını çünkü ayrılanların kolay kolay iş bulamadıklarını gurur duyarak anlatmıştı.

Diğer bir opsiyon da home office çalışma elbette. Yalnız, home office olayının iş veren tarafından yatmak olarak algılandığı ve bazı kişiler tarafından da bu şekilde suistimal edildiği ülkemde artık bunu düşünmekten vazgeçtim. Halbuki bence sürdürülebilir bir şekilde icra edilmesi mümkün. Scott Hanselman'ın güzel bir yazısı var bu konuda, herkese tavsiye ederim.
http://www.hanselman.com/blog/BeingARemoteWorkerSucksLongLiveTheRemoteWorker.aspx

Artık, yaşama şartlarının gittikçe zorlaştığı büyük şehirlerde, bu durumun uzun vadede doğal bir sonuç olarak değişeceğini düşünüyorum. Esasında bunu umut ediyorum diyebilirim şimdilik.

8/13/2016

Asosyal Bir Meslek Mi Yapıyoruz?

Baştan şöyle diyebilirim ki, mesleği bilmeyenlerin ya da yeterince tecrübe etmeyenlerin düşüncesinin aksine yazılım geliştirme çok da sosyal bir iştir.  Nedense bilgisayarla uğraşan insanlar iş dışındaki hayatlarında genellikle asosyaldir görünümlüdür diye bir algı var ama en azından benim etrafımdaki insanlar içerisinde bir oran yaparsak, diğer mesleklerden de çok farklı değil. Sadece bilgisayarda daha fazla geçiriyor olabiliriz, o kadar.

Bir yazılım için geliştirilirken, bunun analizinin yapılmasından sürümünün hazırlanmasına kadar geçen sürede bir çok insanla temas kurmak zorundayız. Hatta benim de öyle kapanıp bütün gün sadece kod yazdığım da sık değildir. Çeşitli vesilelerle bir çok kez gün içerisinde ekip arkadaşlarımla ya da başka ekiplerle görüşürüm. Bu kurumsal bir düzen de olabilir, serbest meslek bir düzen de olabilir aslında.

Ayrıca, insanların arasında dialogların azalmasına sebep veren araçlardan da çok hoşlanmam. Evet, bütün gün birilerinin zırt pırt işinin ortasına seni kesmesi çok büyük verimsizliğe sebep verir ama iletişim kanalını top yekün kapatmamak lazım bir yandan da. Mesela, karşılıklı oturan iki kişinin bir messenger ile konuşması bana saçma geliyor (evet ben de yapıyorum bazen :))

7/15/2016

İş Değiştirdim :)

Gene iş değiştirdim diyeceğim, bilenler şaşırmayacak herhalde :) Esasında şaka bir yana, aile büyüklerimiz neden iş değiştirdiğimi hala idrak etmekte zorlanıyorlar. Onların zamanında girdiğin işten emekli olurmuşsun. Herhalde benim yaşlarımdaki veya benden genç arkadaşlar bunu çok duymuşlardır.

İnsan, doğal olarak, kendisi için en tatmin edici hayatı kurmak istiyor. Günlük hayatımızın büyük bir bölümü iş yerinde geçiyor ve bu tatmin, maddi boyutta ne kadar yüksek olursa olsun, manevi tatminin önüne geçmemesi gerekiyor kendi fikrimce.Yaptığım işten memnun değilsem veya iş yerinde bir huzursuzluk ortamı çakılıp kalmışsa, oradan hicret etmem gerektiğini hissetmeye başlıyorum. Hiç durup dururken veya daha çok kazanırım diye iş değiştirmedim hayatımda. Son iş yerinde de 4 senedir çalışıyordum (rekorum :)). Yıllarca da ayaklarım geri geri gitmemişti sabah kalktığımda, hatta keyifle gittiğimi bile söyleyebilirim. Başlarken bu benim son işim, bundan sonra olsa olsa kendi işimi yaparım dediğimi dün gibi hatırlıyorum :P

İş değiştirmenin en keyifli yanı, her zaman yeni insanlarla tanışmak ve yeni şeyler öğrenmek için de fırsat oluşturması. Bunun kişisel gelişimimde önemli bir yeri olduğumu düşünmüşümdür hep. Maddi olarak da hep daha iyiye gittiğimi de inkar itmeyeceğim elbette :)

Bu sefer gerçekten son olur herhalde, ancak kendi işime geçerim!