
Sun Aug 02 2026
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:
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! ✅
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.
Temelde üç aşamada düşünebilirsin:
Ama bu üç adımın arkasında asıl güzel şey var. Bunu biraz daha detaylı görelim.
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.
Ş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:
Ş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.
Bu kısım çok önemli. Çıktıyı aldıktan sonra kesinlikle geç kalma.
Yapman gereken şeyler:
Kısa özetle: AI bir asistan, sen ise geliştiricisin. Asistanı bekleme, kontrol et.
Tekrar özetleyeyim:
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.
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:
❗️ 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.
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:
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:
Sen soruyu çözerken, AI zaten yanlış soruyu yanıtlamış olur. İşte problem tanıma asıl gücün burda.
Bir sistemi tasarlarken tek tek teknik kararı değil, bütüni düşünü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.
Teknik bir çözümü, teknik olmayan birine nasıl anlatırsın? İşte burada devreye sen giriyorsun.
AI bir rapor üretir ama insanın ruh halini, öfkesini, umudunu okuyamaz.
Aynı kelime farklı projelerde farklı anlama gelir. AI bunu karıştırabilir.
Sen ortamı, insanları, kültürü biliyorsun. Bu bilgi, AI'ın veri tabanına sığmaz.
Bu becerileri bir gün "nice-to-have" gibi görünme. Hayatın dört temel sütunu.
Hadi şimdi başlayalım. Bunlar senin en büyük farkını yaratacak beceriler. 💪
Hadi bir şey yapalım. AI'a kopyalayıp yapıştırma yapmadan, bir API yapısını kendi ellerimizle yazacağız.
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.
Bir görev listesi (task list) API'si yapacağız. Çok basit. İhtiyacımız olan şeyler:
Senin yapman gereken üç şey var:
request nesnesi bunu yapacak.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)
Ş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.
Bu kodu kopyalama. Yaz.
Sonra dene:
POST /gorev ile bir görev ekleGET /gorev ile listeleGET /gorev/1 ile tek bir görev bulPUT /gorev/1 ile güncelleDELETE /gorev/1 ile silHer 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 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!
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. ✅
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.
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. 🔁
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. ✅
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.
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:
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.
All rights reserved