Yazılımcı Nasıl Olunur? – 2

     Merhaba, Yazılımcı Nasıl Olunur? makalemin ilk bölümünde birkaç şey anlatmıştım. Şimdi kaldığımız yerden devam edelim. Bu makalede, yazılımcı olarak nerden başlamalı, üniversite hayatında neler yapmalı, İngilizce şart mı sorularını cevaplayacağım ve yazılımcıda olması gereken teknik özelliklerden bahsedeceğim. İlk makalemi okumayanlar buraya tıklayarak öncelikle onu okuyabilir.

Nerden Başlamalı?

     Buraya kadar okuduysanız ve ilk makaledeki karakteristik özellikler de bende var diyorsanız ilk aklınıza gelen şey “Nerden başlamam lazım?” olmalı. Bu sorunun cevabı yaşınıza ve mevcut iş/okul durumunuza göre biraz değişkenlik gösteriyor aslında. Temelden başlayalım. İlkokul veya lisede okuyorsanız ilk öğrenmeniz gereken şey algoritma. Lisede okuyan birçok kişi forumlarda soruyor: “Hangi programlama dili ile başlayayım?”. Çok yanlış bir soru. Arkadaş daha programın ne demek olduğunu bilmiyor, programlama dili soruyor. Belki bazıları algoritma konusunu geçmiş olabilir onlara lafım yok; ama eğer algoritma bilmiyorsanız programlamaya bence hiç bulaşmayın. Peki algoritma nedir? Algoritma basit anlamıyla, bir programın konuşma diliyle yazılmasıdır. Bir sonraki seviyede ise bu yazım, çeşitli şekillerle desteklenir.

     Hızlıca bir örnek vereyim: problem şu olsun “Isıtıcıda su nasıl ısıtılır?”. Isıtıcı alınır, kapağı açılır, istediğimiz miktarda içine su koyulur, kapağı kapatılır, ısıtıcı yerine yerleştirilir, fişi takılır, ısıtıcının düğmesine basılır, su kaynayana kadar beklenir, ısıtıcının fişi çekilir. Bu uzun cümle “Isıtıcıda su nasıl ısıtılır?” probleminin algoritma dilinde yazımıydı. Algoritma hakkında daha fazla bilgi için buraya bakabilirsiniz.

     İlkokul veya lisede okuyorsanız demiştik, eğer bu gruptaysanız önceliğinizi elbette ki okul derslerinize vermelisiniz. Unutmayın ki asıl lazım olan şey üniversite diploması. Liseyi bitirdik, diyelim ki üniversitedesiniz. Bölümünüz bilgisayar ile alakalı bir bölümse (bilgisayar mühendisliği, yazılım mühandisliği vs.) zaten müfredata göre ilerliyor olacaksınız. Burada unutmamanız gereken konu ise, üniversitede size temel bilgi verilecek. Yani örneğin, bir programlama dili tüm detaylarıyla size öğretilmeyecek. Programlama dilini nasıl öğreneceğiniz size öğretilecek. Sonuçta zaman geçtikçe bazı diller kayboluyor yerine yenileri geliyor. Bir dili nasıl öğreneceğinizi bilirseniz problem yaşamazsınız; ancak bir dili en detaylı şekilde öğrenip bırakırsanız yakın gelecekte o dil bir işe yaramadığında aç kaldınız demektir.

     Üniversitede farklı bir bölümde okuyorsanız veya herhangi bir işiniz var ve ekstradan yazılımcılık yapmak istiyorsanız ve algoritma kısmını hallettiyseniz artık bir programlama dili öğrenmenin zamanı gelmiş demektir. En basit dillerden biri olan HTML öğrenmenizi tavsiye ederim. Neden Html? Az önce de dediğim gibi öncelikle öğrenmesi kolay bir dil. İkincisi herhangi bir program vs. kurmanız gerekmiyor. Not defteri ve bir web tarayıcı (Chrome, Opera, Edge vs.) yeterli (Not: mümkünse Internet Explorer kullanmayın). Üçüncü olarak da yazmış olduğunuz kodları daha çabuk ve daha güzel bir şekilde karşınızda görüyor olacaksınız. Örneğin C veya C# gibi bir dil ile başlasanız ilk yapacağınız şey konsol uygulaması olacak. O zaman da siyah ekranda bir şeylerle uğraşıyor olacaksınız ve çabuk sıkılma ihtimaliniz yüksek; ancak Html kullanırsanız hayal gücünüzü kullanarak basit ama güzel web sayfaları yapabilirsiniz.

     Html öğrendikten sonra ufak bir seçim yapmanız gerekebilir: web siteleriyle takılmaya devam mı edeceksiniz yoksa masaüstü uygulamalar mı yazacaksınız? Eğer seçiminiz web olursa, Html’den sonra ilk öğrenmeniz gereken konular Javascript (+jQuery) ve CSS. Onlar da tamamsa Asp.Net veya PHP’den devam edebilirsiniz. Tabi bu aşamada işin içine veritabanı da katmanız gerekiyor. Asp.Net seçerseniz MsSQL Server, PHP seçerseniz de MySQL tavsiye ederim.

     Eğer seçiminiz masaüstü uygulaması olursa da Python ile başlayabilirsiniz. Yok ben Python istemiyorum derseniz veya onu öğrendim sırada ne var derseniz C# veya Java öğrenebilirsiniz. Bunlar nispeten daha kolay diller ve şu an C# ve Java dillerini bilen yazılımcılar daha çok aranıyor. Biraz daha derinlere dalmak isterseniz C ve C++ öğrenebilirsiniz. Bu iki dil orta seviyeli dillere girdiği için yazımı, anlaması ve okuması biraz daha zor olacaktır elbette. Yine programlama dili yanında veritabanı bilgisi gerekecektir. C# için Ms SQL Server, Java için Oracle veya MySQL kullanabilirsiniz.

     Programlama dili öğrenme konusunda daha önce de söylemiş olduğum şeyi yenilemek istiyorum: bir dili tüm detaylarıyla öğrenip bırakmayın. Zaten herhangi bir dilin her şeyini bilme ihtimaliniz çok zor. Dolayısıyla bir çok dili bilin, öğrenin; ancak bir tanesinde ustalaşın. Kariyer.net’e girip yazılımcı arayan ilanlara şöyle bir bakın. En az özellik isteyen şunları istiyor (örnek): C# (veya Java), Asp.Net (veya PHP), Javascript, jQuery, Css, Entity Framework, Ms SQL (veya Oracle, MySQL), Xml, Json. Bunların hepsini tüm detaylarıyla bilmeniz imkansız zaten. Dolayısıyla hepsinden azar azar öğrenip, bir veya birkaç dilde ustalaşmanız yeterli. Diğerlerini bilmiyorum diye korkmayın hiçbir zaman. Elinizin altında Google varken en fazla birkaç ayda öğrenirsiniz bir çoğunu.

Üniversite Hayatında Ne Yapmalı?

     Bilgisayar ile alakalı bir bölümde okuyorsanız her ne kadar şanslı olsanız da yine işin büyük kısmı sizde bitiyor. Bilmiyorum okuluna göre değişir muhtemelen; ancak hocalar çok fazla ödev vermiyor. Ödevden kastım program yazma ödevleri. Dolayısıyla sizin meraklı olup yeni şeyler öğrenip kendi kendinize uygulamalar yapmanız gerekiyor. Sadece hocaların verdiklerini yapıp yata yata okulu bitirirseniz iş hayatınızda zorluk çekersiniz.

     Üniversitede yapabileceğiniz en kolay ama etkili şeylerden biri blog yazmak. Benim yaptığım gibi. Blogger’dan veya WordPress’ten kendinize bir blog açın. Tamamen ücretsiz. İsterseniz sadece bilgisayarla, programalamayla alakalı şeyleri yazın isterseniz karışık yazın, siz bilirsiniz. Derslerde veya kendi kendinize öğrendiğiniz, size ilginç gelen şeyleri mutlaka blogunuza yazın. Bir iki cümle bile olsa yazın. İlerde mutlaka lazım olacak ve hayat kurtaracaktır. Hem sadece size değil, sizin gibi o konuda bilgi arayan kişilere de yardımcı olacaktır.

     Üniversitede elbette ki gezip tozacaksınız. Özellikle bahar ayları tam gezmelik oluyor. Kendimden biliyorum ki, üniversitede bol bol vaktiniz oluyor. Gezseniz de tozsanız da illa ki günde 1-2 saatlik vaktiniz kalıyor. O vakitte de yeni şeyler öğrenmeye bakın. Her gün olmayabilir, bazen insanın canı hiç istemez, doğaldır; ancak mümkün olduğunca yeni şeyler öğrenmeye hevesli olmalısınız. Bir de aklınızda bulunsun, ben üniversiteden mezun olalı yaklaşık 4 sene oldu. Daha o kadar boş vaktim olmadı. Keşke biraz daha verimli geçirseydim o zamanları diyorum bazen.

İngilizce Şart mı?

     İngilizce, İngilizce, İngilizce… Yazılımcı olacaksanız eğer, İngilizce şart elbette. İngilizce bilirseniz hem daha rahat kod yazarsınız, hem internette çok çok fazla kaynak bulabilirsiniz, hem de daha kolay iş bulabilirsiniz. Makalemin önceki kısımlarında belirtmiştim, internette her şeyi bulabilirsiniz diye. Eğer İngilizce bilmiyorsanız, bulacağınız kaynaklar sınırlı olacaktır. Bir de, biz Türk insanı olarak paylaşmayı pek sevmeyiz. Az önce bahsettiğim blog yazma olayı bu konuda çok önemli. Kimse uğraşıp çözdüğü bir şeyi paylaşmıyor, kendine saklıyor. Yabancı sitelerde gezin dolaşın biraz, insanlar nasıl paylaşıyor bildiklerini. Biz öyle olmadığımız için bizim yazılım ile ilgili kaynaklarımız çok az. Üstelik zaten az olan bu kaynakların bir çoğu da birbirinin kopyası. Bu kadar tembel bir milletiz. Sonuç olarak İngilizce şart. Probleminizi Google’da İngilizce olarak anlatabilirseniz yırttınız demektir, tabi çıkan sonuçları da anlayabilmeniz lazım. Eğer Türkçe aratıyorsanız zaten bir avuç sonuç çıkacaktır, o da ne kadar işinize yarar tartışılır.

Yazılımcıda Olması Gereken Teknik Özellikler Nelerdir?

     Önceki makalemde karakteristik özelliklerden bahsetmiştim. Bir de teknik özellikler boyutu var. Teknik özellikten kastım, kodlama nasıl yapılmalı, iş hayatında neler gerekli gibi şeyler. Kod yazmak bir noktada sanat sayılabilir. Her ne kadar kullanılan programlama dilleri benzer olsa da insanlar kod yazarken çok çeşitli şekillerde yazabiliyorlar. Bunun temelinde de aslında düşünce yapısı var, yani bir nevi algoritma oluşturabilme yeteneği. Örneğin, 1’den 100’e kadar olan sayıların toplamını bulan program yazın dendiğinde, kimisi bir döngü yapar tek tek sayıları toplar, kimisi de matematiksel düşünüp (n*(n+1))/2 yapar.

     Yazılımcı, kod yazarken okunabilir kod yazmalı. Bir sonraki paragrafta nasıl olacağını anlatacağım. Başkasının yazdığı kodu hızlıca anlayabilme yeteneğine sahip olmalı. Kod yazarken, projede alınan kararları bilmeli ve performans, güvenlik gibi konularda dikkatli olmalı. Takım çalışmasına yatkın olmalı. Kod yazarken sadece kendisini ve o anı değil, başkalarını ve geleceği de düşünmeli. Yani, bundan 3 – 4 ay sonra kendisi veya bir başkası o kod parçasına baktığına, kodun ne iş yaptığının anlaşılabilir olması gerekli.

     Okunabilir kod yazma konusunda bazı standartlar mevcut. Benim size vereceğim birkaç tavsiye var bu konuda. Öncelikle kod yazarken İngilizce kullanın. Değişken, metot, sınıf vs. isimlerinin Türkçe olması iş hayatında pek kabul edilebilir bir şey değil. Dolayısıyla baştan öyle başlayın, sonra değiştirmek zorunda kalmayın. İkinci olarak değişken ve metotlara düzgün isimler verin. Metoda isim verirken ne iş yaptığını açıklayan bir isim verin. Müşteri numarası dönen bir metot yazıyorsanız “GetCustomerNumber” şeklinde bir isim verebilirsiniz mesela. Metot veya değişken ismi uzun olacak diye korkmayın. Uzun olması anlaşılmaz olmasından iyidir. Zaten bir çok IDE‘de intellisense (akıllı öneri) mevcut, birkaç karakter yazdığınızda kendisi otomatik tamamlayacaktır. Üçüncüsü, koca bir programı tek metot içine yazmayın. Programın belli işleri yapan kısımlarını ayrı metotlar yapın. Bir metodun içeriği 20 – 25 satırı geçmesin. Böylelikle hem hataları daha kolay bulabilirsiniz hem de programın bakımı ve geliştirmesi daha kolay olur.

Sonuç

     Sonuç olarak, yazılımcı olmak istiyorsanız öncelikle yazılımı, kod yazmayı sevmeniz gerek. Programlama öğrenirken İngilizce’yi de geliştirmek gerek. Her zaman meraklı, araştırmacı olmak gerek. Blog yazıp paylaşmayı öğrenmek gerek. Yazılımcılıkla, iş hayatıyla veya üniversite hayatıyla ilgili sormak istediğiniz sorularınız olursa aşağıdaki yorum bölümüne yazarsanız mutlaka cevaplarım. Bir başka makalede görüşmek ümidiyle…

Bu makaleye 2 yorum yapılmış

  • yunus emre

    18 Şubat 2016 at 15:07 Cevapla

    merhaba hocam ; öncelikle doyurucu ve samimi yazınız için gerçekten size minnettarım.umarım herşey gönlünüzce olur selametle

    • Kemal Kefeli

      18 Şubat 2016 at 20:39 Cevapla

      Rica ederim, faydam dokunabilirse ne mutlu bana..

Yorum Yapın

*

warning
www.kemalkefeli.com.tr üzerindeki herhangi bir yazının veya kodun izinsiz olarak başka bir yerde kullanılması yasaktır.