Yazılıma Bir Yerden Başlayamamak

“Yazılıma Nereden Başlamalıyım” sorusunu hem gençler soruyor hem de evli barklı kişiler soruyor. Sıkı durun cevabı veriyorum: Kendinizden başlayın! Ve şimdi yazının başlığını tekrar okuyun. Ve şimdi yazının devamını okuyun.

Maalesef sıfırdan başlayamıyoruz — Photo: Dom J Pexels

Bir hevesle mi yazılım öğrenmek istiyorsunuz? Yazılım öğrenmek sizin son şansınız mı? Olsa da olur olmasa da olur mu? Hobi mi yeni bir kariyer fırsatı mı? Kısa yoldan para kazanmak mı? Çok mu havalı? Bu yol için ne kadar zaman ayırabilirsiniz, nelerden vazgeçebilirsiniz? Bir tanıdığınız başardı mı? Kaçıncı kez yazılıma başlıyorsunuz? Bu soruları ve daha zorlarını kendinize sorun. Sorun ki hedefiniz ortaya çıksın. Çıktı mı? Sıcağı üstündeyken devam edelim.

Yazılıma başlamayı sadece ama sadece istemek, zengin omayı isteyip hiçbir şey yapmamak gibi bir şey. Kötü haber, emek harcamak ve ellerinizi kirletmek zorundasınız. İyi haber, azıcık bir emekle bile birçok kişinin önüne geçeceksiniz. Emek olmadan yemek olmaz.

Her duyduğuna inanıp sürekli yönünü değiştiren kişiler başarılı olamaz. C# dilini öğrenen ve belli bir aşamaya gelmiş birisi birden Python öğrenmeye başlayınca hem C# hem de Python dillerinde uzmanlaşamaz. Ortaya karışık hiçbir şeyde uzman olmayan ve sektör tarafından aranmayan kişiye dönüşür. Dere geçerken at değiştirmeyin. Yazılım dilleri araba kullanmak gibi. Birinde uzmanlaşırsanız diğerini öğrenmeniz kolay olur. Ama acemi şoförken başka bir arabaya geçerseniz ikisini de kullanamaz hale gelebilirsiniz. Rüzgarlar yönünüzü değiştiriyorsa hedefiniz muğlaktır.

Yapılan projelerin minicik halde ve hiçbir sorunu baştan sona çözmeyecek biçimde yetim ve boynu bükük bırakılması yeni yazılımcılarda çok yaygın bir durum. “Hello world”den hallice olan bu projeler, öğretmenin istediği ödevi verdikten sonra ödev hakkında hiçbir şey hatırlamayan öğrencinin ödevi gibi. Ödev yapıldı mı, yapıldı. Ne öğrenildi? Hiçbir şey. Halbuki size yazılımı öğretecek olan bu projelerdir. Şimdi durun ve yarım kalan, hiçbir şeyi çözmeyen projelerinizle göz göze gelin. Sizin onlara olan vefanız ne kadar iyi bir yazılımcı olacağınızı belirleyecek. Çalışma hayatında bir projeyle belki yıllarca çalışacaksınız. Hemen sıkılmak, oldu bu iş demek yok. Daha ne ekleyebilirim, zaten bitmiş bir proje diyorsanız projenin çözmeye çalıştığı ihtiyacı tam anlamamışsınız demektir. Çünkü ben çalışma hayatımda biten bir proje görmedim henüz. Durdurmayın kendinizi, durduğunuz anda geri kalırsınız.

İstikrar bu işin anahtarı. Hepimizin mazereti var. Hayatın bize her gün neler getireceğini bilmiyoruz. Sorun hep var, mazeret başköşemizde. Sarılacağımız tek şeyimiz irademiz. Bizden avantajlı kişileri düşünmek, birşeyi ya da bir kişiyi suçlamak hiçbir şeyi çözmüyor. Sorunun farkındayken çözüm için harekete geçmeniz lazım. İş başvurularında diğer adaylardan birazcık ilerde olmanız hayatınızı değiştirebilir. Dün göremediğiniz bir teknik problemi bugün anında görebilirsiniz. En güzelinden: iki günü eşit olan zarardadır.

Her şeyi birden öğrenmeye çalışmak alfabeyi okumayı öğrenmeden şiir yazmaya benziyor. C#, Python, SQL, CSS, React… neyse ne. Bir konuda karar kılın. Dar bir kapsam belirleyin ve o dar kapsamdan çıkmamaya çalışın. Diğerleri için zaman var. İlerleyen zamanlarda istemeden de olsa her konuya biraz bulaşacaksınız.

Her insanın yetenek ve yatkınlığı farklıdır. Yeteri kadar zaman harcarsanız her konuda uzman olabilirsiniz ama sevdiğiniz ve yatkın olduğunuz alanı bulmak kendinizi tanımaktan ve ellerinizi kirletmekten geçiyor. Hayatınızda yaşadığınız tecrübeler teknik alanda neye yatkın olduğunuzu da belirliyor. Önyüz(frontend), arkayüz(backend), veri tabanı(evet bunun Türkçe’si var) alanlarında elinizi kirletmeden hangisine daha yatkın olduğunuzu bilemezsiniz.

Aldığınız tavsiyelerde kurulan genel cümleleri baştan savmak olarak görmeyin. Python mu öğreneyim C# mı öğreneyim sorusuna alacağınız kesin bir cevap bulunmuyor. İkisinin de kendisine göre avantajları ve dezavantajları var. Cevap olarak size seçimin kendinize ait olduğu söyleniyorsa seçin bir tanesini. Seçemiyorsanız soruyu sorduğunuz kişiden bir tanesini sizin için seçmesini isteyin. Ve o seçime bağlı kalın. Biraz da kısmet işi bu iş. Bir alanda uzmanlaştıkça seçimin doğru ya da yanlış olduğunu göreceksiniz. “Acaba” diye başlayan sorular aklınızdaysa haklısınız. Ama seçmeden de bilemeyeceksiniz. Sihirli değnek aramayın.

Yeni başlayanların ingilizcelerine olan aşırı güvenleri ya da aşırı güvensizlikleri yeni bir yazılımcının en büyük düşmanı. Türkçe kaynaklarla yeni bir teknolojiyi öğrenmek belli bir noktaya kadar mümkün. İngilizce okumak, olmazsa olmaz bir gereksinim. Udemy ve youtube gibi platformlardan ingilizce olarak birşeyleri takip etmek için ise ingilizce dinleme gerekli. İngilizceniz ne kadar iyi? İyi bir haberim var. Teknik terimlerle dolu yazılım dünyasında ingilizceniz hızlı bir şekilde gelişecek. Ama istikrar ile, güven ile değil.

Udemy gibi platformlardan alınan kursların bitirilmemesi, alınan kitapların yarım bırakılması, youtube serilerinin birkaç tane izlenip bırakılması gibi semptomlar gösteriyorsanız belki de bu iş sizin için değildir. Yıllarca bilgisayar başında saatlerce çalışacağınızı düşünün. Birkaç yıldan sonra yazılımı bırakanlar var sektörde. Özel hayatınız ve sosyal hayatınız bilgisayar başında şekillenebiliyor. Sektörde çok az kişi bilgisayar dışında bir hobi ile uğraşıyor. Sevmeyeceğiniz, tutku ile bağlanmayacağınız bir meslek için zorlamayın kendinizi. Başta yaşadığınız zorluklar sizi bu konuda imtihan edecek. İstikrar demiş miydim daha önce?

Sürekli bütüne odaklanmak ve problemleri parçalamadan çözmeye çalışmak, bir güne ne yapacağını bilmeden başlamak yeni yazılımcıların yaptığı en büyük hata. Gidilecek yolun uzunluğuna bakıp yürümekten korkmayın. Bugün ne yapacaksınız, kaç saat bu işe bakacaksınız ona odaklanın. Küçük hedefler koyun kendinize. Hedef demiş miydim daha önce?

Meşgul olmanın doğru yolda olmak anlamına gelmediğini zor yoldan öğrenmeyin. Hedeflerinize ulaşıp ulaşmadığınızı sürekli değerlendirin. Yardımcı araçları etkin kullanın. Kullandığınız geliştirme ortamının (IDE, git …) özelliklerini, klavye kısayollarını öğrenin. Silahınızı tanıyın. Hedeflerinizin ne kadarını gerçekleştirdiğinizi acımasız bir şekilde sorun kendinize. Gözünüzün bir ucuyla sosyal medyada gezerken diğer yandan da kodlama yapmaya çalışmayın. Aynı anda tek işe odaklanın. Kodlama yeterince karışık zaten. Beyninizi dumana boğmayın.

Yeni ve güçlü bir bilgisayara ihtiyacınız yok. Web tarayıcı açabilen bir bilgisayar ile bile yapabileceğiniz çok şey var. Örneğin SQL ile ilgili alıştırmaları google’a “sql online editor” yazarak bulacağınız sitelerde yapabilirsiniz. Bazı yazılımcıların paylaştığı bilgisayar ve çalışma ortamı fotoğraflarına bakıp üzülmeyin. İlerde sizin de olur inşallah. Elinizdekilerle neler yapabileceğinizin farkında değilsiniz.

Yazılım dünyasında sürekli yeni bir şeyler ortaya çıkıyor. Sürekli öğrenmek zorunda olduğunuz bir sektör burası. İş güvenliği yok. Durduğunuz anda geri kaldığınız, dinamikleri hızla değişen, bazen yeni yazılımcıların eskilerden çok önde başladıkları bir sektör. Özel hayatınızdaki boş zamanları çalabilen bir sektöre gireceksiniz. Hiçbir zaman birşeyi baştan sona tam bilemeyeceğiniz bir sektör. Ona göre.

İş kuralları artık basit değil. Bir sektörün başka bir sektörü etkilemediği bir alan kalmadı. İstisnalar, kullanıcının özel istekleri, mevzuat gereği projeye yapılan sıkılaştırmalar, diğer sistemlerle yapılan entegrasyonlar derken bir yazılım projesini anlamak ve bu projeye katkıda bulunmak giderek zorlaşıyor. Basit işler yazılımcıyı tatmin etmiyor, karışık işler yazılımcıyı çileden çıkarıyor. KISS (Keep it Simple, Stupid) sloganı gerçek hayatın pek umurunda değil. Ürünün kullanıcı ihtiyacına cevap verirken aynı zamanda basitliği korumasını sağlamak ip üstünde yürümek gibi. Yeni yazılımcıların teknik bilgileri hazmedemeden bir de iş kurallarıyla mücadele etmesi gerekiyor. O yüzden yaptığınız projeler ne kadar gerçek hayata yakın olursa iş kurallarını anlamanız da o kadar kolay olur.

Teknik zorlukları en sona bırakıyorum. Artık teknik olarak basit bir projenin kalmamış olması sizi şaşırtabilir. Bir hatayı düzeltmek için logları düzgün okumak, veri tabanında sorunlu veriyi bulmak, geliştirme ortamında docker container’ı ayağa kaldırıp,yazılımın hangi ortamda (on prem, AWS, Azure) çalışacağına göre ayarlamalar yapmak, test yazmak gibi ortalığı karıştıran çok fazla teknik süreç var. Bunlar gözünüzü korkutmasın. Ancak bir projeyi yayına alırsanız bu tecrübeleri edinebilirsiniz. AWS, Azure gibi bulut sistemleri ücretsiz kaynak ve krediler veriyor. Bunları kullanıp projenizi yayına alın. Lokalde durduğu gibi durmaz, çarpar adamı!

Tek başınıza kod yazarken tüm projeye hâkim olabilirsiniz. Ama bir ekibin geliştirdiği bir projeye dahil olduğunuzda işler değişir. Burada iletişim öne çıkmaya başlar. Yaptığınız tahminler ve farkında olmadan uyguladığınız varsayımlar yanlışlara neden olur. Aklınızda soru varsa sorun! Emin değilseniz sorun! Saçma olsa da sorun! Bir de “git” gibi versiyon kontrol sistemlerini iyi kullanmaya çalışın.

İş verenlerin mükemmel aday arama ve çok kısa sürede projeye katkı sağlayabilecek kişiyi bulma saplantıları, projede uzun zamandır çalışanların yeni gelenlere zaman ayıramaması, oryantasyon eğitiminin ve proje dokümanlarının olmaması, olsa da eksik ve hatalı olması yeni bir işe başlarken sizi zorlayacak. Buradaki en etkili silahınız soru sormak. Ne olur soru sorun!

Kodlama işi insanı analitik düşünmeye iterken, projenin başarılı olabilmesi için sistemsel düşünmenin kritik olması yazılım projelerinin kötü bir yanı. Projeye yeni dahil olan birisi yazacağı kodlara odaklanıp işi doğru yapıyor ama yanlış işi yapıyor. İhtiyacı, takımı, projeyi anlamadan teknik beceriye sahip olmak pek anlam ifade etmiyor. Bu da tecrübesiz kişilerin başlarda zorlanmasına neden olurken, tecrübeli kişilerin projeyi beğenmeyip iş değiştirmesine neden oluyor. Teknik detaylara dalmadan önce projeye tepeden bakın. Kullanıcıyı anlamaya çalışın. Bu sizin işinizin bir parçası. Kodlama yapacaksınız ama neyi kodlayacaksınız. Proje yöneticilerinin zamanı az olabilir. İşi size birkaç cümleyle anlatmış olabilirler. İşi doğru anlatmak onların görevi. Ama işi doğru anlamak ise sizin göreviniz.

Sorumluluk alma, yanlış yaptığını kabul etme, soru sorma, işin yanlış gidebileceğini önceden sezme kodlamadan daha önemli yetenekler (soft skills) önemli hale geliyor. Teknik olarak kendinizi geliştirirken bir yandan da sosyal yeteneklerinizi geliştirin. 

İş başvurularında canlı olun. Yaptığınız projeleri güzel bir şekilde anlatın. Projelerinizi github gibi platformlara yükleyin. Kendinize ait bir blog açın. Çalışmalarınızı buraya koyun. Sizi tanımayan birisinin sizi online dünyada nasıl bulabileceğini ve sizi nasıl anlayabileceğini düşünün.

Hedef koyun, bir şeyler yapın ve yaptıklarınızı gösterin! Mücadele hiç bitmeyecek!

Yorumlar

Yorum Gönder

Bu blogdaki popüler yayınlar

Yeteneğini Kaybeden Yazılımcı

KPSS Çalışan Yazılımcı

On-Prem Çilesi