Ustasız Çırak

Mehmet Cem Yücel
mehmetcemyucel
Published in
9 min readAug 18, 2023

Blogumda mümkün olduğunca teknik içerikler yayınlıyorum. Ancak bu alegorik başlıktan sizin de tahmin ettiğiniz üzere bu yazı biraz farklı olacak. Son zamanlarda sıklıkla karşılaşmaya başladığım bazı konulara dikkat çekme ihtiyacı hissediyorum. Bu yazımda meslek hayatının başlarındaki genç arkadaşlarımızın kafalarındaki bazı sorulara kendi düşüncelerimle yanıt bulmaya çalışacağım. Biraz uzun bir yazı olabilir ancak birçok soruya dokunarak bu yazıyı tamamlamayı istiyorum.

Bilgi İhtiyacı

Meslek hayatına atıldığım ilk günlerden beri işimle ilgili çevremden sorular alırım. Bazen sosyal medyadan ve internetten bazen ise etkinliklerde genç arkadaşlar spesifik konularda sohbet etmek, fikir danışmak için iletişime geçerler. Bu sohbetlerin çoğunluğunun ortak yanı alınamayan veya alınan ancak emin olunamayan kararlar hakkında olur. Aşağıya birkaç örnek ekliyorum:

  • Üniversite tercihlerimde Bilgisayar Mühendisliği de yazmak istiyorum ama zorlanırım diye korkuyorum. Ne yapmalıyım?
  • Şimdi Java’ya ağırlık veriyorum, önümüzdeki ay C# ı da öğreneceğim. Sonra Go’yu mu öğreneyim yoksa Rust’ı mı önerirsin?
  • Javascript olmazsa olmaz diyorlar, sence Udemy’de hangi kursu almalıyım?
  • İnternette xx sitesinde ücretsiz kurslar var, 10 tanesini bitirip bitirme sertifikamı Linkedin’e ekledim başka hangi kursları alayım?
  • Yapay zeka işimi elimden alır mı, hangi alana kayayım ki ileride işsiz kalmayayım?
  • X şirketinde X yıllık yazılımcı xx maaş alıyormuş, gerçekten doğru mu?

Bu ve bunun gibi onlarca soru ile örneklendirebilirim. Herkes farklı bir motivasyonla ya bu kulvara girmenin kararını almaya çalışıyor ya da girdiği bu kulvarda kendisini yukarı çıkarabilmek için farklı yollar arıyor.

Yaptığımız iş, mesleğimiz, Maslow’un ihtiyaçlar hiyerarşisindeki her basamakta önemli bir yer kaplar. Çünkü buradan maaşınızı kazanıyor, bu maaşla barınıyor ve ailenizi geçindiriyorsunuz. İşinizi iyi yapan ve uyumlu birisi iseniz çevrenizde saygı görüyor ve elinizdeki altın bilezikle kendi hayallerinizi gerçekleştirecek güce sahip oluyorsunuz.

Hayatımızda bu kadar etkisi olacak kararların doğruluğundan emin olmak istemeniz gayet normal. Bunun için de çevrenizdeki güvenebileceğiniz insanların bilgi ve tecrübesine ihtiyaç duyuyorsunuz.

İnternetin Zorluğu

Eskiden internette ihtiyaç duyduğumuz bilgiye erişimimiz daha güçtü. Yeni teknolojileri takip edebilmek için yerli yabancı belirli bloggerların sayfalarından RSS listesi oluştururduk. Artık kod yazarken dahi CoPilot, Tabnine gibi toollarla kodlarımız otomatik tamamlanıyor, ChatGPT’ye hiç bilmediğimiz bir dilde nasıl bir koda ihtiyacımız olduğunu söylediğimizde bizim için kodu oluşturuyor. Peki her şeye erişim bu kadar kolaylaşmışken yeni nesil kararlarında neden tereddüt yaşıyor, nerede ve niçin zorlanıyor?

Video serileri, blog postlar, eğitim portalleri, kapalı devre eğitim programları… İnternette o kadar çok kaynak var ki hangisini tüketeceğiz? Genellikle ilk yapılan hata, internette hangi keywordler hype ise bunlardan bir liste yapıp bu listeyi “acele” şekilde tamamlamak üzere oluyor. Örnek bir liste:

  • C# öğren
  • Java öğren
  • Go öğren
  • NodeJS öğren
  • React öğren
  • OOP öğren
  • Design Patterns öğren

İlk önerim geliyor. Eğer böyle bir liste ile yola çıktıysanız yırtın atın o kağıdı.. Çünkü hedefsiz insan rotasız gemiye benzer. Ve siz de ne yazık ki okyanusta kaybolmaya başlamışsınız bile.. Unutmayın, “Nereye gideceğini bilmiyorsan, hangi yoldan gittiğinin hiçbir önemi yoktur.”(Lewis Carroll).

Hedef Belirleme

Bilgisayar bilimleri çok ama çok geniş bir alan. Bir çırpıda sayabileceğim; gömülü programlama, web programlama, mobil programlama, veri bilimi, makine öğrenimi, uygulama güvenliği başlıkları kendi içlerinde bile onlarca parçaya ayrılıyor. Devops, backend programlama, frontend programlama, frontend tasarımı, kullanıcı deneyimi tasarımı, analiz, test, proje yönetimi, middleware, infra, görsel işleme, veri mühendisi, veri analisti… Sadece oyun alanında bile karakter tasarımından seslere, görsel tasarımdan teorisine birçok rol mevcut. Yapay zeka gibi niş alanlara girmiyorum bile… Böylesine büyük bir okyanusta varılabilecek çok sayıda hedef mevcut. Bu sebeple kendinize soracağınız ilk ve tek doğru soru şudur, ben ne yapmak istiyorum?

Bu soruyu hemen yanıtlamayın. Bunun için de bir projeksiyon yapmanız gerekiyor. Sizi 10 sene sonraki halinize gönderiyoruz. Neredesiniz, nasıl bir evde yaşıyorsunuz? Yanınızda kimler var, nasıl bir hayata sahipsiniz. İş yaşantınız nasıl, nasıl bir görevde çalışıyorsunuz? Mümkün olduğunca sizinle ilgili teknik ve sosyal konuları da içeren ama bununla işiniz arasındaki bağı sıkıca ortaya koyabildiğiniz şekilde kendinizi hayal edin. Bu hayali de öyle 5 dk değil, gerekirse günlerce uzun uzun düşünün. Bir kağıda yazın ve odanızda herkesin görebileceği bir noktaya asın.

örnek:

“10 sene sonra aile kurmuş ve bir çocuğumla birlikte eşimle şehir gürültüsünden uzak bir sahil kasabasında kendi kurduğum mobil oyunlar geliştirdiğimiz 5 kişilik bir startup ile hayatımızı sürdürüyoruz.”

10 sene sonrasına dair bir hedef koydunuz. Şimdi bu hedefi daha küçük hedeflere parçalama vakti. Bu hedefe varabilmek için nelere ihtiyacımız olabilir, ben sadece teknik olanların üzerinde duracağım ancak siz sosyal olanlar için de planlarınızı yapmalısınız.

  • mobil uygulama geliştirme tecrübesi
  • oyun tasarımı

Kaba olarak bu şekilde bir listemiz olsun. İlk listeden 5 sene sonraki parçalanmış hedeflerimizi belirleyeceğiz. Örneğin, mobil uygulama geliştirme tecrübesine bakalım. Şu anda piyasada domine olarak IOS ve Android cihazlar mevcut. Ve bir uygulama yazacağınızda IOS’a ve Android’e ayrı ayrı yazacağınız varsayımı ile bu konuda deneyime ihtiyacınız olacağını öngörebiliriz. Yazdığınız oyunların cracklenmemesi için belirli bir seviye yazılım güvenliği hakkında bilgi sahibi olmanız gerektiğini düşünebiliriz. Oyunlarınızı oynayacak kullanıcıların bilgilerinin, ilerlemelerinin merkezi bir sunucuda tutulması gerekeceğini öngörebiliriz. Buradan bir backend geliştirme tecrübesine, DB bilgisine ihtiyaç duyacağınızı tahmin edebiliriz. Backendi yönetebilmek için ekranlara ihtiyaç duyabileceğimizi düşünebiliriz. Bunları yönetebilecek kadar da altyapı ve sunucu bilgisi ihtiyacımız olacak. Yani listemizin ilk maddesi kabaca şöyle bir şeye genişledi;

  • IOS yazılım tecrübesi
  • Android yazılım tecrübesi
  • Backend yazılım tecrübesi
  • Frontend yazılım tecrübesi
  • Altyapı kullanımı ve yönetimi (DB, server vb) tecrübesi
  • Yazılım güvenliği tecrübesi

Bu maddeler sizin 5 sene sonraki hedefleriniz. Tabii ki bir startup kurabilmeniz için yavaş yavaş para biriktirmeniz gerektiği, birlikte çalışabilecek dostlar edinmeniz gerektiği gibi teknik olmayan konular da var. Ama farkındaysanız halen bir teknoloji ismi, yazılım dili vb konuşmadık. Çünkü halen rotamızı belirliyoruz. Hedefimiz bütün hayatımızı etkileyecek asıl unsur, kolay kolay değişmeyecek, öngörülebilir ve gerçekleştirilebilir olmalı. Ve attığımız adımlarda temelimiz sarsılmayacak şekilde belirlenmeli. Çünkü bu uzun yolda güzel zamanlar olduğu gibi zorlu zamanlar da yaşanacak ve temelimiz/hedefimiz ve bu hedefe giden yolumuz, alternatiflerimiz, planlarımız sağlam ise bir şekilde bu zorlukların üzerinden gelinecek.

Artık 2 senelik hedeflere geldik, 5 senelik hedefleri parçalayıp yeni daha kısa süreli hedefler oluşturmalıyız. Örneğin 5–6 sene önce Android yazacak olsaydınız muhtemelen Java ile başlardınız ancak güncel trendlerde artık Kotlin ile yazılıyor. Burası önemli bir nokta; kullanılan dil bizim aracımız, amacımız değil. Amacımız Android programlama tecrübesi edinmek. Bugün Kotlin vardır yarın değişir, bunun bir önemi yok. Zaten zaman geçtikçe ve multidisipliner çalıştıkça herhangi bir araca, dile, teknolojiye adaptasyon süreniz gittikçe düşecek ve hızla kullanabilmeye başlayacaksınız. Ve bunların sayesinde yolda bir şeyler değişse de, beklediğiniz gibi gelişmese de siz bu değişime hızlı şekilde adapte olabileceksiniz.

2 senelik hedeflerimize geri dönelim, bunların bir kısmı 3. seneye bir kısmı 4. seneye atılabilir. Artık teknolojileri seçmek için internette ve çevrenizdeki tanıdıklarınızda araştırma yapılması gerekiyor. Gelişmekte olan, trend konulardan ihtiyacınızı karşılayan alternatifleri birbiriyle kıyaslayarak tercihler yapmanız gerekiyor. Hiçbir çözüm sihirli değnek değildir, her çözümün artıları ve eksileri vardır. Size uygun olan en doğru çözümü bulmanız gerekecek. Bu tercihler bazen çalıştığınız kurumda kullanılan teknolojileri tercih ederek boş vakitlerinizde hedefinize ulaşmanız için gerekli diğer teknolojileri öğrenmeye zaman kazanmak yönünde bile olabilir. Örneğin listemiz:

  • Swift tecrübesi
  • Kotlin tecrübesi
  • go dili ile veya kurumda tecrübe edilebilen bir dilde server-client yazılım geliştirme tecrübesi
  • vuejs ile veya kurumda tecrübe edilebilen bir dilde fe tecrübesi
  • seçilen veya kurumda tecrübe edilebilen bir rdbms(örneğin sqlite, postgresql, …)

İşte bu noktaya gelen bir kişi ayakları yere sağlam basan, ne istediğini bilen, bu istediği şeye varabilmek için yolda kendisini nelerin beklediğinden haberdar bir kişi oluyor. Bir işe başlayacaksa o iş yerinden kazanması gerekenlerin, açıkta kalan tamamlaması gereken noktaların hepsinin farkında oluyor ve bu boşlukları tamamlayabilmek için gereken adımların ne olduğunu bilerek ilerleyebiliyor.

Dramatik Ama Gerçek

Çevremden aldığım soruların %90'ından fazlası yukarıdaki farkındalığı henüz yakalayamamış meslektaşlarım veya meslektaş adaylarım. Dramatik olan ise şu, bu insanlar ne okulda ne de iş hayatında sağlıklı bir usta/çırak etkileşimini yakalayamamış çoğunlukla yön gösterilmediği için internet çukurunda kaybolmuş insanlar. Veya bir kısım da fanatizmin içerisinde asıl faydayı kaybedip körü körüne belirli noktalara takılabiliyorlar. Farklı motivasyonlarla bir şeyler yapabilmek isteğinde ve heyecanındalar ancak örneğin Udemy’i açtığında önüne gelen iyisiyle kötüsüyle onlarca kurstan birkaçını tamamladığında iyi bir noktaya gelecekleri, “iyi bir işe kapak atabilecekleri” noktasında bir yanılgının içerisindeler. Net bir hedef yoksunluğundan dolayı bambaşka iş kollarına hizmet eden teknolojileri sırf hype oldukları için kendilerine kazandırmak için enerjilerini yok ediyorlar. Veya hedeflediği kulvarda bir teknolojiyi kendisine kattıktan sonra hedefine hizmet eden diğer bir konu başlığına geçmek yerine öğrendiği teknolojiye alternatif olabilecek başka bir teknolojide enerji israfı yaşıyorlar. Buradaki hissiyatın zemininde yatan, “bir teknolojiden sebepli kabul edilmezsem bari öbüründen kabul edileyim”, “bak bende bunlar bunlar da var” diyebileyim düşüncesi. Oysa ki gözden kaçan şu, birbiriyle bir bağı olmayan veya çok zayıf olan, bir amaca odaklanmayan, sırf özgeçmişte +1 demek için uğraşılan başlıklar o kadar belli oluyor ve hanenize eksi yazıyor ki… İşte bu konularda bir ustanın çırağına teknik konular haricinde verdiği en önemli şey yönlendirme ve akıl. Eksikliğinde de yukarıdaki sebeplerden bir süre sonra enerjisi kalmayan kişiler ya boğulup tamamen vazgeçiyor ya da olabileceklerinden daha azına kanaat getirmek zorunda kalıyorlar.

İnternette o kadar çok kurs, video, yazı, vb kaynak var ki… Ancak şu da bir gerçek, hepsini izlemeniz sizi istediğiniz yere getirmeyecek. Hedeflerinize ulaşmanın tek bir yolu varsa o da kodlamak. Ama yine hedefinize hizmet eden şekillerde. Bir proje kodlamak, uçtan uca onu kullanıma almak, yaptığınız hiçbir şeyi kendinize kanun kabul etmemek ve her zaman daha iyisini araştırmak, peşinden koşmak. Ancak bu şekilde kendinizi geliştirebilirsiniz.

Dışarıdan Gelen Öneriler

Eğer hedeflerinizi belirlediniz ve yukarıdaki çalışma şeklini benimsediyseniz artık dışarıdan gelen önerileri dikkate alabilecek olgunluktasınız. Benim de geçmişte yazılım geliştiricilere öneri olarak yayınladığım buradaki yazı benzeri öneriler sizin multidisipliner çalışmanızı geliştirecektir. Ayrıca usta/çırak ilişkisinin diğer yönü olan teknik boyutu sizin öğrenme potansiyelinize ve isteğinize göre gelişim hızınızı kat kat artıracaktır.

Burada önerebileceğim başka bir nokta da nasıl ki internet kirli bilgilerle dolu ise o kirli bilgilerden nasibini almış insanlar da çevrenizde bulunuyor olabilir. Bu noktada size iletilen doğru olan bilginin ayrımını yapabilmeniz gerekiyor. Bunun için şüpheci olmanız, her bilgiyi teyit etmeniz gerekiyor. Bu zor ve zaman çalan bir iş olsa da bu araştırmalar esnasında tahmin ettiğinizden fazla bilgiyi öğreneceksiniz.

Soruların Cevapları

Bir kişi bana ulaşıp; amacım bu, bunun için şu şu tercihleri yaptım ve bu tercihe dayalı şu teknik işi yaparken burada takıldım dediğinde gerçekten çok seviniyorum ve en içten şekilde desteğimi her konuda o kişi ile paylaşıyorum. Çünkü bu kişilerden gelen sorular gerçekten üzerine konuşulabilir, tartışılabilir ve kişisellik barındırmayan ve sonuç odaklı konular. Yazının başında bahsettiğim sorular için ise mecburen bütün bir yazı boyunca oluşturmaya çalıştığım farkındalığı inşa edecek şekilde yönlendirmeye çalışıyorum. Örnek olarak sorulara verdiğim bazı yanıtlar;

  • Üniversite tercihlerimde Bilgisayar Mühendisliği de yazmak istiyorum ama zorlanırım diye korkuyorum. Ne yapmalıyım?

CEVAP: Gerçekten ne yapmak istiyorsun, 10 yıl sonra nasıl bir yaşam yaşamak istiyorsun? Bilgisayar mühendisi olmak bu hayalin gerçekten bir parçası mı? Eğer öyle ise hayalin pahasına zorluk çekmekten endişelenmene sebebiyet veren şey ne?

  • Şimdi Java’ya ağırlık veriyorum, önümüzdeki ay C# ı da öğreneceğim. Sonra Go’yu mu öğreneyim yoksa Rust’ı mı önerirsin?

CEVAP: Gerçekten ne yapmak istiyorsun, 10 yıl sonra nasıl bir yaşam yaşamak istiyorsun? Bu hayaline giden yolda hangi teknolojilere ihtiyacın olacağını yine sen belirleyeceksin.

  • Javascript olmazsa olmaz diyorlar, sence Udemy’de hangi kursu almalıyım?

CEVAP: Gerçekten ne yapmak istiyorsun, 10 yıl sonra nasıl bir yaşam yaşamak istiyorsun? Bu hayaline giden yolda hangi teknolojilere ihtiyacın olacağını yine sen belirleyeceksin. Eğer Javascript senin için gerçekten gerekliyse öğrenmeyi öğrenmiş olman daha önemli, sadece 1 kursa bel bağlamamalısın.

  • İnternette xx sitesinde ücretsiz kurslar var, 10 tanesini bitirip bitirme sertifikamı Linkedin’e ekledim başka hangi kursları alayım?

CEVAP: Gerçekten ne yapmak istiyorsun, 10 yıl sonra nasıl bir yaşam yaşamak istiyorsun? Bu hayaline giden yolda hangi teknolojilere ihtiyacın olacağını yine sen belirleyeceksin. Sertifika bir amaç mı yoksa araç mı üzerinde düşünmekte fayda var.

  • Yapay zeka işimi elimden alır mı, hangi alana kayayım ki ileride işsiz kalmayayım?

CEVAP: Gerçekten ne yapmak istiyorsun, 10 yıl sonra nasıl bir yaşam yaşamak istiyorsun? Bu hayaline giden yolda yapay zekayı bir tehdit değil senin hayalini kurduğun yaşantıya ulaşabilmen için bir araç olarak kullanmayı hiç düşündün mü?

  • X şirketinde X yıllık yazılımcı xx maaş alıyormuş, gerçekten doğru mu?

CEVAP: Gerçekten ne yapmak istiyorsun, 10 yıl sonra nasıl bir yaşam yaşamak istiyorsun? Bu yaşama ulaşman için yeri geldiğinde kısa vadeli düşünmek yerine uzun planlar yapabilir misin? 2 yıl içerisinde XX maaş almak mı yoksa 10 yıl içerisinde hayallerine ulaşmak mı daha değerli?

Sonuç

Gayet uzun bir yazı oldu. Umarım sorularınız için kendi düşüncelerim ile farklı bir bakış açısı getirebilmişimdir. En son olarak; ne yaparsanız yapın, kendinize ve işinize duyduğunuz saygıdan hiçbir sebeple ödün vermeyin. Siz kendinize değer vermezseniz başkalarının değer vermesini beklemeyin. Aldığınız kararlarda kendinizi başkalarına emanet etmeyin. İnsanların düşüncelerini, fikirlerini dinleyin ama asla körü körüne kendinizi o düşüncelere emanet etmeyin. Sürekli araştırın, öğrenin ve öğretin. Lütfen yorumlarınızı aşağıya iletin, katıldığınız, katılmadığınız noktaları belirtin. Üzerinde konuşulmaya değer bu konu sizin de görüşlerinizle farklı ufuklar açabilir.

Aşağıya ufak bir video bırakarak yazıyı sonlandırıyorum.

En yalın haliyle

Mehmet Cem Yücel

Bu yazılar ilgilinizi çekebilir:

Loglama için hala ELK mı kullanıyorsunuz?

Bir Yazılımcının Bilmesi Gereken 15 Madde

Mikroservisler-Service Mesh Nedir

Blockchain teknolojisi ile ilgileniyor iseniz bunlar da hoşunuza gidebilir:

BlockchainTurk.net yazıları

--

--