Backend Developer Yol Haritası
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.
- Temel Bilgi Sistemleri...
- Önce Web' i Öğrenin
- Biraz Frontend, HTML ve CSS
- İlk Andan İtibaren Versiyon Kontrol - Git Öğrenin
- İlerlemeden Önce Biraz Pratik
- Programlama ve Algoritmalara Giriş
- İşletim Sistemi ve Bileşenleri
- Bir Dil Seçin ama Hangisi?
- Hatayı En aza İndirin - Test Öğrenin
- Data ve Database
- API
- Sanallaştırma (Virtualization) ve Container
- Bir Framework Seçin
- Güvenlik ve Yetkilendirme
- Yapılar ve Dizayn Paternleri
- DevOps Teknolojileri
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
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
Ç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
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
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
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?
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.
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
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
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
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 APIs
gibi 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 Javascript
seçmiş iseniz yine seçenek çok fazla. Öne çıkanlar olarak;
- Bir
Node.js
framework' ü olanExpress
. 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 Python
seçmiş iseniz birinci öncelikli olarak Dajngo ikinci öncelikli olarak Flask tercihleriniz arasında olmalı.
Eğer seçeneğiniz Java
ise şu an sektörde en çok kullanılan Spring Boot' u öğrenmeniz faydalı olur.
14. Güvenlik ve Yetkilendirme
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
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.