Blok 8 · Ders 54
Portföy, CV ve iş arama
GitHub profilini ve üç güçlü projeni hazırlamak, junior CV'si yazmak, LinkedIn ve iş ilanlarını okumak.
Bu dersin sonunda
- Bir işverenin junior başvurusunda neye baktığını söyleyip portföy projelerini buna göre seçebilirsin
- GitHub'da profil README'si yazıp en güçlü altı projeni açıklama ve konularla sabitleyebilirsin
- Bir projenin README'sini şablona göre yazıp temiz bir kopyada yabancı gözüyle deneyebilirsin
- Tek sayfalık, projeleri önde, aday takip sistemlerinin okuyabileceği bir junior CV'si hazırlayabilirsin
- Bir iş ilanında gereklilikleri artılardan ayırıp başvurma kararı verebilir, ilana özel kısa bir ön yazı yazabilirsin
- Başvurularını bir tabloda ve küçük bir betikle takip edebilir, ilanlardaki sık İngilizce sözcükleri okuyabilirsin
Bu sayfada
Elli üç derste yedi proje yazdın. Ama bir işveren onları kendiliğinden bulmaz; bulsa da ne olduklarını anlamak için uzun uğraşmaz. Bu ders kod dersi değil, vitrin dersi: GitHub profilini, proje README'lerini, CV'ni ve LinkedIn profilini bir işverenin gözüyle düzenleyeceksin. Sonra iş ilanlarını okumayı, başvurularını takip etmeyi ve kısa bir ön yazı yazmayı öğreneceksin. Dersin sonunda başvuru yapmaya hazır bir dosyan olacak.
İşveren neye bakar?
Deneyimli bir yazılımcı başvurduğunda işveren önceki işlerine bakar. Senin önceki işin yok; bu yüzden işverenin elinde tek bir soru kalır: "Bu kişi gerçekten kod yazabiliyor mu?" Cevabı CV'ndeki cümleler değil, gösterebildiğin şeyler verir.
Junior başvurularında işverenin baktığı şeyler kabaca şunlar:
- Çalışan bir şey. Tıklayınca açılan bir canlı bağlantı ya da README'deki komutlarla çalışan bir proje. "Bende çalışıyordu" kanıt değildir.
- Okunabilir kod. Anlamlı adlar, kısa fonksiyonlar, tutarlı biçim. İçinde unutulmuş
console.log'lar, yoruma alınmış eski kod blokları,deneme2.jsgibi dosyalar olmasın. - README. Projeyi anlatabiliyor musun? İş yerinde en sık yapacağın işlerden biri, ne yaptığını başkasına yazıyla anlatmak.
- Geçmiş. Adım adım, anlamlı mesajlı commit'ler; dallar ve pull request'ler (Ders 52). Tek bir "hepsi" commit'i, projeyi bir yerden kopyalamışsın gibi görünür.
- Test ve araçlar.
npm testile çalışan testler, her push'ta onları çalıştıran GitHub Actions, Prettier ile biçimlenmiş kod (Ders 53). - Sürekli öğrenme. Son aylarda da kod yazıyor musun? README'lerinde "neyi öğrendim, neyi düzelttim" yazıyor mu?
- İletişim. CV'nde, ön yazında ve README'lerinde yazım hatası, özensiz cümle olmaması. Bunlar yazılı iletişiminin ilk örnekleri.
Başvurunu ilk açan kişi çoğu zaman teknik olmayan bir işe alım uzmanıdır (recruiter); kodunu okuyan ise sonraki aşamadaki geliştiricidir. Bu yüzden vitrin iki katmanlı olmalı: ilk bakışta anlaşılır, derine inince sağlam.
Kanıt, iddiadan güçlüdür
CV'lerin çoğu aynı sıfatlarla dolu: çalışkan, takım oyuncusu, öğrenmeye açık. Okuyan kişi bunları doğrulayamaz, o yüzden geçer. Her iddianın yanına bir kanıt koy:
| İddia | Kanıtı |
|---|---|
| "JavaScript ve Node.js biliyorum" | Takım API'si: 10 uç nokta, README'de gerçek bir istek ve yanıt |
| "Takım çalışmasına yatkınım" | Dallar, açıklamalı pull request'ler, inceleme yorumları |
| "Öğrenmeye açığım" | Son aylarda düzenli commit'ler; README'de "Zorluklar ve öğrendiklerim" |
| "Kaliteye önem veririm" | Her push'ta çalışan testler, Prettier ile biçimlenmiş kod |
| "Yapay zekâ ile çalıştım" | Kaynak göstererek cevap veren asistan; maliyet ve güvenlik notları |
Kursun yedi projesi portföye nasıl dönüşür?
Bu kursta her blokta bir proje yazdın. Hepsi aynı ağırlıkta değil: ilk projeler öğrenme yolculuğunu, son projeler ise iş yerinde yapacağın işe ne kadar yakın olduğunu gösterir.
| Blok | Proje | Ders | Ne kanıtlar | Portföyde |
|---|---|---|---|---|
| 1 | Takım savaşı (takim-savasi) | Ders 6 | Değişken, fonksiyon, dizi, döngü | Öğrenme yolculuğu; sabitleme |
| 2 | Metin RPG (metin-rpg) | Ders 17 | Modüller, async, dosyaya kayıt, kullanıcı girdisi | İstersen sabitle |
| 3 | Şampiyon ansiklopedisi (ansiklopedi) | Ders 25 | HTML, CSS, DOM, fetch, erişilebilirlik, canlı site | Sabitle |
| 4–5 | Takım API'si (takim-api) | Ders 32, Ders 38 | REST, Express, PostgreSQL, transaction, yayın | Sabitle |
| 6 | Maç notları uygulaması (mac-notlari) | Ders 46 | Next.js, TypeScript, giriş, yetki, Vercel | Sabitle, en başa koy |
| 7 | Not asistanı (not-asistani) ve uygulamandaki "Notlarına sor" sayfası | Ders 51 | Dil modeli API'si, tam metin ve vektör araması, kaynak gösteren cevap, ölçme | Sabitle |
| – | Kendi projen | – | Bir fikri baştan sona kendin götürebildiğin | Sabitle |
Blok 7'nin projesi iki yerde duruyor: asistanı mac-notlari uygulamana "Notlarına sor" sayfası olarak taşıdın, alıştırma projesi not-asistani ise şimdilik yalnız bilgisayarında. Onu da GitHub'da bir depo açıp gönder: aramayı ölçtüğün soru kümesiyle birlikte, yapay zekâ tarafını en açık gösteren proje o. Ders 46'da uygulamana başka bir ad verdiysen bu dersteki mac-notlari yerine kendininkini düşün.
Tablonun son satırı önemli. Bu kursu bitiren herkesin elinde aynı yedi proje olacak; bir işveren aynı takım API'sini iki başvuruda görürse ikisini de daha az önemser. Öne çıkmanın iki yolu var:
- Kurs projesini kendinin yap. Görevlerdeki genişletmeleri yap, kendi fikrinle bir özellik ekle, veriyi değiştir. README'de neyin kurstan geldiğini, neyi senin eklediğini açıkça yaz.
- Kendi projen. Küçük ama gerçek bir sorunu çözen bir uygulama: arkadaş grubunun maç takvimi, ailenin dükkânı için stok listesi, sevdiğin bir oyunun istatistik sayfası. Kursta öğrendiğin yığınla, ama planı ve kararları senin.
GitHub profilin: vitrin
GitHub profilin github.com/kullaniciadin adresindedir. Şu ana kadar orada yalnız depo listen vardı. Bu bölümde iki şey ekleyeceksin: üstte seni anlatan bir yazı ve altında en iyi projelerin.
Profil README'si: adı senin adın olan depo
GitHub'da adı kullanıcı adınla birebir aynı olan bir depo açarsan, o deponun README'si profil sayfanın en üstünde görünür. Kullanıcı adın denizyilmaz ise depo denizyilmaz/denizyilmaz olur.
GitHub'ın belgesine göre profilde görünmesi için dört şart var: depo adı kullanıcı adınla aynı olmalı, depo herkese açık (Public) olmalı, deponun ana klasöründe README.md adında bir dosya olmalı ve dosya boş olmamalı.
- GitHub'da sağ üstteki + düğmesine bas ve New repository'yi seç.
- Repository name kutusuna kullanıcı adını harfi harfine yaz.
- Public'i seç.
- Add README seçeneğini aç. Bu depo için README'yi GitHub'ın eklemesi en kolayı; içine fikir veren bir şablon koyar.
- Create repository'ye bas. Depo sayfasında Edit README ile dosyayı doğrudan tarayıcıda düzenleyebilirsin.
Tarayıcıda yazmak yerine VS Code'da yazıp önizlemek istersen depoyu bilgisayarına klonla. git init ile yeni bir depo açma; nedenini birazdan bir hata kartında göreceksin. C:\kod klasöründe bir terminal aç:
PS C:\kod> git clone https://github.com/denizyilmaz/denizyilmaz.gitCloning into 'denizyilmaz'...# GitHub'dan klonlarken altında birkaç "remote:" ve "Receiving objects" satırı daha görürsün.Oluşan C:\kod\denizyilmaz klasörünü VS Code'da File → Open Folder... ile aç. GitHub'ın şablonunu sil ve kendi yazını yaz. Kısa tut: profil README'si bir özgeçmiş değil, bir karşılama kartıdır. Bir ekranı geçmesin.
# Merhaba, ben Deniz Junior full-stack geliştiriciyim. TypeScript, React, Next.js,Node.js ve PostgreSQL ile web uygulamaları yazıyorum; sonprojelerimde dil modellerini uygulamaya bağladım. - **Şu an:** maç notları uygulamama test yazıyorum- **Öğreniyorum:** Docker ve teknik İngilizce- **Aradığım:** İstanbul'da ya da uzaktan junior pozisyon ## Öne çıkan projeler - [Maç Notları](https://github.com/denizyilmaz/mac-notlari): Discord ile girişli maç notları ve notlara soru soran asistan (Next.js, PostgreSQL, RAG)- [Not Asistanı](https://github.com/denizyilmaz/not-asistani): kaynak göstererek cevaplayan asistan ve arama ölçümü- [Takım API'si](https://github.com/denizyilmaz/takim-api): takım ve şampiyon REST API'si (Express, PostgreSQL) ## İletişim deniz@example.com · linkedin.com/in/deniz-yilmaz-ornekPS C:\kod\denizyilmaz> git add README.mdPS C:\kod\denizyilmaz> git commit -m "Profil README'sini yaz"[main 9a84ded] Profil README'sini yaz 1 file changed, 23 insertions(+), 4 deletions(-)PS C:\kod\denizyilmaz> git pushTo https://github.com/denizyilmaz/denizyilmaz.git 0b3fbde..9a84ded main -> mainSatırları elle bölebilirsin: GitHub, paragrafın içindeki tek satır sonunu boşluk sayar. Listedeki bir maddenin devamı iki boşluk girintiyle yazılır. Klonlanmış depoda -u origin main gerekmez; bağ hazır gelir.
Örnekteki depo adları ve iletişim bilgileri temsilî; sen kendi depolarının gerçek adreslerini yaz ve her bağlantıya bir kez tıkla. Push çıktısında To satırından önce birkaç sayım satırı da göreceksin (Ders 7). Kimlikler ve satır sayıları sende farklı olur; deletions, GitHub'ın şablonundan sildiğin satırlardır.
İyi bir profil README'sinde şunlar olur: tek cümleyle kim olduğun ve hangi yığınla çalıştığın, şu an ne yaptığın, en iyi iki üç projenin bağlantısı ve iletişim yolu. Olmaması gerekenler: ekranı dolduran rozet duvarı, "hakkımda 47 ilginç bilgi" listesi, çalışmayan istatistik kartları ve yazım hataları. İşveren burada uzun kalmaz; o kısa sürede projelerine tıklamasını istiyorsun.
Ne zaman çıkar? Depoyu açtın, README'yi yazdın ama github.com/kullaniciadin sayfasında hiçbir şey değişmedi. Hata mesajı yok; GitHub şartlardan biri tutmayınca sessizce göstermez. En sık sebepler:
- Depo adı kullanıcı adınla aynı değil (
profil,deniz-yilmaz,about-me). Kullanıcı adındenizyilmazise depo dadenizyilmazolmalı. - Depo gizli (Private).
README.mdana klasörde değil, bir alt klasörde; ya da adıreadme.txtgibi başka bir şey.- Değişikliği commit'leyip push etmedin; GitHub'daki dosya hâlâ eski.
Nasıl düzelir? Depo sayfasına gir, sağ üstte deponun tam adını oku ve kullanıcı adınla karşılaştır. Ad yanlışsa Settings sayfasının en üstündeki Repository name alanından değiştir. Gizliyse aynı sayfanın en altındaki Danger Zone bölümünden görünürlüğünü herkese açık (Public) yap. Sonra profilini gizli pencerede (Ctrl+Shift+N) aç: giriş yapmamış biri ne görüyorsa işveren de onu görür.
Sabitlenmiş depolar
Profil README'sinin altında depoların durur. GitHub varsayılan olarak "popüler" saydıklarını gösterir; bu sıralama senin seçimin değildir. En iyi projelerini sen seçip sabitleyebilirsin.
- Sağ üstteki profil resmine bas ve Your profile'a gir.
- Depo bölümünün üstündeki Customize your pins bağlantısına bas.
- Açılan listeden en fazla altı depo seç. Sağ üst köşelerindeki tutamaçtan sürükleyerek sıralarını değiştirebilirsin.
- Save pins ile kaydet.
Sabitlenen her depo kendi kartıyla görünür: adı, kısa açıklaması ve ana dili. Açıklama boşsa kart çıplak kalır. Her depo için deponun ana sayfasında, sağdaki About başlığının yanındaki dişli simgesine bas ve üç alanı doldur:
- Description: tek cümle, ne yaptığı. "Ders 32 projesi" değil, "Takım ve şampiyon yöneten REST API (Express, PostgreSQL)".
- Website: canlı bağlantı varsa. Ders 25'te ansiklopedi için yapmıştın.
- Topics: aramada bulunmanı sağlayan etiketler:
nodejs,express,postgresql,rest-api. GitHub'ın kuralına göre yalnız küçük harf, rakam ve tire kullanılır, her etiket en çok 50 karakter olur ve bir depoya en çok 20 etiket eklenir. Bu yüzdenNext.jsdeğilnextjsyazarsın.
Altı yer var; tabloya göre bir öneri: maç notları, not asistanı, takım API'si, ansiklopedi, kendi projen ve metin RPG. İlk sıraya iş ilanlarına en çok benzeyen projeyi koy. Sabitlemediğin depolar silinmez, profilde listenin içinde kalır. Yarım kalmış ya da utandığın denemeleri silmek yerine gizli (Private) yapabilirsin.
Proje README şablonu
Ders 7'de README'yi bir mağaza sayfasına benzetmiştik. Blok projelerinde her seferinde biraz daha zengin README yazdın: Ders 17'de özellikler ve ekran çıktısı, Ders 25'te canlı bağlantı ve ekran görüntüsü, Ders 32'de bir API belgesi. Portföye girecek her proje için bunları tek bir şablonda topla. Şablonun amacı, projeni hiç görmemiş birinin beş dakikada şu üç soruya cevap bulması: Ne yapıyor? Nasıl çalıştırırım? Bunu yazan kişi ne öğrenmiş?
# Proje Adı Tek cümle: bu proje kimin hangi işini kolaylaştırıyor? **Canlı:** https://proje-adresi · **Kod:** bu depo  ## Özellikler - Kullanıcının yapabildiği bir şey, fiille başlayarak- Bir başkası- En çok uğraştırdığın özellik ## Teknolojiler Kullandıklarını ve birini neden seçtiğini tek cümleyle yaz. ## Bilgisayarında çalıştır 1. `git clone https://github.com/KULLANICI/proje.git` ve `cd proje`2. `npm install`3. `.env.example` dosyasını `.env` adıyla kopyala ve değerleri doldur4. `npm run dev`, sonra http://localhost:3000 ## Testler ```npm test``` ## Zorluklar ve öğrendiklerim - Karşılaştığın gerçek bir sorun ve nasıl çözdüğün- Şimdi olsa neyi farklı yapardın ## Sırada ne var? - [ ] Planladığın bir özellik- Bilinen sınırlar (ör. ücretsiz barındırıcıda ilk istek yavaş) --- Bu projeyi [Yazılım Öğrenme](https://xdd.baby/ders) kursunun bir blok projesi olarak başlattım; şu özellikleri kendim ekledim: ...Her bölümün bir görevi var:
- İlk ekran. README'yi açan kişilerin çoğu yalnız ilk ekranı okur. Tek cümlelik açıklama, canlı bağlantı ve görüntü bu yüzden en üstte. Arayüzü olmayan bir API'de görüntü yerine Ders 32'deki gibi gerçek bir istek ve yanıt koy.
- Özellikler kullanıcının gözünden yazılır: "Express route'ları yazdım" değil, "takımları ada göre arayabilirsin".
- Teknolojiler bir liste değil, bir karar: "Veri ilişkili olduğu için JSON dosyasından PostgreSQL'e geçtim" cümlesi, logolarla dolu bir satırdan çok daha fazlasını anlatır.
- Bilgisayarında çalıştır kopyala-yapıştırla çalışmalı. Tek bir adım eksikse projeyi deneyen kişi orada bırakır. Birazdan bunu deneyeceksin.
- Testler varsa nasıl çalıştığını yaz; yoksa "Sırada ne var"a ekle.
- Zorluklar ve öğrendiklerim README'nin en değerli kısmı. Mülakatta projen hakkında en çok buradan soru gelir (Ders 55).
- Sırada ne var sınırlarını bildiğini gösterir.
- [ ]GitHub'da boş bir onay kutusu olarak görünür; işi bitirince dosyada- [x]yaparsın ve kutu işaretli görünür. - Son satır kaynağı dürüstçe söyler.
Yabancı gözüyle prova
Ders 32'de yayından önce depoyu temiz bir klasöre klonlayıp denemiştin. Aynı provayı şimdi bir işverenin gözüyle yap: README'yi aç, yalnız orada yazanları sırayla uygula, aklından tek adım ekleme.
Takım API'sinin Ders 38'deki README'sinde kurulumun ikinci adımı şu: ".env dosyası oluştur (aşağıdaki ayarlar)". Sen bu cümleyi anlıyorsun, çünkü dosyayı kendin yazdın. Projeyi ilk kez gören biri ise nasıl oluşturacağını ve DATABASE_URL'i nereden bulacağını bilmez; çoğu zaman bu adımı atlar ve bir sonrakine geçer:
PS C:\kod> git clone https://github.com/denizyilmaz/takim-api.git provaCloning into 'prova'...PS C:\kod> cd provaPS C:\kod\prova> npm install added 79 packages, and audited 80 packages in 2s 28 packages are looking for funding run `npm fund` for details found 0 vulnerabilitiesPS C:\kod\prova> npm run kur > takim-api@1.0.0 kur> node --env-file=.env kur.js node: .env: not foundHatayı sen tanıyorsun: .env dosyası Git'e girmediği için klonda yok (Ders 29). Ama projeyi deneyen işe alım uzmanı bunu bilmez; onun gözünde proje "çalışmıyor". Düzeltme kodda değil README'de ve bir şablon dosyasında. Kurstaki takım API'sinde Ders 29'daki .env.example şablonu yok; asıl proje klasöründe (C:\kod\takim-api, provada değil) değerleri boş bir şablon oluştur:
PORT=3000DATABASE_URL=SALT_OKUNUR=README'deki ikinci adımı da tarif gibi yaz: "Copy-Item .env.example .env ile şablonu kopyala. Neon'da ücretsiz bir proje aç, bağlantı dizesini DATABASE_URL='in arkasına yapıştır." Commit'le, gönder ve provayı baştan yap. Yeni klonda adım şöyle görünür:
PS C:\kod\prova> Copy-Item .env.example .envPS C:\kod\prova> Get-Content .envPORT=3000DATABASE_URL=SALT_OKUNUR=Prova bitince C:\kod\prova klasörünü sil. Bu provayı sabitlediğin her proje için bir kez yap; bir arkadaşına yaptırabilirsen daha da iyi.
Ne zaman çıkar? VS Code önizlemesinde ekran görüntüsü görünüyor, GitHub'da ise yerinde yalnız alt metin ya da kırık resim simgesi var. Hata mesajı yok. En sık sebep büyük-küçük harf: Windows Ekran.PNG ile ekran.png'yi aynı dosya sayar, GitHub saymaz. Git'in dosyayı hangi adla sakladığına bak:
PS C:\kod\ansiklopedi> git ls-files imgimg/Ekran.PNGgit ls-files img, Git'in img klasöründe takip ettiği dosyaları, depoya girdikleri adla listeler.
README'de img/ekran.png yazıyor ama depoda img/Ekran.PNG var. Başka sebepler: resmi hiç commit'lemedin (git status'ta görünür) ya da yolun başına / ya da C:\... gibi kendi bilgisayarındaki tam yolu yazdın.
Nasıl düzelir? Dosyanın adını Git'e değiştirt. Adı Dosya Gezgini'nde ekran.png yaparsan Git bunu görmez: Windows'taki Git, varsayılan olarak yalnız harf büyüklüğü değişen adları değişiklik saymaz. git status "nothing to commit" der, git ls-files img hâlâ img/Ekran.PNG yazar. git mv ise değişikliği Git'e kendisi bildirir:
PS C:\kod\ansiklopedi> git mv img/Ekran.PNG img/ekran.pngPS C:\kod\ansiklopedi> git commit -m "Ekran görüntüsünün adını küçük harfe çevir"[main 885aa8b] Ekran görüntüsünün adını küçük harfe çevir 1 file changed, 0 insertions(+), 0 deletions(-) rename img/{Ekran.PNG => ekran.png} (100%)Sonra git push. Kural Ders 25'tekiyle aynı: dosya adlarını hep küçük harfle yaz.
.env dosyasıNe zaman çıkar? Portföyünü herkese açmadan önce depolarını tararken. .env'yi bir ara yanlışlıkla commit'leyip sonra silmiş olabilirsin. Dosya bugün depoda yok ama geçmişte duruyor ve herkese açık bir depoda herkes onu okuyabilir:
PS C:\kod\mac-kocu> git ls-files .envPS C:\kod\mac-kocu> git log --oneline -- .env87becd1 .env dosyasını depodan çıkarce3c4e9 Araç tanımlarını eklePS C:\kod\mac-kocu> git show ce3c4e9:.envANTHROPIC_API_KEY=sk-ant-ornekgit ls-files .env hiçbir şey yazmadı: Git bugün .env'yi izlemiyor. Ama git log --oneline -- .env bu dosyaya dokunan bütün commit'leri listeler; çıktı boşsa sorun yok. git show kimlik:dosya o commit'teki hâlini gösterir. Örnekteki depo Ders 49'daki maç koçuna benziyor, anahtar ise sahte; seninki gerçek olur.
Nasıl düzelir? Önce anahtarı hemen yenile (Ders 29'daki kural): sızan anahtar geçmişten silinse bile birileri çoktan kopyalamış olabilir. Sonra depoyu temizle. Geçmiş senin için önemli değilse en kolay yol şu: eski depoyu gizli yap ya da sil, dosyaları gizli .git klasörü olmadan yeni bir klasöre kopyala, .gitignore'da .env olduğundan emin ol, git init ile temiz bir geçmiş başlat ve yeni bir depoya gönder. Bir işveren için açıkta bırakılmış bir anahtar, projenin kendisinden daha akılda kalıcıdır.
Junior CV'si: tek sayfa, projeler önde
CV'n (özgeçmiş) başvurunun kapısıdır. Junior bir CV'de en sık yapılan yanlış, deneyimli birinin CV'sini taklit etmek: en üstte uzun bir iş geçmişi, en altta "Projeler" diye küçük bir satır. Senin iş geçmişin yazılım değilse en güçlü malzemen projelerin; onları yukarı al.
Tek sayfa. Junior bir CV'nin ikinci sayfaya taşması için bir sebep yok; okuyan kişi her satırı okumayacak, sen de en iyi satırları seçmek zorunda kalacaksın. İkinci sayfaya taşan tek bir satır bile iki sayfa demektir: önce o satırı kısalt, kenar boşluklarıyla oynama.
Sıralama: iletişim, iki üç satırlık özet, projeler, teknik beceriler, eğitim, deneyim, diller. Yazılım dışında bir işte çalıştıysan onu da yaz: müşteriyle konuşmak, sorumluluk almak, vardiya düzeni de bir şey anlatır; ama kısa tut.
Aday takip sistemleri için sade düzen
Birçok şirket başvuruları bir yazılımda toplar. Bu yazılım CV'ndeki yazıyı çıkarır, alanlara ayırır; işe alım uzmanı da adaylar arasında "React", "PostgreSQL" gibi sözcüklerle arama yapar.
Hangi şirketin hangi sistemi kullandığını ve onun CV'ni nasıl okuduğunu bilemezsin. Bu yüzden en güvenli yol, bir programın da bir insanın da kolay okuyacağı sade bir düzen:
- Tek sütun. İki sütunlu düzende yazı çıkarılırken sıra karışabilir.
- Yazı yazı olsun. Beceri çubukları, yıldızlar, ikonlar ve resmin içine gömülmüş yazılar okunmaz. "JavaScript ★★★★☆" yerine "JavaScript" yaz; ne kadar bildiğini projeler göstersin.
- Standart bölüm başlıkları. "Neler yaptım?" değil "Projeler"; bir program da tanısın.
- İlandaki sözcükler. İlanda "PostgreSQL" yazıyorsa ve sen PostgreSQL kullandıysan, CV'nde de aynı yazımla geçsin. Kullanmadığın bir teknolojiyi ise asla yazma; mülakatta ilk o sorulur.
- Metni seçilebilen bir PDF. Taranmış ya da resim olarak kaydedilmiş PDF'te yazı yoktur.
Fotoğraf Türkiye'de sık konur ama şart değil; yurt dışına gönderilen İngilizce CV'lerde çoğu zaman konmaz. Konacaksa sade, yüzünün net göründüğü bir fotoğraf olsun. Kimlik numarası, tam ev adresi gibi bilgileri yazma; şehir yeterli. Dosyanın adı da bir şey söyler: cv-son-son2.pdf değil, Deniz-Yilmaz-CV.pdf.
Bölüm başlıkları: Türkçe ve İngilizce
İngilizce bir ilana İngilizce CV gönderirsin. Yapı aynı kalır, başlıklar değişir:
| Türkçe | İngilizce | İçinde ne var |
|---|---|---|
| İletişim | Contact | Şehir, e-posta, telefon, GitHub, LinkedIn |
| Özet | Summary | İki üç cümle: ne yapıyorsun, hangi yığınla, ne arıyorsun |
| Projeler | Projects | Üç proje, her birinde bağlantı ve 2–3 madde |
| Teknik beceriler | Technical Skills | Gruplanmış liste: diller, ön yüz, arka yüz, araçlar |
| Eğitim | Education | Okul ve bu kurs gibi eğitimler |
| Deneyim | Experience | Varsa işler, staj, gönüllü çalışma |
| Sertifikalar | Certifications | Varsa; yoksa bölümü hiç açma |
| Diller | Languages | Türkçe (ana dil), İngilizce (düzeyin) |
Örnek CV
Aşağıdaki sayfa bir örnektir: kişi hayalî, iletişim bilgileri yer tutucu, köşeli parantezli satırlar senin dolduracağın yerler. HTML ve CSS ile yazdık ve tarayıcının yazdırma motoruyla A4 boyutunda PDF'e çevirdik; tek sayfaya sığdı. HTML ile yazmak istersen C:\kod\cv klasöründe cv.html adında bir dosya aç, bu iskeleti kendi bilgilerinle yaz ve dosyaya çift tıklayarak tarayıcıda aç; betik olmadığı için Live Server gerekmez. Sonra Ctrl+P ile açılan pencerede hedef olarak PDF olarak kaydet'i (Save as PDF) seç. Aynı pencerede Diğer ayarlar (More settings) altındaki Üst bilgiler ve alt bilgiler (Headers and footers) kutusunu kapat; açık kalırsa sayfanın köşelerine tarih ve file:///C:/kod/... gibi dosya yolun basılır. Aynı düzeni Word ya da Google Dokümanlar'da da kurabilirsin; önemli olan sonuç.
Bu sayfayı PDF'e çevirip bir programla içindeki yazıyı çıkardığımızda yazı, sayfadaki sırayla geldi: ad, unvan, iletişim, özet, projeler. Sen de kendi PDF'ini denetle: PDF'i aç, Ctrl+A ile her şeyi seç, kopyala ve Not Defteri'ne (Notepad) yapıştır. Yazı geliyorsa ve sırası mantıklıysa iyi; hiç yazı gelmiyorsa ya da satırlar birbirine karışıyorsa düzeni sadeleştir.
Proje maddesi nasıl yazılır?
CV'nin en çok okunan satırları proje maddeleridir. Her madde ne yaptın + nasıl + sonucu sorularına cevap versin ve bir fiille başlasın. Sayı varsa gerçek sayıyı yaz; uydurma ya da yuvarlanmış "%300 hızlandırdım" gibi ölçülmemiş iddialar mülakatta geri döner.
Takım API'si- Node.js kullandım- Veritabanı bağladım- Çok şey öğrendimTakım API'siExpress, PostgreSQL · canlı · kod- 10 uç noktalı REST API yazdım- Takım kurmayı tek transaction'a topladım- Veritabanı hatalarını 400 ve 409 kodlarına çevirdimSoldaki maddeler herkes için doğru olabilir; sağdakiler yalnız bu projeyi yazan biri için doğrudur. Fark bu.
Ne zaman çıkar? CV'ni bir tasarım uygulamasında ya da telefonda bir fotoğraf olarak hazırlayıp PDF'e çevirdiysen. PDF'i açınca güzel görünür ama Ctrl+A hiçbir şey seçmez ya da Not Defteri'ne boş yapıştırır. Bu PDF'in içinde yazı değil, yazının resmi vardır; ne aday takip sistemi ne de ekran okuyucu onu okuyabilir. Bağlantılar da tıklanmaz.
Nasıl düzelir? CV'ni bir yazı belgesinde (Word, Google Dokümanlar, HTML) yaz ve oradan PDF olarak kaydet ya da dışa aktar seçeneğiyle PDF'e çevir. Sonra kopyala-yapıştır denemesini ve bağlantılara tıklamayı tekrarla.
LinkedIn profili
LinkedIn hem işe alım uzmanlarının aday aradığı hem de ilanların yayımlandığı bir site. Profilin bir bakıma herkese açık CV'ndir; ama CV'nin aksine orada kalır ve sen başvurmasan da bulunabilirsin.
- Fotoğraf: yüzünün net göründüğü sade bir fotoğraf. Oyun avatarı değil.
- Başlık (Headline): adının altındaki satır. "İş arıyorum" yerine ne olduğunu ve yığınını yaz:
Junior Full-Stack Developer | TypeScript · React · Next.js · Node.js · PostgreSQL. - Hakkında (About): üç kısa paragraf. Kimsin ve ne yapıyorsun; hangi projeleri yaptın (en iyi ikisi bir cümleyle); ne tür bir iş arıyorsun ve sana nasıl ulaşılır.
- Öne çıkanlar (Featured) ve Projeler (Projects): profilinde Add profile section düğmesine bas; Recommended altında ikisi de var. Öne çıkanlara canlı projelerinin ve GitHub profilinin bağlantılarını ekle; Projeler bölümüne CV'ndeki üç projeyi kısa açıklamalarıyla yaz.
- Yetenekler (Skills): CV'ndeki teknik becerilerle aynı liste. Kullanmadığın bir şeyi ekleme.
- Özel adres: profilinin sağındaki Public profile & URL bölümünde Edit your custom URL ile adresini
linkedin.com/in/deniz-yilmazgibi sade bir hâle getir. LinkedIn'in yardım sayfasına göre adres 3–100 karakter olur; boşluk, simge, özel karakter ve "LinkedIn" sözcüğünü içeremez; altı ay içinde en çok beş kez değiştirilebilir. Bu adresi CV'ne yaz. - İş aradığını söyle: profilindeki Open to düğmesinden Finding a new job'ı seç, istediğin pozisyonları ve şehirleri gir. Görünürlük seçenekleri: All LinkedIn Members herkese gösterir ve fotoğrafına #OpenToWork çerçevesi ekler; Recruiters only yalnız işe alım uzmanlarının kullandığı LinkedIn Recruiter aracında görünür, çerçeve eklemez; Visible only to you kimseye göstermez, yalnız sana önerilen ilanları ayarlar. Henüz bir işte çalışmıyorsan ilk seçenek seni daha görünür yapar.
İngilizce ilanlara da başvuracaksan profilini ikinci bir dilde de yazabilirsin. LinkedIn'in yardım sayfasına göre ikinci dil profili masaüstünden açılır ve LinkedIn senin yerine çeviri yapmaz: başlığı, "Hakkında"yı ve proje açıklamalarını kendin yazarsın. Profili bir kez kurup bırakma. Bir projeye yeni bir özellik eklediğinde, bir hatayı nasıl bulduğunu anlatan birkaç paragraf paylaş. Bu, "sürekli öğrenme"nin herkese açık kanıtıdır ve ağındaki insanlar seni hatırlar.
İş ilanı okumak: gereklilik mi, artı mı?
Junior ilanlarının çoğu ilk okumada korkutucudur: sekiz teknoloji, "deneyim", bir sürü sıfat. Ama bir ilanın her satırı aynı ağırlıkta değil. İlanları iki kümeye ayırarak oku:
- Gereklilik (requirements): "Aranan nitelikler", "Requirements", "Must have". İşi yapmak için gerçekten gereken şeyler.
- Artı (nice to have): "Tercih sebebi", "Nice to have", "Bonus", "Preferred", "is a plus". Olursa güzel olur ama şart değil.
Aşağıdaki ilanlar bu ders için yazılmış örnek ilanlardır; şirketler ve ilanlar hayalîdir.
Junior Full-Stack Geliştirici · Şirket A · İstanbul · hibrit Aranan nitelikler- JavaScript ve TypeScript ile çalışmış olmak- React ile arayüz geliştirme deneyimi- Node.js ile REST API yazmış olmak- SQL ile temel sorgular (tercihen PostgreSQL)- Git ile ekip içinde çalışma (dal, pull request)- İngilizce teknik belgeleri okuyabilmek Tercih sebebi- Next.js deneyimi- Test yazma alışkanlığı- Docker bilgisi- Bilgisayar mühendisliği ya da ilgili bir bölümden mezun olmakBir ilanı okumanın yolu, her satırın yanına "bunu hangi projemle kanıtlarım?" sorusunun cevabını yazmak:
Kural basit: gerekliliklerin çoğunu projelerinle kanıtlayabiliyorsan başvur. Artıların hiçbiri şart değildir; "tercih sebebi" diye yazılmış bir bölüm mezuniyeti seni elemez. Gerekliliklerin yarısından azını karşılıyorsan önce eksiği kapatmayı ya da sana daha uygun bir ilana bakmayı düşün.
Türkiye'deki yazılım ilanlarının bir kısmı da İngilizce yazılır; yurt dışındaki şirketlerinkiler zaten öyle. Aynı yöntem orada da işler; yalnız birkaç kalıbı tanıman gerekir:
Junior Frontend Developer · Company B · Remote (Türkiye) Requirements- 0–2 years of experience with React- Solid understanding of HTML, CSS and JavaScript- Familiarity with REST APIs- Good command of written English Nice to have- Experience with Tailwind CSS- Basic knowledge of web accessibility- A portfolio of personal projects Responsibilities- Build and maintain UI components- Collaborate with designers and backend developers- Take part in code reviews| İlandaki ifade | Ne demek | Senin için |
|---|---|---|
| 0–2 years of experience | 0 ile 2 yıl arası deneyim | 0 da dahil: yeni başlayanı kabul ediyor |
| Solid understanding of | sağlam bir kavrayış | gereklilik; projelerinle kanıtla |
| Familiarity with | tanışıklık, kullanmış olmak | uzmanlık istemiyor; fetch ile API kullandın |
| Good command of written English | yazılı İngilizcesi iyi | yazışmalar ve belgeler İngilizce olacak |
| Nice to have | olsa iyi olur | artılar: Tailwind (Ders 45), erişilebilirlik, portföy |
| Responsibilities | sorumluluklar | yapacağın işler; şart listesi değil |
| Take part in code reviews | kod incelemelerine katılmak | Ders 52'deki pull request incelemesi |
İlanın ilk satırlarına da bak: Remote uzaktan, hybrid haftanın bazı günleri ofiste, on-site her gün ofiste demek. Şehir ve çalışma biçimi sana uymuyorsa geri kalanı okumana gerek yok.
Dikkat edilecek işaretler
Her ilan iyi niyetli değildir ve her iyi niyetli ilan sana uygun değildir. Şunları gördüğünde dur:
- Senden para isteniyor. Başvuru, "eğitim", "sertifika" ya da ekipman için ödeme isteyen bir işveren, işveren değildir. Başvurma.
- Kişisel bilgiler çok erken isteniyor. Görüşmeden önce kimlik fotokopisi, banka bilgisi ya da şifre istenmez.
- "Deneme" adı altında ücretsiz iş. Kısa bir ev ödevi olağandır (Ders 55); şirketin gerçek bir müşteri işini haftalarca ücretsiz yaptırmak değildir.
- Junior başlığı, senior beklentisi. "Junior" yazıp 5 yıl deneyim, on teknoloji ve ekip yönetimi isteyen ilan ya ne istediğini bilmiyordur ya da düşük ücretle deneyimli birini arıyordur. Başvurmak serbest, beklentini buna göre ayarla.
Maaş için burada rakam vermiyoruz: şehir, şirket, çalışma biçimi ve yıla göre çok değişir ve rakamlar hızla eskir. Bir rakama bakacaksan kaynağının ve tarihinin belli olduğu güncel bir maaş araştırmasına bak.
Başvuru takibi
İş aramak bir sayı oyunudur: birçok yere başvurursun, bazılarından dönüş gelir, birkaçında görüşmeye çağrılırsın. On beşinci başvuruda hangi şirkete ne zaman yazdığını, kiminle konuştuğunu ve neyi beklediğini aklında tutamazsın.
Bir tablo programında (Excel, Google E-Tablolar) şu sütunlarla bir sayfa aç:
| Sütun | Ne yazılır | Örnek |
|---|---|---|
| Tarih | Başvuru günü | 2026-10-05 |
| Şirket | Şirketin adı | Şirket C |
| Pozisyon | İlandaki unvan | Stajyer Yazılımcı |
| Bağlantı | İlanın adresi (ilanlar kalkar; metnini de bir yere kopyala) | … |
| Kanal | Nereden başvurdun | LinkedIn, şirketin sitesi, tanıdık önerisi |
| Durum | gönderildi, ön görüşme, teknik görüşme, teklif, ret | gönderildi |
| Sonraki adım | Ne yapacaksın, ne zaman | 12 Ekim'de dönüş yazısı |
| Notlar | Kiminle konuştun, ne sordular, hangi CV'yi gönderdin | İnsan kaynaklarından biri aradı |
Tarihleri 2026-10-05 biçiminde yaz; tablo programı da, birazdan yazacağın betik de bu biçimi doğru sıralar.
Küçük bir takip betiği
Yazılımcı olmanın bir avantajı: tabloya bakıp "kime dönüş yazmam gerekiyor?" diye düşünmek yerine bunu bir programa sorabilirsin. C:\kod\ogren klasöründe takip.js adında bir dosya aç. Veriyi şimdilik dosyanın içinde bir dizi olarak tut:
const bugun = new Date("2026-10-12")const birGun = 24 * 60 * 60 * 1000 const basvurular = [ { sirket: "Şirket A", pozisyon: "Junior Full-Stack Geliştirici", tarih: "2026-09-28", durum: "gönderildi" }, { sirket: "Şirket B", pozisyon: "Junior Frontend Geliştirici", tarih: "2026-10-02", durum: "ön görüşme" }, { sirket: "Şirket C", pozisyon: "Stajyer Yazılımcı", tarih: "2026-10-05", durum: "gönderildi" }, { sirket: "Şirket D", pozisyon: "Junior Backend Geliştirici", tarih: "2026-10-09", durum: "gönderildi" }, { sirket: "Şirket E", pozisyon: "Yazılım Geliştirici", tarih: "2026-09-20", durum: "ret" }] function gecenGun(tarih) { return Math.floor((bugun - new Date(tarih)) / birGun)} const donulecekler = basvurular.filter((b) => b.durum === "gönderildi" && gecenGun(b.tarih) >= 7) console.log(`Toplam başvuru: ${basvurular.length}`)console.log("Dönüş yapılacaklar:")for (const b of donulecekler) { console.log(`- ${b.sirket} (${b.pozisyon}): ${gecenGun(b.tarih)} gün oldu`)}Toplam başvuru: 5Dönüş yapılacaklar:- Şirket A (Junior Full-Stack Geliştirici): 14 gün oldu- Şirket C (Stajyer Yazılımcı): 7 gün olduYeni olan tek şey tarih hesabı. Ders 17'de new Date() ile şu anki zamanı almıştın; parantezin içine "2026-09-28" gibi bir metin yazınca new Date o tarihi tutan bir tarih objesi üretir. İki tarih objesini birbirinden çıkarınca aradaki fark milisaniye olarak gelir; Ders 28'de Date.now() farkıyla süre ölçerken gördüğün gibi. Bir günün milisaniyesine (birGun) bölüp Math.floor ile aşağı yuvarlayınca geçen gün sayısı çıkar.
bugun'ü sabit bir tarih yaptık ki çıktı her gün aynı olsun ve sınırı deneyebilelim. Şirket C'nin üzerinden tam 7 gün geçmiş ve listede: koşul >= 7. > 7 yazsaydın 7. günü kaçırırdın. Şirket D 3 gündür bekliyor, listede değil; Şirket B'nin durumu "gönderildi" değil, o da listede yok. Gerçek kullanımda ilk satırı const bugun = new Date() yap: parantez boşsa şu anı verir.
Yedi gün bir kanun değil, kendine koyduğun bir kural. Bir süre ses çıkmayınca kısa ve kibar bir dönüş yazısı göndermek olağandır: "Geçen hafta Junior Full-Stack Geliştirici ilanınıza başvurdum; süreçle ilgili bir gelişme var mı diye sormak istedim." Bir kez yaz, cevap gelmezse ısrar etme ve tabloya not düş.
Invalid DateNe zaman çıkar? Tarihi alışkın olduğun gibi 28.09.2026 diye yazınca. JavaScript bu biçimi tanımaz; hata da vermez. Daha kötüsü, bazen yanlış tanır:
const bugun = new Date("2026-10-12")const birGun = 24 * 60 * 60 * 1000const tarihler = ["2026-09-28", "28.09.2026", "05.10.2026"] for (const tarih of tarihler) { const okunan = new Date(tarih) const gun = Math.floor((bugun - okunan) / birGun) console.log(tarih, "->", okunan.toLocaleDateString("tr-TR"), "->", gun, "gün")}2026-09-28 -> 28.09.2026 -> 14 gün28.09.2026 -> Invalid Date -> NaN gün05.10.2026 -> 10.05.2026 -> 155 gün28.09.2026 geçersiz bir tarih (Invalid Date) oldu ve gün farkı NaN çıktı (Ders 9). NaN >= 7 yanlış olduğu için o başvuru takip listesinden sessizce düşer. 05.10.2026 ise ay önde sanılıp 10 Mayıs olarak okundu: 5 Ekim'deki başvuru 155 günlük görünür.
Nasıl düzelir? Tarihleri her yerde yıl-ay-gün biçiminde yaz: 2026-10-05. Dışarıdan gelen bir tarihi denetlemek için tarih objesinin getTime() metodunu kullan: tarihin milisaniye değerini verir, geçersiz tarihte ise NaN. Yani Number.isNaN(okunan.getTime()) geçersiz tarihte true olur.
Ön yazı
Bazı başvuru formları bir ön yazı ister, bazılarında "eklemek istediğin bir not" kutusu vardır, e-postayla başvururken ise e-postanın kendisi ön yazıdır. Uzun olması gerekmez; işi, CV'ni neden okumaları gerektiğini bu ilana özel olarak söylemektir.
Üç paragraf yeter, toplamda 120–200 sözcük:
- Neden bu ilan? İlanı nerede gördüğün ve ilandaki hangi şeyin sana uyduğu. İlanın kendi sözcüklerini kullan.
- Kanıt. İlandaki iki gerekliliği iki projenle eşleştir; bağlantılarıyla.
- Dürüst bir eksik ve kapanış. Kısmen karşıladığın bir şeyi saklamadan söyle, ne yaptığını ekle; sonra görüşmeye hazır olduğunu yaz.
Örnek ilan A için bir örnek:
Konu: Junior Full-Stack Geliştirici başvurusu – Deniz Yılmaz Merhaba, Şirket A'nın Junior Full-Stack Geliştirici ilanını LinkedIn'de gördüm. İlanda React, Node.js ve PostgreSQL ile uçtan uca çalışacak birini aradığınızı yazmışsınız; son projelerimi tam olarak bu yığınla yazıp yayına aldım. En yakın örnek Maç Notları: Next.js ve TypeScript ile yazdığım, Discord ile girişli, herkesin yalnız kendi verisini gördüğü bir uygulama (canlı: ..., kod: github.com/denizyilmaz/mac-notlari). Takım API'sinde Express ve PostgreSQL ile 10 uç noktalı bir REST API yazdım; sayfalama ve transaction gerektiren işlemleri orada öğrendim. Kodumu dallar ve pull request'lerle yönetiyor, her push'ta testleri GitHub Actions ile çalıştırıyorum. İngilizce teknik belgeleri okuyorum ama konuşma pratiğim az; bunun için her gün İngilizce belge okuyup README'lerimi İngilizce yazıyorum. Uygun olduğunuz bir zamanda projelerimi anlatmaktan memnuniyet duyarım. Deniz Yılmazgithub.com/denizyilmaz · deniz@example.comÖn yazıda maaş konusunu açma; sorulursa görüşmede konuşulur. "Çok çalışkanım, öğrenmeye çok hevesliyim" gibi herkesin yazabileceği cümleleri de at: yerine bunu gösteren bir şey yaz.
Ne zaman çıkar? Bir önceki başvurunun ön yazısını kopyalayıp yeni ilana uyarlarken. Şirket B'ye giden mektupta "Şirket A'nın ilanını gördüm" yazar ya da ilanda hiç geçmeyen bir teknolojiden bahsedersin. Okuyan kişi bunu ilk satırda fark eder ve başvurunun geri kalanını özensiz sayar.
Nasıl düzelir? Kopyaladığın şablonda değişecek yerleri [ŞİRKET], [POZİSYON], [İLANDAKİ ŞART] gibi büyük harfli yer tutucularla bırak. Göndermeden önce metinde Ctrl+F ile [ ara: tek bir yer tutucu kalmamalı. Sonra şirket adını bir kez daha ilanla karşılaştır ve metni sesli oku.
Teknik İngilizce: sık sözcükler
İlanlar, belgeler, hata mesajları ve iş yerindeki araçlar İngilizce sözcüklerle dolu. Aşağıdakiler ilanlarda ve işin ilk haftalarında en sık göreceklerin. Okunuşları Türkçe harflerle yazıldı; tam karşılık değil, kulağına yakın bir tarif.
| Sözcük | Okunuşu | Anlamı | Nerede |
|---|---|---|---|
| requirement | rikuayırmınt | gereklilik, aranan şart | ilan |
| nice to have | nays tu hev | olsa iyi olur (artı) | ilan |
| responsibilities | rispansıbılıtiz | sorumluluklar | ilan |
| experience | ikspiriyıns | deneyim | ilan, CV |
| familiarity | fımiliyeriti | tanışıklık, kullanmış olmak | ilan |
| proficiency | prıfişınsi | yetkinlik | ilan, CV |
| hands-on | hendz on | uygulamalı, elle yapılmış | ilan |
| entry-level | entri levıl | giriş seviyesi | ilan |
| internship | intörnşip | staj | ilan |
| degree | dıgri | üniversite diploması | ilan |
| full-time / part-time | ful taym / part taym | tam / yarı zamanlı | ilan |
| remote / hybrid / on-site | rimout / haybrid / on sayt | uzaktan / karma / ofiste | ilan |
| salary | seleri | maaş | ilan, görüşme |
| benefits | benıfits | yan haklar | ilan |
| stack | stek | kullanılan teknolojilerin bütünü | ilan, iş |
| framework | freymvörk | çatı (Next.js, Express gibi) | ilan, iş |
| maintain | meynteyn | bakımını yapmak, sürdürmek | ilan |
| feature | fiiçır | özellik | iş |
| bug / fix | bag / fiks | hata / düzeltme | iş |
| issue | işu | kayda geçmiş iş ya da sorun | GitHub, iş |
| code review | koud rivyu | kod incelemesi | iş |
| merge | mörc | birleştirmek | Git, iş |
| deadline | dedlayn | son teslim tarihi | iş |
| stand-up | stend ap | kısa günlük ekip toplantısı | iş |
| onboarding | onbording | işe alışma süreci | iş |
| cover letter | kavır letır | ön yazı | başvuru |
| résumé / CV | rezume / si vi | özgeçmiş | başvuru |
Sözcük listesi ezberlemekten daha etkili olanı, bu sözcükleri her gün görmek: hata mesajlarını çevirmeden önce bir kez İngilizce oku, belgeyi önce İngilizcesinden aç, bir projenin README'sini İngilizce yaz. İlanlarda tekrar eden birkaç kalıp da var: we are looking for (arıyoruz), you will (yapacakların), is a plus (artıdır), must have (şart).
Görevler
Bu dersin görevleri kod değil, gerçek başvuru dosyanın parçaları. Her birinin sonunda elinde kullanılabilir bir şey olacak. Son görev yine kod: takip betiğini geliştireceksin.
Profil README'ni yayınla
Kendi profil README'ni yaz ve yayınla. Şunları içersin: tek cümlelik tanıtım (ne yapıyorsun, hangi yığınla), "şu an" ve "aradığım" satırları, en az iki projenin bağlantısı, bir iletişim yolu. Bir ekranı geçmesin.
Denetim: profil sayfanı gizli pencerede aç. README en üstte görünüyor mu, bütün bağlantılar çalışıyor mu?
İpucu 1
Depo adı kullanıcı adınla birebir aynı ve depo herkese açık olmalı. Kullanıcı adını sağ üstteki profil menüsünden ya da adres çubuğundan kopyala; elle yazma.
İpucu 2
En kolay yol: depoyu Add README açık olarak oluştur ve Edit README ile tarayıcıda düzenle. VS Code'da yazacaksan git init değil git clone kullan.
Çözümü göster
Herkesin profil README'si farklıdır; bu derste VS Code penceresinde gördüğün örnek bir ölçü. Kendi README'ni şu listeyle denetle:
- Depo
kullaniciadin/kullaniciadin, herkese açık,README.mdana klasörde. - İlk satır bir başlık; altındaki cümlede hangi işi aradığın ve yığının var.
- Her bağlantıya gizli pencerede tıkladın: hepsi açılıyor, hiçbiri gizli bir depoya gitmiyor (gizli bir depoya giden bağlantı ziyaretçiye 404 gösterir).
- Yazım hatası yok; Türkçe ve İngilizce karışık değil.
Sınır denemesi: depoyu Settings sayfasından geçici olarak gizli yap ve profilini yenile; README kaybolur. Yeniden herkese açık yap; geri gelir. Böylece görünürlük şartını kendin görmüş olursun.
Altı depoyu sabitle ve vitrinlerini doldur
Profilinde altı depo sabitle. Her biri için About bölümünde tek cümlelik bir açıklama, varsa canlı bağlantı (Website) ve 3–6 konu etiketi (Topics) yaz. Sıralamayı iş ilanlarına en yakın projeden başlat.
İpucu 1
Sabitleme: profil sayfası → Customize your pins. Açıklama ve etiketler: deponun ana sayfasında About'un yanındaki dişli simgesi.
İpucu 2
Etiketlerde yalnız küçük harf, rakam ve tire kullanılabilir: nextjs, typescript, postgresql, rest-api. Açıklamaya ders numarası değil, projenin ne yaptığını yaz.
Çözümü göster
Bir örnek (depo adları ve açıklamalar temsilî):
| Sıra | Depo | Açıklama | Konular |
|---|---|---|---|
| 1 | mac-notlari | Discord ile girişli, herkesin yalnız kendi maç notlarını gördüğü ve notlarına soru sorabildiği tam yığın uygulama | nextjs, typescript, postgresql, rag |
| 2 | not-asistani | Notlardan kaynak göstererek cevaplayan asistan; aramanın isabetini bir soru kümesiyle ölçer | rag, pgvector, llm, typescript |
| 3 | takim-api | Takım ve şampiyon yöneten REST API (Express, PostgreSQL) | nodejs, express, postgresql, rest-api |
| 4 | ansiklopedi | Şampiyonları arayan, role göre süzen ve favorileyen web uygulaması | javascript, html, css, github-pages |
| 5 | kendi projen | Kendi fikrin; ne çözdüğünü bir cümleyle yaz | yığınına göre |
| 6 | metin-rpg | Terminalde oynanan, ilerlemeyi dosyaya kaydeden rol yapma oyunu | nodejs, javascript, cli-game |
Sınır denemeleri: yedinci bir depoyu seçmeye çalış; GitHub altıdan fazlasına izin vermez, birini bırakman gerekir. Kurala uymayan bir etiket yazmayı da dene (Next.js: büyük harf ve nokta var) ve GitHub'ın ne yaptığına bak; sonra etiketi kurala uygun nextjs biçiminde kaydet.
Bir README'yi şablona göre yeniden yaz ve prova et
Şampiyon ansiklopedisinin (Ders 25) README'sini bu dersteki şablona göre yeniden yaz. Sonra yabancı gözüyle prova et: depoyu C:\kod\prova-ansiklopedi klasörüne klonla ve yalnız README'de yazanları yaparak projeyi çalıştır. Bir adımda takılırsan kodu değil, README'yi düzelt; provayı baştan yap.
İpucu 1
Ansiklopedinin elinde zaten canlı bağlantı, ekran görüntüsü, özellikler ve "Neler öğrendim?" var. Eksikler: tek cümlelik "ne işe yarar", teknoloji seçiminin nedeni, zorluklar, sırada ne var ve kaynağın dürüst bir anlatımı.
İpucu 2
Statik bir site olduğu için npm install adımı yok; çalıştırma adımı npx serve ya da Live Server. Provada README'deki her komutu kopyalamadan, elle yaz: yazım hatası yapacağın yer, başkasının da takılacağı yerdir.
Çözümü göster
# Şampiyon Ansiklopedisi League of Legends şampiyonlarını tek sayfada arayıp role göre süzmeni ve favorilerini saklamanı sağlayan bir web uygulaması. **Canlı:** https://KULLANICI.github.io/ansiklopedi/  ## Özellikler - Ada ya da unvana göre ara (Türkçe I ve ı harfleri doğru eşleşir)- Role göre süz, yalnız favorileri göster- Bir şampiyonun ayrıntısını kendi adresinde aç: `?id=Ahri`- Telefonda ve yalnız klavyeyle kullan ## Teknolojiler HTML, CSS (grid, flexbox) ve tarayıcıda ES modülleri; kütüphane yok. Veri Riot Games'in herkese açık Data Dragon servisinden gelir. Kütüphane kullanmadım, çünkü bu projede DOM'u kendim yönetmeyi öğrenmek istedim. ## Bilgisayarında çalıştır 1. `git clone https://github.com/KULLANICI/ansiklopedi.git` ve `cd ansiklopedi`2. `npx serve` (ya da VS Code'da Live Server)3. Terminalin yazdığı adresi tarayıcıda aç `index.html`'e çift tıklayarak açma: ES modülleri `file://` adresinde çalışmaz. ## Zorluklar ve öğrendiklerim - Aramada `irelia` yazınca Irelia bulunmuyordu; İngilizce kurala geçince de `İmparator` bozuldu. İki tarafı da `toLocaleLowerCase("tr")` ile küçültüp `ı`'yı `i`'ye çevirerek çözdüm.- Favoriler sayfa yenilenince kayboluyordu; `localStorage`'a JSON olarak yazıp açılışta okudum.- Bilgisayarımda çalışan bir dosya yolu GitHub Pages'te 404 verdi: büyük-küçük harf farkı. O günden beri dosya adlarını küçük harfle yazıyorum. ## Sırada ne var? - [ ] Şampiyonları zorluk derecesine göre sıralamak- [ ] Arama ve filtre fonksiyonları için birim testleri- Veriler her açılışta Data Dragon'dan gelir; internet bağlantısı yoksa liste açılmaz. --- Bu projeyi [Yazılım Öğrenme](https://xdd.baby/ders) kursunun 3. blok projesi olarak yazdım; zorluk sıralaması ve testler benim eklemelerim olacak. Şampiyon Ansiklopedisi was created under Riot Games' "Legal Jibber Jabber" policy using assets owned by Riot Games. Riot Games does not endorse or sponsor this project."Zorluklar" bölümündeki maddeler örnek; sen kendi yaşadığın sorunları yaz. Uydurma bir zorluk mülakatta ilk soruda dağılır.
Prova denetimi:
git clonesonrasınpx serveçalıştı ve sayfa açıldı: kartlar geliyor, ekran görüntüsü README'de görünüyor.- Canlı bağlantıyı gizli pencerede açtın; giriş yapmamış biri de görebiliyor.
- Sınır denemesi:
index.html'e çift tıklayarak açmayı dene; README'nin uyardığı gibi kartlar gelmemeli. README bu uyarıyı içermeseydi ziyaretçi projeyi bozuk sanardı.
Tek sayfalık CV'ni ve LinkedIn profilini hazırla
Bu dersteki örnek CV'nin düzeniyle kendi CV'ni yaz: iletişim, özet, üç proje (her birinde 2–3 madde), teknik beceriler, eğitim, varsa deneyim, diller. PDF olarak kaydet. Sonra İngilizce ilanlar için aynı CV'nin İngilizcesini hazırla. En son LinkedIn'de başlığı, Hakkında'yı, Öne çıkanlar'ı ve özel adresini CV'ndeki bilgilerle doldur; özel adresi CV'nin iletişim satırına yaz.
Denetimler: PDF tam olarak bir sayfa; Ctrl+A ile kopyalayıp Not Defteri'ne yapıştırınca yazı doğru sırayla geliyor; PDF'teki her bağlantıya tıklayınca doğru sayfa açılıyor; dosya adı Ad-Soyad-CV.pdf. LinkedIn profilini gizli pencerede aç: başlığın ve CV'ndeki projeler görünüyor, CV'deki LinkedIn adresi bu sayfaya gidiyor.
İpucu 1
Proje maddelerini "ne yaptın + nasıl + sonucu" kalıbıyla, bir fiille başlayarak yaz. Kullanmadığın hiçbir teknolojiyi beceriler listesine koyma.
İpucu 2
İkinci sayfaya bir satır taştıysa yazıyı küçültme; en zayıf maddeyi sil. İngilizce sürümde bölüm başlıkları için bu dersteki tabloyu kullan.
Çözümü göster
Türkçe CV'nin ölçüsü, dersteki örnek sayfa. Aynı hayalî kişinin İngilizce CV'si şöyle olabilir:
DENIZ YILMAZJunior Full-Stack DeveloperIstanbul, Türkiye · deniz@example.com · github.com/denizyilmaz · linkedin.com/in/deniz-yilmaz-ornek SUMMARYJunior full-stack developer building end-to-end web apps with TypeScript, React,Next.js, Node.js and PostgreSQL. Built seven projects and deployed three; thelatest connects a language model to my own data and answers with sources (RAG).Comfortable with branches, pull requests and automated tests. PROJECTSMatch Notes · Next.js, TypeScript, PostgreSQL · live · code- Built Discord sign-in; each user sees only their own notes, enforced on the server- Implemented create, edit and delete with Server Actions; validated input with zod- Added an "Ask your notes" page that answers with sources; deployed on Vercel Notes Assistant · Node.js, TypeScript, PostgreSQL (pgvector) · code- Built an assistant that finds relevant note chunks with full-text and vector search, then answers with numbered sources (RAG)- Wrote a script that measures search accuracy on a set of known questions Team API · Express, PostgreSQL, Render · live · code- Built a REST API with 10 endpoints: parameterized queries, pagination, search- Mapped database errors to meaningful HTTP codes (400, 409) TECHNICAL SKILLSLanguages: JavaScript, TypeScript, SQLFrontend: React, Next.js, HTML, CSS, Tailwind CSSBackend: Node.js, Express, PostgreSQLTools: Git, GitHub Actions, Vercel, RenderAI: LLM APIs, tool use, RAG EDUCATIONYazılım Öğrenme course (xdd.baby/ders) · 56 lessons, 7 projects · 2026[School] · [Department] · [Graduation year] LANGUAGESTurkish (native) · English (intermediate; reads technical documentation daily)Kurum ve kurs adları gibi özel adları çevirme. Maddelerde Türkçedeki "yaptım" yerine İngilizcede özne yazmadan geçmiş zamanla başlamak yaygındır: Built, Implemented, Added. Bir CV'nin içinde hep aynı kalıbı kullan. Dil düzeyini abartma; görüşmede İngilizce bir soru gelebilir.
LinkedIn için aynı kişinin başlığı ve Hakkında'sının ilk paragrafı şöyle olabilir:
Junior Full-Stack Developer | TypeScript · React · Next.js · Node.js · PostgreSQL TypeScript, React, Next.js ve PostgreSQL ile uçtan uca web uygulamalarıyazıyorum. En sevdiğim projem Maç Notları: Discord ile girişli, herkesin yalnızkendi notlarını gördüğü ve notlarına soru sorabildiği bir uygulama.Sınır denemesi: CV'ne bir madde daha ekle ve PDF'e çevir. Sayfa ikiye çıkıyorsa o madde girmez; en zayıf maddeyle yer değiştir. LinkedIn özel adresinde de sınır var: kurala göre boşluk ve simge olmamalı, en az 3 karakter olmalı. deniz yilmaz ya da dy değil, deniz-yilmaz gibi harf ve tireyle yaz; adres alınmışsa sonuna bir rakam ekle.
İlanı oku, karar ver, ön yazıyı yaz
Aşağıdaki örnek ilanı oku. Her satırı gereklilik ya da artı diye ayır, yanına hangi projenle kanıtlayabileceğini ve durumunu (var, kısmen, yok) yaz. Sonra başvurup başvurmayacağına karar ver ve başvuracaksan 120–200 sözcüklük bir ön yazı yaz.
Junior Backend Geliştirici · Şirket C · Ankara · ofiste Aranan nitelikler- Node.js ile en az 1 yıl profesyonel deneyim- PostgreSQL ya da başka bir ilişkisel veritabanı- REST API tasarımı ve HTTP durum kodları- Git ve kod incelemesi süreçleri- Linux komut satırına aşinalık Tercih sebebi- TypeScript- Docker- Bir bulut sağlayıcısında (AWS, Azure ya da GCP) deneyim- Birim testi yazmış olmakİpucu 1
"Aranan nitelikler" gereklilik, "Tercih sebebi" artı. En zor satır ilk satır: "profesyonel" deneyimin yok ama Node.js ile yazdığın projeler var.
İpucu 2
Ön yazının üç paragrafı: neden bu ilan, iki gerekliliği iki projeyle eşleştiren kanıt, dürüst bir eksik ve kapanış. Yıl şartını görmezden gelme; projelerinle nasıl karşıladığını söyle.
Çözümü göster
| Satır | Tür | Kanıt | Durum |
|---|---|---|---|
| Node.js ile 1 yıl profesyonel deneyim | gereklilik | Profesyonel yok; takım API'si, metin RPG ve not asistanı Node.js ile | kısmen |
| PostgreSQL | gereklilik | Takım API'si (Ders 38) | var |
| REST API ve durum kodları | gereklilik | Takım API'sinin README'sindeki uç nokta ve hata tabloları | var |
| Git ve kod incelemesi | gereklilik | Dallar ve pull request'ler (Ders 52) | var |
| Linux komut satırı | gereklilik | PowerShell kullandın; Linux'ta değil | kısmen |
| TypeScript | artı | Maç notları, not asistanı | var |
| Docker | artı | – | yok |
| Bulut sağlayıcı | artı | Render, Vercel, Neon kullandın; adı geçen üçünü değil | kısmen |
| Birim testi | artı | node:test (Ders 53) | var |
Karar: başvur. Beş gerekliliğin üçü tam, ikisi kısmen. Yıl şartı ilanın en sert satırı: 0 yıl, 1 yıldan azdır ve bunu gizlemek yerine ön yazıda projelerle karşılarsın. Başvuru seni hiçbir şeyden etmez; en kötü ihtimalle cevap gelmez. Ama Linux eksiğini başvurudan önce birkaç günde biraz kapatabilirsin: dosyalar arasında gezinmek, dosya okumak ve aramak için temel komutları (ls, cd, cat, grep) öğren.
Sınır durumu: ilk satır "en az 3 yıl profesyonel deneyim" olsaydı ve listeye "yeni geliştiricilere mentorluk" eklenseydi, altı gerekliliğin yalnız üçünü tam karşılardın: tam yarısı, kuralın sınırı. Böyle bir durumda eksiklerin türüne bak. Linux birkaç haftada kapanır; üç yıl deneyim ve mentorluk kapanmaz. Bu ilan aslında junior ilanı değil; zamanını sıradaki ilana ayır.
Konu: Junior Backend Geliştirici başvurusu – Deniz Yılmaz Merhaba, Şirket C'nin Junior Backend Geliştirici ilanını gördüm. İlanda Node.js ve PostgreSQL ile REST API geliştirecek birini aradığınızı yazmışsınız; portföyümün merkezinde tam olarak bu tür bir proje var. Takım API'si, Express ve PostgreSQL ile yazdığım 10 uç noktalı bir REST API: parametreli sorgular, sayfalama, transaction ve veritabanı hatalarını 400 ve 409 gibi durum kodlarına çeviren bir hata katmanı içeriyor (kod: github.com/denizyilmaz/takim-api). Son projelerimi TypeScript ile yazıyor, `node:test` ile birim testleri ekliyor ve değişikliklerimi pull request'lerle yönetiyorum. Henüz profesyonel bir işte çalışmadım; Node.js deneyimim yaklaşık bir yıllık düzenli proje çalışmasından geliyor. Linux komut satırını şu an öğreniyorum. Projelerimi kod üzerinden anlatabileceğim bir görüşme için uygun olduğunuz zamanı beklerim. Deniz Yılmazgithub.com/denizyilmaz · deniz@example.comÖn yazıdaki süre ("yaklaşık bir yıl") senin gerçek sürene göre değişir; abartma.
Takip betiğine özet ekle
takip.js'e ozet(liste) adında bir fonksiyon ekle. Fonksiyon bir metin döndürsün; içinde her durumdan kaç başvuru olduğu ve 14 gün ya da daha uzun süredir "gönderildi" durumunda bekleyen şirketlerin adları olsun (bunlardan artık cevap beklemiyorsun). Hiç böyle şirket yoksa yok yazsın; liste boşsa yalnız Henüz başvuru yok. döndürsün. Dersteki beş başvuruyla ve boş bir diziyle çağırınca çıktı şu olmalı:
gönderildi: 3ön görüşme: 1ret: 1Yanıt gelmedi sayılanlar: Şirket AHenüz başvuru yok.İpucu 1
İpucu 2
Bir anahtar objede henüz yoksa değeri undefined olur; sayac[b.durum] ?? 0 ile sıfırdan başlat. Bekleyenleri bulmak için filter ile seç, map ile yalnız şirket adını al.
İpucu 3
Satırları bir dizide topla ve en sonda satirlar.join("\n") ile tek metne çevir. Boş liste denetimini fonksiyonun en başına koy ve erken dön (Ders 6).
Çözümü göster
const bugun = new Date("2026-10-12")const birGun = 24 * 60 * 60 * 1000 const basvurular = [ { sirket: "Şirket A", pozisyon: "Junior Full-Stack Geliştirici", tarih: "2026-09-28", durum: "gönderildi" }, { sirket: "Şirket B", pozisyon: "Junior Frontend Geliştirici", tarih: "2026-10-02", durum: "ön görüşme" }, { sirket: "Şirket C", pozisyon: "Stajyer Yazılımcı", tarih: "2026-10-05", durum: "gönderildi" }, { sirket: "Şirket D", pozisyon: "Junior Backend Geliştirici", tarih: "2026-10-09", durum: "gönderildi" }, { sirket: "Şirket E", pozisyon: "Yazılım Geliştirici", tarih: "2026-09-20", durum: "ret" }] function gecenGun(tarih) { return Math.floor((bugun - new Date(tarih)) / birGun)} function ozet(liste) { if (liste.length === 0) { return "Henüz başvuru yok." } const sayilar = liste.reduce((sayac, b) => { sayac[b.durum] = (sayac[b.durum] ?? 0) + 1 return sayac }, {}) const satirlar = Object.entries(sayilar).map(([durum, sayi]) => `${durum}: ${sayi}`) const sessizler = liste .filter((b) => b.durum === "gönderildi" && gecenGun(b.tarih) >= 14) .map((b) => b.sirket) const sessizMetin = sessizler.length > 0 ? sessizler.join(", ") : "yok" satirlar.push(`Yanıt gelmedi sayılanlar: ${sessizMetin}`) return satirlar.join("\n")} console.log(ozet(basvurular))console.log(ozet([]))gönderildi: 3ön görüşme: 1ret: 1Yanıt gelmedi sayılanlar: Şirket AHenüz başvuru yok.Sınır denemeleri:
- Şirket A'ya tam 14 gün olmuş ve listede: koşul
>= 14. İlk satırınew Date("2026-10-11")yapıp çalıştırırsan Şirket A'nın günü 13'e düşer ve son satırYanıt gelmedi sayılanlar: yokolur; durum sayıları değişmez. ozet([])erken dönüşe girdi vereducehiç çalışmadı. Başlangıç değerini ({}) unutsaydın,reduceilk başvuru objesini sayaç olarak kullanırdı: çıktının başınasirket: Şirket A,tarih: 2026-09-28gibi satırlar karışır ve "gönderildi" 3 yerine 2 çıkar, çünkü ilk başvuru hiç sayılmaz. Denersen bunu kendin görürsün.- Durumların sırası, başvuruların dizideki ilk görünme sırasıdır: "gönderildi" ilk başvuruda geçtiği için en üstte.
Kendini sına
Soru 1
Deniz profil README'sini profil adında herkese açık bir depoya koydu. Dosya ana klasörde ve dolu ama profilinde görünmüyor. Neden?
Cevabı göster
Depo adı kullanıcı adıyla aynı değil. Profilde görünmesi için depo denizyilmaz/denizyilmaz olmalı. Öteki üç şart (herkese açık, README.md ana klasörde, boş değil) zaten sağlanmış. Depoyu Settings sayfasından denizyilmaz olarak yeniden adlandırması yeter.
Soru 2
Bu İngilizce ilan parçasında hangi satırlar gereklilik, hangileri artı?
Must have: experience with GitRequirements: React, TypeScriptBonus points: GraphQLPreferred: a degree in Computer ScienceFamiliarity with Docker is a plusCevabı göster
Gereklilik: Must have (Git) ve Requirements (React, TypeScript). Artı: Bonus points (GraphQL), Preferred (bilgisayar bilimi diploması) ve is a plus (Docker). Üç artının hiçbiri olmadan da başvurabilirsin; ayrıca familiarity yalnız tanışıklık ister.
Soru 3
CV'nin beceriler bölümünde "JavaScript ★★★★☆, React ★★★☆☆" yazıyor. Bunun iki sorunu ne?
Cevabı göster
Birincisi, yıldızlar yazı değildir: aday takip sistemi ve ekran okuyucu onları okuyamaz ya da anlamsız işaretlere çevirir. İkincisi, ölçüsü yoktur ve seni savunamayacağın bir iddiaya bağlar: "dört yıldız" neye göre? Mülakatta "React'te neden üç yıldız?" sorusuna iyi bir cevap yoktur. Becerileri düz yazı olarak listele, düzeyini proje maddeleri göstersin.
Soru 4
takip.js'in ilk satırı const bugun = new Date("2026-10-11") olsaydı program ne yazardı?
const donulecekler = basvurular.filter((b) => b.durum === "gönderildi" && gecenGun(b.tarih) >= 7)Cevabı göster
Toplam başvuru: 5Dönüş yapılacaklar:- Şirket A (Junior Full-Stack Geliştirici): 13 gün olduBir gün geri gidince Şirket A'nın günü 13'e, Şirket C'ninki 6'ya düşer. 6, 7'den küçük olduğu için Şirket C listeden çıkar. Toplam başvuru sayısı tarihten etkilenmez.
Soru 5
Bir işveren, Node.js projelerinden birini README'deki adımlarla kurmaya çalışıyor. README'de yalnız "npm install, sonra npm run dev" yazıyor; dev betiği node --watch --env-file=.env sunucu.js. .env.example dosyası depoda var ama README'de geçmiyor. İşveren ne görür, sen neyi değiştirmelisin?
Cevabı göster
npm run dev, .env dosyası olmadığı için node: .env: not found yazıp durur; işverenin gözünde proje çalışmıyor. Kod doğru, README eksik: kurulum adımlarına ".env.example'ı .env adıyla kopyala (Copy-Item .env.example .env) ve değerleri doldur" adımını ekle; DATABASE_URL gibi bir değerin nereden alınacağını da yaz. Sonra provayı temiz bir klonda tekrarla.
Soru 6
Ön yazının ortasında şu cümle var: "Çok çalışkan, öğrenmeye açık ve takım çalışmasına yatkın biriyim." Neden zayıf, yerine ne yazardın?
Cevabı göster
Herkes yazabilir ve okuyan doğrulayamaz; bu yüzden göz ucuyla geçilir. Yerine sıfatı gösteren bir kanıt yaz: "Takım API'sinde sayfalamayı eklerken bir hatayı testle yakaladım; bütün değişikliklerimi pull request açıp inceleyerek birleştiriyorum." Böyle bir cümle hem öğrenmeyi hem de ekip alışkanlığını, bağlantıyla kontrol edilebilecek şekilde anlatır.
Soru 7
Junior bir ilanda "0–2 years of experience" ve "Familiarity with Docker is a plus" yazıyor. Profesyonel deneyimin yok ve Docker'ı hiç kullanmadın. Başvurmalı mısın?
Cevabı göster
Evet, gerekliliklerin geri kalanını karşılıyorsan başvur. "0–2 years" sıfırı da kapsıyor, yani yeni başlayanı açıkça kabul ediyor. Docker satırı is a plus: artı, şart değil. Docker'ı bilmediğini CV'ne yazmazsın; ön yazıda dürüstçe "henüz kullanmadım" diyebilirsin.
Soru 8
Deniz'in LinkedIn başlığı "İş arıyorum, her fırsata açığım". İş aradığını göstermek için başlık doğru yer mi? Yerine ne yazmalı, iş aradığını nereden söylemeli?
Cevabı göster
Başlık, işe alım uzmanının aramada ve listede ilk gördüğü satır; "iş arıyorum" ne yaptığını ve hangi yığınla çalıştığını söylemez, "React" ya da "Node.js" diye arayan biri onu bulamaz. Başlığa ne olduğunu ve yığınını yazmalı: Junior Full-Stack Developer | TypeScript · React · Next.js · Node.js · PostgreSQL. İş aradığını Open to → Finding a new job ayarı söyler; All LinkedIn Members seçerse herkes görür ve fotoğrafına #OpenToWork çerçevesi eklenir, Recruiters only seçerse yalnız işe alım uzmanları görür.
Portföy kontrol listesi
Bu derste Git'e kaydedecek bir ders dosyan yok; asıl kayıtlar profil deposunda ve proje depolarında. Onun yerine, ilk başvurunu göndermeden önce bu listeyi baştan sona geç.
Bir sonraki ders kursun son dersi: mülakata hazırlanacaksın. Mülakatın aşamalarını, sık sorulan JavaScript, React ve SQL sorularını, canlı kodlamada sesli düşünmeyi ve bu derste vitrine koyduğun projeleri bir hikâye gibi anlatmayı çalışacaksın.