Patika Derslerini Bitirirsek Yazılımcı Olabilir Miyiz?

Patika Discord etkinliğimiz sonrası aldığımız notları ekibimizden Ezgi sizler için derledi!

Öğrenenlere ve İş arayanlara

Patika Derslerini Bitirirsek Yazılımcı Olabilir Miyiz?

Ezgi Yaltay (Sr. Business Operations Specialist ) Şamil Özkan ( Research and Development Specialist @Kodluyoruz )

Teknoloji kariyeri hedefleyenlerin zihinlerini meşgul eden başka bir sorudan herkese merhaba 😊 İzlemek isteyenleri şöyle alalım.

Bu yazıda, sadece Patika derslerini bitirmenin yazılımcı olmaya yetip yetmeyeceğini sorgulayacağız. Bu sorgulamayı yapabilmek için önce kendini geliştirmiş iyi bir yazılımcı olmak için gerekenleri bulmamız gerekiyor.

Nelerin gerektiğini anlamak için ise iki alana bakabiliriz: sektörün yazılımcılarda aradığı özellikler ve başarılı yazılımcıların sektörden bağımsız olarak taşıdığı özellikler. Bu özelliklere göre önerilerimizi sunacağız. 

Bu nedenle yazıda önce 

  • Bu özelliklerin geliştirilmesi için önerilerimizi sıralayacağız,
  • Başlıktaki soruyu beraber bir yanıt vermeye çalışacağız.

Bir konuda uzmanlaşın.

İş bulmaya çalışırken yapılan en yaygın hatalardan biri, birden fazla dilde ve araçta uzmanlaşmaya çalışılması. Bunun yerine bir yazılım dilinde kendinizi geliştirebildiğiniz kadar geliştirip onu besleyen diğer dillerle ve araçlarla desteklemeniz en doğru strateji olur. Yazılım kariyerinizin gelişim sürecinde birden fazla ağırlık merkezi oluşturmak veriminizi ve hızınızı düşürür. Ayrıca bir dilde derinleştikten sonra farklı bir teknolojiyi öğrenmek, henüz bir dilde derinleşmeden başka bir teknolojiyi öğrenmekten daha kolaydır.

Algoritma temeliniz sağlam olsun.

Yazılım bilgisinin temeli veri yapıları ve algoritmalardır. Yeni diller, araçlar geliştirilse de hepsinin oluşturulma paradigması aynı. Geçmişte olan bugün olmayan birçok programlama dili aynı mantığı paylaşır. Sektördeki deneyimli (senior), yönetici birçok yazılımcının sektöre yeni giriş yapan yazılımcılardan şikâyet ettiği nokta da burası: İşin temellerini öğrenmeden yazılım dilleri ve araçlarını öğrenmeye çalışmak.

Oysa böyle bir strateji gelecekte çok fazla bocalamanıza, tıkanmanıza yol açar. Bunun önüne geçmek için nesne tabanlı modelleme (object oriented), veri yapıları ve algoritmalar konularına gereken önemi göstermelisiniz. Bunu sağladıktan sonra programlama dillerini öğrenmeniz, öğrendiğiniz bir dilden başka bir dile geçmeniz kolaylaşır. Veri yapıları ve algoritmalar konusu tüm proglamlama dillerinin ve araçlarının üzerinde yer aldığı, onların paylaştığı bir alan. Çoğu kurumun işe alım süreçlerinde adaylara uygulanan testlerde testin programlama dilinin seçimi adaylara bırakılır. Şirketlerin bu tür testlerde anlamak istedikleri temel nokta, bir dildeki uzmanlığınızdan ziyade algoritma bilginiz.

Dolayısıyla bu alanı sağlam tutmanız tüm dillerde size avantaj sağlar.

Kod okumak.

Yazılımcının tüm rutinin arkasında aslında tek bir süreç var: problem çözmek. Problemleri giderme konusunda geliştirdiğiniz tüm çözümler aslında sizin tarzınızı oluşturuyor. İhtiyaçların meydana getirdiği problemleri çözerken geliştirdiğiniz çözümler kendinizi tekrar etmenize, yatkın olduğunuz yapıları sürekli kullanmanıza neden olabilir. Bu noktada kod okuma ön plana çıkıyor. Problemlerinize çözüm geliştirmeye çalışırken başkalarının kodlarını, çözüm stratejilerini okumanız, bir yazılımcı olarak zengin bir alet çantasına sahip olmanızı sağlar. Başkalarının aynı, benzer problemler karşısında geliştirdiği kod yapıları sizin aynı ya da benzer problem için geliştirdiğiniz algoritma yapısından daha kısa olabilir. Başarılı yazılımcının dikkat çeken özelliklerinden biri başkalarının ürettiği çözümlerden faydalanmayı bilmesi, daha verimli çözüm stratejilerinin olacağını bilerek onlara açık olması yani kod okuması.  

 Kişisel kod kütüphanenizi oluşturun.

Bunun yanında kullandığınız ya da ilginizi çeken yapıları biriktirmek de önemli bir alışkanlık. Kod kütüphanenizin zengin ve güncel olması, başarıya götüren ve başarıyı gösteren bir özellik. Bu biçimde oluşturduğunuz kod kütüphanesi yazılımcı olarak kapasitenizi de gösterir.

Sürekli öğrenen olmaya çalışın.

Daha verimli, kısa çözümlerin olabileceğini bilerek başkalarının yazdığı kodları okuma, bunun sonucunda karşılaşılan algoritma yapılarını kişisel kod kütüphanesine depolama nitelikleri aslında sürekli öğrenen olmaya bağlı.

Patika tam da bu nedenle, herkesin başlayabileceği ya da devam edebileceği bir patikanın olduğunu göstermek için kuruldu.

Bildiklerinizi paylaşmak, bilmenizi sağlar; yardımsever olun.

Bildiklerinizi paylaşmak, bildiklerinizi daha iyi kavramanızı ve yeni ayrıntıları fark etmenizi sağlar. Bildikleriniz konusunda üretim yapmak kesinlikle en etkili bilme yollarından. Bu durumu sınavlara hazırlık sürecinde herkes yaşamıştır. Paylaşım esnasında ortaya çıkan etkileşim ortamı bildiklerinize hakimiyetinizi arttırır; yeni bağlantılar kurmanızı, görmediğiniz ayrıntıları görmenizi kolaylaştırır.

Sıklığı kaybetmeyin.

 Öğrenmeye çalıştığınız ya da halihazırda asgari düzeyde bildiğiniz bir konuya ara verirseniz gerilemeye başlarsınız. Öğrenmeye, geliştirmeye çalıştığınız neyse o rutininizin parçası olmalı. Hedefiniz, gelecekteki donuk bir durum değil bugünkü düzeninizin canlı bir parçası olmalı.

Bol bol uygulama yapın

Video izleyerek bir konuda fikir sahibi olabilirsiniz. Sahip olduğunuz bilgileri arttırabilirsiniz. Yeni bir bakış açışı edinip çalışmalarınız için esin kaynağı oluşturabilirsiniz.

Fakat sadece video izleyerek bir beceri geliştiremezsiniz. Yolun başındaki birçok kişi izlediği video sayısını arttırarak yazılım becerilerini arttırmayı ümit ediyor. Video izlemenin faydaları bulunsa da bir noktadan sonra bu, sınırlı vakit ve enerjinizin verimsiz kullanılması anlamına gelir. Coderbyte, HackerRank, Codewars gibi platformlar aracılığıyla öğrendiklerinizi hemen uygulamaya başlayabilirsiniz

Hata yapın, çözümlerinizi kaydedin.

Hata, bir öğrenme başlatıcısıdır. Karşılaştığınız hataları arattığınızda başkalarının da aynı hatayı yaptığını göreceksiniz. Hatanıza çözüm ararken sadece çözüme yönelik bilgilerle değil yazılımcı olarak becerilerinizi geliştirecek bilgilerle de karşılaşacaksınız. Hatanıza çözüm aramanın bu bereketli sürecinde birçok ayrıntıyla karşılacaksınız.

“Bu nedenle hata yapmak, deneyim kazanmak anlamına gelir. Deneyim kazanmaktan korkmayın.”

Bulduğunuz çözümleri açıklayıcı notlarla kaydedin.

Hatalarınızdan öğrenmeyi daha verimli hale getirmek için hatalarınıza bulduğunuz çözümleri kaydedin. Böylece aynı hatayla karşılaştığınızda çözüme kolaylıkla ulaşabilir, zaman kaybetmezsiniz. Ayrıca yaptıklarınızı doğru bir tasarımla açıklayıcı biçimde belgeleyebilme (çalışmalarınızdaki kod bloklarına açıklamalar eklemek)  alışkanlığı geliştirmeniz, ekip çalışması becerilerinizi de kuvvetlendirir. Yani notlar, açıklamalar eklemek sanılandan daha önemli; çünkü bir ekipte yaptığınız işi başkasının devralıp sürdürmesini kolaylaştırır.

GitHub etkin bir biçimde kullanın.

GitHub önemli bir kaynak ve uygulama alanı. Hem kendinizi geliştireceğiniz hem becerilerinizi gösterebileceğiniz bir platform.

GitHub profili değerlendirilirken bakılan birkaç nokta vardır. Bunlar:

- ‘commit’ sayısı,

- üzerinde çalıştığınız ya da parçası olduğunuz projeler,

- çalışmalarınızda test kodunun olup olmaması,

- işlerinizin özgünlüğü,

- OpenSource’a katkıda bulunup bulunmadığınız,

- yazdığınız kodların nitelikleri; temiz kod yazıp yazmadığınız gibi özelliklere bakarak GitHub profilinizi iyileştirebilirsiniz.

Artık başlığımızdaki sorunun yanıtlanması için gerekli parçalar tanımlanmış oldu. Patika derslerini bitirdikten sonra yazılımcı olarak hazır olup olmadığınız, yukarıdaki gereksinimler ve nitelikler çerçevesinden söylenebilir ancak.

Bunlara güçlü yanıtlar verebiliyorsanız sektöre dahil olmanız kolaylaşır ve sektörün karşınıza çıkaracağı zorluklara / sizden bekleyeceği işlere hazır hale gelirsiniz. 

Yazılımcı olmak için gereken şartları sağlamış, sektördeki işleri yapabilmek için gereken yeterliliği oluşturmuş olursunuz!

***

Patika.dev içerisindeki ücretsiz yazılım derslerine buradan ulaşabilirsiniz!