Bir programcı için, birkaç gün, nihai hiçbir değer üretmeyen, hata arama çalışması yapmak çok doğaldır. Hatta, bence programcılık neredeyse, hata aramakla eşdeğer bir iş. Bu durumda çalışırken, özellikle başlarda kendimi ve işimi sık sık sorgulardım. Acaba zamanımı boşa mı harcıyorum? Başka bir iş mi yapsaydım?

Table of Contents

Programcılığın Zorlukları

Bir programcı için, birkaç gün, nihai hiçbir değer üretmeyen, hata arama çalışması yapmak çok doğaldır. Hatta, bence programcılık neredeyse, hata aramakla eşdeğer bir iş. Bu durumda çalışırken, özellikle başlarda kendimi ve işimi sık sık sorgulardım. Acaba zamanımı boşa mı harcıyorum? Başka bir iş mi yapsaydım?

Tecrübe kazandıkça, bu sorularım azaldı; ama hiçbir zaman tam olarak kaybolmadı. Bitemez de zaten, çünkü programcılığın diğer mesleklerden çok farklı bir özelliği vardır: **Yaklaşık 5-10 yılda bir, neredeyse bilgilerinizin tümü eskimiş hale gelir. **Sürekli yeni teknolojileri ve yöntemleri öğrenmeniz gerekir. Dolayısıyla, ne kadar tecrübeli bir programcı da olsanız, sürekli bir şeylerin acemisinizdir. Bu insan için gerçekten çok zorlayıcı bir engeldir. Bazen içime şöyle korkular gelirdi: Acaba 40-50 yaşına geldiğimde, ne olacak? O kadar öğrenme ve çalışma gayretime rağmen, 20 yaşındaki bir programcıdan daha az mı üretken olacağım? Bu sorunun ürettiği korku, hiç hoş bir duygu değildir.

Yaş İlerledikçe Programcılıktan Kaçmanın Nedenleri

Tüm mesleklerde bilgiler sürekli yenileniyor, elbette; ama sanıyorum programcılık kadar yenilenme hızının yüksek olduğu başka bir meslek daha yoktur. Yöneticiliği ele alalım. Yöneticiler yükseldikçe, belirli bir alanda uzman olmaktan ziyade, insanları organize etmede yetenek kazanırlar. Ayrıca ulaştıkları bilgi miktarı her kademede ciddi ölçüde artar. Ne kadar zeki ve bilgili biri olursanız olun, kitaplardan ve kendi erişebileceğiniz bilgi miktarı, bir üst düzey yöneticinin erişebileceği bilgi miktarına göre her zaman çok düşük kalır. Mesela, bir ihalenin şartnamesini hazırlayan bir mühendis olabilirsiniz. İşin detaylarına dair muazzam bir bilgi birikiminiz olabilir. Ama ancak bir üst yönetici, bir işin nasıl bağlandığını bilir. Bu konuda net ve somut bilgiye erişme imkanı, alt kademelerdeki insanlar için hemen hemen yoktur.

Bu bilgiye erişim avantajı yüzünden, yöneticiler yaşlandıkça, yeni gelenlerin sahip olmadığı tecrübe ve bilgi birikimine sahip olur. Bu da onlara yaşlandıkça daha iyi fırsatlara erişebilme imkanı verir. **Bir programcı için, yaşlanmak hiç bu tür avantajlar sunmaz. **Tersine yaşlanmak çoğu programcı için, yetkinliklerinin zayıfladığı algılamasına neden olur. Belki artık eskisi kadar çok vakit harcayamıyordur yeni teknolojileri öğrenmeye. Gençler tüm boş vakitlerini sırf zevk için dahi, yeni teknolojilere ayırabilir. Ama aile kurmuş ileri yaştaki bir programcı için, çok sayıda sorumluluk bulunur.

Programcılığın, yaş dezavantajına bir de hata aramanın sıkıntılarını ekleyin. 50 yaşında tecrübeli bir programcısınız, üç günden beri yazdığınız programın neden hata ürettiğini arıyorsunuz. Üç gündür hiçbir şey bulamadınız. Daha ne kadar sürecek bu arayışınız? Müdürünüze ne diyeceksiniz?

Bunlar hiç kolay sorunlar değil. Bu yüzden, çevremde gördüğüm programcıların çoğu, yaş çok fazla ilerlemeden, hemen farklı bir alana geçmenin bir yolunu arar: Birçok kişinin hayalinde bir lokanta kurmak vardır. Ama genellikle pratikte idari işlere doğru kayarlar. Diğer programcıları yönetirler. Bazıları satış mühendisliği tarafına doğru geçer. Satış kariyerinde, tecrübe çok büyük bir artı sağlar. Bazıları da, programcılıkla ilgili çok dar bir alanda uzmanlaşmayı tercih eder.

Programcılığın Sanatsal Yönü

Programcılığın, bunca sıkıntısına rağmen, çok güzel bir sanat olduğunu düşünüyorum. Pek çok kişi, programcılığı, asosyal, robotik, monoton, rakamlarla ve hesaplamalarla boğuşan bir iş olarak görür. Hiç ilgisi yok. Böyle yapanlar vardır; ama programcılık özünde bir sanattır. Ayrıca son derece, sosyal bir sanattır. İyi programcı olmak için, çok iyi iletişim yetenekleriniz olması gerekir.

[pullquote]Programcılık özünde bir sanattır ve sosyal beceriler çok kritiktir.[/pullquote]

Tüm sanatlarda bulunan özellikler programcılıkta da bulunur. Tek bir doğru yoktur. Farklı tercihlerden, hangisini alacağınız, sizin tarzınıza bağlıdır. Bazı tercihler, birbiriyle uyumlu bir bütünlük oluşturur; bazıları oluşturmaz. Bunların arasındaki farkı algılamak, çok ince bir sanatsal tat duygusu gerektirir.

Programcılıkta sadelik çok önemlidir. Programınızı, gerektiğinden daha fazla karmaşıklaştırmamalısınızdır. Bu yüzden, yazdığınız programın üzerinden sık sık geçmelisiniz. Her geçişte, bir fazlalık bulup, bunları ayıklamalısınızdır. Bir heykeltraş gibi, fazlalık hiçbir şey kalmamalı eseriniz üzerinde.

Programcılık, iletişime dayalı bir sanattır. **İnsanların ihtiyaçlarını çok iyi anlamalısınız. **Eğer bunu anlamazsanız, yazdıklarınızın birçoğu boşa gider. Ve bunu sizin yerinize yapabilecek pek kimse bulunmaz. Çünkü aracılar (analistler) kullanmak, genellikle son kullanıcıların mesajlarını biraz bozularak size ulaşmasına neden olur. Çok iyi aracılarınız olsa bile, aracılar ancak programcı olarak sizinle çok iyi iletişim kurabildiği ve karşılıklı olarak iyi bir orkestra kurabildiğiniz ölçüde, size yardımcı olabilir.

Tüm sanatlar gibi, programcılık da çok sabır gerektirir. Defalarca eskizler çizmeniz, bunları tümden silmeniz ve yeni baştan çizmeniz gerekir.

Tek yönlü olmak iyi bir strateji değildir. Çok farklı yönlerinizin olması gerekir programcılıkta. Bir hatayı ararken, düz gözle ararsanız bu iş sizin günlerinizi alır. Ama doğru araçlarla, doğru yöntemlerle ararsanız, birkaç dakikada hatayı bulabilirsiniz. Ne var ki, doğru araçları ve doğru yöntemleri, ancak siz geliştirebilirsiniz. Elbette, başka öncülerin geliştirdiği araçlardan ve yöntemlerden yararlanırsınız, ama bunları doğru şekilde kullanmak da, yine bir sanattır. Basit bir reçete ile iyi programcılık iş adımları ifade edilemez. Ancak iyi programcılık için, iyi davranış ilkeleri ifade edilebilir. Bu da yine, diğer sanatlarla ortak bir özelliğidir.

**Eser Üretme Mutluluğu **

Program yazarken, bir eser ürettiğimi hissederim. Bu çok hoşuma gider. Bazı programcı arkadaşlarım, bunun bir tür “tanrılık hissi” oluşturduğunu söylemişti. Ben bunun fazla abartılı bir tarif olduğunu düşünüyorum. Bahsettikleri tanrılık hissi, aslında özünde mülkiyet ve kudret algısından kaynaklanır. İnsan kendini malik veya kudret sahibi bilince, kendisinde daha önce olmayan yeni bir şeyi bulduğunu zanneder. Daha önce, kendisini sade bir insan olarak hissediyorken, aslında çok kudretli, iradesiyle büyük şeyler yapabilecek biri olduğunu düşünür. Bu da, bir tür “tanrılık hissi” verir. Ancak bu his tamamen bir yanılgıdır.

İnsanın, hakikatte hiçbir mülkiyeti ve kudreti yoktur. Bunu anlamanın en kolay yolu, ölümü, hastalıkları veya musibetleri düşünmektir. Ölüm karşısında, insan tamamen çaresizdir. Eğer mülk ve kuvvet elimizde olsaydı, ölümden sonra bir şeyin elimizde kalması gerekirdi. Halbuki kalmıyor. Benzer şekilde, bir hastalık veya musibet anında da insan zayıflığını ve fakirliğini hisseder. Bu zayıflık ve fakirlik hissi, hakikatin ta kendisidir. Ama insan bazen bunu unutabiliyor, küçük ve geçici bir başarısını görüp, böbürlenebiliyor. Bu “tanrılık yanılgısı” sadece programcılıkta değil, doktorlukta, subaylıkta, hakimlikte, üst düzey yöneticilikte ve özellikle güzel sanatlarla uğraşan, yaratıcılık gerektiren mesleklerin uygulayıcılarında da zaman zaman ortaya çıkar. Umarım, insanlar, bu yanılgıya kendilerini fazla kaptırmazlar.

Girişimci Programcılar

Programcılığın en sevdiğim yönlerinden biri, girişimciliği destekleyişidir. Programcı olmasaydım da, girişimci olmayı isterdim; ama bu durumda muhtemelen önüm çok açık olmayacaktı. Klasik ekonomideki işlerin hemen hepsinde sermaye gücü en önemli faktör. Bilgi de çok önemli; fakat buradaki bilgi dahi, herkese açık bir bilgi değil. Belirli bir sektörü çok yakından bileceksin ki oradaki fırsatları hemen görebilesin. Tam bu sırada, elinde sermaye de bulunmalı. Ayrıca aynı anda, doğru iş gücünü ve iş ortaklarını da bulabilmelisin.

Programcılık, bu noktada çok daha esneklikler sunuyor girişimcilere. **Sermaye değil, zaman esas önemli olan. **Bilgi herkese açık. Önemli olan, bilgiyi iyi kullanabilmek. Sınır büyük ölçüde, girişimcinin kendi hayal gücü ve azmiyle belirleniyor. Klasik ekonomiye göre, çok daha az insanla, büyük çaplı işler yapmak mümkün oluyor.

Bu yüzden, programcılık mesleğini hasbel kader öğrendiğime çok şükretmişimdir. Fakat sonradan bir şey öğrendim ki, bu tarif önemli bir şeyi kaçırıyor: Doğru yerde bulunmanın önemi.

Tüm yeniliklerin anası ihtiyaçtır. İhtiyaç ise, ancak pazara yakın insanların görebileceği bir bilgidir. Şu anda neye ihtiyaç olduğunu, hiçbir kitapta veya internet sitesinde bulmak mümkün değildir. Benim gibi programcılar, ihtiyacın ne olduğunu, gözlemleriyle, kendi deneyimleriyle sezmeye çalışırlar. Ve çoğu zaman da yanılırız. Hepimiz yanılırız. Microsoft bile ilk kurulduğunda, trafikle ilgili bir yazılım geliştiren bir firmaydı. Sonradan kendisine başka bir yol çizdi.

İhtiyacı doğru anlamak, başarılı girişim kurmanın en kritik faktörü. İhtiyacı doğru anlamak içinse, doğru yerde bulunmak çok önemli. Dolayısıyla, her ne kadar internet çağında da olsak, Silikon Vadisinde olmakla, İstanbul’da olmak arasında çok farklar var. Veya İstanbul’da olmakla, Trabzon’da olmak arasında da çok fark var. Her ne kadar, internet bilgiyi sınırsız bir şekilde taşıma imkanı sunsa da, ihtiyacın en yoğun hissedildiği yerde bulunmanın sağlayacağı bilgiye erişim avantajı, hala en kritik şey. Çünkü ihtiyacın ne olduğunu doğru anlamadıktan sonra, yapılan tüm işler, bir yerde boşuna.

Siz de bir programcı mısınız? Bu mesleğin güzel yönleri sizce nelerdir, zorlukları nelerdir?