Backend Developer Yol Haritası

zirveye
Photo by Joshua Earle / Unsplash

IT kariyerinize Backend Developer olarak devam etmeye karar verdiniz. Çok iyi bir seçim ama baştan söyleyeyeyim bu yolu seçtiğinize göre mücadeleyi seviyorsunuz demektir.
Bu seçimde size rehber olabilecek bu yol haritas ile yaklaşık bir yıl sürede yeni başlayan (Junior) seviyesinde Backend Developer olarak gerekli bilgi ve becerileri kazanabilirsiniz.

Yol haritası sizi temel bir bir noktaya kadar getirir. Olmazsa olmaz teknolojileri mantıklı bir sıra ile gösterir. O noktadan sonra hangi yönde uzmanlaşmak istediğinize siz karar vermelisiniz. Çünkü bu yol kendi içinde dahi alt kategorilere ayrılabilir; örneğin öğrenilen dile bağlı olarak Javascript ya da Python Backend Developer gibi.
Ancak motivasyonunuzu yüksek tutarak ve sabırla ilerlediğinizde yaklaşık bir yıl içinde bir Backend Developer olarak iş bulabileceğinize inanıyorum.

Yol haritası sırası ve tavsiye edilen teknolojiler bu yazının yazıldığı 2022 Eylül ayı itibariyle hazırlandı. Aşağıda belirtilen sıra ve konular seçilirken Stackoverflow anketleri başta olmak üzere Linkedin gibi ünlü iş arama platformlarının iş tanımlarında (Job Description) en çok istenen yeteneklere de odaklanıldı. Öğrenmeye tabiki istediğiniz teknolojiden başlayabilirsiniz ama yeni başlayan biri iseniz sırayı takip etmenizi tavsiye ederim.

1. Temel Bilgi Sistemleri...

Temel bilgi sistemleri altyapısı (Computer Science) olmadan herhangi bir IT kariyer yolu olmaz. Hergün kullanacağınız bilgisayar ve bilgisayar teknolojilerinin nasıl çalıştığı, ilk halledilmesi gereken husustur.

Genel olarak; bilgisayar bileşenleri nedir, API nedir ne işe yarar, yazdığımız kod bilgisayar tarafından nasıl işlenir, data ve data yapıları nedir, bilgisayar ağları (network) nasıl çalışır ve fonksiyon ne demektir gibi temel konular bu alan içindedir.

Bazıları bu konuları öğrenmenin zaman kaybı olduğunu düşünür ve doğrudan bir programlama dilini öğrenekrek başlamaya çalışır. Ancak burada harcayacağınız birkaç hafta zaman kaybı değildir. Bu kısmı hallettiğinizde ilerleyen bölümlerdeki teknik konuları anlamanızda nasıl sizi hızlandırdığını görünce niçin gerekli olduğunu daha iyi anlayacaksınız.

Elbette bu kısım işin ABC'si ve siz temeller konusunda yeterli bilgiye sahip olduğunuzu düşünüyorsanız burayı es geçip bir sonraki adıma ilerleyin ancak gerçekten yeni başlayan biri iseniz IzleOgreKodla Youtube kanalında yayınladığımız Yeni Başlayanlar için Bilgi Teknolojileri kursuna ve Harvard Üniversitesinin CS50 kursuna bir göz atabilirsiniz.

2. Önce Web'i Öğrenin

web
Photo by Alina Grubnyak / Unsplash

Başarılı bir Backend developer olmak için ona servis geliştireceğiniz ortamı yani web 'i ve onun nasıl çalıştığını anlamak zorundasınız. HTTP, DNS, Cookie gibi kavramlar size yabancı olmamalıdır. Web aplikasyonları görüntülediğimiz browser nasıl çalışır, bir web sitesini nasıl görüntüler gibi sorular cevabını bulmuş olmalıdır. Bu nedenle yeni başlayanlar için web nasıl çalışır öğrenilmelidir.

3. Biraz Frontend, HTML ve CSS

HTML
Photo by Valery Sysoev / Unsplash

Çok sağlam bir backend servisi oluşturmak istiyorsunuz ya da çok cool bir API geliştirmek için can atıyorsunuz. O zaman Frontend'in nasıl çalıştığını öğrenmek bu işin anahtarı. Frontend'i anlamalısınız ki onun ihtiyaçları nedir ve nasıl en iyi şekilde karşılanır sorusunu cevaplayabilesiniz. İşe HTML ce CSS öğrenerek başlayabilirsiniz.

HTML ve CSS başlangıç için net ninja HTML & CSS kursu iyi bir alternatif.

4. İlk Andan İtibaren Versiyon Kontrol - Git Öğrenin

git
Photo by Yancy Min / Unsplash

IT kariyer yollarından herhangi birini düşünün ki Git versiyon kontrol sistemi ana konulardan biri olmasın. Evet git öğrenmek opsiyonel değil gereklilik. Git açık kaynak, dağıtık versiyon kontrol sistemidir ve bugün yazılım dünyasında de-facto standart haline gelmiştir.

Git kodunuzun tarihçesini tutabileceğiniz, kodunuzu yedekleyebileceğiniz, takım halinde çalışırken çakışmaları ve tutarsızlıkları önleyebileceğiniz, istenmeyen değişikleri engelleyip değişik branşlarda çalışabileceğiniz muazzam bir versiyon kontrol sistemidir.

Git ile beraber çalışmalarınızı saklayacağınız repo (bir nevi yazılım deposu) kontrol sistemlerinden birini de öğrenmek akıllıca olur. En yaygın olan GitHub ile başlayabilirsiniz ama GitLab ve BitBucket da alternatifler arasında. Burdan başlayabilirsiniz.

5. İlerlemeden Önce Biraz Pratik

Do Something Great
Photo by Clark Tibbs / Unsplash

Yaparak öğrenmek hemen herkes için en iyi öğrenme yöntemlerinden biridir. Çünkü kendimiz yaparken sıkça problemlerle karşılaşırız, problemleri çözerken öğreniriz, problem çözmek için de pratik lazım yani pozitif bir döngü.

Bu nedenle öğrenme yolunda daha baştan kendi portfolyömüzü oluşturmak hem bol pratik hem de öğrenme için iyi bir seçenek. Bu nedenle GitHub hesabınıza birkaç proje kelemeye başlayın.

Sadece HTML ve CSS bilgisi ile bile görsel olarak güzel projeler yapabilirsiniz. tıpkı buradaki gibi.

6. Programlama ve Algoritmalara Giriş

Artık bir an önce bir programlama diline başlamak istiyorsunuz. Bir dile karar vermeden ve ona başlamadan önce genel programlama terimleri ve algoritma temellerini öğrenmek yapbozdaki eksik parçayı tamamlar. Dilerseniz bu adımla bir sonraki adımı birleştirebilirsiniz. Ancak variables, types, loops, data structure, conditionals, functions, iterations, recursive . . . gibi terimlerin sizin için yabancı olmadığından emin olun. Programlama giriş için bu kursu takip edebilirsiniz.

7. İşletim Sistemi ve Bileşenleri

Custom computer
Photo by Joseph Greve / Unsplash

Bu adım buralarda başlar ama burda bitmez. Tüm yolculuğunuz boyunca üstüne ekleyerek gidecek ve öğreneceksiniz. Bu nedenle sonraki adımları öğrenirken de bu adım devam edecek. Bir Backend developer sürekli olarak geliştirdiği servisin üstünde çalıştığı işletim sistemi (Operating System - OS) ile etkileşime geçer. Dahası Backend servisleri doğrudan bir sunumcuda çalıştığı için sunumcunun nasıl çalıştığı anlaşılmalıdır. Temel olarak iki işletim sistemi öne çıkıyor. Linux ve Windows. Öncelikle Linux'tan başlamak doğru bir karar olur. Neden sorusunun cevabı uzun olduğu için buraya bakabilirsiniz.

Bu adımın parçası olabilecek konuları orijinal adına sağdık kalarak sıralamak gerekirse;

  • Genel olarak işletim sistemleri nasıl çalışır?
  • Temel Terminal Komutları
  • Process Management (İşlem Yönetimi)
  • Threads and Concurrency (İş Parçacığı ve Eşzamanlılık)
  • Memory Management (Bellek Yönetimi)
  • I/O Nanagement (Girdi-Çıktı Yönetimi)
  • Networking (Bilgisayar Ağları)

gibi konular olabilir.

8. Bir Dil Seçin ama Hangisi?

Javascript program in a vscode code editor with Dracula theme
Photo by Joan Gamell / Unsplash

Artık bir dil seçme ve öğrenme zamanı, hangisi olmalı sorusu tek bir cevabı olan bir soru değil. Eğer Stackoverflow 2022 anketlerine bakarsak ençok tercih edilen dillerin arasında;

  • Javascript
  • Python
  • Typescript (Javascript'in Süper Kardeşi 😀)
  • Java
  • C#

olduğunu görüyoruz.

Stackoverflow 2022 Developer Survey, Languages

Javascript

3'üncü adımda belirttiğimiz gibi Backend Developer olmak için Frontend,i ve ihtiyaçlarını anlamak zorundasıbnız. Frrontend'in ihtiyaçlarını anlamak için de HTML ve CSS 'in yanında Javascript 'i de öğrenmek zorundasınız. Javascript uzmanı olmasanız da belli bir seviyeye kadar bilmelisiniz. Bu nedenle bu dilden başlamak zaman kazandırabilir.

Ayrıca diğer dillere nazaran Javascript tıpkı Python gibi öğrenme eğrisi kolay bil dildir. En azından başlangıç ve orta seviyeler için.

Javascript' i öğrenmek için başka iyi bir nedeniniz daha var. Javascript FrontEnd geliştirmede kullanıldığı gibi Node.js programlama dili sayesinde Backend geliştirmede de kullanılır. Modern Javascript'e buradan bir başlangıç yapabilirsiniz. Eğer yolunuza Javascript ile devam edecekseniz eninde sonunda Typescript' te öğrenmek durumunda kalacaksınız. İşin güzel tarafı aslında Typescript yeni bir değil Javascript' in ta kendisidir. Javascript'in bilinen eksiklerini gidermek için oluşturulmuş, içerisine güvenli kod tipleri (type safe) eklenmiş ve daha iyi geliştirme deneyimi sunan bir proglamlama dilidir.

Python

Python dili Stackoverflow anketinde en çok tercih edilen 2'nci dil olmayı hakediyor. Öğrenme eğrisi en kolay olan dil olarak bilinir ve birçok bilgi teknoloji okulu programlamaya Python ile başlar.

Kolay ve anlaşılır bir yazım dili olması yanında oldukça yaygın kütüphanelere sahip olan Python ile bugün Data Science (Veri Bilimi)' tan web servis geliştirmeye kadar hemen her alanda geliştirme yapılmaktadır. Python' a başlamak için iyi bir kaynak

Java ve C#

Java ve C# Nesne tabanlı programlardır ve öğrenme eğrileri ilk iki dile nazaran biraz daha zordur. Ancak her ikisi de çok güçlü dillerdir ve sektöred en çok tercih edilen diller arasındadır. Özellikle Java bir kere yaz her yerde çalıştır sloganı ve kendi kod motoru JVM ile kahve makinalarından jeneratörlere, sensörlerden web sunumculara kadar hemen her yerde ve her platformda çalışır. Bu nedenlede en yaygın dillerden biridir.

9. Hatayı En aza İndirin - Test Öğrenin

Photo by Joshua Lawrence / Unsplash

Kodunuzu yazmaya başladığınız ilk andan itibaren Test yazmayı öğrenmeli ve kodunuzu test etmelisiniz. Yazılım testi ile ilgili olarak Unit test, Integration Test ve Functional Test gibi kavramları bilmeli ve aşağıda belirtilen test araçları ile bunları nasıl yazacağınızı öğrenmelisiniz.

Birçok test aracı olsa da başlangıç olarak mocha veya Jest test kütüphaneleri iyi bir seçim olabilir. Bunula birlikte test deneyiminizi bir adım daha ileri taşımak ve entegrasyon ve komponent testleri için Cypress veya Playwright frameworklerinden birini seçip öğrenebilirsiniz.

Bu adıma mutlaka zaman ayırdığınızdan emin olun ve Test Driven Development olarak bilinen Test güdümlü geliştirmeyi mutlaka öğrenin. Seçtiğiniz dile uygun bir kurs seçip başlayabilirsiniz. Javascript dili için buradan başlayabilir ve öğrendikçe üstüne ekleyebilirsiniz.

10. Data ve Database

Database

Geliştirdiğiniz Backend servisinizi mutlaka bir veritabanına (database) bağlayacaksınız. Bu nedenle data ve database konuları yol haritamızın bir başka önemli adımı. Bu bölümde iki temel database tipini, ne işe yaradıklarını, farklılıklarını öğrenmelisiniz.

İlk database tipimiz ilişkisel veritabanları (relational databases). Bu database' ler SQL denen sordulama dilini kullanırlar. Seçenek çok fazla. Yine sektörde çok yaygın olan MySQL ya da PostgreSQL den başlayabilirsiniz.

Diğer önemli database tipi ise doküman tipi NoSQL ya da doküman (document) tipi database' ler. Burda da seçenekler çok fazla olmakla birlikte en yaygın olan MongoDB ile başlamak iyi bir başlangıç olacaktır.

11. API

200 Ok
Photo by Tengyart / Unsplash

Kendisi çok kısa ama içeriği çok uzun bir başlık. Bugünün geliştirme ortamı gelişmiş API servisleri üzerinde şekilleniyor. Önce API nedir konusunda iyi bir anlayışa sahip olmalı sonra da REST, gRPC ve JSON APIsgibi tiplerini öğrenmelisiniz. Ayrıca iyi bir API nasıl dizayn edilir ve API güvenliği de anlaşılması gereken konular arasında. Bu nedenle Open API gibi standartları da öğrenmelisiniz. API konusuna başlamak için güzel bir eğitme buradan bakabilirsiniz.

12. Sanallaştırma (Virtualization) ve Container

Bir backend developer olarak belki de hiçbir zaman gerçek bir fiziksel makinede servis barındırmayacaksınız. Bütük ihtimalle servisleriniz bulut üstünde bir sanal makinedE mesela aws bulut ortamında bir EC2 sanal makinesinde ya da container da buluncak. Bu nedenle virtualization ve container en iyi dostunuz olacak.

Sanallaştırma ile ilgili temelleri öğrenmek için kendi sanal makinenizi oluşturup kullanabilirsiniz. Bunun için en iyi yöntemlerden biri Virtual Box

Container için ise en yaygın kullanılan docker başlamak için en uygun seçenek.

13. Bir Framework Seçin

Bir framework (yazılım kütüphanesi/çerçevesi) kullanmadan da komple bir baceknd servis ya da API geliştirebilirsiniz. Ancak frameworkler bir çok geliştirme işini hızlandırmak, tekrar eden kod tiplerini önlemek ve uygun bir taslak sunmak için oluşturulmuşlardır. Kısacası tekerleği yeniden icat etmeye gerek yok. Bir çok modül zaten geliştirilmiş, denenmiş ve kullanıma hazır. Peki ama hangi framework?

Hangi frameworkü seçeceğiniz hangi dili seçtiğiniz ile yakından ilgili. Ya da bazı framework' ler Frontend' te kullanılan framework' e göre de şekillenir.

Eğer Javascriptseçmiş iseniz yine seçenek çok fazla. Öne çıkanlar olarak;

  • Bir Node.js framework' ü olan Express. Komple bir Backend API geliştirmek için buraya bakabilirsiniz.
  • Backend servisi ve Microservice' ler için bir başka Node.js framework'ü olan NestJS
  • React bir framework kullanılıyor ise NextJS iyi bir seçim olabilir.
  • Frontend Vue ise Nuxt tercih olabilir.
  • Eğer statik kod oluşturma gereklilik ise (Static Site Generation) Gatsby tartışmasız en iyilerden biri

Dil olarak Pythonseçmiş iseniz birinci öncelikli olarak Dajngo ikinci öncelikli olarak Flask tercihleriniz arasında olmalı.

Eğer seçeneğiniz Javaise şu an sektörde en çok kullanılan Spring Boot' u öğrenmeniz faydalı olur.

14. Güvenlik ve Yetkilendirme

Padlocks put on metal fence over a bridge by couples.
Photo by Parsoa Khorsand / Unsplash

Bir backend developer olarak en fazla meşgul olacağınız konu güvenlik olacaktır. Güvenlik sağlamak zorunda olduğunuz bir gereksinim olduğu için yeterli vakit ayırdığınızdan ve temelleri öğrendiğinizden emin olun.

İşe Web güvenliğinden başlayabilirsiniz.

  • HTTPS, SSL, TLS, SSH nedir?
  • CORS nedir?
  • OWASP Güvenlik Pratikleri

Sürekli kullanacağınız için HASH ve HASHING nedir konusunu listenize ekleyin.

Yetkilendirme güvenlik konusunun önemli bir parçası. Aşina olmanız gereken yetkilendirme (Authentication) biçimleri arasında;

  • OAuth
  • JWT
  • SAML
  • OpenID
  • Cookie Based Auth

gibi konular bulunuyor.

15. Mimari Yapılar ve Dizayn Paternleri

Diagram
Photo by Kelly Sikkema / Unsplash

Backend geliştirme çeşitli dizayn paternleri üstünde ve çeşitli geliştirme prensipleri ile yapılır. Bu paternleri anladığınızda ilaride parçası olduğunuz bir projenin nasıl şekillendiğini, ne üstüne bina edildiğini ve mimarisini de anlarsınız.

Birçok çeşidi olmak ile beraber genel olarak üç ana mimari yapıdan bahsedebiliriz;

  • Monolit' ler
  • Mikroservisler (Microservices)
  • Sunumcusuz Yapılar (Serverless)

Dizayn Paternleri ve Geliştirme Prensipleri de yine çok çeşitli olmakla beraber şu beş başlığı öğrenmeye başlamak işinizi kolaylaştıracaktır;

  • Test Driven Development (Test Güdümlü Geliştirme)
  • Domain Driven Design (Alan Güdümlü Dizayn)
  • SOLID
  • KISS
  • DRY

16. DevOps Teknolojileri

Twitter, Netflix, Facebook ya da Google gibi devler 1 dakikadan az sürede yeni versiyonu yayımlayabiliyorlar. Bu inanılmaz bir hız. Bu sürekli geliştirme ve sürekli yeni versiyon yayımlama (Continuous Integration & Continuous Delivery - CI/CD) DevOps ile mümkün oluyor. Development ve Operation birleşimi olan DevOps, 2022 yılında bir backend developerin bilmesi gereken beceriler arasında.

Öne CI/CD araçlarını yazacak olursak;

  • Jenkins
  • GitHub Actions
  • Circle CI
  • Gitlab CI

DevOps içinde gözlemleme ve takip etme de (Monitoring and Logs Management) önemli bir alandır. Bir backend developer olarak geliştirdiğiniz servislerin durumunu sıkça gözlemlemek isteyeceksiniz;

  • Prometheus
  • Grafana
  • Datadog

burada devereye giriyor.

Sevisinizi yayımlamak ya da yönlendirmek için ise web sunumcular ya da yönlendirme (proxy) araçları kullanacaksınız. En yaygın olanı nginx ve öğrenme eğrisi en kolay olanı caddy ile işe başlayabilirsiniz.

Yazının Sonu ama Yolun değil...

Öncelikle yazıyı sabırla buraya kadar okudu iseniz kendinizi tebrik etmelisiniz. Evet yol haritası yazımız sona erdi ama sizin yolculuğunuz daha yeni başlıyor.

Backend Developer olmak ve IT sektörüne bu kariyer adımı ile başlamak 2022 yılında kendiniz için yapacağınız en iyi kararlardan biri olabilir.

Sabırla ve güçlü bir motivasyonla devam edin.