Exploring Infinite Possibilities on FrontEnd 🚀
Burak Sağlık
Search...

Sun Aug 02 2026

Sıfırdan Junior Developer Olma: AI ile Öne Geçme Rehberi

Sıfırdan Junior Developer Olma: AI ile Öne Geçme Rehberi

🎯 Giriş: Sıfırdan Başlayanların Yolculuğu Nasıl Değişti?

Hatırlıyor musun, birkaç yıl önce junior developer'ların kariyer yolculuğunu anlatan yazılar? 🔁 O zamanlar her şey çok netti. Bir şeyler öğren, staj yap, büyük şirkete gir, kod yaz. İşte bu klasik yol haritası tamamen değişti.

Peki ne değişti aslında? ❗️ Sıfırdan başlamak artık tamamen farklı bir macera.

Eski zamanlarda bir öğrencinin ilk günleri çok zor gidiyordu:

  • Kütüphaneleri anlamak
  • Syntax hatası bulmak
  • "Neden bu hata veriyor?" diye gece gündüz sormak

Ben de o dönemde kendimi çok zor hissettim. Her yeni kavram bir tepenin tepesinde gibi görünüyordu. 🥲 Ama şimdi dur bir saniye. AI devreye girdi ve her şeyi mahvetti. 🛠 Artık bir başlangıç seviyesinde insan bile karmaşık kodları anlama çabası içinde değil. Araçlar bize yol gösteriyor.

Ama bu ne anlama geliyor? 🎯 Bu, zorlukların tamamen ortadan kalktığı anlamına gelmiyor. Oysa aslında zorluklar biraz farklı şekillendi. ⛔ Eski günlerdeki teknik engellerin yerine, yeni nesil problem çözme becerileri geldi.

Peki sen ne yapabilirsin? 🧐 Okumaya devam et, çünkü bu yeni dünyada başarılı olmanın sırrı tamamen başka bir şey. Hadi birlikte keşfedelim! ✅


🔁 Yapay Zekanın Çalışma Prensibi: AI Araçları Ne Yapıyor?

Hadi bu konuyu biraz açalım. Biraz önce ChatGPT'e ya da GitHub Copilot'e bir şey sorduğunuzu düşünelim. Ne oluyor orada gerçekten? Sanki bir sihirbaz var gibi, ama aslında çok daha mantıklı bir süreç var arkasında.


🛠 AI Araçları Ne Yapıyor?

Temelde üç aşamada düşünebilirsin:

  1. Prompt yazıyorsun → Sen ne istiyorsan onu bir metin olarak veriyorsun.
  2. AI seni dinliyor → Model senin yazdığını analiz ediyor.
  3. Sonuç üretiyor → Kod, açıklama, veya cevap döndürüyor.

Ama bu üç adımın arkasında asıl güzel şey var. Bunu biraz daha detaylı görelim.


🔁 Adım 1: Prompt Yazmak — Yani "Soruyu Sor"

Bunu şöyle düşün: Bir arkadaşına yardım istiyorsun. Sadece "kodu yaz" demezsin, değil mi? Belki şöyle dersin:

"Python'da bir listenin çift sayılarını filtreleyen fonksiyonu yazabilir misin?"

AI araçları da aynı mantıkla çalışıyor. Ne istediğini net belirttiğinde, model senin isteğini anlayıp ona uygun bir çıktı üretmeye başlar.

Burada dikkat etmen gereken şey: Promptun ne kadar netse, çıktı o kadar iyi olur.


🔁 Adım 2: AI Kod Üretiyor — Nasıl Çalışıyor?

Şimdi asıl sihirli kısım buraya geliyor. Ama aslında sihir yok. 😄

AI modelleri milyonlarca kod örneği üzerinde eğitilmiş. Bu eğitim sırasında modeller kodların nasıl yapıldığını öğrenmiş. Yani bir şey sorduğunda, model şu mantıkla hareket eder:

  • Senin promptunu alıyor.
  • Eğitiminde gördüğü benzer örnekleri akılda tutuyor.
  • Akılda tuttuğu kalıplara uygun bir çıktı tahmin ediyor.

Şuna bir bak:

def filter_even_numbers(numbers):
    return [num for num in numbers if num % 2 == 0]

Bu kodu bir Copilot veya ChatGPT senin için yazdı diyelim. Ne oluyor burada? Model, senin "çift sayı filtrele" dediğini algıladı. Eğitiminde gördüğü benzer Python kodlarından bu kalıbı çıkardı. Tek tek "düşünerek" yazmıyor — olasılık tabanlı tahmin yaparak üretiyor.

❗️ Burada önemli olan: AI anlamıyor kodun ne anlama geldiğini hissediyor gibi. Kalıpları eşleştiriyor. İşte bu yüzden bazen hata yaptığını da oluyor.


🔁 Adım 3: İnceleme Aşaması — Sen Kontrol Etmelisin

Bu kısım çok önemli. Çıktıyı aldıktan sonra kesinlikle geç kalma.

Yapman gereken şeyler:

  • Kod çalışıyor mu? → Çalıştır, bak.
  • Sınır durumlarını düşündün mü? → Boş liste verirsen ne oluyor? Sıfıra böler misin?
  • Gereksiz karmaşıklık var mı? → Çözüm basitse, daha da basitleştir.

Kısa özetle: AI bir asistan, sen ise geliştiricisin. Asistanı bekleme, kontrol et.


🎯 Özetle Ne Oluyor?

Tekrar özetleyeyim:

  1. Sen bir prompt yazıyorsun → AI seni dinliyor.
  2. Model eğitimindeki kalıpları kullanarak çıktı tahmin ediyor.
  3. Sen de o çıktıyı inceleyip doğruluyorsun.

Kısacası, AI araçları sana başlangıç noktası veriyor. Ama son ürünü sen oluşturuyorsun.

✅ İşte bu yüzden bu araçlar geliştiricilerin üretkenliğini artırıyor, ama yerini tutmuyor.


❗️ Eğitim Krizine Dair: Neden Geleneksel Yol Kapanıyor?

Hadi biraz samimiyetle konuşalım. Ben de kendimi şöyle hissettim: Bir bootcamp'e kayıt yaptım, "en güncel bilgiyi alacağım" dedim. Ama işte o gün geldiğinde, bir şeylerin çok geride kaldığını anladım. Sen de böyle mi hissediyorsun? 🔁

Eğitim kurumları ve bootcamp'ler bir anda harekete edemiyor. 🛠 Düşün, AI dönüşümü bir güncelleme değil, tamamen yeni bir sistem. Ama biz hâlâ eski mühendislik kurallarını öğreniyoruz. Süreç çok yavaş. İşte bu yavaşlık bizi sıkıyor:

  • Müfredat çok geç güncelleniyor. Bir şeyi öğrendiğinde, iş dünyası zaten bundan birkaç adım önde.
  • Sınavlar var ama gerçek dünya yok. 📝 Bilgiyi ezberliyorsun, ama sorunu çözmeyi pratik yapmıyorsun.
  • AI araçlarını kullanmayı öğretmiyorlar. Sadece teori kalıyor, pratik kalmıyor. ⛔

❗️ Burada asıl derinlik ne? Eski müfredat sadece "nasıl yapılır"ı öğretiyor. Bugün ise bir araç değişiyor her hafta. Sadece kullanmayı bilmek yetmiyor; nasıl düşünüp nasıl adapte olacağın önemli. Bu durum çok deprime edici, değil mi?

Ama umutsuz olmaya gerek yok! ✅ Eğitim sistemi eksik kaldığında, sen eksik kalmıyorsun. Gerçek fark, kendine öğrenme alışkanlığı kazandırmakta. 🎯 Geleneksel yol kapandıysa, sen kendi hızlı yolunu açabilirsin. İşte bu fark, seni öne çıkarıyor.


🛠 Hayati Beceriler: AI'ın Yapamayacağı Şeyler

Bak, sana bir sır vereyim. AI her gün daha iyi oluyor — bunda şüphe yok. Ama işte tam da bu yüzden, insan becerileri daha da değer kazanıyor. İşte dört beceri AI'ın asla taklit edemeyeceği şeyler:


🎯 Problem Tanıma

AI, sana sorulan soruyu çözer. Ama doğru soruyu sormak senin işin.

Mesela bir kullanıcı "Sistem yavaş" diyor. AI bir optimizasyon önerir. Ama sen? Sen sormaya başlarsın:

  • "Yavaşlığın ne zaman başladığını biliyor musun?"
  • "Bu yavaşlık işini etkiliyor mu, yoksa sadece kullanıcı deneyimini mi?"
  • "Önceki bir değişiklikle birlikte mi geldi?"

Sen soruyu çözerken, AI zaten yanlış soruyu yanıtlamış olur. İşte problem tanıma asıl gücün burda.


🏗️ Mimari Tasarım

Bir sistemi tasarlarken tek tek teknik kararı değil, bütüni düşünüyorsun.

  • Bu servis bu servisle nasıl konuşacak?
  • Ölçeklendikçe hangi kısıt çöker önce?
  • Bugün değil, yarın ve gelecek yıl için ne tasarlıyorsun?

AI bir mimari çizer ama tahmin edemez — çünkü gerçek dünyada her proje farklı. Karar alma sürecinde senin sezgi, deneyim ve risk algın yok karşılığında.


💬 İletişim

Teknik bir çözümü, teknik olmayan birine nasıl anlatırsın? İşte burada devreye sen giriyorsun.

  • Yöneticiye "latency düştü" demezsin, "kullanıcılar daha hızlı iş yapacak" dersin.
  • Bir müşterin endişesini anlarken, teknik detayla değil, empati ile yaklaşırsın.
  • Bir ekip arasında çatışma varsa, kod yazmazsın — dinlersin, arabiriklersin.

AI bir rapor üretir ama insanın ruh halini, öfkesini, umudunu okuyamaz.


🔍 Kontekst Anlama

Aynı kelime farklı projelerde farklı anlama gelir. AI bunu karıştırabilir.

  • "Refactor" diyen bir senior developer ile "refactor" diyen yeni bir stajyerin kastettiği şey aynı değil.
  • Bir "urgent" ticket, üretimde çökmüş bir hata için farklı bir şey demektedir; demo için hazırlanan bir güncelleme için ise başka bir şey.

Sen ortamı, insanları, kültürü biliyorsun. Bu bilgi, AI'ın veri tabanına sığmaz.


✅ Şimdi Ne Yapmalısın?

Bu becerileri bir gün "nice-to-have" gibi görünme. Hayatın dört temel sütunu.

  • Problem tanımayı geliştirmek istiyorsan, her soruyu çözmekle bitirmeden bir önceki adıma dön.
  • Mimari tasarım konusunda güçlenmek istiyorsan, sadece kodu değil karar metnini de oku.
  • İletişimde daha iyi olmak istiyorsan, her sprint sonunda bir retrospektif yap ve dinlemeyi öğren.
  • Kontekst anlayışını artırmak istiyorsan, farklı ekiplerle çalış ve "neden" sorusunu her zaman sor.

Hadi şimdi başlayalım. Bunlar senin en büyük farkını yaratacak beceriler. 💪


🛠 Pratik Uygulama: Temel Kod Kalıpları ve Örnek Proje Yapısı

Hadi bir şey yapalım. AI'a kopyalayıp yapıştırma yapmadan, bir API yapısını kendi ellerimizle yazacağız.

🎯 Neden Bu Konu?

Birçok yeni geliştirici ilk kodlarını yazarken şunu yapıyor:

"ChatGPT'ye bir API endpoint ver, kopyala yapıştır, çalışır."

Bu asla öğrenmeni sağmaz. Peki neden? Çünkü sen hata ayıklayamıyor, değiştiremiyor, anlamıyor oluyorsun.

Bugün seninle birlikte basit bir Flask tabanlı bir API yaparız. Ama dikkat — her satırı sen yazacaksın.


📦 Proje Yapımız Ne Olacak?

Bir görev listesi (task list) API'si yapacağız. Çok basit. İhtiyacımız olan şeyler:

  • Bir görev ekleme (POST)
  • Tüm görevleri listeleme (GET)
  • Basit bir in-memory (bellekte) veri saklama
  • For döngüsü ve if-else mantığı — açıkça

🛠 Önce Mantığı Konuşalım, Sonra Kodu Yazalım

Senin yapman gereken üç şey var:

  1. Bir veri deposu oluştur — burada bir Python listesi kullanacağız. Basit, ama yeterli.
  2. Kullanıcıdan veri al — Flask'un request nesnesi bunu yapacak.
  3. Veriyi işleyip döndür — burada if-else ve for döngüsünü manuel yazacağız.

Şimdi kodu yazalım. Her satırın altında neden yazdım. Oku. Anla.


# app.py
# Bu dosya, uygulamamızın ana giriş noktası.
# Flask'u içe aktarıyoruz — web API'leri oluşturmak için kullandığımız kütüphane.
from flask import Flask, request, jsonify

# Flask uygulamasını oluşturuyoruz.
# __name__ dememizin sebebi: Flask'a "bu uygulama nerede?" bilgisini vermek.
app = Flask(__name__)

# --- VERİ DEPOSU ---
# Burada görevlerimizi tutuyoruz.
# Gerçek bir projede veritabanı kullanılır, ama şimdi mantığı görmek için
# basit bir Python listesi yeterli.
gorevler = []

# --- ID SAYACI ---
# Her yeni görev için benzersiz bir ID üretmemiz lazım.
# AI template'leri genelde UUID kullanır, ama biz basit bir sayaç yapalım.
# Böylece "sayac nasıl çalışır" kavramını görürsün.
son_id = 0


# --- GÖREV EKLEME ENDPOINT'i ---
# POST isteği ile yeni bir görev ekleyeceğiz.
# Kullanıcı JSON formatında bir başlık (title) göndericek.
@app.route('/gorev', methods=['POST'])
def gorev_ekle():
    global son_id  # Her yeni görevde ID'yi artıracağız.

    # Gelen isteğin JSON verisini alıyoruz.
    # request.json, istemci tarafından gönderilen veriyi Python sözlüğü olarak döndürür.
    gelen_veri = request.json

    # Önce kontrol: Başlık (title) gelmiş mi?
    # Eğer kullanıcı başlık göndermezse, hata döndürmemiz gerekir.
    if gelen_veri is None or 'baslik' not in gelen_veri:
        # jsonify ile JSON formatında hata mesajı döndürüyoruz.
        # 400 kodu: "istek hatalı" anlamına gelir.
        return jsonify({"hata": "Başlık zorunludur"}), 400

    # ID'yi artırıyoruz ve yeni görevi oluşturuyoruz.
    son_id += 1
    yeni_gorev = {
        "id": son_id,
        "baslik": gelen_veri["baslik"],
        "tamamlandi": False  # Yeni görev her zaman tamamlanmamış olarak başlar.
    }

    # Görevleri tutan listemize ekliyoruz.
    gorevler.append(yeni_gorev)

    # Başarılıysa, oluşturduğumuz görevi ve 201 kodunu döndürüyoruz.
    # 201: "Kayıt başarıyla oluşturuldu" anlamında.
    return jsonify(yeni_gorev), 201


# --- TÜM GÖREVLERİ LİSTELEME ENDPOINT'i ---
# GET isteği ile tüm görevleri döndüreceğiz.
@app.route('/gorev', methods=['GET'])
def gorevleri_listele():
    # Burada sadece listemizi JSON olarak döndürüyoruz.
    return jsonify(gorevler), 200


# --- ID'YE GÖRE GÖREV ARAMA ---
# GET isteği ile tek bir görevi ID'ye göre bulacağız.
# Örnek: /gorev/3  →  id'si 3 olan görevi getir.
@app.route('/gorev/<int:gorev_id>', methods=['GET'])
def gorev_bul(gorev_id):
    # Burada for döngüsü kullanıyoruz.
    # AI template'leri genelde list comprehension veya .find() kullanır,
    # ama biz döngüyü elle yazalım — böyle döngü mantığını görürsün.
    for gorev in gorevler:
        # Her görevin id'sini kontrol ediyoruz.
        if gorev["id"] == gorev_id:
            # Eşleşme bulduk, görevi döndürüyoruz.
            return jsonify(gorev), 200

    # Döngü bitti ve hiçbir eşleşme bulamadık.
    # 404: "Bulunamadı" anlamında.
    return jsonify({"hata": "Görev bulunamadı"}), 404


# --- GÖREV GÜNCELLEME ENDPOINT'i ---
# PUT isteği ile bir görevin başlığını değiştireceğiz.
# Örnek: PUT /gorev/2  →  id'si 2 olan görevin başlığını güncelle.
@app.route('/gorev/<int:gorev_id>', methods=['PUT'])
def gorev_guncelle(gorev_id):
    gelen_veri = request.json

    # Yine başlık kontrolü yapıyoruz.
    if gelen_veri is None or 'baslik' not in gelen_veri:
        return jsonify({"hata": "Yeni başlık zorunludur"}), 400

    # Görevleri dolaşıp arıyoruz.
    for gorev in gorevler:
        if gorev["id"] == gorev_id:
            # Bulduk — başlığı güncelliyoruz.
            gorev["baslik"] = gelen_veri["baslik"]
            return jsonify(gorev), 200

    # Hiçbir görevde eşleşme yoksa:
    return jsonify({"hata": "Güncellenecek görev bulunamadı"}), 404


# --- GÖREV SİLME ENDPOINT'i ---
# DELETE isteği ile bir görevi sileceğiz.
# Örnek: DELETE /gorev/5  →  id'si 5 olan görevi sil.
@app.route('/gorev/<int:gorev_id>', methods=['DELETE'])
def gorev_sil(gorev_id):
    # Burada biraz farklı bir mantık kullanıyoruz.
    # Liste üzerinde döngü yapıp, eşleşmeyenleri yeni bir listeye aktaracağız.
    # Bu bir "filtreleme" mantığıdır — for döngüsü + if-else.
    bulundu = False
    guncel_liste = []

    for gorev in gorevler:
        if gorev["id"] == gorev_id:
            # Bu görevi yeni listeye EKLEMEYİZ — yani siliyoruz.
            bulundu = True
        else:
            # Bu görevi koruyoruz.
            guncel_liste.append(gorev)

    # Orijinal listeyi güncelliyoruz.
    gorevler.clear()
    for gorev in guncel_liste:
        gorevler.append(gorev)

    if bulundu:
        return jsonify({"mesaj": "Görev başarıyla silindi"}), 200
    else:
        return jsonify({"hata": "Silinecek görev bulunamadı"}), 404


# --- UYGULAMAYI ÇALIŞTIRMA ---
# Eğer bu dosya doğrudan çalıştırılıyorsa (import edilmiyorsa),
# Flask sunucusunu başlatıyoruz.
# debug=True dememizin sebebi: Kod değiştiğinde sunucu otomatik yeniden başlasın.
if __name__ == '__main__':
    app.run(debug=True)

🔁 Bu Kodda Ne Oldu? Adım Adım

Şimdi kodu biraz özetleyelim, yukarıda ne yaptığını kavrayalım:

  • gorevler = [] — Boş bir liste oluşturduk. Burada tüm görevlerimiz tutulacak. Bellekte kalır, sunucu kapanınca silinir. Bu geçicidir, ama öğrenmek için ideal.

  • son_id — Basit bir sayaç. AI template'leri genelde uuid.uuid4() kullanır, ama biz basit bir tamsayı sayacı yaptık. Neden? Çünkü senin senin ID mantığını kurman lazım.

  • if gelen_veri is None or 'baslik' not in gelen_veri — Burada giriş doğrulama yapıyoruz. Kullanıcı kötü veri gönderirse, sistem çökmesin, hata dönsün. Bu çok önemli bir alışkanlık.

  • for gorev in gorevler: — Döngü kullandık. AI template'leri bunu .find() veya list comprehension ile yapar. Ama sen döngüyü görmeli, anlamalısın.

  • Silme mantığıguncel_liste adlı yeni bir liste oluşturup, silmek istediğimiz görevi hariç hepsini oraya aktarıyoruz. Sonra orijinal listeyi boşaltıp yeni listeyi oraya kopyalıyoruz. Bu, bir filtreleme algoritmasıdır.


✅ Sonra Ne Yapmalısın?

Bu kodu kopyalama. Yaz.

Sonra dene:

  1. POST /gorev ile bir görev ekle
  2. GET /gorev ile listele
  3. GET /gorev/1 ile tek bir görev bul
  4. PUT /gorev/1 ile güncelle
  5. DELETE /gorev/1 ile sil

Her birini kendi başına çalıştırıp cevabı incele.

Eğer bir satırda hata alırsan, o satırı tek tek oku. Çöz. Yine yaz.

Bu yapıyı AI'dan kopyalama. Kendin yaz. Çünkü senin elinden çıkan kod, seni geliştirir.


🎯 Yeni Başlangıç İçin 5 Adım Stratejisi

Yeni bir yolculuğa başlıyorsan, biraz korkak hissetmek tamamen normal. Ama biliyorsun, bu yolculukta seninle buradayım. 🛠 Sana somut ve uygulanabilir 5 adım sunuyorum. Hadi birlikte bakalım!

  1. Temelleri öğren 🎯 Önce temeli atmak lazım. HTML, CSS ve temel mantık gibi şeylere hakim olmak şart. Bunları ezberleme, mantığını kavramaya çalış. Bu sayede sonraki her adım çok daha kolay olacak. ✅

  2. AI'ı araç olarak kullan 🔁 Yapay zeka seni değiştirmiyor, sana yardım ediyor. Kod yazarken ya da hata ararken yanında bir süper asistan gibi kullan. Ama kendini çok bağlamadan, sadece pratik yapmak için devret. ❗️ Dikkat et, bağımlı olma.

  3. Portföy oluştur 🛠 Elinde bir şeyler olmazsa kimse sana inanmaz. Küçük projeler yap, GitHub'a yükle. Önemli olan tek bir harika proje değil, sürekli ürettiğin küçük başarılar. 🔁

  4. Ağ kur 🤝 Tek başına çok zor. Topluluklara katıl, meetup'lara git, insanlarla sohbet et. İnsanlarla ilişki kurmak, sana kapılmayan kapıları açıyor. ✅

  5. Sürekli öğren 🔁 Teknoloji durmuyor. Yeni bir şey öğrenmek zor bir iş değil, sadece alışkanlık. Her hafta biraz bir ilerleme sağla. ⛔ Eski teknolojileri ihmal etme ama yeni şeye açıl.


💡 Bonus Son Söz: Yol Hedefe Ulaşana Dek Devam Edin

Hey, bir saniye. ✅

Buraya kadar geldiğin için kendine bir el uzat. Gerçekten. Okumaya başladın, kodlar karıştı, hata aldın — ve yine de buradasın. Bu zaten çoğunun yapmadığı bir şey.

Bildiğin bir şey var mı? 🎯

Yetenek seni beklemeden başlamakla başlar. "Ama hazır değilim" deme. Kimse tamamen hazır hissetmeden büyük işe başlamamış. O kadar normal bir şey ki, aslında o kadar da önemli değil.

Yazılım geliştirme yolculuğunda en büyük engel genellikle teknik bilgi değil — başlamak korkusu. ❗️

Kendi içine dön ve şunu sor kendine:

  • Bugün bir şey öğrendim mi?
  • Bir hata yaptım mı ve nereden hata yaptığımı biliyor musun?
  • Bir önceki güne kıyasla bir adım ileri gittim mi?

Eğer bu sorulara "evet" diyebiliyorsan, zaten yolundaysın. 🔁

Ve şunu da bil: başarısızlık bir son değil, bir veridir. Her hata bir ders. Her kırılan kod bir sonraki işinin temelini güçlendirir.

Sana bir söz veriyorum — yavaş yavaş ilerle. Günde bir satır kod bile olsa, o bir satır seni önceki günden farklı kılar. Sabırlı ol. Kendine şefkat duy. Ama durma. ⛔ Durmak, geriye çekilmenin en yumuşak yoludur — ve sen buna layık değilsin.

Şimdi elini kaldır ve başla. 🛠

Küçük bir adım bile yeterli. Çünkü yol, her gün biraz daha hedefe yaklaşmanı sağlar — ve sen bu yazının okuyucusun. Ve yeteneklisin. 💪

Devam et. Sadece devam et.

Burak Sağlık

Burak Saglik

©2024 Desing and Developed by @Burak Sağlık

All rights reserved