/* ── Blog Detail Styles ── */ .bd-layout { display: grid; grid-template-columns: 1fr 320px; gap: 32px; padding-top: 28px; } /* ── Article ── */ .bd-article { background: #fff; border-radius: 20px; border: 1px solid rgba(0,0,0,.04); box-shadow: 0 4px 24px rgba(0,0,0,.04); overflow: hidden; } .bd-article__img { width: 100%; max-height: 400px; object-fit: cover; } .bd-article__body { padding: 32px 36px; } .bd-article__meta { display: flex; align-items: center; gap: 12px; margin-bottom: 16px; } .bd-article__date { font-size: .78rem; font-weight: 600; color: #94a3b8; display: flex; align-items: center; gap: 5px; } .bd-article__date i { color: #027a94; } .bd-article__title { font-size: 1.75rem; font-weight: 800; color: #0a1628; line-height: 1.3; margin: 0 0 24px; letter-spacing: -0.5px; } .bd-article__content { font-size: 1rem; color: #334155; line-height: 1.85; } .bd-article__content p { margin: 0 0 18px; } .bd-article__content img { max-width: 100%; border-radius: 12px; margin: 12px 0; } .bd-article__content a { color: #027a94; font-weight: 600; } .bd-article__content h2, .bd-article__content h3 { color: #0a1628; margin: 28px 0 12px; } .bd-article__content code { background: #f1f5f9; padding: 2px 8px; border-radius: 6px; font-size: .9em; color: #027a94; } .bd-article__content pre { background: #0f172a; color: #e2e8f0; padding: 20px; border-radius: 14px; overflow-x: auto; font-size: .88rem; line-height: 1.7; } .bd-article__content pre code { background: transparent; color: inherit; padding: 0; } .bd-article__content blockquote { border-left: 4px solid #027a94; margin: 16px 0; padding: 12px 20px; background: rgba(2,122,148,.03); border-radius: 0 12px 12px 0; color: #475569; font-style: italic; } .bd-article__content ul, .bd-article__content ol { padding-left: 20px; margin: 0 0 18px; } .bd-article__content li { margin-bottom: 8px; } /* ── Divider ── */ .bd-divider { height: 1px; background: linear-gradient(90deg, transparent 0%, #e2e8f0 20%, #e2e8f0 80%, transparent 100%); margin: 32px 0; } /* ── Comments Section ── */ .bd-comments { padding: 0 36px 36px; } .bd-comments__title { font-size: 1.1rem; font-weight: 800; color: #0a1628; display: flex; align-items: center; gap: 8px; margin: 0 0 20px; } .bd-comments__title i { color: #027a94; } .bd-comment { display: flex; gap: 14px; padding: 16px; background: #f8fafc; border-radius: 14px; margin-bottom: 12px; border: 1px solid rgba(0,0,0,.03); } .bd-comment__avatar { width: 40px; height: 40px; border-radius: 50%; background: linear-gradient(135deg, #027a94, #01b0c1); display: flex; align-items: center; justify-content: center; color: #fff; font-weight: 700; font-size: .9rem; flex-shrink: 0; } .bd-comment__body { flex: 1; min-width: 0; } .bd-comment__header { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; } .bd-comment__name { font-weight: 700; color: #0a1628; text-decoration: none; font-size: .88rem; } .bd-comment__name:hover { color: #027a94; } .bd-comment__time { font-size: .75rem; color: #94a3b8; } .bd-comment__text { font-size: .88rem; color: #475569; line-height: 1.6; margin: 0; } .bd-comment__empty { text-align: center; padding: 20px; color: #94a3b8; font-size: .88rem; } /* ── Comment Form ── */ .bd-form { padding: 0 36px 36px; } .bd-form__title { font-size: 1.05rem; font-weight: 800; color: #0a1628; display: flex; align-items: center; gap: 8px; margin: 0 0 16px; } .bd-form__title i { color: #027a94; } .bd-form__textarea { width: 100%; border: 1px solid #e2e8f0; border-radius: 14px; padding: 14px 16px; font-size: .9rem; color: #334155; resize: vertical; min-height: 100px; transition: border-color .15s, box-shadow .15s; box-sizing: border-box; font-family: inherit; } .bd-form__textarea:focus { outline: none; border-color: #027a94; box-shadow: 0 0 0 3px rgba(2,122,148,.08); } .bd-form__submit { display: inline-flex; align-items: center; gap: 6px; margin-top: 12px; padding: 12px 28px; background: linear-gradient(135deg, #027a94, #01b0c1); color: #fff; border: none; border-radius: 12px; font-weight: 700; font-size: .9rem; cursor: pointer; transition: box-shadow .2s; } .bd-form__submit:hover { box-shadow: 0 6px 20px rgba(2,122,148,.3); } .bd-form__login { text-align: center; padding: 16px; color: #64748b; font-size: .88rem; } .bd-form__login a { color: #027a94; font-weight: 700; text-decoration: none; } .bd-form__login a:hover { text-decoration: underline; } /* ── Sidebar ── */ .bd-sidebar { position: sticky; top: 80px; } /* ── Responsive ── */ @media (max-width: 900px) { .bd-layout { grid-template-columns: 1fr; gap: 20px; } .bd-sidebar { position: static; } .bd-article__body { padding: 24px 20px; } .bd-article__title { font-size: 1.35rem; } .bd-comments { padding: 0 20px 24px; } .bd-form { padding: 0 20px 24px; } }
Kodu Yazmak Yetmez: Yazılımda Kalıcılığın Sırrı

Kodu Yazmak Yetmez: Yazılımda Kalıcılığın Sırrı

"Kod geçicidir, ama mimari kalır."

Geliştirici olarak işe başladığım ilk yıllarda odaklandığım tek şey vardı: çalışan kod yazmak. Hızlıydım, hevesliydim ve bir "feature" ticket'ını 2 saatten fazla elimde tutmak bile bana zaman kaybı gibi gelirdi. Ama zamanla fark ettim ki, yazdığım kodlar 6 ay sonra ya çöpe gidiyor ya da başka biri tarafından lanet okunarak refactor ediliyordu. Çünkü sadece "çalışan" kodlar yazıyordum, yaşayan kodlar değil.

Bugün 10. yılımı devirmiş bir yazılımcı olarak genç arkadaşlara hep aynı şeyi söylüyorum:
Kod yazmak yazılım geliştirmenin sadece küçük bir parçası. Asıl mesele doğru problemi çözmek, doğru çözümle ve bunu ekipçe sürdürülebilir hale getirmek.

1. Yazılım Geliştirme = Takım Oyunu

Kodun ne kadar "temiz" olduğu, sadece senin ne kadar zeki olduğunla değil, ekibindeki diğer insanların seni anlayıp sürdürebilmesiyle anlam kazanır.

Eğer bir gün koduna 6 ay sonra dönüp baktığında kendin bile anlamıyorsan, o kod başarısızdır. Çünkü yazılım sadece derleyiciye değil, insanlara da okunabilir olmalı.

2. Dokümantasyon: Gereksiz Değil, Gerekli Kötülük

Dokümantasyon yazmak çoğu geliştiriciye angarya gibi gelir, haklılar da. Ama şunu net söyleyebilirim:
Yıllar sonra dönüp baktığınızda, "Ben bu API'yi neden böyle yapmıştım?" sorusunun cevabını veren bir README dosyası, sizi saatlerce sürecek bir debugging'den kurtarır.

Yani, dökümantasyon yazmak zaman kaybı değil, gelecekteki sizle yapılan bir iş birliğidir.

3. Yeni Teknoloji Her Zaman Gerekli mi?

Evet, yeni çıkan her framework, her kütüphane heyecan verici. Ama şunu net söyleyeyim:
Her teknolojiyi projeye gömmek, çözüm üretmek değil, teknoloji bağımlılığıdır.

Eğer bir problemi basit bir REST API ile çözebiliyorsan, oraya GraphQL entegre etmenin anlamı yok. Minimalizm sadece tasarımda değil, mimari tercihlerde de bir meziyettir.

4. Kod Kadar İletişim de Önemli

Bir yazılımcının en az teknik bilgisi kadar önemli olan bir diğer beceri: iletişim.
Ekip içi anlaşmazlıkların %80’i teknik değil, iletişim eksikliğinden çıkar.

Yazılım geliştirirken karşı tarafın ihtiyacını doğru anlamazsan, ne kadar kaliteli kod yazarsan yaz, çözüm olmaktan uzak kalırsın.

5. Mentorluk Yap, Kendini de Geliştir

Kariyerimde beni en çok geliştiren şeylerden biri, junior arkadaşlara mentorluk yapmaktı. Çünkü bir şeyi başkasına anlatmaya çalıştığında, o konuyu gerçekten öğrenmiş oluyorsun.

Junior'lara zaman ayırmak, kendi gelişimini yavaşlatmaz. Aksine, daha iyi bir lider ve geliştirici olmanı sağlar.

Eğer bu sektörde uzun soluklu kalmak istiyorsan sadece iyi kod yazmak yetmez. Disiplinli düşünmek, empati kurmak, ekip çalışmasına saygı duymak ve öğrenmeyi bırakmamak zorundasın.

Kod elbette güzeldir. Ama doğru yazıldığında, doğru yerde kullanıldığında ve insanlara yardımcı olduğunda daha da güzeldir.

Yorumlar

Henüz yorum yapılmamış. İlk yorumu sen yap!