Programlamaya Yeni Başlayacaklara

Merhaba bu yazımda sizlere temel konulardan bahsetmek ve programlamaya yeni adım atacak arkadaşlar için yol gösterici olacak bir kaç fikirden söz etmek istiyorum. Amacım yeni başlayan pek çok kişinin sorduğu sorulara cevap vermek ve cesaretlendirerek yollarına devam etmelerini sağlamaktır.

Programlama Dili Seçimi

Nasıl tek bir dil bilmek yetmiyorda insanlar İngilizce, Almanca ögreniyorsa bilgisayar dünyasında da tek bir dil bilmek yetmiyor. Günümüz programlama ortamlarında farklı dillerle yazılmış parçaları beraber çalıstırabilmek mümkün olduğu için, en az iki programlama dili bilmeniz iyi olur. Dilinizi seçerken soracağınız sorular:

1- Ürününüz birden fazla işletim sistemini destekleyecek mi?
2- Ürününüz web, istemci/sunucu, tek başına calışabilecek biçimde dizayn edilecek mi?
3- Ürününüz en son yazılım tekniklerini ve teknolojilerini uygulayabilir mi?
4- Kullanmayı düsündüğünüz veritabanlarını destekliyor mu?
5- Yazılım aracı/dili için eğitim verecek kuruluş var mı?
6- Diploma, sertifika veriliyor mu?
7- Dünyada başka kimler kullanıyor?
8- Örütbağında arama yaptığınızda kaç tane sonuç dönüyor?
9- İş bulma sitelerinde, sizin düşündüğünüz yazılım aracı/dili ile ilgili ne kadar iş ilanı var.
10- Ürününüzü dünya genelinde satmayı düşünüyor musunuz?
11- Araç/dil bu dizayna izin veriyor mu?
12- Yazılım aracı/dili üreten firma ile birlikte başka hangi firmalar bu araca/dile destek veriyor.
13- Ne kadar para harcamayı düşünüyorsunuz?

Buradaki araştırmaların hepsini Türkiye çapında değil dünya çapında yapın. En son sürümleri ve teknolojileri satın almaya bakın.

İkinci dil ile ilgili olarak tamamen karşıt bir firma/teknoloji seçin. Mesela VB ve Delphi, Java ve C++, C# ve Perl, PHP ve XML vs. İşletim sistemini de değiştirebilirsiniz. Mesela Linux/Kylix ve Windows/C++, Unix/Python ve Windows/XML, Linux/PHP ve Windows/HTML vs. Listeleri uzatmak mümkün.

Nasıl Başlanır

Dilinizi seçtikten sonra ilk yapacağıniz iş, ortama olan göz alışkanlığınızı kazanmak için menülerde ve ekranlarda gezinmeniz olacaktır. Burada ortam dedigimiz programlama yaptığınız dilin arayüzü olan IDE (Integrated Development Environment, Tümleşik Geliştirme Ortamı) hakkında bilgi sahibi olmak ve menülerde ne nerede bilgisini oluşturmaya çalışıyoruz. Eğer İngilizce biliyorsanız menüler üzerindeyken F1 tuşu ile yardım alabilir ve ne işe yaradığını öğrenebilirsiniz. Bundan sonra baslangıç seviyesi kitapları ile yola çıkarak adım adım dili öğrenmeye başlarsınız. Kitap dişinda deneme-yanılma yolu ile küçük projeler yapıp, dilinizin nelere imkan verdiğini ögrenebilirsiniz. İlk başlarda cok fazla zaman harcayarak mümkün olan her şeyi deneyin. Belli bir seviyeye geldikten sonra, belli konuları daha derin öğrenmeye başlarsınız. Dili biraz ögrendikten sonra bıranşlaşma için, veritabanı, donanım, sistem, ticari programlama gibi konulara eğilebilirsiniz.

Kitaplar

Her yeni başlayana tavsiye ettigim yazarlar, İhsan Karagülle, Memik Yanık, Zeydin Pala dışında kullandığınız dilin üreticisinin kitapları yada 3. parti firmaların kitapları çok yararlı olabilir. İlgilendiğiniz konularda referans kitaplarınızın bulunması ve ihtiyacınız olduğunda konu başlıklarını kullanarak yardım almanız çok iyi olur. Eger merkezlere uzak yerlerde oturuyorsanız örütbağ üzerinde sipariş verebileceğiniz yerler oldukça fazla. Aldığınızın kitapların yayinevlerinin sitelerinden kitapla ilgili düzeltmeler var mı kontrol edin. Kitapların pek çoğuna pdf formatında da erişebilirsiniz. Benim tercih ettiğim bir yöntem çünkü yerden tasarruf sağlıyor.

Örütbağ Üzerinde

E-posta listeleri çok yararlıdır ve teknolojileri günlük takip etmenizi sağlar. Özellikle Microsoft, Rational, IBM, CA, Inprise gibi büyük firmaların gazete e-postalarına üye olmanızı tavsiye ederim. Bu sayede yeni ürünler çıktığında veya seminerler olduğunda hemen haberiniz olur, ayrıca gidip bu firmaların sitelerinde debelenmekten kurtulursunuz. Haber sunucuları, programlamaya özel siteler’de işinizi görür. Önemli olan bir şekilde teknolojileri takip etmek ve güncel konulardan haberdar olmak. Yahoo, Google gibi sitelerin gruplarına da bakabilirsiniz. Hangisinde daha fazla üye ve mesaj varsa ona üye olun.

Teknolojiler

Seçtiginiz programlama dili ile son teknolojileri uygulamak mümkün mü? Fazla kod değişikliği yapmadan hem internet ortamnı hem istemci/sunucu yapılarını destekleyebiliyor musunuz? Yada daha da önemlisi seçtiginiz dil ile, bitmek tükenmek bilmeyen müşteri isteklerine cevap verebilecek misiniz. Platformlar arası veri alışverişi konularına destek veriyor mu? Hangi veritabanlarını destekliyor? Yada sizin istediğiniz veya kullanmayı düşündüğünüz veritabanını tam olarak destekliyor mu? Teknoloji demekle neyi kastediyoruz. ActiveX, SOAP, COM, DCOM, COM+, .NET, Web Services, RMI, IIOP, TCP/IP vs. gibi pek çok metod bahsettigimiz teknoloji alanına girer. Seçtiginiz dil ile bu teknolojilerden bazılarını desteklemek istiyor musunuz?

Analiz

Program yazarken kullanacağınız analiz metodolojileri en az kodlama yapmak kadar önemlidir. İster yolun başında bir programcı adayı olun ister programlama konusunda uzman olun metodoloji ve o metodolojiyi doğru uygulamak çok önemlidir. İyi yazılım, iyi bir analiz ile başlar. Analiz sizin programınızla neler yapacağınızın ve müşterinin problemlerine nasıl çözüm getireceğinizin bir taslağıdır. Analiz iş senaryolarınızı ortaya çıkarmanızı ve müşteri isteklerine daha iyi cevap vermenizi saglar. Analiz Metodolojileri nelerdir? Örneğin Modül Tabanlı Analiz (CBD, Component Based Development), Nesne Tabanlı Analiz (OOA, Object Oriented Analyse), Unified Modelling Analiz (bunun Türkçe’sine UM Analiz diyelim, pek iyi olmadı ama!), eXtreme Programming (Yazılım dünyasında XP olarak biliniyor fakat Windows XP ile karıştırmayın). Bu metodolojileri doğru biçimde projelerinizde uygularsanız verimlilik ve zamanında yetiştirmek açısından pek sorununuz olacağını zannetmiyorum. Yukarıda bahsettiğim konuları tek tek açıklayan makaleler de yazacağım.

Düzenli Çalışma

Kendinize bir hedef vermeden bilgisayarın başına oturmayın. Hedefinizi belirleyip ona göre yol alın. Projelerinize hep bir isim verin ve anlamlı bir isim verilmiş bir dizine kaydedin. Formlarınızın isimlerini ve başlıklarını muhakkak değiştirin. Bu sayede farklı formları farklı projelerde kullanmak istediğinizde isim çakışmaları olmaz. İsimlerden formlarınızın ne işe yaradığını kolayca anlayabilirsiniz. Her yiğidin bir yoğurt yiyişi olduğu gibi yazılım gruplarınında uyulması gereken kuralları vardır. Bir yazılım firmasında çalışmaya başladığınızda, ilk yapacağınız şey firma standartlarını öğrenmektir. Bu sayede ekip içi bilgi aliş verişi hızlı ve kesin olur.

Dökümantasyon

Yaptığınız çalışmaları, ufak projeleri kısacası ileride kullanabileceğiniz her kod parçasını yazıya dökün ve ne işe yaradığını, nasıl calıştığını, amacının ne olduğunu ister kodun içine yorum satırı olarak, ister bir Word dosyasına yazarak saklayın. Hangisi pratik geliyorsa. Bu tür bir çalışma ileride bir kod parçasına ihtiyacınız olduğunda kolayca bulmanızı sağlar.

İngilizce Kaynaklar

Yabanci dil bilmek pek çok konuda işimize yaradığı gibi, programlama konusunda da işimize yarayacaktır. Fakat öyle sular seller gibi bilmeye veya konuşurken aksanlı konuşucam diye ağzımızı burnumuzu bükmeye gerek yok. Sonuçta bizler Türk’üz ve konuşurken yabancı olduğumuzun anlaşılmasıda gayet doğal ve gereklidir. Yabancı dil bilgimiz, konumuzdaki yabancı yayınları takip edecek ve derdimizi anlatabilecek kadar olsa yeter. Bu nasihatlerden sonra gelelim yabancı yayınlara, örütbağı üzerinde bir arama ile pek çok yayına ulaşabilirsiniz. Bunların dışında Microsoft yayınları ve kitapları, Wrox yayınevinin kitapları, Visual Studio ile gelen MSDN (Microsoft Developer Network, Microsoft Geliştirici Ağı) tıkızları çok işinize yarayabilir. Inprise ürünleri ile birlikte gelen yardım dosyalarıda çok yararlı olabilir. Ek olarak firmaların sitelerinde her zaman deneme sürümlerinin tıkızlarının adresinize postalanması için gerekli formları bulup doldurabilirsiniz. Ayrıca pek çok teknik dökümanı, gerçek projeleri, egitimle ilgili yazıları bilgisayarınıza indirebilirsiniz. Firmaların Türkiye temsilciliklerinden birer bağlantıya sahip olmanızda iyi olur.

Kurslar

Kursların piyasa tarafından tanınmış ve verdikleri sertifikaların dünya çapında geçerli olmasına dikkat edin. Çalışmalarınızın kurs ile sınırlı kalmaması için, evinizde de bazı projeler geliştiriyor olmanız gerekir. Türkiye’de çoğu büyük şehirlerde pek çok kurs mevcut. Kurs ile birlikte çevrenizde oluşacak arkadaş grubu iyi bir yönlendirme ile birlikte iyi projelere imza atabilir. Unutmayın çevrenizdeki grup ileride iş arkadaşlığına dönüşebilir.

Amatör Ruhu

Hangi işle uğraşıyor olursanız olun, dünyanın en kötü şeyi, ugraştığınız alanda her şeyi bildiğinizi iddia etmek olacaktır. İşte bu tür adamlardan uzak duracaksınız. Hayat zaten kendi içinde bir okul bizlerde bu okulun ögrencileriyiz. Her zaman öğrenecek yeni şeyler olacak. Bazen hiç ummadığıniz bir çıraktan bir şeyler kapabilirsiniz. Yada artık kendinizi programlama hakkında ermiş olarak gördüğünüz anda bir çırak çıkıp algoritmalarınızın şöyle şöyle yaparsanız daha hızlı çalışacağını söylemesi sizi yerin dibine sokabilir. Ne yapmak gerekir, çırağı karşınıza alıp teoremleri hakkında konuşursunuz ve sonuçta gerçekten haklıysa dediklerini uygulayıp dersinizi alırsınız. Daha sonra bu dersi baska çıraklara aktarmak üzere tabii. Ögrenmekten ve doğru bildiğiniz şeylerin aslında yanlış olduğunu anladığınızda değiştirmekten çekinmeyin. Yanlışları bulan kişileri tebrik edin ve daha fazla yanlış bulmaları için yönlendirin. Ancak bu şekilde ilerleme kaydedebiliriz.

Ben Neler Yapıyorum

Gelelim bu kadar bilgiden sonra ben bunları ne kadar uyguluyorum. Dil olarak seçimlerim VB.NET ve C#. Bunlarla birlikte XML ve SOAP, Web Services gibi teknolojileri öğrenmeye çalışıyorum. İşletim sistemi olarak, Windows ve Red Hat Linux ortamlarını seçtim. Web Sunucu için Linux üzerinde Apache Web Server, Windows üzerinde IIS kullanıyorum, bir yandan ASP.NET ile takılırken diğer yandan Linux üzerinde Java Bean ve EJB nasıl yayınlanır araştırıyorum. İlerde Java dilini de oğrenme planım var. Veritabanı olarak Linux/IBM DB2 ve Windows/SQL Server kullanmaya çalışıyorum. UML, OO, CBD metodolojilerinde de calışmalarım var. Araç olarak, Rational, CA, Microsoft, IBM, BEA ürünlerini kullanıyorum. Tabii ki tek bilgisayar yetmiyor. En az 3 adet lazım, bir tanesi çift işletim sistemli ve hepsi ağ ile birbirine bağlı. Bilgisayarlardan birini çöpten buldum.

Sizde böyle bir sistemi bir kaç arkadaş birleşip kurabilirsiniz. Birde rahatça girip çikabileceğiniz bir oda buldunuz mu, iş proje bulmaya kalıyor. Mahallenizdeki esnaf ile hiç bu konuları konuştunuz mu? Toplumumuzun gelişmesi ve yeni şeyleri ögrenmesi birazda size bağlı. Mahalle esnafına bilgisayardan ve özel yapıışlmis programların yararlarından bahsettiniz mi? E-posta, internet, işletim sistemi gibi konularda onları bilgilendirmeyi hiç düşündünüz mü? Biraz da misyonerlik gibi bir göreviniz var aslında. Etrafınızdaki insanlara bildiklerinizi aktarmayı hiç düşündünüz mü?

Sonuç

Yukarıda anlattığım yöntemler her yazılımcının alet çantasını geliştirmesi için çok güzel yöntemler. Fakat nasıl evinizde bir tamirata giriştiğinizde alet çantasındaki her aracı kullanmıyorsanız, yazılımcı olarak alet çantanızı da o şekilde kullanacaksınız. Öğreneceğiniz her bilgi alet çantanızda yerini alacak ve yeri geldiğinde çıkarıp kullanmaktan çekinmeyeceksiniz. Bu arada aletlerinizde gelişmeler de olabilir, zaman içerisinde bazıları yok olabilir. Önemli olan sürekli devinim içinde ögrenmeye ve gelişmeye açık olmaktır.

Hepinize kolay gelsin.

Posted in Bilişim, Türkçe.