USTALIK MANİFESTOLARI "Kök salmayan bilgiye razı olma!"

 


İÇİNDEKİLER

1. Kodun Ruhu: Bilgi mi, Ezber mi?

Bilmek başka, anlamak başka. Stack Overflow nesline nazik bir uyarı.

2. Debug Sanatı: Hata Ayıklamak Değil, Kendini Ayıklamak

"Log attım ama bir şey göremiyorum" diyenler burayı okusun.

3. Terminalle Konuşmak: Kodla Sohbet Etmenin Yolu

Bash’e dua, grep’e şiir, sed’e sabır. Eskilerin dilinden modern çözümler.

4. Framework Değil, Kavram!

Spring Boot bilmek seni yazılımcı yapmaz. OOP’yi bil, SOLID’i yaşa.

5. Mühendislik mi, Kopyacılık mı?

CTRL+C ile başlayan yolculuk, üretici olmadan bitmez.

6. Zor Yoldan Öğrenmek Neden En İyi Yoldur?

Kökleşmenin, emeklemenin, sabrın erdemi. Bu bölüm gözleri doldurur.

7. Stack Overflow Olmadan Bir Gün

İnternetsiz kalınca “sen kimsin?” Bunu düşünmeye hazır mısın?

8. Kod Kokusu: Temiz Kodun Ahlakı

Robert C. Martin'in elinden değil, sokaktan gelen kod temizliği üzerine.

9. Usta-Çırak İlişkisi 2.0: Mentorluk ve Dijital Tembellik

Discord'dan hocaya “abi hazır örnek var mı” diye sormak değil bu.

10. Refactoring: Cesaretin ve Dürüstlüğün İşi

Kendi hatanla yüzleşip “bu kod kötü” diyebilmek, işte orada başlar yazılımcılık.

11. Çözülemeyen Problem, Kader Değildir

3 gece uyuyamamak bazen sistem çözümünden kıymetlidir.

12. Geliştirici Olmakla, Gelişmek Arasında İnce Bir Çizgi Var

Kod yazmakla kendini yazmak aynı şey olabilir mi?

1. Kodun Ruhu: Bilgi mi, Ezber mi?

"Bilmek bir sonuçtur. Ama anlamak bir yolculuktur."

Günümüz geliştiricisinin en büyük sınavı ne CPU, ne RAM.
En büyük sınavı: Hazıra alışmak.

Bugün bir geliştirici "JSON parse edemedim" diyor.
Yanıt?

Google'a yaz, ilk çıkan cevabı al, kopyala, çalışıyor mu? Tamam.

Ama sorun şu:
Sen JSON’ı anlamadın.
Sadece onunla geçici bir barış imzaladın.


Kopyalamanın Anatomisi

Evet, yazılım dünyasında kopyalamak günah değil.
Ama anlamadan kopyalamak tembellik değilse, en azından bir erdem eksikliği.

Çünkü her kopya kod, içinde bir sessiz çığlık taşır:

"Beni anla ki, seni yarı yolda bırakmayayım."

Stack Overflow'dan alınan bir cevap, seni bir hatadan kurtarabilir.
Ama o cevabın neden öyle çalıştığını bilmeden
yeni bir sorunun altyapısını kurmuş olursun.

Anlamak, sadece yazmak değil,
kodun ne yaptığını, ne zaman yaptığını, neden yaptığını
ve ne zaman yapmaması gerektiğini de bilmektir.


Kavramın Derinliği: Kodun Arkasındaki Felsefe

Eskiden pointer anlatımı üç gün sürerdi.
Çünkü anlatmak yetmezdi, hissettirmek gerekirdi.
Heap mi stack mi, referans mı değer mi,
bunlar sadece teknik terimler değil,
geliştirici refleksinin temelidir.

Bugün React hook'larını ezberleyen bir junior,
yarın bileşen içi memory leak’ten şikayet ediyor.
Çünkü sadece “nasıl kullanılır”ı öğrendi,
“neden böyle tasarlandığını” hiç merak etmedi.


Bilmek: Anlık Zafer

Anlamak: Sürekli Egemenlik

Bir şeyi bilmek, onunla kısa bir flört gibidir.
Ama onu anlamak...
Uzun, sağlam bir ilişki kurmaktır.
Kodla duygusal bağ kuran, gerçek yazılımcıdır.


Ve Sorun Şu:

Kod bilmek = meslek
Kod anlamak = ustalık

Meslek öğrenilir.
Ustalık ise yaşanır.


Modern Zaman Geliştiricisine Notlar

  • Google’dan cevabı al, ama önce kendine sor: “Bunu ben çözmeye kalksaydım nereden başlardım?”

  • Kodu anlamadan çalışıyorsa bile, içine gir, satır satır incele. Kendini eğit.

  • Anlamadan bitirdiğin her sprint, seni öğrenmeden bitmiş bir döneme daha yaklaştırır.

  • “Neden böyle çalışıyor?” sorusunu sık sık sor. Cevabı bilmiyorsan, zaten öğrenme başlıyor demektir.

Yazılımcı çok.
Kod yazan çok.
Ama kodu anlayan, onunla düşünen, onunla yaşayan çok az.

Eğer sen, “Ben sadece işimi yapıyorum” diyorsan...
Bu manifesto sana değil.

Ama eğer bir gün bir kod bloğuna bakarken
içinden şu cümle geçiyorsa:

"Bu kod neden beni huzursuz etti?"

O zaman sen yoldasın.
Ve biz yoldaşız.


2. Debug Sanatı: Hata Ayıklamak Değil, Kendini Ayıklamak

"Kodda gördüğün hata, çoğu zaman kendi zihnindeki eksikliğin yansımasıdır."

Yazılımcının en büyük kabusu nedir?
Kod değil.
Kodun susmasıdır.

Error vermez.
Warning yazmaz.
Çalışmaz.
Öylece sessiz kalır.

Ve biz, ekrana bakarken şunu deriz:

"Log attım ama bir şey göremiyorum."

Asıl sorun burada başlar:
Görmeye çalışmak ile görmeyi bilmek arasındaki o uçurumda.


Debug: Kodun Aynasına Bakmak

Debug etmek, sadece "hata bulmak" değildir.
Debug etmek, kendi düşünce zincirine bakmaktır.

  • "Ben bu fonksiyonu yazarken ne varsaydım?"

  • "Hangi kontrolü eksik bıraktım?"

  • "Neye körleştim?"

Çünkü hatalar, sadece kodda olmaz.
Çoğu zaman kendi zihnimizde başlar.


Log Atmak Sanatı

İyi bir log:

  • Yalnızca hatayı söylemez, bağlamı da anlatır.

  • Ne zaman oldu?

  • Hangi parametrelerle oldu?

  • Hangi kullanıcıdaydı?

  • Hangi modülde tetiklendi?

Ama şunu da bil:
Çok log atmak iyi debugging değildir.
Log'lar düşünmenin yerine geçemez.

İyi log, iyi sorulmuş bir sorunun cevabıdır.
Kötü log, kafası karışık bir zihnin panik atışıdır.


Debugging: Hızlı Değil, Derin Gitmek

Bugünlerde herkes hızlı olmanın peşinde.
Ama debugging, yavaşlama sanatıdır.
Yavaşlamadan doğru yere inemezsin.

İşte gerçek ustaların bildiği şey:

"İlk tahminin yanlıştır. İkinci tahminin de. Üçüncüde belki."

Ve sorun da tam burada:
Modern yazılımcının sabrı, üçüncü tahmine kadar dayanmaz.

Oysa hata orada, sabrın sınırlarının biraz ötesindedir.


Hata Bulmak = Hatalı Olduğunu Kabul Etmek

Debug yapmak için önce şu gerçeği sindirmen lazım:
Sen hata yapabilirsin.
Ve hata yapmak, kötü yazılımcı olduğun anlamına gelmez.

Asıl fark şurada:

  • Kötü yazılımcı hatasını inkâr eder.

  • İyi yazılımcı hatasını bulur ve öğrenir.

İlk hatayı gizlemek,
gelecekteki büyük felaketin imzasını atmak gibidir.


Modern Geliştiriciye Debug Rehberi

  • Loglarını anlamlı kıl: "Nerede", "ne zaman" ve "neden" sorularına cevap verebilsin.

  • Hataları sistemli takip et: Exception aldığın her yer bir öğretmendir.

  • "Çalışmıyor" demeden önce: input–output akışını adım adım kafanda canlandır.

  • Kodu yazarken değil, kodu okurken de düşün.

  • Stack trace’i okumadan kimseye şikayet etme. Stack trace senin hayat arkadaşın.

Kod bir hikâye anlatır.
Ama sen bu hikâyeyi ancak dikkatle dinlersen anlayabilirsin.

Debug etmek, kodun söylediklerini değil,
sana söylemediklerini yakalamaktır.

Ve şunu unutma:

"Kodunda bulduğun her hata, kendinde bulduğun yeni bir güçtür."

Kendini bulmaya hazır mısın?
Yoksa yine "log attım ama bir şey göremiyorum" deyip geçecek misin?

Karar senin.

3. Terminalle Konuşmak: Kodla Sohbet Etmenin Yolu

"Terminal bir komut satırı değildir; sabrın, zekanın ve sezginin buluştuğu bir meydandır."

Bugünün modern IDE’leri, parmakla tıklanan GUI’leri arasında unutulan bir sanat var:
Terminalle konuşmak.

Kara ekran.
Beyaz bir imleç.
Ve sonsuz olasılık.

Kimileri için korkutucu bir boşluk.
Gerçek bir geliştirici içinse,
sonsuz bir özgürlük alanı.


Terminal: Emek ve Sadeliğin Buluşma Noktası

Terminal kullandığın zaman,

  • Her karakter, bir niyettir.

  • Her komut, bir karardır.

  • Her çıktısı, bir aynadır.

Bash’e dua etmek gibi:
Bir komut yazarsın, içinde hem umut vardır, hem sabır.
Grep’le şiir yazmak gibi:
Büyük bir veri yığınından, sadece anlamlı olanı süzmek.
Sed’le sabır göstermek gibi:
Binlerce satırı tek bir satırda doğru şekilde değiştirmek.

Terminal, sabrın mekanıdır.


CLI vs GUI: Gerçek Kontrolü Kim Tutar?

GUI seni güvende hissettirir.
Tıkla, sürükle, bırak.
Ama her adımda, özgürlüğünden biraz daha verirsin.

Terminal ise çıplak gerçekliktir.
Hataları gizlemez.
Başarıyı da abartmaz.

Bir dosya mı silmek istiyorsun?
rm -rf yazarsın.
Yanlış dizindeysen, bütün dünyanı silebilirsin.
Ve bu risk, işte tam da sorumluluk duygusunun köklerini besler.

Terminal özgürlüktür.
Özgürlük de, sorumluluk ister.


Terminalle Sohbet Etmek: Sadece Yazmak Değil, Dinlemek

İyi bir terminal kullanıcısı:

  • Komut yazarken düşünür.

  • Çıktıyı okurken hisseder.

  • Hataları görünce paniklemez; sorular sorar.

Çünkü terminal susmaz.
Her zaman bir şey söyler:
Bir ipucu, bir uyarı, bir iz.

Sadece duymasını bilenler için.


Eskilerin Dilinden Modern Çözümler

Eskiler için grepawksed sihirli değnek gibiydi.
Çünkü her satırda,

  • Büyük bir dosyayı anlamlandırmak,

  • Karmaşık bir yapıyı çözümlemek,

  • Bir girdiyi başka bir forma evirmek mümkündü.

Bugün VSCode eklentileriyle yapmaya çalıştığımız birçok şeyi,
birkaç satırlık bash komutlarıyla çözebiliriz.

Örnek mi?

Binlerce log dosyasından "hata" içeren satırları çekmek:

bash
grep "ERROR" *.log | awk '{print $1, $2, $NF}'

Veya bir dizindeki bütün .csv dosyalarındaki ilk satırı silmek:

bash
for file in *.csv; do sed -i '1d' "$file"; done

Görüyor musun?
Terminalle konuştuğun zaman,
karmaşık problemler bile şiir gibi akar.


Modern Geliştiriciye Terminal Manifestosu

  • Terminalden korkma. Ona alış, onu sev.

  • Komutları ezberleme; anlamlarını öğren.

  • Her gün bir yeni CLI komutuyla tanış.

  • "Yalın" araçları öğren: grepawksedfindxargscurljq...

  • Hatalarda panikleme. Hata çıktısı öğretmendir.

Terminal, yazılımın en saf hâlidir.
Gösteriş yoktur.
Gereksiz renkler, animasyonlar yoktur.

Sadece sen ve yaptıkların.

Ve unutma:

"Terminalin önünde yalnızsın. Tıpkı gerçek ustalıkta olduğu gibi."

Hazır mısın?
Ekranın kararmasına rağmen ışığını yakmaya?

4. Framework Değil, Kavram!

"Bir şeyi kullanabiliyor olman, onu anladığın anlamına gelmez."

Bugün yazılımcı piyasasına baksan,
her yerde aynı başlıklar:

  • "Spring Boot developer aranıyor"

  • "React.js uzmanı aranıyor"

  • "Node.js bilen frontendçi"

  • "Flutter, MongoDB, Kubernetes, AWS…"

Sanki teknoloji kullanabilmek,
yazılımcı olmakla eşdeğer gibi.

Ama gerçek ustalar bilir ki:
Bir framework bilmek değil, bir kavramı kavramak yazılımcı yapar.


Neden Framework Ezberlemek Tehlikeli?

Framework'ler gelir ve gider.
Bugün Spring var, yarın Quarkus.
Bugün React var, yarın Svelte.
Bugün Kubernetes var, yarın başka bir şey.

Ama kavramlar değişmez:

  • OOP (Nesne Yönelimli Programlama),

  • SOLID prensipleri,

  • Tasarım Kalıpları (Design Patterns),

  • Veri Yapıları ve Algoritmalar,

  • Concurrency, Asenkron Programlama,

  • Sistem Tasarımı...

Bunları bilen adam,
hangi framework gelirse gelsin,
sadece bir hafta içine girer ve ustalaşır.

Framework'ü bilmek,
tıpkı bir müzik aleti çalmayı bilmek gibidir.

Ama kavramları bilmek,
müzik duygusuna sahip olmak gibidir.

Aleti değiştirsen de, ruh aynıdır.


Spring Boot Bilmek, OOP Bilmeden Ne İşe Yarar?

Bugün Spring Boot kullanıp,
dependency injection ne demek bilmeyen developer dolu.

  • Controller yazıyor ama "Separation of Concerns" kavramını duymamış.

  • Service katmanı yapıyor ama "Single Responsibility" ilkesinden bihaber.

  • Repository pattern kullanıyor ama "Abstraction" nedir bilmiyor.

Framework öğrenmek hızlıdır.
İnsanı çabuk "iş bitirici" gösterir.
Ama kavram bilmeden yapılan her iş,
zeminsiz bir bina gibidir.

İlk krizde çöker.


Kavram: Kodun İskeleti

Kavram bilmek demek,

  • Neden arayüz kullanırız?

  • Neden düşük bağlılık (low coupling) isteriz?

  • Neden yüksek uyum (high cohesion) hedefleriz?

  • Bir sınıf neden sadece tek bir işi yapmalıdır?

  • Bir veritabanı transaction'ı neden önemlidir?

Bu soruların cevabını içselleştirmek demektir.

Bunlar olmadan, yazılım mühendisliği yoktur.
Sadece "bugün çalışan ama yarın patlayan" uygulamalar vardır.


Modern Geliştiriciye Kavram Manifestosu

  • Framework'ü öğrenmeden önce, arkasındaki problemi anlamaya çalış.

  • Her kullandığın araç için "neden böyle bir çözüm sunmuşlar?" diye sor.

  • SOLID prensiplerini oku, ama sadece okumakla kalma; kodlarında uygula.

  • Her yeni teknolojiye başlarken, önce temel kavramları araştır: "Bu teknoloji hangi problemi çözmek için doğmuş?"

  • Unutma: Kullandığın araç, aklının yerini tutamaz.

Framework'ler birer el aletidir.
Kavramlar ise ustanın bileğidir.

El aletleri paslanır, kırılır, değişir.
Ama bilek, ustalıkla güçlendirilirse,
her zaman yeni aletlere uyum sağlar.

Ve unutma:

"Bir framework'ü ezberlemek seni çalışan yapar.
Bir kavramı anlamak ise seni yazar."

Hangisini olmak istiyorsun?
Bir framework sürükleyip bırakan mı?
Yoksa gerçek bir yazılım ustası mı?

Seçim senin.

5. Mühendislik mi, Kopyacılık mı?

"Bir satır kodu yazmak kolaydır.
Ama o satırın arkasındaki dünyayı kurmak mühendisliktir."

Bugün yazılım dünyasında görünüşte herkes kod yazıyor.
Görünüşte herkes "developer".
Görünüşte herkes "üretken".

Ama altını kazıyınca iki farklı profil çıkıyor karşımıza:

  • Mühendisler

  • Kopyacılar

Ve inanın bana, CTRL+C ile başlayan yolculuk,
eğer üretime evrilmiyorsa, sadece bir oyalanmadır.


Kopyacılık: Kolay Yolun Cazibesi

Bir hatayla karşılaştın.
Google'a yazdın.
İlk çıkan Stack Overflow cevabını kopyaladın.
Yapıştırdın.
Çalıştı.

Başardın mı?
Belki.
Ama anladın mı?
İşte orası karanlık.

Kopyacılık, ilk başta hız gibi görünür.
Ama uzun vadede zihni köreltir.
Çünkü sürekli hazır çözüme yaslanmak,
seni problem çözme refleksinden uzaklaştırır.

Ve unutma:

"Hazır çözüm bağımlılığı, zekayı tembelleştirir."


Mühendislik: Üretmenin Onuru

Gerçek mühendis:

  • Bir problemi önce okur,

  • Anlamaya çalışır,

  • Kafasında alternatif çözümler üretir,

  • Sonra çözüm yollarını araştırır,

  • Kopyalayacaksa bile önce kavrar, sonra kendi ihtiyacına uyarlar.

Mühendislik, ezberlemek değil,
oluşturmak işidir.

Mühendislik, şablon kullanmak değil,
yeni şablonlar üretebilmek işidir.

Mühendislik, hızlı bitirmek değil,
doğru ve sürdürülebilir çözüm üretmek işidir.


Kopyacı ile Mühendisi Ayıran 7 İnce Çizgi

KopyacıMühendis
Problemle karşılaşıncaPanikler, hemen ararSorular sorar, analiz eder
Çözümü buluncaEzberler, yapıştırırAnlar, neden sonuç kurar
Alternatif üretmeYokturVardır
Hata alıncaBaşkasını suçlarKendini geliştirir
ZamanlaTıkanırBüyür
BilgisiSığdırDerindir
Motivasyonu"İş bitsin yeter""Doğru çözüm bulayım"

Modern Zaman Geliştiriciye Uyarılar

  • Araştırmadan kopyalama!

  • Çözümü önce anla, sonra uygula.

  • Her kopyaladığın kod parçasını incele: "Bunu ben yazsam neyi değiştirirdim?"

  • Bir kodu yapıştırmadan önce, kafanda 3 farklı çözüm alternatifi üret.

  • Ve en önemlisi: Özgüvenini bilgiden inşa et, ezberden değil.

Her yazılımcı CTRL+C'ye basar.
Bazen zaman kazanmak için, bazen hızlı ilerlemek için.

Ama sadece kopyalamakla yetinen,
asla gerçek bir mühendis olamaz.

Çünkü gerçek mühendislik,
zor anlarda üretmeye cesaret edebilme sanatıdır.

Ve unutma:

"Kopya eden unutur.
Anlayan üretir.
Üreten kalır."

Sen unutulacaklardan mı,
yoksa geleceği inşa edeceklerden mi olacaksın?

6. Zor Yoldan Öğrenmek Neden En İyi Yoldur?

"Kolay gelen bilgi, hafızada yer bulur.
Zorla kazanılan bilgi, karakterde kök salar."

Bugünün dünyası hızlı.
Çok hızlı.
Her şeyin hemen olmasını istiyoruz:

  • Hemen öğrenelim,

  • Hemen yapalım,

  • Hemen bitirelim.

Ama ustalık, hızla değil, derinlikle inşa edilir.
Ve derinlik, her zaman zor yoldan kazanılır.


Zor Yol: Emeklemenin Şerefi

Bir kavramı ilk öğrendiğin anı hatırla.
İlk kez pointer gördüğünde...
İlk kez thread yönetimini okuduğunda...
İlk kez "recursion" kavramına kafa yorduğunda...

Anlamadın.
Uykun kaçtı.
Sinirlendin.
Kafanı masaya vurdun.
Vazgeçmeyi düşündün.

Ama bir noktada,
direndikçe,
savaştıkça,
anlam parça parça içine aktı.

İşte o anda öğrendiğin şey,
sadece bir bilgi değil,
karakterinin bir parçası oldu.

Kolay gelen bilgi unutulur.
Çünkü emek yoktur.
Çünkü acı yoktur.

Ama zorla gelen bilgi?
O, artık sensin.


Neden Zor Öğrenmek Daha Değerlidir?

  • Kendi çözüm yolunu kurarsın: Ezber yapmazsın. Anlamadan ilerlemezsin.

  • Özgüvenin artar: "Ben bunu tek başıma çözdüm!" demek, parayla satın alınamaz.

  • Problemlere dayanıklılığın artar: Her yeni zorluk, eskiden aştığın dağları hatırlatır: "Ben bunu da aşarım."

  • Gerçek ustalığa bir adım daha yaklaşırsın: Usta olmak, sadece bilgi biriktirmek değil, bilgiyi yoğurmaktır.


Kolay Öğrenmek Neden Bir Tuzaktır?

Kolay yoldan öğrenen,

  • Anlamadan geçer,

  • Unutur,

  • Panikler,

  • İlk krizde çöker.

Ve en kötüsü:
Kolay öğrenen, emek vermediği için kıymet de bilmez.

Öğrendiği bilgiyi, sanki "kendiliğinden hakkıymış" gibi görür.
Ve zamanla, o bilgi ona yük olur.
Çünkü kök salmamış bir bilgi, ağır gelir.


Modern Zaman Geliştiriciye Altın Tavsiyeler

  • Bir şey zor geliyorsa, sevineceksin. Çünkü orada büyüme var.

  • Öğrenirken "zorlanıyorum" dediğin her an, karakterine yeni bir katman ekliyorsun.

  • Hızlı olmayı değil, doğru anlamayı hedefle.

  • Emek verdiğin bilgiden asla korkma. O senin en güvenli hazinendir.

  • Ve şunu unutma: Zor yol, kısa vadede acıdır. Ama uzun vadede zaferdir.

Bugün kolay öğrenen çok.
"Anladım!" diyen çok.
Ama yarın gerçekten bilen, sabırla kavrayan, az.

Ve biz şunu biliyoruz:

"Köksüz bilgi, ilk fırtınada yıkılır.
Ama zorla kazanılan bilgi, fırtınaya gövde gösterir."

Sen o köklerden biri olacaksın.
Sabırla, emekle, inatla.
Çünkü zor yol,
sana sadece bilgi değil,
karakter kazandıracak.

7. Stack Overflow Olmadan Bir Gün

"Hazır cevabı bulamadığında kim olduğunu anlarsın."

Stack Overflow.
Modern geliştiricinin sihirli lambası.
Soru yaz, Enter’a bas, çözüm gelsin.

Kabul edelim, harika bir kaynak.
Doğru kullanıldığında bir okul, bir meydan, bir usta-çırak arenası.

Ama işin acı gerçeği şu:
Bugün geliştiricilerin çoğu,
Stack Overflow olmadan bir saat bile program yazamıyor.


İnternetsiz Kalınca "Sen Kimsin?"

Bir gün düşün:
İnternet yok.
Stack Overflow yok.
ChatGPT yok.
Kopyalayacak kod yok.
Bakacak çözüm yok.

Sadece sen ve ekranın var.

İşte o an,

  • Problemi parçalara ayırabiliyor musun?

  • Sorunu zihninde modelleyebiliyor musun?

  • Kendi mantığınla adım adım çözüm üretebiliyor musun?

İşte gerçek sınav o an başlar.

Çünkü çözüm hazır değilken,
kendi iç sesin devreye girer:

"Ben bu sorunu nasıl çözerim?"

Ve işte orada,
senin gerçek yazılımcı kimliğin ortaya çıkar.


Stack Overflow’un İki Yüzü

  • İyi kullanırsan: Bilmediğin kavramları öğrenirsin, yeni bakış açıları geliştirirsin.

  • Kötü kullanırsan: Ezber yaparsın, reflekslerini köreltirsin, düşünmeden yapıştırırsın.

Stack Overflow bir kaynak, bir araç.
Ama asla bilginin kendisi değil.

Ve unutma:

"Bilgi, hazır cevaplar arasında değil, hazır cevaplar bittiğinde başlar."


Stack Overflow’suz Bir Geliştirici Günü Nasıl Olmalı?

  • Problemi defterine yaz. Elle.

  • Önce kağıt üzerinde akış şeması çizmeye çalış.

  • Sonra ilk çözüm tahminini üret, kodla test et.

  • Başarısız olursan adım adım soruları sor:

    • Girdi doğru mu?

    • Fonksiyon doğru mu çağrılıyor?

    • Döngüde kaçıncı adımda patlıyor?

  • Google’a sadece anahtar kavramlar için başvur. Direkt çözüm arama.

Bu yöntemle öğrendiklerin,
asla unutulmaz.
Çünkü doğrudan kendi zihninde yoğrulmuş olur.


Modern Geliştiriciye Yürekten Tavsiye

  • Bir gün boyunca internetten çözüm bakmadan kod yazmayı dene.

  • Stack Overflow’a sadece “neden” sorusunu” öğrenmek için gir. Çözüm kopyalamak için değil.

  • Bir problemi çözemezsen, önce kendi çözüm denemeni yap, sonra araştır.

  • Ve şunu asla unutma:

“Yardım almak kolaydır. Ama önce kendi sesini duymayı öğrenmek, ustalığın anahtarıdır.”

Bugün Stack Overflow kapansa,
kaç kişi kod yazmaya devam edebilir?

Ve daha önemlisi:
Sen edebilir misin?

Unutma:

"Ustalık, yardım almayı bilmek değildir.
Ustalık, yardımsız kaldığında bile üretmeye devam etmektir."

Kendine şu soruyu sor:
Ekranda bir satırlık imleç yanıp sönüyorken,
bilgisayarın başında yalnızken...

Sen kimsin?

8. Kod Kokusu: Temiz Kodun Ahlakı

"Kod, sadece çalışmak için değil, yaşamak için yazılır."

Temiz kod diye bir kavram var.
Hepimiz duyduk.
Hatta çoğumuz Robert C. Martin'in Clean Code kitabını da karıştırdı.
Sıralı maddeler, prensipler, kurallar...

Ama işin aslı şudur:

Gerçek temiz kod kültürü, kitaplardan değil, sokaktan gelir.
Toz yutmuş, yangın görmüş, gecenin üçünde prod'da kod patlamış adamlardan.

Gerçek temiz kod,

  • Anlaşılırdır,

  • Dürüsttür,

  • Vicdanlıdır.

Çünkü temiz kod yazmak,
başkalarına saygı göstermekle başlar.


Kötü Kodun Kokusu

Kötü kod kendini belli eder:

  • Anlamsız değişken isimleri.

  • Sonsuz if–else koridorları.

  • Bir fonksiyon içinde bin satır iş yapan canavarlar.

  • Yorum satırı bırakmadan yazılmış “anla da öyle çalış” zihniyeti.

Ve en önemlisi:
Kötü kod, kokar.

Daha okumaya başlamadan burnuna gelir:
"Burası bir gün patlayacak..." diye.

Kötü kod bir hata değildir.
Kötü kod bir ihmaldir.
Kötü kod bir bencilliktir.
Kötü kod, gelecek geliştiriciye edilmiş gizli bir küfürdür.


Temiz Kod: Sokaktaki Ustaların Ahlakı

Gerçek ustalar kodu şöyle yazar:

  • Bir ay sonra kendileri okuduğunda utanmayacakları şekilde.

  • Başka biri geldiğinde "vay be, düşünmüş" dedirtecek şekilde.

  • Hatayı gizlemek için değil, açık açık, anlaşılır şekilde.

Temiz kod yazan adam:

  • Çabuk iş bitirmez.

  • Küçük zaferlere aldanmaz.

  • Kendi kodunun sorumluluğunu üstlenir.

Çünkü bilir:

"Kod, ekibe bırakılan bir mektuptur.
Ve mektuplar saygıyla yazılır."


Temiz Kodun Sokağa İnen 10 Altın Kuralı

  1. İsimlendirirken tereddüt etme: Anlamlı, açık, dürüst isimler ver.

  2. Kısa fonksiyonlar: 50 satır fonksiyon yazıp "bu da bir iş" demek değildir.

  3. Yorum yazmadan da anlaşılır kod: Kodun kendisi konuşmalı.

  4. Tek Sorumluluk İlkesi: Bir fonksiyon bir iş yapacak. Hem pizza siparişi alıp hem fatura kesmeyecek.

  5. Bağlantıları açık tut: Fonksiyonlar arasında gizli anlaşmalar yapma.

  6. Sihir yapma: Magic number, magic behavior yok.

  7. Okunabilirliği performansın önüne koy: Mikro optimizasyon için okunabilirliği feda etme.

  8. Refactoring’den korkma: Kodunu seviyorsan, düzenle.

  9. Kötü kokuyorsa temizle: “Daha sonra bakarız” dediğin her yer gelecekte patlar.

  10. Empati yap: O kodu okuyacak mühendisi düşün. Hatta ona bir iyilik yapıyormuşsun gibi yaz.


Modern Geliştiriciye Açık Mesaj

  • “Çalışıyor ama iğrenç duruyor” diyorsan, daha işin yarısındasın.

  • Yazdığın kodun yüzde yüzünün sorumluluğunu taşı.

  • Her yazdığın satırı kendine şu soruyla oku:

"Ben olsam bunu anlar mıydım?"

Eğer cevabın "belki" ise,
yeniden yaz.

Çünkü kod temizliği,
senin karakterinin ekranlara yansımasıdır.

Kitaplar temiz kodu anlatır.
Sokaklar temiz kodu yaşatır.

Ve unutma:

"Kod, kendine saygı duymanın, başkalarına değer vermenin ve geleceğe iz bırakmanın bir yoludur."

Çalışan kod yazmak kolay.
Ama yaşayan kod yazmak,
gerçek ustaların işidir.

Sen hangisini seçeceksin?

9. Usta-Çırak İlişkisi 2.0: Mentorluk ve Dijital Tembellik

"Çırak, ustanın gölgesinde değil, ateşinde pişer."

Eskiden bir ustanın yanına çırak olarak girmek büyük bir olaydı.

  • Söz verirdin.

  • Emek verirdin.

  • Ustanın her hareketini izler, nedenini anlamaya çalışırdın.

  • Sana söylenen değil, sana gösterilmeyen şeyleri de kavramaya uğraşırdın.

Çıraklık, bilgiyi istemek değil,
bilgiyi hak etmek demekti.


Bugün: Mentorluk mu, Kopyala-Yapıştır mı?

Şimdi bakıyorum:

  • Discord kanallarında,

  • Slack gruplarında,

  • Forumlarda...

Sorular hep şöyle:

"Abi hazır örnek proje var mı?"
"Abi hangi framework daha hızlı iş bitirir?"
"Abi kısa yoldan öğrenme rehberi var mı?"

Sana öğretmesini istediğin adama,
hazır çözüm dileniyorsun.
Kendi araştırmanı yapmadan, kendi kanını dökmeden,
bilgiyi almak istiyorsun.

Bu çıraklık değil kardeşim.
Bu dijital tembellik.


Usta-Çırak İlişkisi Ne Demekti?

Gerçek bir ustadan öğrenmek:

  • Önce kendini ortaya koymaktır.

  • Zahmete katlanmaktır.

  • Sıkılmadan izlemektir.

  • Yorulmadan tekrar etmektir.

  • Ve en önemlisi: sabırla beklemektir.

Usta sana sadece bilgi vermez.

  • Sana sabrı öğretir.

  • Sana hatayı kabul etmeyi öğretir.

  • Sana eksiklerini fark etmeyi öğretir.

  • Sana doğru soruları sormayı öğretir.

Ve en sonunda,

"Bilgi, hazır verilen bir cevapla değil, sabırla yoğrulmuş bir soruyla gelir."


Bugün Neden Usta-Çırak Bağı Kopuyor?

Çünkü kimse beklemek istemiyor.
Çünkü herkes hızlı çözüm istiyor.
Çünkü kimse hak ederek öğrenmek istemiyor.

Mentorluk sanılıyor ki:

  • Abi sorumu sorayım, cevap alayım, yürüyeyim.

Halbuki mentorluk:

  • Soru sormayı öğrenmektir.

  • Doğru yerde sabretmeyi öğrenmektir.

  • Öğrenmenin sancısını çekmektir.

Usta sana çözüm vermez.
Usta sana çözüm bulacak zihniyet kazandırır.


Modern Çırak Manifestosu

  • Sorunu kendin çözmeye çalışmadan mentoruna gitme.

  • Sorunu anlatırken kendi düşündüğün çözümleri de paylaş: "Ben şöyle düşündüm, böyle denedim."

  • Kısa yoldan öğrenmeye değil, doğru yoldan öğrenmeye odaklan.

  • Bir cevabı alır almaz kodu yapıştırma. Önce kafanda çözüm şeması çiz.

  • Öğrenme sürecinde sabırsızlık gösterirsen, en büyük kaybı kendine verirsin.


Gerçek Mentorluk

Gerçek bir mentor:

  • Sana acımadan açık konuşur.

  • Hatalarını suratına söyler.

  • Sana balık vermez, balık tutmayı öğretir.

  • Senin gelişimini kendi rahatından önde tutar.

Ama unutma:

"Mentor sana kapıyı gösterir,
Kapıyı açıp yürümek sana kalır."

Ustalık yolu dikenlidir.
Çıraklık, kolaylık değil, zahmettir.
Ve gerçek bilgi, sabırla hak edilir.

Bugün Discord’da hazır kod isteyenler,
yarın bir bug çıktığında çaresiz kalacaklar.

Ama zahmete katlananlar?
Onlar bir gün, kendi çırağını yetiştirecekler.

Ve hayat böyle dönecek.

Çünkü:

"Hazır çözüm isteyen çok,
Ama kendi yolunu açanlar,
tarihe iz bırakır."

Sen hangi tarafta olacaksın?

10. Refactoring: Cesaretin ve Dürüstlüğün İşi

"İyi yazılımcı çok kod yazar.
Usta yazılımcı, kötü kodunu yeniden yazmaya cesaret eder."

Kod yazmak kolaydır.
Çalışan bir şey üretmek, alkış toplar.
Ama durup o çalışanın içine bakmak,
eksiklerini görmek,
ve daha iyisini yazmaya cesaret etmek?
İşte o gerçek ustalık ister.

Refactoring, sadece kodu güzelleştirmek değildir.
Refactoring, kendinle yüzleşmektir.


"Bu Kod Kötü" Diyebilmek

Yazdığın kodu ilk çalıştırdığında sevinirsin:

"Ohh çalışıyor!"

Ama asıl olgunluk şurada başlar:
Bir hafta sonra, bir ay sonra,
o kodu açıp şöyle diyebilmekte:

"Bu kod kötü.
O an için çalıştı ama şimdi daha iyi yazabilirim."

Ve bunu utanmadan, savunmadan kabul etmek.
İşte yazılımcılığın erdem sınavı budur.

Çünkü kötü kodu görüp savunmaya çalışmak kolaydır.
Cesaret isteyen şey, kötü kodu görüp düzeltmeye niyet etmektir.


Refactoring: Cesaretin Anatomisi

Refactoring demek:

  • Ego’nu yere bırakmaktır.

  • "Ben mükemmel kod yazarım" yalanını terk etmektir.

  • "Daha iyisini yapabilirim" özgüvenine sahip olmaktır.

  • Eski koduna saygı göstererek, daha iyisini üretmektir.

Ve en önemlisi:
Refactoring, yarım kalan ustalık yolculuğunun tamamlanmasıdır.


Neden Çoğu Yazılımcı Refactoring Yapmaz?

  • Zaman baskısı: “Şu anda çalışıyor, sonra bakarız.” (O "sonra" hiç gelmez.)

  • Ego: “Benim kodumda sorun yoktur.”

  • Korku: "Değiştirirsem bozulur."

  • Rahatlık: "Yeni bir şey yapayım, eskisiyle uğraşmayayım."

Halbuki şunu unutmamak lazım:

"Çalışan kod, yaşayan kod değildir."

Çalışıyorsa bırakmak kolaydır.
Ama yaşayan bir sistem inşa etmek istiyorsan,
kodu sürekli evrimleştirmen gerekir.


Modern Geliştiriciye Refactoring Manifestosu

  • Kendi kodunu acımasızca oku.

  • Çalışıyor diye yetinme: Anlaşılır mı? Basit mi? Gelişmeye açık mı?

  • Küçük küçük refactor et. Büyük devrimler bekleme.

  • Her refactoring sonrası testlerini çalıştır. Emin adım at.

  • Kendi yazdığın koddan utanabiliyorsan, gelişiyorsun demektir.


Refactoring'in Altın Kuralları

  1. Önce Anla: Ne yaptığını ve neden yaptığını tam kavra.

  2. Testleri Güvenceye Al: Değişiklikten önce her şeyi test et.

  3. Küçük Adımlarla Git: Bir anda her şeyi değiştirmeye çalışma.

  4. Her Refactor, Bir Gelişimdir: Değişiklik korku değil, öğrenme fırsatıdır.

  5. Sonucu Kutla: Temiz bir fonksiyon, temiz bir sınıf; birer küçük zaferdir.

Yazılım, değişim demektir.
Ve değişim, cesaret ister.

Kendi yazdığın kötü kodla yüzleşemiyorsan,
asla gerçek bir yazılımcı olamazsın.

Unutma:

"Yazılımcı yazdığı kodla değil,
Refactor ettiği kodla büyür."

Cesaretin var mı?
Ekranı açıp o eski satırlara bakmaya?
"Bu kodu daha iyi yapacağım" diyebilmeye?

İşte asıl yazılımcılık orada başlıyor.


11. Çözülemeyen Problem, Kader Değildir

"En derin karanlık, şafağa en yakın olandır."

Yazılımda herkes kolay problemi çözer.
Basit bug’ı bulur, küçük hatayı düzeltir.
Ama bir gün öyle bir sorunla karşılaşırsın ki:

  • Stack Overflow'da cevabı yoktur,

  • Google bile seni yarı yolda bırakır,

  • Takım arkadaşların "abi bilmiyorum" der,

  • Saatler, günler, geceler geçer...

İşte o zaman,
kendi zihninin gerçek sınırlarıyla yüzleşirsin.

Ve unutma:

"Çözülemeyen problem diye bir şey yoktur.
Sadece henüz çözülmemiş problemler vardır."


3 Gece Uyuyamamak: Bir Mühendisin Riti

Bazen bir problem gelir ve seni günlerce, gecelerce esir alır.
Uykun kaçar.
Başka şey düşünemezsin.
Herkes "boşver" der,
sen için için savaşırsın.

İşte tam orada,
bilgi değil karakter devreye girer.

Çünkü sabırla, inatla, kafa patlatarak,
yüz kere deneyip yüz birincide başardığında,
kazandığın şey sadece çözüm değildir.

Kazandığın şey:

  • Zihinsel direncin,

  • Analitik sabrın,

  • Gerçek özgüvenindir.


Kader Değil, Sınav

Çözemediğin her problem:

  • Sana yeni bir yaklaşım öğretebilir,

  • Farklı bir bakış açısına kapı açabilir,

  • Sana kendi sınırlarını aşmayı gösterebilir.

Problem seni ezmez.
Problem seni inşa eder.

Ama bir şartla:

  • Eğer kaçmazsan,

  • Eğer bahane üretmezsen,

  • Eğer sabırla üstüne gidersen.


Modern Zaman Geliştiriciye Hayati Tavsiyeler

  • Sorun çözülemediğinde paniğe kapılma. Sadece yöntemi değiştir.

  • Aynı şeyi tekrar tekrar denemek yerine bakış açını değiştir.

  • Problemi küçük parçalara böl. Büyük problemler, küçük zaferlerle çözülür.

  • Bir çözüm bulamazsan, neden çözüm bulunamadığını analiz et. O da öğretir.

  • Problemle kavga etme. Problemle dans etmeyi öğren.


Çözülemeyen Problem: Gizli Usta Yaratıcısıdır

Bugün tanıdığımız büyük mühendislerin, büyük geliştiricilerin,
büyük icatların arkasında çözülemeyen problemler vardır.

Ama onlar yılmadı.
Çünkü bilirlerdi:

"Sorunun büyüklüğü, çözüm bulanın büyüklüğünü belirler."

Ve işte, en parlak zekâlar
en zorlu problemlerle dövüşerek
kendilerini büyüttüler.

Senin de büyümen için,
bazen 3 gece uyumadan,
bir problemi kafanda evirip çevirmen gerekebilir.

Bırak beynin acısın.
Bırak sabrın gerilsin.
Çünkü o sınırlar genişledikçe,
sen büyüyeceksin.

Kısa yoldan çözüm arayanlar,
hızlı ilerler ama küçük kalır.

Gerçek yazılımcı,
çözülemeyen problemle inat eder,
sabaha kadar onunla güreşir,
yenilir, yenilir, sonunda yener.

Ve unutma:

"Çözülmeyen problem seni ezmez.
Çözülmeyen problem seni ustalaştırır."

Hazır mısın?
Kader değil,
karakter yazmaya?


12. Geliştirici Olmakla, Gelişmek Arasında İnce Bir Çizgi Var

"Kod yazmak bir eylemdir.
Ama kendini yazmak, bir yolculuktur."

Bugünlerde herkes kendine "geliştirici" diyor.

  • Kod yazıyorsun? Geliştiricisin.

  • Proje bitiriyorsun? Geliştiricisin.

  • Bir uygulama çıkarıyorsun? Geliştiricisin.

Ama asıl soru şu:
Sadece geliştiriyor musun?
Yoksa gelişiyor musun?


Kod Yazmak: Hızlı Tatmin

Kod yazmak güzeldir:

  • Bir bug çözülür, bir adrenalin gelir.

  • Bir feature biter, bir özgüven pompalanır.

  • Bir deploy yapılır, bir alkış alınır.

Ama bunlar gelip geçicidir.
Her çözüm yeni bir sorun doğurur.
Her proje yeni bir eksikliği açığa çıkarır.

Eğer sadece kod yazıyorsan,
her adımda aynı yerde dönüp durursun.
Kod artar,
ama sen artmazsın.


Kendini Yazmak: Zor ve Sonsuz

Gelişmek demek:

  • Her satır kodda daha iyi bir düşünce kurmak,

  • Her yeni projede kendi eksiklerini daha net görmek,

  • Her başarıda bir sonraki adımı hayal etmek demektir.

Kendini yazmak demek:

  • Bir if bloğu yazarken,
    karar verme kasını çalıştırmak,

  • Bir veri yapısı seçerken,
    analitik düşünme kasını geliştirmek,

  • Bir hatayı debug ederken,
    sabır ve problem çözme kasını güçlendirmektir.

Yani kod yazarken, aslında kendini kodlarsın.

"Satır satır kendine yeni satırlar eklersin."


Neden Çoğu Geliştirici Gelişemez?

  • Çünkü günü kurtarır, geleceği düşünmez.

  • Çünkü başarıyı iş bitirmek sanır, öğrenmeyi değil.

  • Çünkü kendine eleştirel bakmaktan korkar.

  • Çünkü her yeni bilgiyi yük gibi görür, fırsat değil.

Bu yüzden bazen beş yıldır çalışan biri,
beş yıldır büyümemiş bir zihin taşır.
Çünkü kilometre yapmak,
tek başına yol almak değildir.


Modern Geliştiriciye Yürekten Tavsiyeler

  • Her projeden sonra kendine şu soruyu sor:

    "Ben bu projede sadece bir şey mi geliştirdim, yoksa kendimi mi?"

  • Her hatada şunu ara:

    "Bu hatadan bana kalan hangi ders?"

  • Bilmediğin şeylerden utanma.

  • Bildiklerinle yetinme.

  • Öğrendiğin her şeyin seni nasıl değiştirdiğini gözlemle.

Çünkü gelişmek,
bilgi biriktirmek değil,
zihni ve karakteri genişletmektir.

Son Söz

Kod yazmak bir meslek olabilir.
Ama kendini yazmak, bir yaşam biçimidir.

Ve bu yolun sonu yoktur.
Çünkü her satırda, her projede, her gecede,
sen yeniden doğarsın.

Ve unutma:

"Gerçek geliştirici,
sadece kod değil,
kendini de geliştirendir."

Peki,
sen sadece bir proje mi yazıyorsun?
Yoksa satır satır
kendi efsaneni mi kodluyorsun?

Dipl.-Ing. Deniz Cengiz


Yorumlar

En çok okunanlar

Cloud Computing Reference Architecture: An Overview

Cloud Architecture

Teknolojik Altyapıdan Ne Anlıyoruz?

Run SAP İş Ortağı Programı, En İyi Çözüm Operasyonunu Nasıl Sağlar?

CLOUD COMPUTING – An Overview

KÖRLER ÜLKESİNE KRAL OLMAK

Artırılmış Gerçeklik nedir ve hangi alanlarda kullanılıyor?

BİG DATA MANAGEMENT

Blockchain, sözleşmelerin dijital koda yerleştirildiği ve şeffaf paylaşılan veri tabanlarına depolandığı, silinmesi, değiştirilmesi ve düzeltilmesinden korunan bir dünyayı hayal edebiliriz.

Master Data Management (MDM): Kurumsal Veri Stratejisinin Temel Taşı