Nasıl Yazılımcı Olunur?

Saat gece yarısını çoktan geçmiş. Bilgisayarınızın başında oturuyorsunuz. Facebook’da video izliyorsunuz. Bir yandan da MSN açık, arkadaşınız ile yazışıyorsunuz.Yaklaşık bir saat önce de, en son aldığınız oyununuzu zevkle oynadınız ve bitirdiniz. Nereden baksanız 6-7 saattir makinenizin önündesiniz. Bir anda, beyninizin derinliklerinden bir ses duyuyorsunuz: “Bilgisayar hayatının neresinde? Onunla neler yapıyorsun?” Böyle bir soruya verdiğiniz cevap, sizi daha da sarsmak üzere; “zamanımın çoğunu bilgisayarımın başında geçiriyorum ama, yaptığım tek şey oyun oynamak ve ‘chat’ yapmak “.

Bu rahatsız edici durum, sizi bilgisayar kullanarak para kazanabileceğiniz, daha da önemlisi mutlu olacağınız bir mesleğe yani, “bilişim” e doğru itti. Peki şimdi bu bilişim denen mesleğin hangi branşı ile ilgileneceksiniz? Sistem uzmanı mı, web tasarım uzmanı mı yoksa yazılım geliştirme uzmanı mı olacaksınız? Google’dan, arkadaşlarınızdan, oradan buradan araştırıyorsunuz. Yaptığınız incelemeler sonucunda yazılım geliştirmenin daha çok hoşunuza gideceğine karar verdiniz. Peki nereden başlayacaksınız? Hangi programlama dilini kullanarak, nasıl projeler yazacaksınız?

Daha da önemlisi “Başarabilecek misiniz?” İşte bu yazımda, böyle düşünmeye başlamış arkadaşlarıma elimden geldiği kadar yol göstermektir amacım.

Bu işi yapabilmenin altın anahtarı kendine güvenmektir. Bazı insanlar için “kendine güvenmek” ifadesi biraz korkutucudur. “Hiç denemediğim bir alanda kendime neden güveneyim” psikolojisi ile duruma yaklaşabilirsiniz. O zaman, rahatlayın arkanıza yaslanın ve burada size söylediklerime kulak verin.

Şimdi, yaptığınız en iyi işi düşünün. Mesela araba kullanmak, iyi yemek yapmak, hatta iyi bir WOW oyuncusu olmak gibi kendinizle övünebileceğiniz eylemlerinize odaklanın. Ardından bu işleri yapmayı nasıl öğrendiğinizi hatırlayın… Hatırlayın ve odaklanın… Bu işe “korkarak” mı başladınız, yoksa başlangıçta hata yapıyor olmanıza rağmen, bu hatalardan dahi zevk alıp eğlenerek mi kendinizi geliştirdiniz? Dürüst olun lütfen. Belki de bir kısmınız, bu sorulara “hata yaptığımın farkında bile değildimki, ben sadece eğleniyordum. Bir de baktım işin piri olmuşum” diye yanıt vermiştir. Hayatınızda başarılı olduğunuzu düşündüğünüz her eylemde ortak olan tek şeyin, o eylemi icra ederken size verdiği haz ve mutluluk olduğunu fark edin! Siz, aslında iyi yaptığınız her şeyi, bir başkasının size “aferin” demesi için değil kendinizi mutlu hissetmek için yapmıyor musunuz? Yani egomuzu tatmin etmenin en iyi yolu, sevdiğimiz bir işi yapmaktır.

O zaman şöyle diyebiliriz; “bir işte kendine güvenmek demek, o işi severek yapmak demektir.”

Yandaki ünlü “Lunch atop a Skyscraper” fotoğrafını, çoğu kişi görmüştür. Yükseklik korkusu olan çoğu kişi, bu fotoğrafa baktığında rahatsız bile olmuştur. İşte ben, o rahatsız olanlardan biriyim. Ciddi derecede korkuyorum yüksekten. Fakat, bir o kadar da manzara sever bir adamım. Ne mi anlatmak istiyorum? Yüksekten o kadar korktuğum, kendi evimin beşinci kattaki camından bile bakamadığım halde, sırf doğa ve manzara aşkına, geçtiğimiz yaz Fethiye’de yamaç paraşütü yapabildim (tanımayanlar için, kasksız olan ben oluyorum). Çünkü sevgi, korkudan; aşk da nefretten üstündür.Eğer, çok sevdiğiniz birşeyi yapıyorsanız, korktuğunuz şeyleri görmezsiniz bile.

Öyleyse size açık ve seçik olarak şunu teklif ediyorum; yazılıma aşık olun! Onu, hayatınızın vazgeçilmez bir parçası haline getirin. Eğer bu adımı atabilirseniz, gerisi sizin için çorap söküğü gibi gelecektir. Gerisi? Elbette o aşamalara da bakacağız.

“Nasıl öğrenirim – çalışırım” sorusu yazılıma yeni başlayan dostlarımın en sık dile getirdiği sorulardan biridir. Hatta daha da özele inersek, yeni öğrenilen bir konu hakkında hemen “bunu nerede kullanırım” sorusu ortaya çıkar (Hissedebiliyorum, şu anda bazı okurlarım “aaa ben de bu soruyu soruyorum” diye düşünüyor). Bu sorunun cevabı çok basittir: “İhtiyaç duyduğunuz yerde”. Bu cevap sizi tatmin etmedi mi? O zaman soruyu değiştirmelisiniz. “Bu kodu nerede kullanırım” değil, “Bu koda ne zaman ihtiyaç duyarım” diye sormalısınız. Çünkü o zaman şu kavramı daha net anlarsınız: Ne kadar çok kod yazarsanız, o kadar çok “ihtiyaç” duyarsınız ve bu ihtiyaçlarınızı giderdiğinizde o kodu/konuyu çok daha iyi kavrarsınız.

Aslında söz buraya gelmişken, bir yazılımcının olmazsa olmaz karakteristik özelliklerinden bahsedelim. Bu özellikler elbette detaylandırılabilir ama benim özellikle üzerinde durmak istediklerim; yaratıcılık, tatmin edilemez bir merak ve bu merakı gidermek için kullanılacak disiplinli bir araştırmacılık. Yaratıcılık diye isimlendirdiğimiz ve çoğu kişi tarafından doğuştan geldiğine inanılan düşünme biçimi, aslında bir çok kavramı da kapsayan bir tanım. Yani içinde, çözümleyici (analitik) düşünceyi, gözlemciliği, nesneler arası bağlantı kurabilmeyi, neden-sonuç ilişkilerini tespit edebilmeyi ve kesinlikle hayal gücünü de barındırıyor.

Peki yaratıcılık doğuştan mı gelir, yoksa çevresel faktörler mi yaratıcılığı tetikler? Ben, ikinci görüşün sıkı bir savunucusuyum. Bir insanın yaratıcılığını ve elbette hayal gücünü besleyen şeyler, o insanın çevresinde mutlaka vardır. Çizgi filmlerden kitaplara, müziğe kadar herşey sizin yaratıcılığnızı geliştirebilir. Denemeden bilemezsiniz.

Benden yazılım eğitimi alan çoğu öğrencimin en büyük sorunu şudur; “hocam derste anlattığınızda iyi anlıyorum, ama evde örnek sıkıntısı çekiyorum.” Öncelikle şunu belirteyim, eğer yazılım ile ilgilenmeye henüz başladıysanız, böyle bir sorun yaşamanız kadar doğal başka birşey yok. Peki çözüm nedir? Hadi gelin sorunun köklerine inelim ve çözümü netleştirelim.

Yazılım geliştirirken karşınıza çıkan bir sorunun bir çok çözümü vardır. Peki neden? Neden tek bir çözümle idare edemeyiz biz yazılım geliştiriciler? Yazılım en basit anlamda bir kod yazma işidir. Çözüme ulaşmak için yazılan kodun, daha az satırdan oluşması, daha işlevli olması ve daha kolay okunması amacıyla birsürü şey deneriz. İşte bu nedenle, bir sorunun sonsuz çözüm yöntemi olabilir. Yıllar geçtikçe de bu çözümler artacak, birileri aynı sorunun çözümüne yönelik daha iyi kodlar yazacaktır. Bir örnek verelim bu konuda… Yazılıma yeni başladınız ve döngülere kadar geldiniz. Genellikle öğrenilen ilk döngü for döngüsüdür. Konuyu okudunuz, hocanızın gösterdiği veya kitaptaki örneği tekrarladınız. Ve o meşhur soruyu sordunuz “Bu koda ne zaman ihtiyaç duyarım?” Öncelikle şöyle düşünün. for döngüsü olmasaydı ne yapardınız? Mesela, üç elemanlı bir diziniz var ve bu elemanları tek tek MessageBox’da göstermek istiyorsunuz. Ne yapacaksınız? Sanırım tek seçeneğiniz var:

string[] iller = { "istanbul", "ankara", "izmir" };
MessageBox.Show(iller[0]);
MessageBox.Show(iller[1]);
MessageBox.Show(iller[2]);

 

Peki sizce bu kod dinamik mi? Her diziye uygulanabilir mi? Ya dizinizin eleman sayısı 25 olsaydı? Yukarıdaki koda 22 satır daha ekleyerek mi problemi çözeceksiniz? İşte bir yazılımcı, dinamik bir çözüm getirmek zorunda. Şimdi gayet basitçe düşünelim, alt alta bulunan MessageBox.Show satırlarının parametrelerini inceleyin. Değişen tek şey, iller dizisinin index değeri (0,1 ve 2) değil mi? Bunu gözlemlediyseniz, içinizden bir ses şöyle diyecek; “bir değişkenim olsa, 0’dan başlasa ve dizinin son elemanının indexine kadar gitse, tabii bunu yaparken de kendini 1’er 1’er arttırsa, böylece ben de MessageBox.Show satırında değişkenin o anki değerini kullanabilirim. Böylece dizinin eleman sayısı kaç olursa olsun tüm elemanları gösterebilirim.” İşte for döngüsünü siz icad ettiniz!!

“Bir değişkenim olsa, 0’dan başlasa ” :

int i = 0;

“…ve dizinin son elemanının indexine kadar gitse”:

if (i<iller.Length )

“..tabii bunu yaparken de kendini 1’er 1’er arttırsa”:

i++;

E hadi birleştirin şimdi:

string[] iller = { "istanbul", "ankara", "izmir" };
for (int i = 0; i < iller.Length; i++)
{
  MessageBox.Show(iller[i]);
}

 

Dediğim gibi. for döngüsünü siz icad ettiniz. Önce o olmasaydı ne yapacağınızı düşündünüz, sonra yazdığınız kodu incelediniz ve içinizden gelen sesi dinlediniz. for döngüsü kendiliğinden ortaya çıktı. Birşeyden emin olun! For döngüsünü icad edenler de böyle ihtiyaç duydukları için icat ettiler.

İşte sevgili dostlarım, gördüğünüz gibi, yeni öğrendiğiniz herşeyi uygulamaya dökmek ve “bu koda ne zaman ihtiyaç duyarım” sorununa çözüm bulmak bu kadar basit!

Yazılım öğrenmeye başladıktan sonra, en çok karşınıza çıkacak bir diğer sorun da, yeni öğrenilen kavramın tam olarak nasıl çalıştığını anlamamaktır. Bunun çözümü ise, bilgisayarınızın dışında! Çevrenizde, tam olarak hayatınızın içinde! Daha önce de bir makalede söylemiştim. Yazılım bire bir insan mantığını taklit eder. Yandaki karikatüre bakın, klasik, “uyuyamazsan, çitten atlayan koyunları say” yaklaşımının, while döngüsü ile yazılmış hali. Yani türkçesi; “hala uyanık olduğum SÜRECE, koyun sayısını bir arttır. ” Bir önerme süreci ve eylem… Alın size bir döngü de benden, “hayatta olduğum SÜRECE kod yazacağım “. Bunu da siz karikatirüze edin.

Yavaş yavaş cümleleri toparlayalım. Dostlarım, özellikle yazılım geliştirmeye yeni başlayanlar, sizlerle benim veya çevrenizdeki herhangi bir yazılımcının arasında tek bir fark vardır. Bizler sadece daha fazla kod yazdık o kadar. Eğer sizde şu andan itibaren başlar ve geceli gündüzlü çalışır, yazdığınız herşeyin mantığını kavrarsınız, disiplinli bir şekilde Google’dan, forumlardan faydalanırsanız, mükemmel noktalara ulaşacaksınız. Bundan adınız gibi emin olun.

Son olarak öğrencimle sık sık paylaştığım bir örneği paylaşmak istiyorum. Bir eylemi sık sık yapmak, o eylemin yapılırken artık düşünülmemesine neden olur. Bir dolmuş şöförü buna harika bir örnektir. Adam, hem ışıklara, hem sıkışık bir trafikte önünde ve arkasındaki araçlara, debriyaja, gaza, frene,vitese, aynaya odaklanır. Bunun yanında bir de yolculara para üstü uzatır. İşte size soru bu adam bu yeteneği dehasıyla değil, çok çalışması ile elde etmiştir.

Siz de, öğrenin, pratik yapın, kısa yollar üretin ve uzman olun…

Kodla kalın, iyi çalışmalar…

 

Türkay ÜRKMEZ

57 thoughts on “Nasıl Yazılımcı Olunur?

  1. Yazınızı okuduktan sonra daha da acayip gaza geldim hocam.Her ne kadar 0’dan başlasamda ben sanırım visual basic hastası oldum.Geceleride rüyama giriyor.Yazan 30.000 amcanın ve teyzenin ellerinden öpüyorum gerçekten.Şimdi visual basic’imi açıp bir kaç yeni proje yapayım.Herşey için teşekkür ederim.İlk defa bilgisayar aşkımın kaynağına indirdiniz beni.İyi haftalar hocam.Kodla kalın.Kod sizde=)

  2. Böyle bir hocanın öğrencisi olmak ayrı bir zevk,anlatım tarzı insanlara yaklaşımı olsun insanın yazılıma olan ilgisi artmakla kalmıyor coşku seviyesine geliyor.Makaleye diyecek söz zaten yok.
    Süpersiniz hocam sağlıklı mutlu günler,kendinize iyi bakın…

  3. Ne söyleyebilirim, bilmiyorum.Ancak Yazılım denince aklıma sadece daha çok çalışmak geliyor, bir sevmek. Türkay hocam sizi ve tüm yazılım camiasını çok seviyorum.

  4. Ben cok begendim yazini Turkay. Cok guzel anlatmissin. Yazilimi bana sevdiren sendin. Bunun icinde sana cok tesekkur ediyorum. Tekrar gorusmek dilegiyle.

  5. Adamım süpersin ellerine emeğine sağlık. 🙂

    for(int yasam=0;yasam<=olum;yasam++)
    {
    Console.WriteLine("I Love C#");
    }

  6. Merhaba Hocam;
    Yamaç paraşütü resminize bayıldım. Cesaretinize hayran kaldım. :)) Süper yapmışsınız.. Tabii sizinki gibi ya da diğer kod yazan arkadaşlar gibi benim de korkularım var. (Bir yazılım geliştirici olarak, sektörle ilişkili) Fakat bunların zamanla ve belirttiğiniz gibi disiplinli ve SEVEREK, araştıra araştıra, tekrarlaya tekrarlaya çözüleceğine eminim. 🙂 Fakat böyle sorunları, korkuları tüm yazılımcıların yaşadığını hissettiren bu yazılara arada sırada ihtiyacımız oluyor sanırım. 🙂 Çünkü onlarda MSDN sayfası gibi değiller.. Ya da doğmadılar.. Onlar sadece bizden önce o sayfalara ihtiyaç duyanlar. Fakat şu bir gerçek; onların 200 – 300 satırda yaptıkları işler artık yeni teknolojiler ile 2-3 satırda yapılabiliyor. Bu sebeple, isterseniz yeni olun birşey farketmez, onlara yetişmeniz an meselesi. :))

    Herkese eğlenceli kodlar, elinize kolunuza sağlık hocam :))

  7. Ellerinize sağlık, süper yazı olmuş, bookmarklarıma ekledim yazılarınızı sürekli takip ediyor olacağım 🙂

  8. Elinize sağlık sayın Türkay hocam.

    for(int sevgi = 0; sevgi < sonsuz; sevgi++)
    {
    Console.WriteLine("Sizi seviyoruz");
    }

    Özledim bilge adam günlerimi ve tabiki sizleri, bir ara geleceğim inş 🙂 kalın sağlıcakla.

  9. Türkay hocam, C#’la hayatım yeni başladı. Aslında ben bir matematikçiyim. Başarabilirmiyim diye çok korkuyorum, yazınızı okumak bana gerçekten güç verdi, tıpkı terapi gibi. Yüreğinize sağlık.
    Sevcan

  10. Hocam sizi ve bilgeadamı unutmadım unutamam 😉
    yazınız çok güzel olmuş yine döktürmüşsünüz elinize saglık ve hayırlı bayramlar geçirmeniz dileklerimle

  11. Hocam gercekten mukemmel bir yzı olmuş.Ve degindiginiz konu tam yerinde bi saptama olmus gibi geldi bana[bi aralar bende öleydim cunku:) ].Ellerinize ,gözlerinize saglık hocam:) Saygılar..

  12. Yazınız yeni başlayan aramıza katılacak olan yazılımcılara çok güzel yol gösteriyor. Ancak doğuştan bir nebze yetenek olması gerektiğine inanlardanım. Bazı insanlar sadece şikayet eder, bazıları da çözüm üretir. Şikayet eden insandan çok iyi bir yazılımcı olmaz. İnsan eğer doğuştan çözüm odaklı biriyse bu işe daha yatkın olacaktır. Bir problemin sadece bir çözümü olduğuna değil, birden fazla çözümü olabileceğine inanıp bu konuda alternatifler üretip en uygun olanı tartabilecek yetenekte olabilmelidir. Lise zamanlarında dersaneye giderken matematik hocamız bir laf etmişti :
    "Bir insana yazı yazmayı öğretebilirsin ancak şiir yazmayı öğretemezsin."

    Bilmem anlatabildim mi ?

    Saygılar.

  13. Türkay bey mrb ben açık konuşmak gerekirse bu yazılımcılık mesleğini yeni duydum kendim fizik bölüm mezunuyum yazınızı okuduktan sonra anladım ki herkez bu işi yapabilir ama ben sıfırdanda ziyade eksilerdeyim nerden nası başlıycağımı nası kendimi geliştireceğimi bilmiyorum beni bu konuda aydınlatırsanız çok sevinirim anladığım kadarıyla siz eğitiminide veriyorsunuz hatta sizden öğrenmeyide sizin öğrenciniz olmayıda çok istiyorum size nasıl ne şekilde ulaşırım bana yardımcı olun lütfeeeennnn

  14. Çok güzel bir yazı, teşekkürler… Yanlız, mesela benim sorunum nerden başlıycam da takıldım aslında. Eskiden kalma çok az basic bilgim var, dos zamanlarından telefon rehberi kayıt programı falan yazmışlığım var. Bayadır uzak kaldım bu konulardan…
    Şimdi ben c# den başlayayım, c++ den mi başlayayım, java dan mı başlayayım tekrar programlama öğrenmeye derken 3 nün de kitabını aldım ama başlayadım hala… Kafamda, bazı fikiler var, Noter de çalışıyorum noterlikle ilgili program fikirleri var aklımda, birde mobil programcılık ilgilimi çekiyor, ios ve android programlama…

  15. hocam gerçekten çok güzel bir yazı.kafamdaki sorunlara tercüman olmuşsunuz.yazılım işine kısa bir süre de olsa ara vermek zorunda kalmıştım.yeniden başlamak için kendimde cesaret bulamıyordum.ama bu yazıdan sonra en kısa sürede başlayacağım.klavyenize sağlık…

  16. Hocam ben daha 13 yaşındayım ve siz tam olarak bilmiyorum daha küçüğüm ve bilgisayara hayranım benim düşüncem her meslek ölür ama teknoloji her zaman devam der bende bu düşünce ile program ve yazılımcılık üstüne yoğunlaştım ama hangi lise ve üniversitelerde bu eğitim var bilmiyorum bana biraz yardımcı olursanız dünya ya yeni bir yazılımcı kazandırırsınız ve en iyi yazılım ödülü aldığımda sizi unutmam 😀 bu işin esprisi ben istiyorum YAZILIMCILIK HEP HAYALİM AMA HANGİ LİSE HANGİ ÜNİVERSİTE HANGİ BÖLÜM BİRAZ BİLİNÇSİZİM AMA YARDIM ….. TŞK

  17. flas oyunlar ile zamanının çoğunu geçiren biri olarak yazıyorum, emeklerinizi bizlerle paylaşmanız gerçekten çok hoş bir olay. Teşekkürü borç bilirim.

  18. hocam elinize sağlık sizin gibi tecrubeli birinin yazılarını okudukça yazılımı daha çok seviyoruz.tesekkurler…

  19. merhabalar hocam osmangazi üniversitesinden adem.
    vermiş olduğunuz algoritma sempozyumundan sonra sizi internetten aramak istedim ve bu sitenizi buldum. yazılarınızdan bir kaçını okudum ve hoşuma gitti. ben böte’ye başlarken yazılımcı olmak için yola çıkmıştım nede olsa 10 parmak kullanabiliyorum ve yazmasını sevviyorum. fakat ilerleyen süreçte sürekli flash, dreamweaver ve photosop üzerinde daha çok vakit geçirince visual basic gibi dilleri okulda öğrenme imkanımız pek olmadı, kısaca site yapabiliyorum ve site için gerekli bir kaç programı rahatlıkla kullanabiliyorum. yazılım üzerinde de uğraşmak istiyorum. bu konuda hangi programdan başlamalıyım, ilerde bana para kazandıracak sizin tabirinizle hava atmamı sağlayacak olan programlardan bahsederseniz ve bu program için de en popüler bulduğunuz siteyide tavsiye ederseniz sevinirim.
    şimdiden iyi teşekküler.

  20. Selam Hocam, sizi unutmadım 2 sene önce öğrencinizdim.Sizinle birçok şey öğrendim. Hala sitenize girer, inceler, uygularım.

    Herşey için teşekkür ederim.

  21. Sizce insan kod yazmaya 25lerinde de baslayabilir mi? Her turlu insanin gec diyen gozlerle bakmasina ragmen…
    Yeni baslayanlar icin ne gibi tavsiyeleriniz olabilir? Tesekkur ederim.

  22. Hocam, etkileyici açık ve net bir yazı olmuş ellerinize sağlık. İnş bende sizin öğrenciniz olurum …

  23. Ben öğrencisiydim şimdi mezun oldum hala Turkay hocamı takip ederim.O beni unutmuş olsada 🙂

    Saygılar Turkay Hocam

  24. Kafamdaki sorulara cevap oldu çok teşekkür ederim. Elinize sağlık çok güzel bir yazı olmuş.

Leave a Comment