Sertaç Yıldırım saha notları

Ana sayfa → Ekip Yönetimi

Proje İptali: Başarısızlık Değil, Karar

Pazartesi 10:40, çeyrek planlaması. Ekrandaki satır: “Otomatik portföy dengeleme — %85.” Ürün tarafından biri sordu: “Mart’ta da %85 değil miydi?” Öyleydi. Projeyi o toplantıda durdurdum. Yedi ay, üç mühendis, 21 kişi-ay. Son dokuzu, cevabını Mart’ta bildiğimiz bir soruya gitti.

Özet
  • İptal başarısızlık değil, bir karar. Başarısızlık, verilmesi gereken kararı üç ay ertelemek.
  • Durdurma kriteri başlamadan yazılır. Bir sayı, bir tarih, bir eşik, bir karar sahibi. Heves bittikten sonra yazılan kriter bahanedir.
  • Batık maliyet bir rakam değil, bir imzadır. Durduramadığın proje çoğu zaman senin adını taşıyan projedir.
  • Kararı önce projede çalışanlar duyar. Gerekçe, kullanılmaya devam edecek parça ve herkesin bir sonraki işi aynı konuşmada.
  • İptal, kod silinince biter. “Belki döneriz” diye bırakılan kod ve feature flag, iptal edilmemiş, bakımı ertelenmiş projedir.

Sahadan: üç aydır %85

Proje Kasım 2025Proje Ekim 2025’te başladı.rsquo;te başladı. Fikir sağlamdı: müşteri hedef bir dağılım seçer (%60 hisse, %30 fon, %10 nakit gibi), portföy saptıkça sistem dengeleme emirlerini önerir, müşteri tek tuşla onaylar. Üç mühendis, üç aylık plan. Üst yönetime ben anlatmıştım, bütçe cümlesini ben kurmuştum.

Şubat başında 500 müşteriye pilot olarak açtık. Dördüncü haftanın sonunda, 3 Mart’ta, sayı geldi: 500 kişiden 15’i en az bir kez dengeleme yapmıştı. %3. Kimse bir eşik yazmamıştı ama toplantıda herkes “%20 civarı beklerdik” dedi. Ben de dedim.

Sonra şunu yaptım: “Bildirim yok, müşteri sapmayı fark etmiyor” dedim ve bildirim ekledik. Nisan’da “onay ekranı karmaşık” dedim, sadeleştirdik. Mayıs sonunda, pilotun on altıncı haftasında sayı 23 kişiydi: %4,6. Durum raporundaki %85 ise Mart’tan beri hiç kıpırdamamıştı, çünkü eklenen her iş kalan işi de büyütüyordu.

TarihSinyalBenim cevabım
Kasım 2025Başlangıç, 3 aylık planEşik yazılmadı
3 ŞubatPilot 500 müşteriye açıldı
3 Mart4. hafta: 15/500 (%3)“Bildirim eksik” → bildirim eklendi
NisanKullanım yerinde sayıyor“Onay ekranı karmaşık” → sadeleştirildi
Mayıs sonu16. hafta: 23/500 (%4,6)“Bir çeyrek daha” taslağı
8 Haziran“Mart’ta da %85 değil miydi?”İptal

Tablonun son sütununu yazarken utandım. Her satırda aynı hareket var: kötü haber geliyor, ben bir özellik ekliyorum. Hiçbir satırda “duralım mı?” sorusu yok.

Hata benimdi ve basitti. Veri Mart’ta “hayır” diyordu. Ben veriyi değil, projeyi kurtaracak bir sonraki özelliği aradım. 8 Haziran’da verdiğim karar, 3 Mart’ta verilebilecek karardı.

Başarısızlık proje iptal edilince olmaz. Verilmesi gereken iptal kararı ertelendikçe olur.

Neden geç durdurdum

Batık maliyetin hesabını yap mı, al mı yazısında yapmıştım: harcanan para geri gelmez, karar ileriye dönüktür. Bunu biliyordum. Tabloyu da biliyordum. Yine de üç ay bekledim, çünkü batık maliyet benim için bir rakam değildi.

Üç şey vardı ve hiçbiri tabloda satır değildi:

  • İmza. Projeyi yukarıya ben satmıştım. Durdurmak, “yanıldım” demekti. Her yeni özellik, o cümleyi bir ay daha ertelemenin yoluydu.
  • “%85” yanılsaması. Bitmek üzere görünen şeyi bırakmak zor. Ama %85 bir ölçüm değildi; kalan işin tahminiydi ve her ay yeniden tahmin ediliyordu.
  • Ekibe karşı mahcubiyet. Üç kişi yedi ay çalışmıştı. “Emeklerini çöpe atamam” diye düşündüm. Oysa emeklerini çöpe atan şey iptal değil, işe yaramayacağını bildiğim bir işe üç ay daha bağlamaktı.

Kendime sorduğum soru yanlıştı: “Bu kadar emek verdik, bırakır mıyız?” Doğru soru şuydu: “Bugün bu proje olmasaydı, bu üç kişiyi önümüzdeki üç ay buna verir miydim?” Mart’ta bu soruyu sorsaydım cevap netti. Hayır.

Durdurma kriteri: heves varken yazılır

Teknik strateji yazısında hayır listesini anlatmıştım: başlamamış işe hayır demek. Bu yazının konusu başlamış işe hayır demek ve o, çok daha zor. Çünkü başlamış işin savunucuları var, harcanmış emeği var, bir de “az kaldı” hissi var.

Bunu kolaylaştıran tek şey, kararı proje başlamadan vermek. O gün herkes heyecanlı ve herkes projenin başarılı olacağına inanıyor. Tam o yüzden, “şu olursa dururuz” cümlesini yazmak o gün ucuz. Üç ay sonra aynı cümle pahalı.

Durdurma kriteri sablonu
PROJE      : otomatik portfoy dengeleme
SAHIBI     : tek isim (karari o verir, komite degil)

SINYAL     : pilotta en az bir kez dengeleme yapan musteri orani
ESIK       : pilotun 4. haftasi sonunda %10'un altindaysa -> DUR
             %10 - %20 arasi -> tek bir degisiklik, 4 hafta daha, sonra ayni soru
             %20 ustu -> devam

ZAMAN      : en gec 3 ay. 3. ayin sonunda "kalan is" tahmini
             ilk tahminin 1,5 katini gectiyse -> ayni masa, ayni soru

DURURSAK   : 1) projede calisanlar ilk duyar
             2) kalan parcalar listelenir, sahibine devredilir
             3) kod ve flag'ler 2 hafta icinde silinir

# bu sayfa proje baslamadan once yazilir ve imzalanir.
# sonradan degistirilirse, degisiklik tarihiyle birlikte yazilir.

Bu sayfanın bizde olsaydı ne değiştireceği açık: 3 Mart’ta %3 geldi, eşik %10. Tartışma, “ne ekleyelim” değil “sayfa ne diyor” olurdu. Karar yine zor olurdu ama benim hevesime değil, üç ay önce yazılmış bir cümleye bağlı olurdu.

Eşiğin tam doğru olması gerekmiyor. %10 mu %15 mi, tartışılabilir. Önemli olan, bir eşiğin var olması ve sonucu görmeden önce yazılmış olması. Sonucu gördükten sonra koyduğun eşik, sonuca göre koyduğun eşiktir.

Kararı kim verir?

Şablondaki “sahibi: tek isim” satırı süs değil. Bizim projenin bir sahibi yoktu, bir komitesi vardı: ürün, ben ve satış tarafından bir kişi. Üçümüz de sayıyı gördük, üçümüz de diğer ikisinin “dur” demesini bekledik. Komite başlatma kararını kolay verir; durdurma kararını hiç vermez.

Artık her projede durdurma kararının sahibi, başlangıç sayfasında isimle yazılı. O kişi kararı tek başına vermek zorunda değil; ama sayı eşiğin altına düştüğünde masayı toplamak onun işi. Toplamazsa, toplamadığı görünür.

Durdurma kriteri heves varken yazılır. Hevesin bittiği gün yazılan kriter, kriter değil bahanedir.

Kararı ekibe söylemek

Burada da hata yaptım ve bu, en çok pişman olduğum kısım. Kararı çeyrek planlamasında, 14 kişinin önünde verdim. Projede çalışan üç kişiden biri o toplantıdaydı; diğer ikisi kararı toplantıdan yarım saat sonra, ekip kanalındaki bir mesajdan öğrendi. Birinin ilk sorusu “bir şey mi yanlış yaptık?” oldu.

Benim yaptığım
  • Karar kalabalık bir toplantıda
  • Projedekiler kanaldan öğreniyor
  • Gerekçe: “kullanım düşük”
  • “Sonraki iş” iki hafta belirsiz

Duyulan mesaj: “Yaptığınız iş işe yaramadı.”

Olması gereken
  • Önce üç kişiyle, yüz yüze, aynı gün
  • “Kararı ben geç verdim” cümlesi açıkça
  • Hangi parçanın yaşayacağı, isimle
  • Herkesin sonraki iki haftası belli

Duyulan mesaj: “Soru cevaplandı, sıradaki soru bu.”

Ertesi gün üçüyle ayrı ayrı bire bir yaptım. İlk cümlem şuydu: “Bu proje senin yüzünden durmadı. Mart’ta durması gerekiyordu ve ben durdurmadım.” Kararın kime ait olduğunu açıkça söylemek, ekipteki psikolojik güvenlik için yaptığım her atölyeden daha fazla işe yaradı. İnsanlar yöneticinin kendi hatasını nasıl karşıladığına bakıp kendi hatalarını nasıl karşılayacaklarını öğreniyor.

İkinci ders: bir sonraki işi belli olmayan kişi, iptali kendi hakkında bir karar olarak duyar. İki hafta boyunca “bakacağız” dediğim kıdemli mühendis, o iki haftada iki iş görüşmesine girmiş. Sonradan kendisi söyledi. Kaldı; ama o iki haftayı ben yaratmıştım.

Emeği görünür kılmak

“Emeğiniz boşa gitmedi” demek yetmiyor; kimse inanmıyor. Neyin boşa gitmediğini göstermek gerekiyor. İptalden sonraki hafta üç kişiyle bir saat oturduk ve projenin ürettiği her şeyi bir listeye döktük. Sonuç beni de şaşırttı:

Ne üretildiNe oldu
Toplu emir gönderme katmanı (sepet emri, ~3.100 satır)Taşındı; periyodik yatırım planı işinin temeli oldu
Risk profili ve hedef dağılım anketiUyum ekibine devredildi; yıllık uygunluk testinde kullanılıyor
“Hedeften sapma” göstergesiPilotta açanların oranı %38; portföy ekranına salt okunur olarak eklendi
Pilot verisi ve müşteri görüşmeleri (11 görüşme)Tek sayfalık not; “müşteri öneri istiyor, otomatik emir istemiyor”
Dengeleme motoru, bildirim, onay akışı (~11.500 satır)Silindi

En değerli satır, en az kod içereni oldu. Pilottaki müşteriler dengeleme yapmıyordu ama sapma göstergesine bakıyordu: 500 kişiden 190’ı en az bir kez açmıştı. Yani soru doğruydu, cevap yanlıştı. Müşteri “portföyüm nereye kaydı”yı bilmek istiyordu; emir verme kararını bize bırakmak istemiyordu. Bu bulgu Mart’ta da elimizdeydi. Okumadım.

Bu listeyi ekip toplantısında üç kişinin kendisi sundu, ben değil. Emeği görünür kılmak, emeği verenin anlatmasıyla oluyor.

Kodu gerçekten silmek

İptal kararı bir toplantıda verilir ama kod tabanında hiçbir şey değiştirmez. Karar gününün akşamı projeye ait 14.600 satır, 3 servis, 2 veritabanı tablosu, 1 zamanlanmış iş ve 11 feature flag hâlâ oradaydı. Pilot müşterilerin 23’ünün kurulu dengeleme ayarı vardı.

Silme işini iki haftalık, sahibi olan bir iş olarak planladık:

  1. Müşteri tarafı önce. Ayarı olan 23 müşteriye ne olacağını yazan bir mesaj, sonra bekleyen önerilerin iptali. Canlıdaki bir özelliği kapatmak da bir sürüm; sessizce kapatılmaz.
  2. Yaşayacak parçaları ayır. Toplu emir katmanı kendi modülüne taşındı, testleriyle birlikte. Önce taşı, sonra sil; tersi değil.
  3. Flag’leri tek tek kaldır. 11 flag’in her biri için: kod yolu silinir, flag tanımı silinir, yapılandırmadan kaldırılır. Flag’i “kapalı” bırakmak kaldırmak değildir.
  4. Veriyi karara bağla. İki tablo arşive alındı, 90 gün sonra silinmek üzere tarih yazıldı. Zamanlanmış iş kapatıldı ve tanımı silindi.
“Belki döneriz”

Bir önceki iptal ettiğimiz projede (fiyat alarmlarının yeni sürümü) kodu bırakmıştık. Sekiz ay sonra bir yapılandırma temizliğinde flag’ler varsayılan değerlerine döndü. Varsayılan “açık”tı. Yarım kalmış alarm ekranı 40 dakika boyunca müşterilerin uygulamasında göründü. Geri dönmek istersen kod git geçmişinde duruyor; ana dalda durmasına gerek yok.

İki haftanın sonunda 11.500 satır silindi, 3.100 satır taşındı, 11 flag’in 11’i kalktı. Bu sayıyı iptal kararından daha çok önemsiyorum: karar bir cümle, silme işi kararın gerçekten verildiğinin kanıtı.

Silinmeyen kod iptal edilmemiştir. Sadece bakımı ertelenmiştir.

Ne izlemeli?

NeNeden
Durum raporunda aynı yüzdede kalan hafta sayısıÜç haftadan uzun sabitse ilerleme değil, kapsam büyüyor
Sinyal sayısı ile yazılı eşik arasındaki farkEşik yoksa bu satır yazılamaz; ilk alarm budur
Sinyal geldikten sonra eklenen özellik sayısıKötü sinyale yeni özellikle cevap vermek, erteleme biçimidir
İptal edilmiş projelere ait canlı flag ve satır sayısıSıfır olmalı; değilse iptal bitmemiş
İptalden sonra sonraki işi belli olmayan kişi-günBelirsizlik uzadıkça iptal kişisel bir mesaja dönüşür

Bende işe yaramayanlar

  • Kötü sinyale özellikle cevap vermek. Bildirim ve sade onay ekranı pilot kullanımını %3’ten %4,6’ya çıkardı. Doğru soru “neyi eksik yaptık” değil, “müşteri bunu istiyor mu”ydu.
  • “Beklemeye alalım”. İlk refleksim iptal yerine “dondurmak” oldu. Dondurulan proje kimsenin önceliği değildir ama herkesin kafasında yer tutar. İki gün sonra “iptal” kelimesini kullandım.
  • Olumlu bir retrospective. İlk retrospective’te herkes iyi giden şeyleri saydı, kimse “neden Mart’ta durmadık” diye sormadı. Soruyu ben sormam gerekiyordu, çünkü cevabı bendim.

Kontrol listesi

Projeyi durdurabilir misin?
  • Süren her proje için yazılı bir durdurma kriteri var mı — sayı, eşik, tarih, karar sahibi?
  • Bu kriter sonuç görülmeden önce mi yazıldı?
  • “Bugün bu proje olmasaydı, bu ekibi buna verir miydim?” sorusunu son ne zaman sordum?
  • Kötü sinyalden sonra kaç özellik ekledim?
  • İptali projede çalışanlar herkesten önce mi duydu?
  • Herkesin bir sonraki işi aynı hafta içinde belli mi?
  • Projenin ürettiği ve yaşamaya devam eden parçalar isimleriyle listelendi mi?
  • Kod, flag, tablo ve zamanlanmış işler gerçekten silindi mi?

Sonuç

O planlama toplantısında “Mart’ta da %85 değil miydi?” sorusunu soran kişi, benim üç aydır kendime sormadığım soruyu sormuştu. Cevabı biliyordum. Sadece yüksek sesle söylemek istemiyordum.

Projeyi durdurmak üç haftada bitti: bir karar, üç bire bir, bir liste, iki haftalık silme işi. Durdurmamak ise üç ay sürdü ve 9 kişi-aya mal oldu. Asıl maliyet iptal değil, iptalin gecikmesiydi.

Artık her projenin ilk sayfasında bir durdurma kriteri var. Çoğu hiç kullanılmıyor. Kullanıldığında da tartışma kısa sürüyor, çünkü karar zaten verilmiş: heves varken, sonucu görmeden, kendi elimizle.