Günümüzde programlama, kariyer gelişiminde en sık seçilen alanlardan biridir.
Bazıları bilgisayar bilimi eğitimi sonrası sektöre girer. Diğerleri bootcamp'leri bitirir. Bir kısmı ise ilk uygulamaları mesai sonrası kendi başına yazarak öğrenir.
Yol ne olursa olsun, neredeyse her yeni başlayan geliştirici benzer soruları kendine sorar.
Hangi teknolojileri seçmeliyim?
İlk işi nasıl bulurum?
Şirketler neler bekliyor?
Bir software house'ta günlük iş nasıl görünüyor?
Ve belki en önemlisi... Ne zaman sonunda junior olmaktan kurtulurum?
Farklı sektörlerden müşteriler için yirmi yılı aşkın süre proje gerçekleştirdikten ve birkaç nesil genç geliştirici yetiştirdikten sonra bu soruların çoğuna cevap verebiliyoruz.
Ama baştan söyleyelim. "2026'da öğrenmen gereken 10 framework" gibi bir liste olmayacak.
İnternette bu tarz binlerce makale var...
Bunun yerine programlamanın içinin nasıl göründüğünü göstermek istiyoruz. Gerçek halini.
Pazarlama sloganları olmadan. Bali'de plajdan çalışan geliştiricilerle ilgili hikâyeler olmadan. Ama gerçekçe yaşanmış hikâyelerle ve bir zamanlar bizim de çok ihtiyaç duyduğumuz tavsiyelerle.
Bu seri ne hakkında?
Önümüzdeki dört makalede neredeyse her geliştiricinin geçtiği yolu seninle paylaşacağız.
Bir sonraki bölümlerde şunlardan bahsedeceğiz:
- kariyerin başında gerçekten nelerin öğrenilmesinin değerli olduğu,
- hangi teknolojilerin temel oluşturduğu, hangilerinin sadece geçici bir moda olduğu,
- hangi donanım ve yazılımların gerçekten önemli olduğu,
- profesyonel bir software house'ta günlük işin nasıl göründüğü,
- neden Code Review'in en iyi derslerden biri olduğu,
- AI'yi, kodu düşüncesizce kopyalamak yerine daha hızlı gelişmek için nasıl kullanabileceğin,
- her Junior'ın neredeyse yaptığı hatalar,
- neden "bende çalışıyor" ifadesinin sektörde en bilinen şakalardan biri haline geldiği,
- Junior, Mid Developer ve Senior Developer arasındaki farklar,
- en iyi geliştiricileri programlama dillerinin sayısına göre değil düşünme biçimine göre nasıl tanıdığımız.
Eğer programlamaya yeni başlıyorsan, bu seri sana birçok hatadan kaçınmanda yardımcı olacak.
Eğer sektörde zaten çalışıyorsan, burada kendini çok iyi hatırlayacağın birçok durum bulacaksın.
Her Senior bir zamanlar kaybolmuş bir Junior'dı
Buna inanması bazen zor. Birkaç dakikada hatayı bulan, senin iki gündür üzerinde düşündüğün hatayı çözen Senior Developer'a bakıyorsun. Kod yazarken sanki hiç düşünmesine gerek yokmuş gibi çok hızlı yazıyor. Senin bilmediğin klavye kısayollarını biliyor. Mimari, tasarım desenleri ve konteynerleştirmeden hava durumu anlatır gibi konuşuyor.
Kolayca şöyle düşünebilirsin: "O basitçe dahi."
Çoğu zaman gerçek tam tersine yakın görünür...
Her Senior bir zamanlar:
- ortalamayı unuttu,
- yanlışlıkla veritabanının bir bölümünü sildi,
- yarım gün boyunca bir hata ile uğraştıktan sonra bir yazım hatasını keşfetti,
- ilk Git çatışmasını (conflict) yaşadı,
- bir düzeltme gönderdi ve... tamamen başka bir şeyi bozdu.
Senior'ları Junior'lardan ayıran yetenek değil; deneyimdir. Deneyim ise sadece uygulama ile kazanılır.
Üniversite programlamayı öğretir. İş ise programcı olmayı öğretir.
Bu cümle kışkırtıcı görünebilir ama gerçeği çok iyi özetler.
Üniversite temelleri anlamak için harika bir yerdir. Algoritmaları öğrenmek. Veri yapılarını. Matematiği. Bilgisayar mimarisini. İşletim sistemlerinin çalışma modellerini. Bu büyük bir değer. Ancak günlük iş bambaşka görünür.
Aniden fark edersin ki, kodlamanın dışında ayrıca:
- müşterinin ihtiyaçlarını anlamak,
- UX Tasarımcılarla iş birliği yapmak,
- çözümleri Proje Yöneticisi ile danışmak,
- harici sistemlerle entegrasyon yapmak,
- dokümantasyon okumak,
- dokümantasyon yazmak,
- kullanıcılar tarafından bildirilen hataları analiz etmek,
- Code Review'e katılmak,
- kendi işini planlamak,
- görev sürelerini tahmin etmek.
Ve genellikle hiçbir üniversite bunları öğretmez.
En büyük şaşkınlık? Programlama işin sadece bir parçası.
Bu, neredeyse her Junior'ı şaşırtan bir an.
Beklenti?
İşe geliyorsun. Bir görev alıyorsun. Kod yazıyorsun. Teslim ediyorsun. Eve gidiyorsun.
Gerçeklik farklıdır...
Günün büyük kısmı konuşmalarla, planlamayla, analizle, toplantılarla, mevcut kodu okumakla, debug yapmakla ve problemlerin kökenini aramakla geçer.
Kod yazmak genellikle tüm sürecin sadece bir aşamasıdır.
İyi bir geliştirici en hızlı kod yazan kişi değildir. İyi geliştirici, bir problemi çözmenin en iyi yolunu bulabilendir.
Bazen en iyi çözüm... tek bir yeni satır kod yazmamaktır.
Ekibimizden bir hikâye
Birkaç yıl önce ekibimize stajyer olarak bir öğrenci katıldı. O günü çok iyi hatırlıyoruz.
Büyük bir heves. Daha da büyük bir merak. Ve binlerce soru; Neden bunu böyle yapıyoruz? Bu tasarım deseni ne için? Bunu daha basit yazamaz mıyız? Gerçekten test yazmak zorunda mıyız? Git nasıl çalışıyor?
Hepimiz bir zamanlar benzer soruları sormuştuk.
Bu yüzden ilk günden karmaşık fonksiyonlar yazmasını beklemek yerine tamamen başka bir şeye odaklandık - düşünme biçimini öğretmeye.
Sadece nasıl yapılacağını göstermedik.
Her şeyden önce neden bunu bu şekilde yaptığımızı anlattık.
İlk stajdan sonra geri döndü. Ona giderek daha sorumluluk gerektiren görevler verdik. Code Review'lere katıldı. Yeni teknolojiler öğrendi. Müşteriler için yürütülen projeleri gözlemledi. Tüm ekiple iş birliği yapmayı öğrendi.
Bugün bizim software house'umuzun tam üyelerinden biri.
Kendi başına zorlu görevleri yönetiyor. Çözümler tasarlıyor. Birkaç yıl önce imkânsız görünen problemleri çözüyor.
Bunu, yeni bir framework öğrendiği için mi başardı? - Hayır.
En büyük değişim düşünme biçimini öğrenmesiydi. Çünkü iyi bir geliştirici tüm soruların cevabını bilmez. İyi geliştirici bu cevapları etkili şekilde nasıl arayacağını bilir.
"Bende çalışıyor..."
İlk bölümü, geliştiriciler dünyasındaki en kült ifadelerden biri olmadan bitiremezdik.
Biraz daha uzun süre IT'de çalışmış olan herkes bu cümleyi bilir. - Bende çalışıyor.
Bu cümle hem komik...
...hem de çok tehlikelidir.
Çünkü kullanıcı, senin bilgisayarında çalıştığıyla ilgilenmez.
Müşteri, test ortamında çalışmasıyla ilgilenmez.
Üretim sunucusu da şu yorumu okumaz: // bende çalışıyordu :)
Gerçek geliştirici analizini "bende çalışıyor" demekle bitirmez.
Bir sonraki soruyu sorar: Neden bende çalışıyor da müşteride çalışmıyor?
İşte o andan itibaren gerçek öğrenme başlar.
Terimler sözlüğü
Junior Developer
Kariyerine yeni başlayan geliştirici. Deneyim kazanma, iyi uygulamaları öğrenme ve hem teknik hem de ekip çalışması becerilerini geliştirmeye odaklanır.
Code Review
Kodun başka bir geliştirici tarafından incelenme süreci. Amacı kod kalitesini artırmak, potansiyel hataları bulmak ve ekip içinde bilgi paylaşımı sağlamaktır.
Framework
Uygulama geliştirmeyi kolaylaştıran hazır kütüphaneler ve araçlar seti. Framework proje yapısını belirler ve yazılım geliştirmeyi hızlandırır.
Git
Kod değişikliklerini takip etmeyi ve bir proje üzerinde birden çok geliştiricinin iş birliği yapmasını sağlayan en yaygın versiyon kontrol sistemi.
Hata Ayıklama (Debugging)
Uygulamadaki hataları bulma, analiz etme ve düzeltme süreci.
Özet
Bu bölümü okuduktan sonra yalnızca bir şeyi hatırlayacaksan, bu olsun.
Programlamayı kurslar, kitaplar ve videolardan öğrenebilirsin.
Programcı olmayı ise ancak gerçek problemleri başkalarıyla birlikte çözmeye başladığında öğrenirsin.
Burası, deneyimin, sorumluluğun ve düşünme biçiminin doğduğu yerdir; zamanla iyi bir geliştiriciyi sadece sözdizimini bilen birinden ayıran şeyler bunlardır.
Bir sonraki bölümde somut konulara geçeceğiz.
Gösteriyoruz ki, gerçekte neleri öğrenmek değerli; hangi teknolojiler kariyerin temeli olur, hangi donanım ve yazılımı seçmeli ve neden bir dili derinlemesine bilmenin beş dili yüzeysel bilmekten daha değerli olabildiği.



