
1628 yılının Ağustos ayında, İsveç Kralı Gustavus Adolphus’un emriyle inşa edilen “Vasa” isimli savaş gemisi, Stockholm limanından büyük bir törenle denize indirildi. Vasa, döneminin mühendislik harikasıydı. Kral, geminin daha önce görülmemiş bir ateş gücüne sahip olmasını istemiş, mühendisleri gemiye ekstra top bataryaları eklemeye zorlamıştı. Sadece güç yetmezdi; gemi aynı zamanda imparatorluğun ihtişamını yansıtmalıydı. Bu yüzden gövdesi yüzlerce ahşap oyma heykel, altın varaklar ve ağır süslemelerle donatıldı.
Gemi, limandan ayrıldıktan sadece 1300 metre sonra, hafif bir rüzgarla yan yattı. O muazzam toplar, o göz kamaştırıcı heykeller, o “mükemmel” tasarım, geminin dengesini o kadar bozmuştu ki, Vasa dakikalar içinde sulara gömüldü.
Mühendisler, Kral’ın “daha fazla özellik” (feature) ve “daha fazla ihtişam” (design) taleplerini yerine getirmişlerdi. Kağıt üzerinde her şey muazzamdı. Ama unuttukları tek bir şey vardı: Geminin yüzmesi gerekiyordu.
Bugün teknoloji dünyasında, her gün yüzlerce “Vasa” inşa ediliyor.
Biz teknoloji liderleri, genellikle kodumuzun compile etmesiyle, testlerin yeşil yanmasıyla veya arayüzün piksellerinin kusursuzluğuyla övünürüz. Oysa 20 yılı aşkın süredir endüstrinin mutfağında gördüğüm tek bir gerçek var: En mükemmel algoritma bile, eğer bir insanın derdine derman olmuyorsa, sadece işlemci ısındıran bir gürültüdür. Vasa’nın oymalı heykelleri neyse, kimsenin kullanmadığı bir uygulamanın “clean code” mimarisi de odur.
Bugün, “Bütüncül Teknoloji Lideri” (Holistic Tech Leader) şapkamı önüme koyup, sizlerle filtresiz bir sohbet etmek istiyorum. Masa başında tasarladığımız o “kusursuz” dünyalar, sokağın tozuna ve müşterinin gerçekliğine çarptığında neden tuzla buz oluyor? Neden “çok mantıklı” dediğimiz fikirler ürünleşemiyor?
Gelin, Yunus Emre’nin “İlim ilim bilmektir, ilim kendin bilmektir” düsturunu, modern ürün geliştirme süreçlerine uyarlayalım. Çünkü bizim dünyamızda ilim; yazdığın kodun kime, neye ve hangi “iş değerine” (Business Value) hizmet ettiğini bilmektir.
Ürün geliştirme süreci, genellikle sessiz ve steril bir laboratuvarda, Araştırma ve Geliştirme (Ar-Ge) ile başlar. Burası biz teknik insanlar için bir oyun parkıdır. Maliyet baskısı yoktur, müşteri şikayeti yoktur, sadece “olasılıklar” vardır.
Ar-Ge, bir sorunun etrafında atılan entelektüel bir turdur. Pürüzlü Mükemmellik kitabında vurgulandığı gibi; “Hızlanmak için bazen yavaşlamak gerekir.” Bu aşamada yapılan derinlemesine araştırmalar, ileride bizi büyük teknik borçlardan kurtaracak olan temeldir. Ancak burada büyük bir tehlike yatar: Mutfak Körlüğü.
Bir şefin mutfakta kendi damak tadına göre soslar hazırlamasıyla, o yemeğin 500 kişilik bir restoranda servis edilmesi arasında dağlar kadar fark vardır. Yazılımcılar olarak bizler, Ar-Ge sürecinde teknolojinin kendisine aşık olma eğilimindeyiz. “Bu veritabanı milisaniyede milyon işlem yapıyor” cümlesi bizi heyecanlandırır. Ama asıl soru şudur: “Bizim kullanıcımızın milyon işlem yapmaya ihtiyacı var mı?”
Ar-Ge sürecinin sonunda elimize geçen şeye “Prototip” diyoruz. Bir butona basıyorsunuz, arkada karmaşık işler dönüyor ve ekrana bir sonuç geliyor. Bu an, teknik ekibin zafer çığlıkları attığı andır. Oysa bir prototip, henüz ruhu olmayan, güzel bir hayaletten ibarettir.
Rework’un yazarları Jason Fried ve DHH’nin o keskin tespiti burada devreye girer: “Prototipler, fikirlerin en çiğ halidir.”
Bir prototipin çalışıyor olması, onun bir “ürün” olduğu anlamına gelmez. Prototip, teknik bir hipotezin kanıtıdır (Proof of Concept). Ürün ise, ticari ve insani bir sözleşmedir. Prototip ile ürün arasındaki farkı şöyle özetleyebilirim:
Müşterisi hazır olmayan, bir acıyı dindirmeyen, sadece teknik bir challenge (meydan okuma) olarak görülen her şey, prototipten öteye gidemez. İsterseniz dünyanın en ileri yapay zeka modellerini kullanın, eğer o modeli kullanacak kişinin hayatında somut bir “değer” yaratmıyorsanız, yaptığınız şey sadece pahalı bir hobi, bir egzersizdir.
Mühendis kökenli zihinlerin en büyük handikabı, dünyayı lineer bir denklem olarak görme eğilimidir. Bizim için $A + B = C$ olmalıdır.
Ancak gerçek hayatın matematiği böyle işlemez. İnsanlar mantıklı kararlar veren makineler değildir; alışkanlıklarına, korkularına ve duygularına göre hareket eden varlıklardır.
“Vitamin” mi, “Ağrı Kesici” mi? Bir fikrin “mantıklı” olması, onun “satılabilir” olduğunu garanti etmez. Sektörde sıkça kullandığımız bir metafor vardır: Ürününüz bir vitamin mi, yoksa bir ağrı kesici mi?
Bize mantıklı gelen fikirlerin çoğu, aslında sadece güzel paketlenmiş vitaminlerdir. Müşteri, konfor alanını bozup yeni bir ürün öğrenmek için “mantıklı bir sebepten” fazlasına, “yakıcı bir ihtiyaca” muhtaçtır.
Rework felsefesi “Kaşınan yeri kaşıyın” (Scratch your own itch) der. En başarılı ürünler genellikle pazar araştırması raporlarından değil, kurucunun bizzat yaşadığı bir soruna çözüm aramasından doğar. Ancak burada ince bir çizgi vardır: Sizin kaşındığınız yer, başkasının umurunda olmayabilir. Kendi fikrinize aşık olmak, bir liderin yapabileceği en büyük hatadır. Fikrinizi doğrularken acımasız olmalısınız.
Yazılım dünyasında bitmek bilmeyen o sessiz savaşı hepimiz biliriz: Backend’in “işi yapan motor” olma kibri ile Frontend/Design ekibinin “kullanıcıyı karşılayan yüz” olma ısrarı.
Bu tartışma genellikle yanlış bir zeminde yapılır. “Tasarım ne kadar güzel olmalı?” sorusu yanlıştır. Doğru soru şudur: “Tasarım, işlevselliğin önüne geçmeden ona nasıl yol açar?”
Tıpkı kod yazarken yaptığımız “Over-engineering” (aşırı mühendislik) hatası gibi, tasarımda da “Design Over-engineering” (Tasarım Aşırılığı) tuzağına düşüyoruz. Bir CTO olarak duruşum nettir: İşlevsiz bir tasarım boş bir kutudur, tasarımsız bir işlevsellik ise kullanılamayan bir hazinedir. Ancak denge, pragmatizmde yatar.
Eğer kurumsal (B2B) bir ürün geliştiriyorsanız, kullanıcınızın psikolojisini anlamanız gerekir. O kullanıcı, o yazılımı keyif için değil, mesaisi bitsin diye kullanıyordur. Onun ihtiyacı “wow efekti” yaratan animasyonlar, gölgeli butonlar veya sanat eseri gibi ikonlar değildir.
Onun ihtiyacı Netliktir. B2B ürünlerde tasarım, bilişsel yükü (cognitive load) azaltmak için vardır.
Burada tasarıma harcanacak ekstra her efor, ürünü hantallaştırır. “Eli yüzü düzgün”, standartlara uyan, temiz bir tasarım, B2B’de mükemmelliğin ta kendisidir. Daha fazlası israftır.
Son kullanıcıya (B2C) hitap eden işlerde ise durum biraz daha farklıdır ancak temel mantık aynıdır: Mükemmeli Bekleme.
Bir B2C uygulamasında tasarımın, kullanıcının güvenini kazanacak kadar profesyonel olması şarttır. Ancak her bir ekranı piksel piksel işlemek, ürünün çıkışını (Time-to-Market) geciktiren bir intihardır. Buradaki strateji “Kabul Edilebilir Başlangıç” olmalıdır. Ürün sahaya çıkar, kullanıcıların refleksleri izlenir.
Tasarım, masa başında değil, sahada, kullanıcının parmak uçlarında evrimleşmelidir. Pürüzlü Mükemmellik’te dendiği gibi, hayat pürüzlüdür ve steril laboratuvar tasarımları, gerçek hayatın kaosunda genellikle çalışmaz. Bırakın tasarımınız, müşterinin refleksiyle şekillensin.
Unutmayın, Vasa gemisi de muhteşem bir tasarıma sahipti ama yüzemedi. Bizim amacımız müzede sergilenecek bir tablo yapmak değil, okyanusu geçecek bir gemi inşa etmektir.
Masa başında, klimalı toplantı odalarında beyaz tahtaya çizilen mimariler her zaman harikadır. Her şey modülerdir, scalable (ölçeklenebilir) yapıdadır. “Şu olursa bu devreye girer, trafik artarsa sunucular otomatik çoğalır.”
Ancak sahaya inip, ürünü gerçek kullanıcılarla buluşturmaya başladığınızda “akıl tutulmaları” başlar.
Rework kitabındaki o çarpıcı gerçeği hatırlatmak isterim: “Planlama, sadece tahminden ibarettir.”
Teknoloji dünyasında 1 yıllık, 2 yıllık yol haritaları (roadmap) çıkarmak, fal bakmaktan farksızdır. Çünkü 6 ay sonra pazarın, teknolojinin veya rekabetin ne durumda olacağını kimse bilemez. Bizler genellikle “Ürünü bitirip öyle çıkalım” hatasına düşeriz. Oysa ürün asla bitmez. Ürün, bir heykel gibi yontulup kenara konulacak bir şey değildir; bir bahçe gibidir, sürekli bakım, budama ve ilgi ister.
Çalıştığım projelerde ve yönettiğim ekiplerde karşılaştığım en büyük stratejik zorluk şudur: Bir müşterinin özel isteğini, tüm müşterilere uyarlamaya çalışmak.
Bir müşteri gelir ve der ki: “Ben raporları alırken, satırların renginin kırmızı olmasını ve verilerin tersten sıralanmasını istiyorum.” Yazılımcı için bunu kodlamak 15 dakikadır. “Hallederiz abi” moduna girmek çok kolaydır.
Ama ürün yöneticisi ve teknik lider için bu bir kabustur. Sorular başlar:
İşte bu noktada ekipler boğulur. “Herkesi memnun edelim”, “Ürünümüz çok esnek olsun” derken, ortaya ne olduğu belli olmayan, her yerinden ayar fışkıran, kullanımı imkansız bir “Frankenstein” yazılım çıkar.
Bu bir akıl tutulmasıdır. Masa başında “esnek olsun” diye tasarlanan yapılar, sahada “karmaşıklık” (complexity) olarak karşımıza çıkar. Ve unutmayın, karmaşıklık, yazılımın en büyük düşmanıdır.
Gerçek bir teknoloji lideri, “Bunu yapabiliriz” diyen değil, “Bunu yapmamalıyız çünkü ürünün ruhuna ve sadeliğine aykırı” diyebilen kişidir. Teknik zorluk, kodu yazmakta değil, neyi yazmayacağına karar vermektedir.
Ürünü canlıya aldınız (Go Live). Tebrikler, asıl dert şimdi başlıyor. Mevlana’nın o eşsiz sözünü hatırlayalım: “Dünle beraber gitti cancağızım, ne kadar söz varsa düne ait. Şimdi yeni şeyler söylemek lazım.”
Canlıdaki bir ürün, yaşayan bir organizmadır. Büyür, acıkır (sunucu/kaynak tüketir), hastalanır (bug’lar) ve ilgi ister (müşteri desteği). Bu yaşam döngüsünde en kritik konu, Müşteri Talepleri karşısında duruşunuzdur.
Henry Ford’un o meşhur, “İnsanlara ne istediklerini sorsaydım, daha hızlı atlar derlerdi” sözü, ürün yönetiminin anayasasıdır.
Yazar Notu: Henry Ford’un böyle bir sözü yok ama bu tarz içeriklerde kullanmanın tadı bambaşka :)
Müşteri her zaman sorununda (problem) haklıdır, ama çözüm önerisinde (solution) genellikle yanılır. Müşteri sizden “Bana Excel’e aktar butonu koy” diyorsa, aslında şunu diyordur: “Senin arayüzünde verilerimi analiz edemiyorum, o yüzden güvendiğim limana (Excel) kaçmak istiyorum.” Sizin göreviniz o butonu koymak değil (bu kolayıdır), ürünün içindeki analiz yeteneklerini iyileştirmektir. Müşterinin dediğini yapmakla, müşterinin derdiğini çözmek arasında devasa bir fark vardır.
Çizgiyi Ne Zaman Bozmalı?
Ürün vizyonunuz ile müşteri talepleri çatıştığında ne yapacaksınız?
Sektörün farklı alanlarında, farklı coğrafyalara dokunan projelerde edindiğim tecrübe bana şunu öğretti: Ürün geliştirmek, sadece bir mühendislik harikası yaratmak değildir. Ürün geliştirmek; insan psikolojisini, ticareti, estetiği ve mühendisliği aynı potada eritmektir.
Masa başındaki pürüzsüz planlarınız sahada bozulacak.
“Asla patlamaz” dediğiniz servisler, en kritik müşteri demosunda yanıt vermeyecek.
Tasarımına günlerce uğraştığınız arayüzü, müşteri “çok karışık” bulacak.
En mantıklı fikriniz, pazarın mantıksızlığına yenilecek.
Bunların hepsi sürecin, o “pürüzlü mükemmelliğin” bir parçası. Nazım Hikmet’in dediği gibi:
“Sen yanmasan, ben yanmasam, biz yanmasak, nasıl çıkar karanlıklar aydınlığa?”
Doğru ürünü bulmak için o kodların içinde yanmayı, hata yapmayı, prototipleri yıkıp yeniden yapmayı göze almalıyız. Ama hep şu hedefle: Sadece teknik bir başarı değil, sahada, gerçek ellerde, gerçek iş süreçlerinde yaşayan bir değer üretmek.
Benim inancım odur ki; geleceğin liderleri sadece kodu bilenler değil, kodun insana değdiği yeri, o ince çizgiyi yönetebilen bütüncül liderler olacaktır. Sizin geminiz “Vasa” gibi süslü ama kırılgan mı olacak, yoksa fırtınalara dayanıklı, mürettebatını hedefe götüren bir gemi mi?
Seçim, yazdığınız ilk satır kodda değil, kurduğunuz ilk hayalde gizli.
Meraklısına; yazının ingilizce versiyonuna bu linkten ulaşabilirsiniz.
Görseller üretilirken Nano Banana Pro Kullanılmıştır.