“Java biliyorum” diyebilmek için neler gereklidir? Yazılımsal ve fikirsel olarak nelere ihtiyaç vardır? Sadece teorik olarak JAVA dilini bilmek yeter mi yoksa insanın canından bezdiren kurulum aşamaları, linux, mvc disiplini, en az bir framework ve gerekli araçların da (artık bu saatten sonra teorinin yetmeyeceğini anlamışsınızdır) öğrenilmesi biliyorum diyebilmeye yetecek mi?
.net frameworkune aşina, webde 2-3 yıl asp.net olsun .php olsun javascripti olsun deneyimler kazanan insanlar javaya ne kadar alışabilir? Ve daha birçok soru var aklımda cevaplanmayı bekleyen…
01.01.2015
Geçtiğimiz yılda java dili ve ortamı için önemli adımlar attım. Biraz anlatmak kendim için de iyi olacaktır. Hemen başlıyorum,
Geçtiğimiz sene Spring Framework’un kabiliyetlerine göz attım. Bunun için internette yabancı kaynaklı birçok pdf var. Bunlara boş vakitlerde göz gezdirerek Spring ile neler yapılabilir, genel olarak bahsetmek gerekirse notasyon yönetimi ne fark ve fayda sağlar, Spring Framework hangi ortamlarda kullanılabilir, MVC managment’i nasıldır bunları gördüm.
Bir örnekle; android için, web ortamı ve desktop ortamı için yazdığınız kodu Spring ile yönetebilirsiniz. Veritabanı için hazır kütüphaneleri kolaylıkla kullanabilir, Spring mvc & hibernate ile kurumsal projelere ayak uyduracak kodlar yazabilirsiniz.
Gerçekten de etkilendim. Java ortamı, Spring Framework & Yeteneklerini kullanabilen geliştiricileri kendine bağlıyor. Java, üzerine uzmanlaşıp onunla ömür boyu yaşamaya değer bir dil ve ortam sağlamış. Kod yazmaktan zevk alan insan daha ne ister ki! Bu aşık eder insanı kendine.
“Kurumsal işleri için Java kullanılır” sözünü java ile geçirdiğim süre içinde değerlendirdiğimde her şeyin bu ortamda yıllar önce temelinin atıldığını, bir düzenin kurulduğunu gördüm. Zor işlerin java ile başarıldığını gördüğümde, Jvm’in yeteneklerini, jvm’in big data managment projelerinde sağladığı esneklikleri gördümde “işte aradığım bu” dedim.
Hani şu beğenmediğimiz 200 – 300 mb’lık Eclipse var ya, öyle yeteneklere sahip olabiliyor ki .Net Visual Studiodan daha eğlenceli olabiliyor! Projelerin çoklu geliştirici desteği, repository ve code history yönetimi, -her konuda- bağımsızlık, testler (testler çok önemli. Ayrı başlıkta bunun önemine değinmeyi planlıyorum), taşınabilirlik, kütüphane yönetimi, mocking, dakikalar içinde service yazmak gibi konularının önemli olduğu projelerde (kısaca kurumsal ve büyük projelerde 🙂 ) java ve ortamı kullanılmalı. .Net artık benim için bir alternatif. Bundan eminim. .Net ortamı için Microsoft Foundation Server ve Cloud Development için Azure (bunların registration süreci bile insanı boğuyor) gerekiyorsa JAVA tarafında da elbet bir karşılığı var ve kullandığımız ortam; yıllar önce okulda Java dilinde ekrana “hello sefer” yazıp kapattığımız Eclipse ortamı …
Dur. Tasarım dediğin uygulamanın tasarımından ibaret değil. İçindeki kodun da bir tasarımı var. Kullandığın yöntemlerin de, kurduğun bağlantının da, bağlandığın servisin de…
Uzun uzadıya tasarım yok şöyle yapılmalı yok böyle yapılmalı demeyeceğim. Ki zaten tasarım experi değilim…
Şöyle yapalım; internette ilgimi çeken tasarım kaynaklarının linkini paylaşayım; bir bakın. Sonra ne – nasıl olmalı yaptığın işin neyi doğru neyi yanlış bunu siz sorgulayın.
Güzel yaz lan şu kodu diyen Liskov Substitution (LSP) disiplini Burak Selim Şenyurt’tan
Üç beş güzel tasarım sunan chrome eklentisi PANDA, Ahmet Sülek ve William Channer’dan
Patronu ikna ettikten sonra cidden güzel olan tasarımları nasıl yapacağını açıklayan ve örnekleyen site GoodUI
Tasarım yeteneğim yok, benden front-end developer olmaz diyenlere ‘Hıh! Salak beni kullansana’ diyen site BootStrap ayrıca utanmadan performansa yönelik optimizasyon sağlayan araçlar da sunuyor.
Yaptık ettik nerde saklıcaz da gerektiğinde bulucaz dersen al eline bir kova ve doldur. Ya da BitBucket (ve de sourceTree)
{Şimdilik bu kadar. Güncellenecek mi? -Tabiki de!}
Konumuz beyin. Öncelikle bu makalenin artımlı olarak düzenleneceğini belirteyim. eksik ve kopuk olarak yazmış olabilirim; fikirler kelimeler hazır değil…
Normalde ‘kız beyni’ – ‘erkek beyni’, ‘tasarımcı beyni’ – ‘zeki insan beyni’ gibi ayrımlar yapılır. Peki karşıt özelliklerin bir insanda buluştuğu beyin nasıl tanımlanır? Buna combo mu desek mesela? Hybrid ya da…
Bir kategori uyduramadım, gerek de yok zaten. Çünkü ikisine de sahip olduğunda yaptığın işe, işinin bölümüne göre beyninin ‘tasarımcı’ olan sağını, ‘fikir adamı’ olan solunu kullanıyorsun. Diğer adı koyulmuş düşünce fikirleri de önyargılarını aştığında sende; içinde buluşuyor… Önemli olan önyargıları bırakıp da bir fikri somutlaştırırken; yaptığın işin doğru olduğuna önce kendin inanman ve yolundan şaşmaman..
Arkadaşın eğer bir fikir söylüyor da senin fikrini komple değiştirmene sebep oluyorsa sende ciddi bir hata var demektir. Fikrine fikir katsın bakış açını genişletsin ama direkt olarak etki etmesin. Olayın doğrusu bu. Kim ne derse desin.
Aslında olayların birçoğu önyargı ve kendine güvenmekle ilgili. Kendine güvenmeyen insan otomatik pilotu olan önyargısına güveniyor -> arkadaşı birşey söylüyorsa hemen true cevabını atıyor ve… işte boka sardı… sonrası felaket. Eğer önyargını kontrol edebiliyor, karşındakinin asıl amacını anlayabiliyorsan beynini kontrolden çıkarmıyorsun ve felaketten o an içinde kurtulmuş oluyorsun.
Ek: özellikle de kurumsal bir şirkette çalışmaya başladıktan sonra bunların ciddi konular olduğunu gördüm.
Konuya dönüyorum, beyin yoğun durumlarda veya sakinlik içinde kendini hardcore çalışmaya veya rolantiye almaya müsait yapıda. Tek tek bunları yapıyorsan sorun yok. Ya işin her ikisini de aynı anda kullanmayı gerektiriyorsa!? İşte o duruma ‘Yazılımcı beyni’ diye bir tabir buldum. Bu beyin tiptronik vitese sahip mercedesler (hem otomatik hem de manuel olarak vites değiştirebildiğin vites kutusu) gibi çalışır. Uygulamanın tasarımını yaparken beynin sağını, bitirdin kodu yaz solunu, kodu tasarıma uyarla sağını, test et solunu, bakış açını değiştir her iki tarafı da… Bunu yapabilen çok fazla insan göremedim. Yapabildiğini sandığım insanları da uzun süre sonra tekrar gördüğümde önyargılarına bağlandıklarını – bağımlı olduklarını gördüm; acıdım. Yazık.
Artık bu yazının devamı için örnek vermem gerekiyor. Hangisini versem bilemiyorum. Yazacağım….
Gelecek.