Java ve .NET bağlamında Bilmek ve Öğrenmek Üzerine
Geçenlerde Friend Feed‘de(FF) bir soru vardı: “Java mı .NET mi?” Sanırım soruyu soran kişi bir yazılım şirketinde ya da bir şirketin BT bölümünde çalışıyordu ve önlerindeki bir proje için teknoloji seçimi yapmak noktasındaydılar. Bu son derece tabi bir durum; pek çok şirket bu iki teknolojinin dışındaki teknolojileri kullanıyorlarlar ve hayatlarının belli bir noktasında daha yaygın olan bu iki teknolojiden birini seçip onunla devam etmek istiyor. FF’de sorulan böyle bir soruya cevap verenler derin teknik analizler yaparken ya da tecrübelerini aktarırken ben de ufak bir katkıda bulunmak istedim ve seçimdeki temel kriterin “bilmek” olduğunu söyleyiverdim.
“Java mı .NET mi ?” her zaman çok güzel bir entellektüel tartışma konusu olur. Katılanların birikimlerine göre yapılacak kıyaslamalar ufuk açıcı olur. Aktarılan tecrübeleri okumak muhakkak mükemmeldir. Bu seviyede olmasa da kesinlikle bu açıdan okumaya değer fikirler oldu cevaplar arasında. Ama beni rahatsız eden birşey vardı tartışanlar arasında. Java ya da .NET sanki öyle iki haftada öğrenilecekmiş de önemli olan teknik meziyetlerini göz önüne alarak doğru bir seçim yapabilmekmiş. Benim hissettiğim hava böyleydi. Bu yaklaşım, teknik açıdan bir kere öğrenmenin maliyetini yadsıyan bir yaklaşım. Daha da temelde, öğrenmenin ve öğrenme sürecinin sonunda da bilir hale gelmenin ne olduğunu bilmeyen bir yaklaşım. Bu ise sadece BT çalışanlarına özgü bir durum da değil bence: Tamam mühendisler çözüm odaklıdırlar, istenen sonucu çıkarmaya çalışırlar, mutlak doğru çoğu zaman onların amacı değildir, doğru ama şunu da teslim edelim: Millet olarak “bilmek” konusunda problemliyiz, bilmenin ne olduğunu bilmiyoruz, dolayısıyla öğrenmenin nasıl bir süreç olduğundan da bihaberiz, hatta kanımca öğrenmenin süreç olduğunu düşünmüyoruz bile. Hap gibi yani, otur, öğren ve kalk.
Tekrar “Java mı .NET mi?” tartışmasına tekrar dönersek, bence bırakın böyle bir seçimi, Java içinde Servlet-JSP mi kullanalım yoksa Struts mı yoksa JSF mi gibi bir seçimde bile projeyi gerçekleştirecek takımın bu teknolojileri “bilme” noktasında ne konumda olduğu önemliyken, bu konum projenin bitiş süresini direk etkileyebilecek faktörlerden birisi olduğu halde nasıl olur da çok daha radikal ve temel bir kararda bilmenin önemi yadsınır. Acaba biz bilmekten “Akın hocadan 15 gün Java dersi aldık ya” gibi bir şeyi mi kastediyoruz yoksa “Gençler zaten mühendis, başları sıkışınca da Google’dan arayıp, deneye yanıla sonuca varırlar”ı mı kastediyoruz? Böyle bir süreçle öğrenme denen şey nasıl gerçekleşir? Sonunda birşeyleri bilir hale gelebilir miyiz? Yani bu şekilde çözdüğümüze benzer bir başka sorunla karşılaştığımızda, artık sorunun çözümünü iyi bildiğimizi ve hızlıca çözebileceğimizi söyleyebilir miyiz? Daha da önemlisi hayatımızda sadece sorun mu çözeriz biz? Hiç mi bir sorun ortada yokken, belki ihtiyaçlardan ya da ne bileyim daha farklı saiklerden yola çıkarak, yaratıcılığımızı kullanıp güzel şeyler ortaya koymayı denemeyiz? ABD’de yaşarken Türkiye’yi ziyarete geldiğimde tanıştığım arkadaşlar bana “şöyle birisi var şu siteyi göçertti” gibisinden üç-beş hackerdan bahsettiğinde ben de “yahu bozmak yerine hiç mi yapan, inşa eden ya da kuran birisi yok Allah aşkına?” diye sormadan edememiştim 🙂
Bence çok iyi Servlet-JSP programlama bilenler bile ciddi bir arge çalışmasını kaldırmayacak, zaman açısından kritik bir bitiş tarihine sahip projede örneğin JSF kullanmamalılar. Yoksa proje de projede çalışanlar da çok sıkıntı çekerler.
Yazımı bir başka FF sorusu ile bitireyim. Bu sene üniversiteler ne zaman açıldı? Eylül sonunda ya da Ekim başında falan sanırım. Peki, Ekim’in 27’sinde bir Bilgisayar Mühendisliği 1. sınıf öğrencisi FF’e mesaj gönderip “Ben artık C’nin temellerini öğrendim, şimdi hangi dili öğreneyim?” diye bir soru sorarsa siz ona hangi cevabı verirdiniz? 🙂
Toplam görüntülenme sayısı: 1971
Tweets that mention Java ve .NET bağlamında Bilmek ve Öğrenmek Üzerine - Java Günlüğüm -- Topsy.com
04 Kasım 2010 @ 18:13
[…] This post was mentioned on Twitter by Akin Kaldiroglu, Akin Kaldiroglu. Akin Kaldiroglu said: Java ve .NET bağlamında Bilmek ve Öğrenmek Üzerine: http://www.javaturk.org/?p=961 http://ff.im/tbhGG […]
Batuhan Büyükgüzel
05 Kasım 2010 @ 01:15
“Peki sen C’nin temellerini biliyor musun?” nasıl 🙂
Selman
05 Kasım 2010 @ 16:30
Aynı fikirdeyim. Bir kere bir programlama dilini bilmenin ne demeye denk geldiğini oturtmalıyız. Kurumsal uygulamalar geliştiriyorsak mesela Java bilmek demek Java’nın Hibernate, Seam, Spring, JSF vesair gibi bir çok yazılım çatısına da aşinalığı kapsıyordur. Ki bunlara aşina olabilmek demek uzun tecrübeler ve çalışmalara denk gelir gerçekte. Ama bir projenin başlangıç aşamasında hangi teknolojiler kullanılacağı kararını verirken bunlar pek hesaba katılmaz, yüzeysel yaklaşımlar ile yola çıkılır.
Akin
05 Kasım 2010 @ 23:56
Mesele kimin neyi bildiği değil ki sevgili Batuhan. Bilginin sağlıklı bir şekilde algılanmadığı bir ortamda kimin ne bildiğini iddia etmesinin hiçbir anlamı yok. Çünkü, bildiklerimizi başka toplumların bildikleriyle karşılaştırınca foyamız meydana çıkıyor.
Mert Kavi
12 Şubat 2011 @ 13:44
“Bence çok iyi Servlet-JSP programlama bilenler bile ciddi bir arge çalışmasını kaldırmayacak, zaman açısından kritik bir bitiş tarihine sahip projede örneğin JSF kullanmamalılar. Yoksa proje de projede çalışanlar da çok sıkıntı çekerler.”
JSF için neden böyle dediğinizi öğrenebilir miyim ?
Akin
12 Şubat 2011 @ 16:31
Çünkü JSF’i bilmek, bir JSF ürününü yani kütüphanesini etkin ve hızlı olarak kullanmak anlamına gelmiyor. Kurumsal uygulamalar çok karmaşık web arayüzlerine sahip oluyorlar ve daha önce bir projede kullanıp pek çok bileşenini öğrendiğiniz bir JSF ürününe sahip değilseniz, bileşenleri, özelliklerini ve API’lerini tek tek öğrenerek sayfaları bina edeceksiniz demektir ki bu da çok zaman alacak, tekrarları çok olacaktır.
Java, malumunuz, “specification” tabanlı bir dildir. Specification ya da şartname, olması gereken minimumu tarif eder. Kişiler, kurumlar da bu tarif üzerine ürün çıkarırlar. Tarifi bilmek, bir üründe çok akıcı hale gelmekle aynı şey değildir. Bundan dolayı projede AR-GE için marjınız yoksa yeni bir Java EE teknolojisi kullanmak her zaman risklidir.