Azer Koçulu
February 2nd, 2018

Geleceğin Yazılımcıları İçin Hayatta Kalma Rehberi

Geçtiğimiz hafta yaş aralığı 16'dan başlayan 40 yazılım geliştirici ile, mentörlük programı nedeniyle telefon görüşmesi yapma fırsatı buldum. Her geliştiricinin mevcut durumunu, gelecekteki hedefini, planlarını, hayatındaki zorlukları sorup, karşılığında kendileriyle tecrübelerimi paylaştım ve sonuç olarak ortaya epeyce gözlem ve öneri çıktı, ve bunlardan bazılarını isteyen herkesin faydalanması için bu blog yazısında paylaşmaya karar verdim.

Hedef Belirlemek

Hedefin en makbülü ulaşması imkansız gibi görünendir; uzun vadeli, büyük bir hedef seçin. Okuldan mezun olup iş bulmak, yüksek lisans yapmak gibi kurumsal maceraları hedef olarak görüyorsanız, astronot olmak isteyen bir çocuğun hayal gücüne ihtiyacınız var demektir.

Kendinize hedef koyarken gerçekçi olmanıza, "başkaları ne der" diye düşünmenize, mütevazi olmanıza gerek yok. Yapmanız gereken tek şey koyduğunuz hedefi ölçülebilir zaman dilimlerine bölüp (örn: 1 yıllık hedefi aylık ve haftalık parçalar olarak bölebilirsiniz), bu hedefinizden sapmadan ilerlemek.

Bu konuda Mevlana'nın güzel bir sözü var (Türkçesini bilmiyorum):

Start a huge, foolish project, like Noah…it makes absolutely no difference what people think of you.

— Jalāl ad-Dīn Muhammad Rūmī

Çok Çalışmak / Az Çalışmak: Hangisi Doğru ?

Farzedelim bir gün dağa çıktınız ve ateş yakıp ısınmanız gerekiyor. Eğer 10 dakika etrafta odun toplarsanız, ateşinizin yanma uzunluğu da ona göre olur. 1 saat odun toplarsanız ateşiniz daha uzun süre yanar. Odun türleri hakkında araştırma yaparak hemen yanıp kül olan odunlar yerine sadece uzun süre yanan odunlara odaklanırsanız, bu kez 10 dakikada topladığınız odunlar 1 saatte topladığınızdan daha uzun süre yanar çünkü ikinci durumda bilgiyi denkleme çarpan olarak eklediniz.

Yazılım sektörü için bu örneği adapte etmemiz gerekirse; kariyerinizin ilk başlarında "kamp ateşini" canlı tutmak için deneyimli birine göre çok daha fazla çalışmanız, hedeflerinize odaklanarak bilginizi ve deneyiminizi derinleştirmeniz gerekiyor. Ne kadar kısa sürede ihtiyacınızın olduğu bilgi ve araçları hayatınıza çarpan olarak eklemeyi başarırsanız, o zaman çok çalışmanıza gerek kalmayacak.

Yani hem çok çalışmak, hem de az çalışmak doğrudur. İkisi arasındaki dengeyi bilgi ve araştırma inşa eder.

(Not: Yukarıdaki çok çalışma tavsiyesi sadece sizin kişisel zamanınızı kullanmanız yönünde bir tavsiye, elbette şirketlerin zamanınızı tecrübenizi bahane ederek çalmalarına müsade etmeyin)

Zaman ve Dikkat Yönetimi

Her insanoğlunun doğuştan sahip olduğu iki önemli maddi değer; zaman ve dikkat.

Nasıl bir asker veya polis için tabancalarına sahip olmak bir gurur meselesi ise, bir yazılımcının kuşandığı silahı da zaman ve dikkattir. Bilgi peşinde koşmak kadar önem vermeniz gereken husus, zamanınızı ve dikkatinizi -adeta bir makinistin treni kontrol etmesi gibi- raylarında yürütmeyi öğrenmektir. Üretken yazılım süreçleri iki dikkat dağınıklığı arasındaki yüksek konsantrasyon diliminde hasıl olur.

Zamanı iyi değerlendirmenin inceliklerinden birisi, verimli bir uyku düzenine sahip olmak. Bugüne kadar tanıştığım en başarılı insanların tamamı her sabah güneş doğmadan önce uyanırlar, güneş doğarken işlerine koyulmuş olurlar. Koyduğumuz uzun vadeli hedeflere ulaşmanın ilk adımı -hafta içi veya haftasonu farketmez- her sabah gündoğmadan uyanmamız ve kişisel projelerimizde çalışmaya başlamamız gerekiyor.

Hangi Teknolojiler / Uzmanlık Alanları?

Bilgi ekonomisinin bir numaralı formülü; az kişinin bilgi sahibi olduğu, yüksek talep gören konularda uzman olan kişiler ve markalar ödüllendirilir. Hangi teknolojiyi öğrenmenin sizin için geleceğe yapılabilecek iyi bir yatırım olup olmadığına karar veremiyorsanız bu basit formülü uygulamak karar vermenizi kolaylaştıracaktır.

Örneğin PHP dili amatör programcılar arasında yaygın olarak bilinen, ekonomik değeri en düşük uzmanlık alanlarından biriyken, Go, az kişinin bilgi sahibi olduğu ve talebin daha yüksek olduğu bir programlama dilidir. Bu nedenle 2018 yılında PHP yerine Go öğrenmek daha mantıklı bir ekonomik yatırım olacaktır.

Öğrenme Yöntemleri

Zamanınızın çoğunu alıp size pek birşey vermeyen eğitimler, kurslar, okullar yerine, kolları sıvayıp hemen işe koyulmak öğrenmenin en iyi yoludur. Eğer teorik bir konu üzerinde çalışıyorsanız buna sözüm yok, ama pratik yazılım teknolojilerini öğrenmenin en tasarruflu ve işe yarayan yolu, öğrenmek istediğiniz teknolojiyle bir proje geliştirmektir.

Mevlana'nın bu konuda da güzel bir sözü var (ve bunun da Türkçe'sini bilmiyorum):

As you start to walk out on the way, the way appears.

— Jalāl ad-Dīn Muhammad Rūmī

Bilgi ve tecrübe edinmek için bir şirketin ofisinde bulunmanıza gerek yok, hatta bu çoğu durumda zaman israfıdır. Zamanınızı staj ve iş görüşmelerinde harcamak yerine, tamamen size ait projeleri geliştirerek, gerekirse birkaç kez başarısızlığın da tadına bakarak yaşayın. En gerçekçi öğrenme yöntemi, risk almak ve deneme yanılma yapmaktır.

Dipnot: Not defterimdeki "Learning" sayfasında öğrenme bilimiyle ilgili bilgiler bulabilirsiniz.

Pratik Öneriler

Üstteki genel önerilerime ilave olarak, daha spesifik ve pratik önerilerim şunlar;

Son Sözler

Yazılım teknolojilerinin en özel yanı bütün gücün geliştiricide olmasıdır; kimseden izin almadan bugün istediğiniz projeye başlayabilirsiniz. Elbette büyük hedeflerinizi gerçekleştirmek kolay olmayacaktır, lakin zorluklara dayanan, risk alan, meraklı ve arayış halindeki kişiler hedeflerine er veya geç ulaşır.

Siz yeter ki kısa vadeli ödüllerden vazgeçip, sevgi ve inançla bağlandığınız uzun vadeli hedeflerinize odaklanın.