/* ── 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; } }
Yazılımda Geri Dönülemez Kararlar Nerede Alınır?

Yazılımda Geri Dönülemez Kararlar Nerede Alınır?

Yazılımda Geri Dönülemez Kararlar Nerede Alınır?

Yazılım projelerinde en tehlikeli kararlar genelde “büyük” görünenler değildir.

Framework seçimi, dil tercihi, araçlar… Bunlar konuşulur, tartışılır, değiştirilebilir.

 

Geri dönülmez olanlar ise çoğu zaman sessizce alınır.

 

 

En erken anlar en kalıcı izleri bırakır

Bir projeye başlarken söylenen bazı cümleler vardır:

 

  • “Şimdilik böyle yapalım”

  • “Sonra değiştiririz”

  • “Buna sonra bakarız”

İşte geri dönülemez kararlar genelde tam burada başlar.

 

Çünkü bu anlarda:

  • Yapı şekillenir

  • Alışkanlıklar oluşur

  • Sistem büyümeye başlar

Ve zaman geçtikçe “sonra” hiç gelmez.

 

 

 

Veri modeli kararları: en sessiz kilitlenme

Bir veri modelini ilk kurduğunda çok az kişi heyecanlanır.

Ama zamanla her şey ona bağlanır.

 

Alan adları, ilişkiler, varsayımlar…

Hepsi koddan önce düşünceyi kilitler.

 

Sonradan değiştirilebilir mi?

Evet, teoride.

Pratikte ise:

 

  • Tüm sistemi etkiler

  • Eski kararları savunanlar çıkar

  • Risk almak zorlaşır

Bu yüzden veri modeli kararları en geri dönülmez kararlardandır.

 

 

“Geçici” çözümlerin kalıcılaşması

Bir sorun çıkar.

Hızlı bir çözüm üretilir.

“Geçici” denir.

Ama o geçici çözüm:

 

  • Başka bir parçaya bağlanır

  • Bir yerde referans alınır

  • Bir sonraki geliştirici tarafından “standart” sanılır

 

Bir bakmışsın, kimsenin sevmediği ama kimsenin de dokunamadığı bir yapı oluşmuş.

 

Geri dönülmezlik bazen zamandan, bazen cesaretten gelir.

 

 

 

Organizasyonel kararlar koddan daha kalıcıdır

Teknik kararlar kadar tehlikeli olan bir şey daha var:

Kim karar veriyor?

 

  • Kod inceleme kültürü var mı?

  • Mimari kararlar kimden geçiyor?

  • “Hayır” deme hakkı kime ait?

Bu sorular net değilse, sistem sadece teknik olarak değil, zihinsel olarak da kilitlenir.

 

Ve bu tür kararlar genelde belgelenmez.

Ama en zor geri alınanlar da bunlardır.

 

 

Geri dönülmezlik teknik değil, psikolojiktir

Bir noktadan sonra sorun “değiştirebilir miyiz?” değildir.

Sorun şudur:

 

“Değiştirmeye değer mi?”

 

Zaman, emek, ego ve alışkanlıklar devreye girer.

Koddan çok insan faktörü geri dönülmezliği yaratır.

 

 

Son söz

Yazılımda geri dönülemez kararlar:

 

  • Büyük toplantılarda değil

  • Büyük mimari diyagramlarda değil

çoğu zaman:

 

  • Aceleyle

  • “Şimdilik” diyerek

  • Kimse itiraz etmediği için alınır.

 

Bu yüzden en değerli refleks şudur:

Kod yazmadan önce durup sormak.

 

“Bunu gerçekten geçici mi yapıyoruz,

yoksa fark etmeden kalıcı mı kılıyoruz?”

 

Bu soruyu sorabilen ekipler,

geri dönülemezliği en az yaşayanlardır.

Yorumlar

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