Bilgisayar Eğitim Merkezi
Ana Sayfa Hakkımızda İletişim Uzaktan Eğitim Ön Kayıt
 
İyi Bir Yazılımcı Olmanın Reçetesi  - 19.02.2014
 

 Yetenek

Çoğuna göre yetenek bu işin önemli bir parçası. Bir programlama dili öğrenmek ve bunu kullanarak bazı programla geliştirmek için çok fazla yeteneğe ihtiyacınız yok tabi ki, ama bana sorarsanız, bu konuda yol almak için yetenek önemli bir faktör. Şöyle düşünün, neredeyse herkes şarkı söyleyebiliyor değil mi? Ancak, herkesin iyi bir şarkıcı olmasını bekleyemeyiz. Bence, programcılık konusunun da bundan bir farkı yok. Herkes program yazabilir, ama herkesin iyi bir yazılımcı olmasını bekleyemeyiz.

 

Bence programcılık, matematik, dil, sistemli düşünce, sembollerle ve soyut düşünebilme gibi alanlarda yetenekli olmayı gerektiriyor. Aslına bakarsanız, programcılığın teorik kısmının, matematikten pek bir farkı yok. Dolayısıyla, iyi bir programcı olabilmek için, bu alanlarda iyi bir kavrama gücü gerektirdiğini düşünüyorum.

Merak

Merak iyi bir programcı olmak için sahip olmanız gereken bir özellik, çünkü, sizi araştırmaya ve kurcalamaya itecek olan güç, bu merak unsuru olacak. Yukarıda bahsi geçen yeteneklere sahip olsanız da, eğer bu konuda bir merakınız yoksa, programcılık sizi heyecanlandırmıyor ise, bu konuda fazla bir yol katedemezsiniz.

Meraklı olmadan, saatlerce gcc belgerini kim okur ki? Ya da, oturup yeni bir programlama dili öğrenmeye kalkar. Programcılık alanında sizi iteleyebilecek tek şey meraktır. O yüzden, inancım şu ki, para karşılığı bu işle uğraşan kişiler, bu işi merak ve ilgisinden yapan kişiler kadar yol alamazlar. Yanlış anlaşılmasın, meraklı kişilerin bu alanda para kazanmasından bahsetmiyorum. Programcılık konusunda meraklı olmayıp, sırf parası için (veya hacker olmak için :/) programcılık yapanlardan bahsediyorum. Meraklı olan kişiler, iş dışı saatlerde de kendileri için kod yazarlar, farklı şeyler denerler, kendilerini sürekli bir adım ileriye götürürler. O yüzden, iyi bir yazılımcı olmak için, meraklı olmanız gerekir.

Zaman

Programcılıkta ilerlemek için zamana ihtiyacınız olacak, hem de çok zamana. Özellikle, asıl işiniz programcılık değilse, boş vakitlerinizi iyi değerlendirmeniz, ve doğru şekilde kendinizi geliştirmeniz gerekiyor. Bu alanda pratik yapılması ve öğrenilmesi gereken o kadar çok şey var ki, tüm ömrünüzü adayan biri bile, tümünü öğrenemez.

İngilizce

İngilizce öğrenmek önemli, çünkü, bu işin kaynağı İngilizce. Evet, internette Türkçe kaynaklar var ama bunlar İngilizce kaynaklarla kıyaslanamaz. Programların ve kütüphanelerin orjinal belgeri, mail grupları, kullanıcı blogları hep ingilizce. Eğer Türkçe kaynaklara bağımlı kalırsanız, ne kadar yetenekli ve meraklı olursanız olun, kısıtlanacak ve kendinizi geliştirmek için gerekli kaynaklara ulaşamayacaksınız. O yüzden, Türkçe konuşan programcılar için İngilizce iletişim kurabilme yeteneği bir zorunluluk.

Algoritma ve veri yapısı

Öncelikle, programlama dili bilmek ile proglamlama bilmek arasındaki farkı idrak etmeniz gerekiyor. Programlama dili bilmek, Türkçe bilmeye benzetilirse, programlama bilmek, konuşacak konularınızın olmasına benzetilebilir. Eğer konuşacak birşeyiniz yoksa, bir dili bilmenin ne önemi var? Programlama bilmek, bir dili öğrendiğinizde onu etkin kullanabilmenin en önemli unsurudur.

İşte bu yüzden, özellikle programcılık maceranızın başlarında, ilk öğrendiğiniz dil ile birlikte, algoritmalar ve veri yapıları konusunda bilgi ve deneyim kazanmalısınız. Yalnız, tüm algoritmaları ezbere bilmelisiniz demiyorum, ama algorimalar ve veri yapılarınız konusunda fikir sahibi olmalısınız. Yukarıdaki benzetmenin üzerinden gidersek, algoritma ve veri yapılarını öğrenmek, kompozisyon yazmayı veya düzgün cümle kurmayı öğrenmeye benzetilebilir.

Algoritma ve veri yapıları öğrenirken, bu algoritmaları koda döküp test etmek isterseniz, kullanacağınız dil olarak C öneririm. Python'u ise bu konuda özellikle önermiyorum, çünkü Python'daki veri yapıları, öğrenme aşamasında, sizin için gereğinden fazlasını yapıyor.

Assembly kullanarak küçük bir program yazın

Assembly dilinde ufak tefek şeyler yazdığım sıralarda, kendimi matrix'i çözen neo gibi hissetmiştim. Assembly dilinde küçük bir program yazmak, programcılığın somut kısımlarına hakimiyetinizi oldukça geliştirecek, ufkunuzu açacak bir deneyim olabilir. Kaportanın içine girecek, işlemcinin nasıl çalıştığını, makine kodlarının nasıl şeyler olduğunu, işlemcinin 32 bit olması ile 64 bit olması arasında ne fark olduğunu çözeceksiniz. Assembly dilinde yazılabilecek proje önerisi olarak, linux'deki cat komutu, veya wc komutu verilebilir.

Yalnız, program yazmak için assembly dili kullanın demiyorum, assembly dilinde birkaç ufak tefek şey yazın diyorum. Yoksa, gündelik hayatta kullanmak için assembly öğrenilmez.

Küçük bir programlama dili geliştirin

Çok matrak veya yeni birşey olmasına gerek yok ama küçük bir programlama dili geliştirmenin size çok faydası olacağına inanıyorum. Böylece, derleyicilerin nasıl çalıştığını, programlama dillerinin nasıl işlediğini iyice içinize sindirebilirsiniz. Bu size, programlama konusunda çok farklı bir deneyim kazandıracaktır. Bir nevi, işin mutfağına girmiş olacaksınız. (bkz: Derleyici Araçları)

Farklı paradigmalara sahip diller öğrenin

Farklı paradigmaların, farklı hayat görüşleri var. Eğer farklı paradigmalara ait diller öğrenirseniz, programcılığa bakış açınızı genişletebilirsiniz. Önerilerim;

  • C: Prosedürel, low-level ve linux sistem programcılığı konusunda yaygın kullanılan bir dil. Ayrıca, algoritma ve veri yapıları çalışmalarınızda kullanabilirsiniz.
  • Java: Kullanım alanı yaygın olan, tam anlamıyla bir nesne tabanlı programlama dili. C'ye nazaran daha üst seviye veri yapıları, garbage-collection ve exception-handling özellikleri olan bir dil. Bu dil benim çok hoşuma gitmedi, ama öğrenmenin eğitsel bir değeri var. Design Patterns öğrenirken de kullanılabilir.
  • Haskell: Saf fonksiyonel, kafanızı zonklatacak bir dil. Paralel işlem özelliği dilin içine işlenmiş. Yaklaşık 4-5 gün uğraştıktan sonra, devam edemeyip bıraktım. (Ahh o monadlar yok mu!) Ama, bu uğraştan sonra Python kodlarım bir hayli güzelleşti. Bu arada, Python'un bazı özellikleriniHaskell'den arakladığını biliyor muydunuz?
  • Python: Duck-Typing

Başkalarının yazdığı kodları okuyun

Bu da çok önemli bir adım. Her zaman sizden daha iyi programcılar olacaktır. Bu programcıların kodları sizinkinden daha iyi olacaktır. Bunların yazdılarını okuyarak, problemlere yaklaşmak için alternatif yollar, bazı ipuçları, kısa yollar gibi şeyler öğrenirsiniz. Hatta, bir projeye destekçi olarak katılırsanız, o proje'nin kodlarını okumanız gerekeceğinden, kendinizi bu şekilde de geliştirebilirsiniz.

Sosyal olun

Programcılık konusunda birşeyler yapmak istiyorsanız, sizin gibi düşünen insanlarla bir araya gelin. Gerek forumlarda olsun, gerek yüzyüze olsun, iletişim halinde olun. Böylece hem fikir alışverişinde bulunabilir, hem de bu camia'da olup bitenlerden haberdar olabilirsiniz. Eğer okuduğunuz okulda ilgili klüpler varsa katılabilirsiniz. Mail gruplarına katılın, bug-report yapın, bir github deponuz olsun, bir blog yazın, twitter'dan ilgili kişileri takip edin. Ne şekilde olursa olsun, programcılık camiasıyla bir şekilde iletişim halinde olun.

Olmuyorsa zorlamayın

İlk başta ta belirttiğim gibi, herkes programcı olacak diye birşey yok. Eğer, 2-3 senelik çabalarınızdan sonra, çok mesafe kat edemediğinizi veya programcılığın size göre olmadığını düşünürseniz, anlamsız yere zorlamayın. Kendi kişiliğinize ve kabiliyetlerinize daha uygun bir alanda kendinizi geliştirmeye çalışın derim.

Sonuç Olarak

Programcılık uzun bir yol, ama aynı zamanda çok keyifli ve karşılığını alacağınız bir uğraş. 

ETİKETLER;

Yazılım Kursu , Yazılım Uzmanlığı Kursu , Yazılım Uzmanlığı Kursu Ankara , Yazılım Uzmanlığı Ankara , Yazılım Kursu Ankara

 
 

NET Yazılım Uzmanlığı Kursu
JAVA Kursu | JAVA Kursu Ankara
İleri C# Kursu (C Sharp) | C# Kursu Ankara
Android Kursu | Android Kursu Ankara
Web Tasarım ve Programlama
Python Kursu Ankara