Basılı katalog, menü ya da kartviziti yazılıma taşımak, kâğıdın ekrandaki kopyasını üretmek yerine gördüğü işi sürdürmektir: anında açılmak, kurulum istememek, okuyandan veri istememek. Geçiş, dosya biçimi seçilmeden önce bu işin adlandırılmasıyla başlar; tarif değiştiğinde aynı içerikten bambaşka bir ürün çıkıyor. Geçişin karşılıksız kaldığı yer de var: hiç güncellenmeyen bir metinde adresle içeriği ayırmak yalnız bir panelin bakımını getiriyor.
Kopya ile iş arasındaki farkı görmek için kâğıda bir araç olarak bakmak gerekiyor. Basılı bir menü tezgâhın önünde duran kişiye seçenekleri gösterir. Broşür, showroomda yerinde göremediğiniz aracı anlatır. Kartvizit, iletişim bilgisini bir elden öbürüne taşır. Üçü de aynı sessiz sözleşmeyle çalışır: okuyandan hiçbir hazırlık istemez. Elinize alırsınız, açıktır, biter.
Yazılım hâli bu sözleşmeyi bozmaya çok müsait. İndirme adımı, hesap açma ekranı, geç açılan bir sayfa ya da araya sıkıştırılmış bir form; her biri kâğıdın hiç sormadığı bir şeyi sorar. Aşağıda kendi portföyümüzden üç işi tek bir ölçütle okuyoruz: showroom kiosk uygulamasını, kasap tezgâhındaki QR menüyü ve şu an inşa ettiğimiz kartvizit platformunu. Ölçüt şu: kâğıt hangi özelliği olmadan işini göremezdi, o özellik yazılım hâlinde yerinde duruyor mu?
Kâğıdın gördüğü işi adlandırmadan geçiş başlamaz
Showroom zemini kaç araç alıyorsa gam ziyaretçiye o kadar görünür. Yoğun saatte müsait danışman sayısı da ikinci bir sınır çizer. Basılı broşür tam bu iki sınırın arasına giriyor: ziyaretçiye yerinde göremediği modelleri ve donanım paketleri arasındaki farkları anlatıyor. Broşürün işi satış değil, gamın görünmeyen kısmını görünür kılmak. Ayrımı baştan yapmak gerekiyor, çünkü geçişte devralınacak şey bu görünürlük işi.
Kasap tezgâhının önündeki kişi bambaşka bir konumda. Oturmuş, vakti olan bir okuyucu değil; ayakta ya da masada, birkaç saniye içinde ne alacağına karar veriyor. Basılı menünün işi o birkaç saniyede seçenekleri önüne koymak. Menü bir kez okunur ve bırakılır; ikinci kez dönülmesi beklenmez.
Kartvizitin işi daha da dar: iletişim bilgisini taşımak. Ama kart bir kez basılırken işletme değişmeye devam ediyor. Telefon numarası değişiyor, unvan değişiyor, adres eskiyor. Kutuda duran kartlar ya yanlış bilgiyi dolaştırmaya devam ediyor ya da baskı baştan yapılıyor. Kartın gördüğü iş yıllarca sabit kalırken taşıdığı bilgi eskiyor.
İşi yanlış adlandırmanın bedeli hemen görünmüyor. Broşürün işi “kataloğu göstermek” diye tarif edilseydi, çıkacak şey kâğıdın ekrandaki kopyası olurdu: aynı sayfa düzeni, aynı sıralama, kaydırılan bir dosya. Görev “gamın görünmeyen kısmını görünür kılmak” diye tarif edildiğinde ekranın ilk sorusu değişiyor: ziyaretçi hangi aracı arıyor, donanım paketleri arasındaki farkı nereden okuyacak. Aynı içerikten iki ayrı ürün çıkıyor ve aradaki farkı tarif yaratıyor.
Üç tarifin hiçbirinde “kâğıdı ekrana taşımak” geçmiyor. Geçiş bu cümlelerle başlıyor ve yazılım kararları da bunların altına giriyor. İşi adlandırmadan başlayan bir geçişte ölçüt kalmıyor: sayfa güzel göründü mü, menü kaç bölüm taşıyor, ekranda kaç fotoğraf var. Hepsi cevaplanabilir sorular ama hiçbiri kâğıdın yerini tutup tutmadığını söylemiyor.
Kâğıdın üç özelliği yazılımda da yerinde durmalı
Kâğıdın işini gören şey içeriği değil, içeriğe erişme biçimi. Bu erişimi üç özellik kuruyor ve üçü de sessiz kalıyor, çünkü kâğıtta bedava geliyorlar.
Anında açılır. Basılı menü elde açık durur. Açılma süresi diye bir kavram yoktur; bakmakla okumak arasında geçen bir bekleme yoktur. Yazılım hâlinde bu çıta, sayfanın işletme içindeki bağlantıda geç açılmadan gelmesiyle tutuluyor.
Kurulum istemez. Broşürün kullanım eşiği tek bir eylem: eline al. Cihaz, hesap, uygulama ya da oturum istemiyor. Kioskta bu eşik olduğu gibi korundu: ziyaretçi ekrana yürüyor ve dokunuyor.
Okuyandan veri istemez. Kartviziti alan kişi karşılığında kimlik vermez. Kâğıt kimin okuduğunu bilmez ve bilmek de istemez. QRVizit kurgusunda kodu okutan kişiye uygulama indirtmenin kartviziti işlevsiz bırakacağı kabulüyle çalışıyoruz.
Bu üçünden biri düştüğünde kâğıdın gördüğü iş de düşüyor. Aşağıdaki tablo her özelliğin kâğıttaki ve yazılımdaki karşılığını yan yana koyuyor.
| Korunan özellik | Basılı hâlinde | Yazılım hâlinde | Proje |
|---|---|---|---|
| Anında açılır | Menü elde açık durur; açılma süresi yoktur | Vue 3 tek sayfa: bekleme yalnız ilk açılışta, bölüm geçişleri sunucuya yeni istek göndermez | Çatalca Merkez Kasap QR menü |
| Kurulum istemez | Broşürü eline almak yeter; hiçbir cihaz ve hesap gerekmez | Uygulama mağazanın dokunmatik ekranında durur; ziyaretçi indirme veya hesap açma adımı görmez | KGM SsangYong showroom kiosk |
| Okuyandan veri istemez | Kartviziti alan kişi karşılığında kimlik vermez | Telefonun kamerası sayfayı doğrudan açar; okuyan taraf kayıt adımı görmez — bu kurguyu şu an inşa ediyoruz | QRVizit (geliştirme aşamasında) |
Üçüncü sütunu okumanın yolu ikinci sütundan geçiyor: kâğıt neyi bedava veriyorsa, yazılım onu bedelini ödeyerek üretmek zorunda. Her satırdaki teknik karar da o bedelin karşılığı.
Bir özelliğin düşmesi genellikle tek başına fark edilmiyor, çünkü ekranda bir hata görünmüyor. Geç açılan menü çalışıyor; indirme isteyen bir kartvizit sayfası da çalışıyor. Fark, ölçüyü kâğıtla karşılaştırdığınızda çıkıyor: tezgâhın önündeki kişi kâğıda bakarken duruyordu, ekranda bekliyor. Kartı alan kişi kâğıdı cebine koyuyordu, şimdi bir karar veriyor. Yazılım hâlinin başarısızlığı okuyanın vazgeçmesiyle görünüyor ve vazgeçme hiçbir kayda düşmüyor.
İçerik kimin ekranında yaşayacak
Geçişin en erken kararı içeriğin nerede duracağı. Basılı kataloğun işini mağazanın kendi ekranında gören kiosk uygulamasında bu karar baştan verildi: içerik showroomdaki dokunmatik ekranda yaşıyor ve ziyaretçinin cihazına hiç girmiyor.
Kararın değeri, doğurmadığı sorunlarda görünüyor. İçerik ziyaretçinin telefonuna gitseydi sırayla şunlar gündeme gelirdi: nasıl indirilecek, indirmeye değecek mi, hesap gerekecek mi, kişisel veri alınacak mı, alınıyorsa hangi onayla. Kioskta bu soruların hiçbiri ortaya çıkmadı.
Arayüz de aynı kişiye göre kuruldu. Kullanıcı ayakta duruyor, ekranı ilk kez görüyor ve acelesi var. Dokunma hedefleri, yazı boyutu ve gezinme derinliği bu duruma göre belirlendi. Sonuç, küçük bir yerleşimin ölçeklenmiş hâli olmadı. Tek kod tabanından React Native (Expo) ile yazıldı, içerik güncellendiğinde mağazadaki ekranlar aynı kaynaktan besleniyor.
Bu kararın neden verildiğini somutlaştıralım. Telefon arayüzü oturan, elindeki ekrana yakından bakan ve gerekirse geri dönen bir kullanıcıya göre kurulur. Showroomdaki kişi ise ekrandan bir kol boyu uzakta duruyor ve gezinme derinliği arttıkça geri dönmek yerine bırakıp gidiyor. Aynı içerik ve aynı kod tabanı, bambaşka bir yerleşim istiyor.
Cihaz sahipliğini işletmeye almak her yerde ölçeklenmiyor. Showroomda birkaç ekran gamın tamamını taşıyor; aynı mantıkla her masaya ekran koymak, QR menünün gördüğü işi donanım maliyetiyle boğar. Kasap tarafında içerik okuyucunun kendi telefonunda açılıyor ve işletme hiçbir cihaz işletmiyor. Karşılığı da açık: açılış hızı artık okuyucunun bağlantısına bağlı. Kioskta bu bağımlılık hiç yok; buna karşılık işletmenin ekranı, elektriği ve bakımı üstlenmesi gerekiyor. İki uç arasındaki seçim, içeriğin nerede tüketildiğine bakılarak yapılıyor.
Adres bir kez basılır, arkasındaki içerik değişmeye devam eder
Basılı bir kod bilgi taşımaz, adres taşır. Bu ayrım küçük görünüyor ama sürecin tamamını belirliyor. Çatalca Merkez Kasap’ın menüsünde fiyat sayfanın kendi içeriği; değiştiğinde iş matbaaya değil sayfaya gidiyor. Masalara ve vitrine basılmış kodlara hiç dokunulmuyor, çünkü kodun gösterdiği adres yerinde duruyor.
Basılı kodu sabit kalırken sayfası panelden değişen kartvizit platformunu şu an inşa ediyoruz ve aynı ayrımı ürünün çekirdek kurgusu olarak kuruyoruz. Karta basılan kodun işaret ettiği adresi bir kez sabitliyoruz; kodun açtığı tanıtım sayfası panelden istendiği kadar değişebiliyor. Telefon ya da unvan değiştiğinde kutuda bekleyen kartlar geçerliliğini koruyor.
Kalıcı adresin bir bedeli var: aynı kod tekrar tekrar okutuluyor. Her okutmanın veritabanına inmesi gereksiz bir yük olurdu. Sayfa içeriğini Redis önbelleğinden servis ediyoruz; kayıtlar MySQL’de duruyor ama her okutma oraya inmiyor. Yönetim paneli ile ziyaretçinin gördüğü sayfa aynı Laravel uygulamasında; Inertia React arayüzünü besliyor ve araya ayrı bir API katmanı koymuyoruz. Gerekçe tek: bir içerik değişikliğinin ikinci bir servisi de güncellemeyi gerektirmemesi.
Güncellemenin yeni baskı sayılmadığı bir içerik yönetimi kurulumunda ilk sorduğumuz şey hangi alanların işletmenin elinde kalacağı oluyor. Panelden değişmeyen her alan, sonradan bize gelen bir talebe dönüşüyor; o da bir kayıt güncellemesinin yeniden bir proje adımı hâline gelmesi demek.
Karşı durum da yazılmalı. İçerik gerçekten hiç güncellenmiyorsa bu ayrımın getirisi yok. Adres ile içeriği ayırmak beraberinde bir bakım yükü getiriyor: bir panel, bir yetki düzeni, bir kayıt. Bir kez basılıp bir daha dönülmeyecek bir metin için bu yük karşılıksız kalır.
Ayrımın çözmediği şeyi de söylemek gerekiyor. Adres ile içeriği ayırmak, içeriğin güncel kalmasını garanti etmiyor; yalnız güncelleme işini matbaadan alıp panele taşıyor. Panelin başında kimsenin oturmadığı bir kurulumda sayfa da tıpkı kâğıt gibi eskiyor. Fark şurada: eskiyen sayfayı düzeltmek bir kayıt işlemi, eskiyen kâğıdı düzeltmek yeni bir baskı.
Zayıf bağlantı geçişin sessiz eşiğidir
Kasap tezgâhının önündeki okuyucu işletme içindeki bağlantıda duruyor ve birkaç saniyede karar veriyor. Bu iki koşul birleştiğinde fotoğraf ya da PDF olarak yayınlanan bir menü iki kez kaybediyor: büyük dosya yavaş iniyor, indikten sonra da telefonda yakınlaştırma istiyor. Sayfa çoğu zaman okunmadan kapanıyor.
Dosya olarak yayınlanan menü çoğu işletmeye en ucuz geçiş gibi görünüyor: menü zaten tasarım dosyası olarak duruyor, dışa aktarmak yetiyor. Bedeli, kâğıdın iki özelliğini aynı anda düşürmesi. Dosya boyutu anında açılmayı bitiriyor; sabit sayfa düzeni de okumayı yakınlaştırmaya bağlıyor. Kâğıt bunların hiçbirini istemiyordu, dosya ikisini birden istiyor.
Menü bu yüzden metin tabanlı tek sayfa olarak Vue 3 ile kuruldu. Bekleme yalnız ilk açılışta yaşanıyor; bölümler arası her geçiş sayfanın içinde kalıyor ve sunucuya yeni bir istek göndermiyor. Tek sayfa kurgusu burada doğrudan bir bağlantı stratejisi. Sayfanın sunucuda hazır inip zayıf bağlantıda da açılması, kâğıdın anında açılma özelliğinin karşılığı olarak istendi.
Aynı kararın ikinci yüzü kapsamda. Sipariş, ödeme ve stok katmanı menüde hiç yok ve bu, aynı hız kararının parçası: her katman ilk açılışa yeni bir bağımlılık ekler ve eklenen bağımlılık en çok zayıf bağlantıda hissedilir.
Kiosk aynı eşiğe öbür uçtan cevap veriyor. İçerik mağazanın kendi cihazında durduğu için ziyaretçinin bağlantısına hiç bağımlı değil; ekran yoğun saatte de aynı hızda açılıyor. İki iş de aynı özelliği koruyor, ama biri sayfayı hafifleterek, öbürü bağlantıyı denklemden çıkararak.
Bölüm adresleme: geçişin gerçekten eklediği tek davranış
Buraya kadar anlatılan her şey koruma. Bölümleri ayrı adreslenen QR menüde ise geçişin gerçekten kazandırdığı bir davranış var.
Menünün her bölümü kendi adresini taşıyor. Masalara ve vitrine basılan kodlar birbirinden farklı; hepsi aynı tek sayfayı açıyor ama okuyanı sayfanın kendi bölümünde başlatıyor. Vitrindeki kod, önünde durulan ürün grubunu açıyor; masadaki kod başka bir bölümü. Bir bölümün bağlantısı paylaşıldığında karşı taraf da aynı noktada başlıyor, sayfanın başından aşağı inmesi gerekmiyor.
Bölüm adresleme baskı tarafında da bir karar istiyor. Kodlar basılmadan önce hangi kodun hangi bölümü açacağı belirleniyor; vitrindeki kod ile masadaki kodun farklı olması kurgunun kendisi. Tek tip kod bastırmak daha kolay olurdu ve sayfa yine açılırdı, ama kazanılan tek davranış da orada kaybolurdu.
Basılı menüde bunun karşılığı yok. Her nüsha aynı kapakla açılır; kâğıt, okuyanın nereden başlayacağını seçemez. Nüshaları birbirinden farklılaştırmak ayrı baskılar demek olurdu ve tezgâhın önünde duran kişiye göre değişen bir kâğıt hiç kimsenin işletmeye kalkışmayacağı bir düzen.
Geçişten çıkan yeni davranış bir bölüm adreslemeyle sınırlı. Geri kalan her şey kâğıdın zaten yaptığı işi sürdürüyor: menü seçenekleri gösteriyor, kiosk gamı anlatıyor, kartvizit iletişim bilgisini taşıyor. Beklentiyi buraya oturtmak, geçişin sonucunu ölçülebilir kılıyor. Kazanç abartıldığında ilk kaybedilen şey ölçüt oluyor.
İşi aşan katman geçişi güçlendirmez
Geçişi zayıflatan şey çoğu zaman eksik değil, fazla. Kasap menüsünde sipariş, ödeme ve stok katmanı bilinçli olarak yok. Kâğıt menünün gördüğü iş seçenekleri göstermek; sipariş de ödeme de kâğıdın hiç görmediği işler. Eklenmeleri iki bedel getirirdi. Birincisi teknik: ilk açılışa yeni bağımlılıklar biner ve zayıf bağlantıdaki okuyucu bunu doğrudan hisseder. İkincisi işletmeye ait: tezgâhın arkasındaki kişinin önüne, gün içinde bakılması gereken yeni bir sistem çıkar.
Kioskta aynı karar veri tarafında verildi. Basılı broşür ziyaretçiden hiçbir şey istemiyordu. Ekrana bir iletişim formu eklemek, broşürün hiç sormadığı bir soruyu araya sokardı ve “yürü, dokun, bak” eşiğini yükseltirdi. Ziyaretçi hiçbir kişisel veri bırakmadan geziniyor; bunu teknik bir kısıt zorlamıyor, kâğıdın özelliğine sadık kalma kararı getiriyor.
Kapsam kararını veren soru tek: bu katman kâğıdın gördüğü işin içinde mi, dışında mı? İçindeyse yazılım onu devralır. Dışındaysa ayrı bir karardır ve kendi ölçütleriyle verilmelidir; geçişin yanına iliştirilmez. Bu ayrımı yapmayan projelerde geçiş genişledikçe asıl işi taşıyan kısım da yavaşlar. Sipariş katmanı yüzünden geç açılan bir menü, seçenekleri göstermeyi kâğıttan daha kötü yapar.
Kapsam sorusunun tersi de doğru. Kâğıdın gördüğü işin bir parçası yazılıma taşınmadan kalırsa geçiş yarım kalıyor ve eksik parça kâğıtta yaşamaya devam ediyor. Kioskta gam ekranda dururken fiyat listesi masada basılı kalsaydı, ziyaretçi iki kaynağa birden bakmak zorunda kalırdı. Geçişin tam olması, işin tamamının tek yerde toplanmasını gerektiriyor.
Ölçüt sonunda üç soruya iniyor ve üçü de okuyanın tarafından soruluyor. Sayfa hemen geldi mi? Bir şey indirmesi gerekti mi? Karşılığında bir şey vermesi istendi mi? Cevaplar kâğıttakiyle aynıysa geçiş tutmuştur; biri bile ayrışıyorsa kâğıt hâlâ daha iyi bir araçtır.