Kim neyi niye seçer? Java mı c# mı? Oracle vs SqlServer?

Yazı alıntıdır ama faydalı olacağını düşünüyorum.

“Bilgisayar mühendisliğini yeni kazanmış bir çok öğrenci, 2. 3. hatta 4. sınıf öğrencileri hangi alana kayacaklarını bilemiyorlar. Hangi yazılım dilini öğrenmesi gerektiğini ya da hangi database’i öğrenmesi gerektiğini bilmiyor ve bocalıyorlar. Hatta internet ile ilgili yazılım dili mi yoksa desktop uygulamaları ile ilgili yazılım dillerini mi öğrenmeleri gerektiği konularında çok sıkıntı yaşıyorlar.


Malesef üniversitedeki hocalar her nekadar MIT vs. gibi amerikan üniveristlerin bile mezun olsalar bu konularda öğrencilere pek yardımcı olamıyorlar. Bunların sebeplerini sıralamak gerekirse:

Toplufoto1-300x1771. Hocaların bu konulardaki becerisizlikleri genellikle isteksizliklerinden kaynaklanıyor. Yani öğrencileri yönlendirmekten korkuyorlar. Tabuları yıkamıyorlar ve müfredat dışına çıkamıyorlar. Müfredatlar genelde çok kolay değişmiyor, ancak devrimci hocaların devreye girmesiyle dersin içeriği öğrecilere birşeyler vermeye başlıyor.

2. Hocaların öğrencilere fazla yardımcı olamamalarının diğer bir sebebi sektöre çok uzak olmaları. Sektöre yakın hocalar da ancak yakın oldukları firmalardaki çevreden çok fazla etkilenip sanki bu duydukları şeyleri kesin kural kabul etmeye başlıyorlar… Örneğin Java ve C++ gibi şeyleri tabu kabul ediyorlar…

3. Genellikle öğrencileri yazılımdan hem korkutuyorlar hem soğutuyorlar. Yazılım çok kolay, ama ingilizce kavramlarla bunları korkunç zor şeylermiş gibi sunuyorlar.

Okullarda yazılım öğretimleri çok yanlış bir şekilde başlıyor. Zaten bilgisayar mühendisliğinde bölüm dersleri genelde 3. sınıfta başlıyor… 3. sınıf çok geç!!! 3. sınıfa kadar zaten öğrencileri yetrince başı boş bırakıyorsunuz ve korkularının büyümesine sebep oluyorsunuz. Genellikle Java ve C++ derslerinde anlatılan OOP programlama dersleri yanlış tekniklerle anlatılır? ingilizce kitaplardan yanlış çevirilerle yapılan ders sonucunda öğrenciler neredeyse travma geçirirler. OOP içinde geçen Polimorfizm  vs kavramları öyle karmaşık anlatırlar ki… Bu karmaşıklığın en büyük sebeplerinden biri de öğrenciler yeterince programlama mantığını kapmadan onlara daha mükemmel programlama teknikleri anlatılmasıdır. Öğrencilere zor projeler veriyorlar. Zor proje veren hoca yücelir, zor proje veren üniversitenin adı iyiye çıkar mantığı hakim. Ama verilen projeleri öğrenciler çoğu zaman internetten indiri ve anlamadan teslim ederler. Hocalar da ödev başlıklarını aynen yabancı üniversitelerin sitelerinden alırlar. Amerika ve Kanada’da bulunan üniversitlerin verdiği yazılım ödev konularının aynısını hiç bir değişikliğe uğratmadan öğrencilere verirler. Öğretmenlerin çabalama kavramı genelde yabancı üniversitelerin ders içeriklerini kopyalamaktan geçiyor. Yaratıcı ödev verenler bir elin parmaklarını geçmiyor. Öğrenciler öğretmenlerini çok yaratıcı bulabilirler ama internet çağında basit google aramalarında herşey bulunuyor. Hocalar kendilerini yenilemeliler, ödev içeriklerini kendileri oluşturmalılar… Ders içeriğinde anlatılan şeyleri kendileri çalışıp gelmeliler… Gerekiyorsa piyasada çalışan bilgisayar mühendislerini derslerinde konuşmacı olarak getirmeliler. Bu tür şeyler öğrencileri gaza getirir. Üniversitede derse girenler ,atıyorum , C++ dersine giriyorsa önce öğrencilere C ve C++ farkını anlatmalılar. Visual C, Visual C++, Borland C, vs… gibi şeylerin ne anlama geldiğini MFC, VCL gibi kütüphanelerin amaçlarını anlatmalılar. Bunları anlatmadan OOP programlamada bisiklet/araba örneğine geçmemeliler… Database dersi verenler SQL anlatırken piyasadaki tüm databaseler olmasa da 5-6 tanesinin neler olduğunu ve ne zaman ne şekilde seçmeleri gerektiğini anlatmalılar. SQL SERVER, ORACLE, MySQL  gibi şeylerin neler olduğunu en azından bir ders anlatmalılar. Sınıflarda bu tür programların kurulumları anlatılması gerek. yani SELECT, DELETE; INSERT; WHERE GROUP BY anlatmakla database dersi geçiştirilmemeli. Stored Procedure, Fonksiyon anlatılmalı ve bunların Java, C#, ve diğer programlama toolarında kullanımı da anlatılması gerekir. Tamam herşeyi hocalar anlatamaz ama hocalar sınıflarda OOP dersinde bisiklet anlatmayı, database dersinde SQL anlatmayı bırakmalılar. Bunları yaşayan projeler içinde anlatmalılar. Bu anlatımlar sanıldığı gibi uzun şeyler değil. SQL komutları 1 günde öğrenilir/öğretilir… Daha detaylı şeyler anlatılmalı. Ole DB, ODBC anlatılmalı… Database seçimin neye göre yapılacağı öğrencilere anlatılmalı. Bu yazımızı bu konularda öğrencilere ve bu işlerden az anlayanlara biraz yardımcı olmak için yazıyorum… Sitemizin üniversite öğrencilerine yaptığı katkıyı her geçen gün görüyoruz, sizlerden bu konularda çok sayıda email geliyor. Email göndermeye devam edin…

Üniversitelerde Programlama dersleri 1. sınıfta mutlaka yoğun bir şekilde başlamalı. Artık meslek liselerinin bilgisayar bölümlerinden mezun olanlardan bir çoğu malesef bilgisayar mühendisliğinden yeni mezun olmuş kişilerin %70’inden daha fazla şey biliyor. Çünkü okulda korkutulan üniveriste öğrencileri başı boş bırakıldıkları için boş boş mezun oluyorlar. Ancak iyi yerlerde staj yapanlar ve öğrenciyken parttime çalışanlar kendini geliştirebiliyor. Bitirme projesi yaparak malesef kendinizi geliştiremezsiniz.

OOP Seçimi? Program yazarken her zaman OOP mı yapmak zorundayız?
Hem evet hem hayır. OOP denilen şeyi gözünüde çok büyütmeyin. OOP bir kavramdır ve günümüzde hemen hemen tüm programlama dilleri OOP destekler. Yani java’yı seçerken ya da C++’ı seçerken bu diller OOP ‘dır diye SEÇMEMELİYİZ. Seçiyorsak başka kriterler devreye girmelidir. Bilmeyenler tarafından animasyon ve banner programı olarak bilinen FLASH’ın dili olan Action Script bile OOP modelini kullanır. Action Script 3.0 bilenler hemen mail atabilirler, AS3’ün bazı şeyleri OOP metodları farklı diyebilirsiniz. Ama hangi dilin saf OOP olduğunu söyleyebiliriz ki. Daha doğrusu kalıtımsallıklar ya da başka kurallar dilden dile farklılık gösterebilir. Bu yüzden bir öğrenci ya da mezun bilgisayar mühendisi ben OOP biliyorum diye ortalarda dolaşmamalı zaten OOP’yı bilmelidir. Ve hangi tooların OOP desteklediğini de bilmelidir. Çünkü banner programı diye küçümsenen Flash’ın yapabileceklerini bilmeyen bilgisayar mühendisleri bir proje geldiğinde hemen JavaApplet yapalım diye bilirler. Yani bir tool bilmek yetmiyor, öğrenciyken olaibldiğince şey öğrenin, mezun olunca da öğrenmeye devam edin. Yoksa sadece java biliyorsunuz diye Applet yapamaya kalkarsanız projelerin altından kalkamazsınız. Ayrıca Java biliyorsunuz diye Applet yapıp sonra security sınırlamalarına takılabilirsiniz. Burada demek istediğim Falsh ile yapın değil… Hatta flash ile ypılan hemen her şey Javascritp/DHTML ile yapılabiliyor. Eğer Javascirpt’in gücünü bilmezseniz seçimlerinizi yine yanlış yaparsınız. Aynı şekilde Javascript’in sınırlamalarını bilmezseniz yine patlarsınız. Bu yüzden ne kadar çok şeyi detaylı öğrenirseniz o  kadar seçim şansı yapma şansınız artar…

Konu dağılmadan gelelim en popüler 2 soruya:

C# mı ? JAVA mı?
Dünyada sadece bu ikisi yok, başka bir sürü şey var. Ama varsayalım sadece ikisi var. Yine saçma bir soru olur çünkü hangi projeyi ne amaçla hangi bütçeye göre yapacağınıza göre bu sorunun cevabı iş hayatınca çok büyük farklılıklar gösterir… Ayrıca soru C# mı Java mı olmamalı yanına bir çok tool da eklenmelidir. Yapacağınız projeye ve çevre faktörlerine göre seçiminiz yapmalaısınız. Bunlar şunlar…

1. Proje ne projesi?
2. Bütçeniz ne kadar?
3. Elinizdeki elemanlar hangilerini biliyor?
4. Birilerini etkilemeniz gerekecek mi?
5. Süre ne kadar?
6…

Proje ne projesi?
İnternet bankacılığı gibi bir internet uygulaması mı yoksa bir desktop uygulama mı? Genelde bir projeler tek bir tool kullanarak yapılıyor sanabilirsiniz. Ama her zaman öyle olmuyor. Bazen hem masaüstü program yazmanız hem internet uygulamaları yapmanız hem de mobil uygulamalar yapmanız gerekebilir. Buna göre de ihtiyaçlar değişir. Eskiden Java ilk çıktığında çok havalıydı özellikle kurumsal firmalar arasında… Özellikle enterprise uygulamalar geliştirmek için java tercih edilirdi. (niye bilen yok, sadece havalı!, sorsak bir sürü şey anlatırlar ama!!!) Ancak microsoft .NET çıkardıktan sonra özellikle C# çıkardıktan sonra özellikle üniversite öğrencileri arasında popüler oldu daha sonra bu kurumsal firmalara da sıçradı. Özellikle C# ile daha hızlı projeler geliştirebilmek bu etkiyi tetikledi.  Size tavsiyem hem java hem C# öğrenin sanıldığı gibi zor değil. her ikisiyle de projeler yapın.

ORACLE vs SQL SERVER
Oracle’a ihtiyacı olamayanlara bile Oracle satıyorlar, korku ve ün böyle birşey işte… Çoğu firmaya Express editionlar bile yetebilecekken Oracle ve Sql server diye tutturmanın bir anlamı yok. Ama size tavsiyem SQL server kullanmanız ve öğrenmeniz. Zaten Oracle kullanan büyük firmalar oracle admini istihdam ediyorlar. sıkışırsanız ondan yardım istersiniz ama SQL server bilmiyorum ya da şunu yapamadım derseniz küçük düşme ihtimaliniz var… Ama her iki ile de proje geliştirmiş olmak size daha çok şey katacaktır ve CV yazarken daha güzel duracaktır… Ayrıca Accsess ‘i de öğrenmeden geçmeyin. Excel’den veri okumayı database teknikleriyle öğrenin… Excel’i bilmek ilerde bir çok iş yaparken size kolaylık sağlayacaktır.  Çünkü müşterileriniz çoğu bilgiyi excel’de verecekler size…

Yani kısaca hangisini öğreneyim diye sormayın. Hepsini öğrenin girdiğiniz işlerde hangi kullanılıyorsa onu kullanmaya devam edin.

Bu arada programlama öğrenirken sadece tek bir dala yönelmeyin. Yani sadece internet programcılığını öğrenmeye kalmayın. Bol bol Desktop programları da yapın. Aynı şekilde sadece Desktop programcılık yapmayın internet programcılığı da yapın. Cep telefonunuz için uygulamalar da geliştirin. büyük firmaların yazdığı ürünleri mutlaka iyice incleyin. Photoshop öğrenin, Fireworks, Flash öğrenin. MS Office içinde gelen bir çok uygulama var bunları iyice incleyin. Bu incelemeleri bir bilgisayarcı gözüyle yapın. Butonlar nereye konuyor, yazılar nereye yazılıyor, resimler nereye konuyor bunları gözlemleyin.  Programları bilgisayarcı gözüyle inceleyin. Yani araba fabrikanız olsaydu ve rakip firma yeni bir model çıkarsa hemen içine girip her yerini kapısını penceresini vitesini incelerdiniz muhtemelen. Aynı şekilde önünüze gelen programların herşeyini inceleyin. Ayarların yapıldığı yerleri, menüleri, yerleşim şekilellerini, butonlarını bile inceleyin… Bir web sitesine IE ile giriyorsanız bir de firefox ile girip bakın, ne gibi farklar oluyor. Bir web sitesinin kullanıdğı teknolaojilerin neler olduğunu incleyin, IIS mi kullanıyor Apache mi? aspx ile ypılmış web sitesinin hangi sürüm olduğunu incleyin. Wisual studio ile mi yapılmış web sitesi yoksa başka tolarla mı? bunları mutkala inceleyin…Windows 7 çıkıyor programıclara ne gibi kolaylıklar sunuyor hemen inceleyin, internet Explorer 8 çıktı hemen inceleyin, developerlara sunduğu imkanları araştırın. Araştırın ki geri kalmayın, geri kalmayın ki seçimlerinizi daha doğru kriterlere göre yapın. Teknolojinin nereye yol aldığını görüp ona göre sizde rotanızı belirleyin. ”

Kaynak: bilgisayarmuhendisleri.com

Bir cevap yazın