← Previous · All Episodes · Next →
Sunucu Tabanlı Yazılımların Geleceği: Fırsatlar ve Riskler (The Other Road Ahead) Episode 158

Sunucu Tabanlı Yazılımların Geleceği: Fırsatlar ve Riskler (The Other Road Ahead)

· 01:26:13

|
"Paul Graham'ın 2001’de yazdığı bu makale, bir sonraki yazılım neslinin büyük olasılıkla sunucu tabanlı olacağını ve bunun programcılar ve startuplar için ne anlama geleceğini tartışıyor. Graham, sunucu tabanlı yazılımın geliştirilmesini ve dağıtılmasını daha ucuz ve daha kolay hale getireceğini, kullanıcıların yazılımı herhangi bir web tarayıcısından kullanabilmesini sağlayacağını ve yazılımın sürekli olarak geliştirilebileceğini belirtiyor. Ayrıca, Graham bu modelin büyük teknoloji şirketleri için bir tehdit oluşturduğunu ve küçük startupların bu durumdan yararlanabileceğini savunuyor.

---

# Sunucu Tabanlı Yazılımların Geleceği: Fırsatlar ve Riskler (The Other Road Ahead)

Eylül 2001

_(Bu makale, gelecek nesil yazılımların büyük bir kısmının neden sunucu tabanlı olacağını, bu durumun yazılımcılar için ne anlama geldiğini ve bu yeni yazılım türünün neden girişimler için büyük bir fırsat olduğunu açıklıyor. Makale, BBN Labs'ta verilen bir konuşmadan türetilmiştir.)_

1995 yazında, arkadaşım Robert Morris ile birlikte bir startup kurmayı planladık. O sıralar Netscape'in halka arzı için yapılan PR kampanyası tüm hızıyla devam ediyordu ve online ticaret hakkında basında çokça konuşuluyordu. O zamanlar web üzerinde el yapımı olan yalnızca 30 tane gerçek mağaza vardı. Eğer online mağazaların sayısı artacaksa, bunları yapmak için bir yazılıma ihtiyaç duyulacaktı. Bu yüzden biz de böyle bir yazılım yapmaya karar verdik.

İlk bir hafta boyunca, bunun normal bir masaüstü uygulaması olmasını planlıyorduk. Ama bir gün aklımıza bir fikir geldi: yazılımı web sunucumuzda çalıştırıp, tarayıcıyı kullanarak erişebilir hale getirebiliriz. Yazılımı web üzerinde çalışabilecek şekilde yeniden kodlamayı denedik ve bir şey çok netti: bu, gitmemiz gereken yol. Eğer yazılımı sunucuda çalışacak şekilde tasarlarsak, hem kullanıcılar hem de bizim için işler çok daha kolay hale gelecekti.

Bu durum gerçekten iyi bir plan oldu. Şimdi, Yahoo Store olarak bilinen bu yazılım, yaklaşık 14.000 kullanıcısıyla en popüler online mağaza yaratma platformu oldu.

Viaweb'i başlattığımızda, yazılımın sunucuda çalıştığını söylediğimizde kimse ne demek istediğimizi anlamıyordu. Hotmail bir yıl sonra çıktığında, insanlar ne demek istediğimizi anlamaya başladı. Artık herkes bunun geçerli bir yöntem olduğunu kabul ediyor. Artık bizim ne olduğumuzun bir adı var: Uygulama Servis Sağlayıcısı, yani ASP.

Bence, yeni nesil yazılımların büyük çoğunluğu bu modelle yazılacak. En çok kaybedecek olan Microsoft bile, bazı işlemlerin masaüstünden çıkarılıp başka bir platforma taşınmasının kaçınılmaz olduğunu görmeye başladı gibi görünüyor. Eğer yazılımlar masaüstünden ayrılıp sunuculara taşınırsa, bu, yazılım geliştiricileri için tamamen farklı bir dünya anlamına gelecek. Bu yazıda, bu yeni dünyanın ilk ziyaretçilerinden biri olarak gördüğümüz şaşırtıcı şeyleri anlatıyoruz. Eğer yazılımlar sunuculara taşınırsa, burada anlattığımız şey geleceğin bir parçası olacak.

**Sıradaki Ne?**

Masaüstü yazılım dönemini geride bıraktığımızda, tıpkı ilk otomobil sahiplerinin yaşadığı garip zorlukları bugün hayretle anımsadığımız gibi, insanların göğüs gerdiği rahatsızlıkları da hayretle anımsayacağız. İlk otomobilin çıkışından sonraki yirmi ya da otuz yıl, bir otomobil sahibi olabilmek için neredeyse bir otomobil uzmanı olmak gerekiyordu. Ancak otomobiller o kadar büyük bir yenilikti ki, otomobil uzmanı olmayan birçok kişi de bir an önce otomobil sahibi olmak istiyordu.

Bilgisayarlar şu anda tam bu evrede. Masaüstü bir bilgisayara sahip olduğunuzda, aslında içinde ne olduğunu çok daha fazla öğrenmek zorunda kalıyorsunuz. Ancak ABD'deki hanelerin yarısından fazlasında bir bilgisayar var. Annem, e-postalarını kontrol etmek ve hesaplarını düzenlemek için bir bilgisayar kullanıyor. Yaklaşık bir yıl önce, Apple'dan işletim sisteminin yeni bir sürümü için indirim teklifi aldığında oldukça şaşırmıştı. Bir kadın, sadece e-postalarını kontrol etmek ve hesaplarını düzenlemek için bilgisayarını kullanırken, neden yeni bir işletim sistemi kurmayı düşünmek zorunda kaldığını düşününce, bir yerlerde bir şeylerin ters gittiğini anlamalıyız. Aslında, sıradan kullanıcıların bile ""işletim sistemi"", ""cihaz sürücüsü"" ya da ""yama"" gibi terimleri bilmesi gerekmemesi lazım.

Artık kullanıcıların sistem yöneticisi olmalarını önleyecek başka bir yazılım dağıtım yöntemi var. Web tabanlı uygulamalar, web sunucularında çalışan ve kullanıcı arayüzü olarak web sayfalarını kullanan programlardır.Gelin, yeni bir dünyaya doğru bir yolculuğa çıkalım. Bu dünya, sıradan bir kullanıcı için yazılım deneyimini tamamen değiştiriyor. Masaüstü yazılımların yerini alan bu yeni nesil yazılımlar, daha kolay, daha ucuz, daha taşınabilir, daha güvenilir ve genellikle daha güçlü olacak.

Web tabanlı yazılımlarla birlikte, çoğumuz sadece kullandığımız uygulamaları düşünmek zorunda kalacak. Tüm karmaşık ve sürekli değişen detaylar, bir yerlerdeki bir sunucuda, bu işi en iyi yapan kişiler tarafından yönetilecek. Bu yüzden genellikle yazılım kullanmak için direkt bir bilgisayara ihtiyaç duymayacaksınız. Tek ihtiyacınız olan bir klavye, bir ekran ve bir web tarayıcısına sahip bir cihaz olacak. Belki bu cihazın kablosuz internet erişimi de olabilir. Hatta belki de bu cihaz aynı zamanda cep telefonunuz olabilir. Her ne olursa olsun, bu bir tüketici elektroniği ürünü olacak: yaklaşık 200 dolarlık bir fiyat etiketi olan ve insanların çoğunlukla dış tasarımına göre seçtiği bir ürün. Donanımdan çok, tıpkı telefonlarda olduğu gibi, internet hizmetleri için daha fazla ödeme yapacaksınız.

Bir tıklamanın sunucuya ulaşıp geri gelmesi sadece onda bir saniye alır. Yani Photoshop gibi yoğun etkileşimli programları kullananlar, hala hesaplamaların masaüstünde yapılmasını isteyecekler. Ancak çoğu insanın bilgisayar kullanım biçimini düşünürsek, onda bir saniyelik bir gecikme büyük bir sorun olmayacak. Örneğin annem aslında masaüstü bir bilgisayara hiç ihtiyaç duymuyor ve onun gibi birçok kişi var.

**Kullanıcılar İçin Kazanç**

Evime yakın bir yerde ""rahatsızlık çekmektense ölürüm"" yazan bir araba var. Çoğu zaman, insanlar en az çaba gerektiren seçeneği tercih ederler. Eğer web tabanlı yazılımlar başarılı oluyorsa, bunun nedeni daha pratik olmalarıdır. Ve görünüşe göre, bu durum hem kullanıcılar hem de geliştiriciler için geçerli.

Tamamen web tabanlı bir uygulama kullanmak istiyorsanız, tek ihtiyacınız olan şey internete bağlı bir tarayıcı. Yani web tabanlı bir uygulamayı istediğiniz yerde kullanabilirsiniz. Ancak masaüstü bilgisayarınıza bir yazılım yüklerseniz, bunu sadece o bilgisayarda kullanabilirsiniz. Daha da kötüsü, dosyalarınız o bilgisayarda mahsur kalır. Bu durumun ne kadar sinir bozucu olduğu, insanlar ağlara alıştıkça daha da belirgin hale geliyor.

İşin püf noktası, web tabanlı e-postaydı. Şimdi milyonlarca insan, e-postalarınıza nerede olursanız olun ulaşabilmeniz gerektiğini biliyor. Eğer e-postalarınızı her yerden görüntüleyebiliyorsanız, neden takviminizi de görmeyesiniz ki? Meslektaşlarınızla bir belge üzerinde konuşabiliyorsanız, neden onu düzenlemeyin ki? Verilerinizin neden uzak bir masada duran bir bilgisayarın içinde hapsolması gereksin ki?

""Kendi bilgisayarın"" kavramı gitgide kayboluyor ve yerini ""kendi verilerin"" alıyor. Verilerine ister bir bilgisayar, isterse başka bir istemci cihazdan ulaşabilmelisin. Üstelik bu istemcinin mutlaka bir bilgisayar olması da gerekmiyor.

Müşterilerin veri saklamaması gerektiğini düşünüyorum; onlar telefonlar gibi olmalılar. Hatta belki de birer telefon olabilirler ya da tam tersi. Ve cihazlar küçüldükçe, verilerinizi bunlarda saklamamak için başka bir neden daha var: yanınızda taşıdığınız bir şeyi kaybedebilir veya çalınabilir. Cep bilgisayarınızı bir takside unutmak, disk çökmesine benzer bir durum yaratır; tek fark, verilerinizin yok olmak yerine başkasına geçiyor olmasıdır.

Tamamen web tabanlı bir yazılımla çalışırken, ne verileriniz ne de uygulamalarınız bilgisayarınıza kaydedilir. Bu yüzden, onu kullanabilmek için bilgisayarınıza herhangi bir şey yüklemenize gerek kalmaz. Kurulum olmadığı için, kurulum esnasında bir sorun çıkma ihtimali de ortadan kalkar. Yazılımınızla işletim sisteminiz arasında bir uyumsuzluk olması da mümkün değildir çünkü yazılımınız direkt olarak işletim sisteminizde çalışmaz.

Kurulum gerektirmemesi, web tabanlı bir yazılımı ""satın almadan"" önce denemeyi hem kolay hem de yaygın kılar. Web üzerinden sunulan herhangi bir uygulamanın ücretsiz deneme sürümünü, sadece o uygulamanın sunulduğu siteye giderek deneyimlemeniz beklenir.Bizim Viaweb sitemiz, tam bir ""dev ok"" gibi çalışıyor. Bu, tüm siteyi ücretsiz deneme sürümüne yönlendirerek, kullanıcıların ne kadar harika bir deneyim yaşayabileceklerini görmelerini sağlıyor. 

Deneme sürümünü tamamladıktan sonra, servisimize kaydolmanız gereken tek şey, kısa bir formu doldurmak. (Form ne kadar kısa olursa, o kadar iyi, değil mi?) Ve bu, yapmanız gereken son işlem olmalı. Web tabanlı yazılımlarla, ekstra ödeme yapmanıza, herhangi bir çaba sarf etmenize veya belki de bilgi sahibi olmanıza bile gerek kalmadan, her zaman en yeni sürümleri alabilirsiniz.

Yazılım güncellemeleri artık bugünkü gibi büyük bir şok olmayacak. Zaman içinde uygulamalar, fark edilmeden daha güçlü hale gelecek. Bu, geliştiricilerin biraz çaba sarf etmesini gerektirecek. Yazılımlarını kullanıcıları şaşırtmadan nasıl güncelleyeceklerini düşünmeleri gerekecek. Evet, bu yeni bir sorun ama çözüm yolları var.

Web tabanlı uygulamalarla herkes aynı sürümü kullanır ve bir hata bulunduğu anda hemen düzeltilir. Bu yüzden web tabanlı yazılımların, masaüstü yazılımlara göre çok daha az hata içermesi beklenir. Viaweb'de, bir anda ondan fazla hata bulduğumuz hiç olmamıştır. Bu, masaüstü yazılımlarla kıyaslandığında inanılmaz bir fark.

Web tabanlı uygulamalar, aynı anda birden fazla kişi tarafından kullanılabilir. Bu durum, iş birliği yapan uygulamalar için tartışmasız bir avantajdır. Ancak kullanıcıların, böyle bir özelliğin mümkün olduğunu fark ettiklerinde, bunu çoğu uygulamada da arayacaklarına inanıyorum. Örneğin, aynı belge üzerinde iki kişinin çalışmasına izin vermek genellikle oldukça yararlı olacaktır. Viaweb, birden fazla kullanıcının aynı anda bir site üzerinde çalışmasına izin verdi. Bu durum, yazılımı doğru bir şekilde yazmanın doğal bir sonucuydu. Ancak beklenmedik bir şekilde birçok kullanıcının bu özelliği istediğini gördük.

Web tabanlı bir uygulama kullandığınızda, verilerinizin güvende olacağını söyleyebilirim. Disk çökmeleri belki tarih olmayacak ama kullanıcılar artık bunları duymayacak. Çünkü bu sorunlar artık sunucu çiftliklerinde yaşanacak. Ayrıca, web tabanlı uygulamalar sunan şirketler gerçekten yedekleme yapacaklar. Çünkü hem gerçek sistem yöneticileri bu tür durumları önemseyecek hem de kullanıcıların verilerini kaybeden bir hizmet sağlayıcısı büyük sıkıntıya düşecektir. Kendi verilerini bir disk çökmesinde kaybeden insanlar çok sinirlenemez çünkü aslında suçlu kendileridir. Ancak bir şirket onların verilerini kaybettiğinde, işte o zaman gerçekten sinirlenirler.

Ve son olarak, web tabanlı yazılımların virüslere karşı daha az hassas olması gerektiğini de belirtmeliyim. Eğer bilgisayarınızda sadece bir tarayıcı çalışıyorsa, virüs bulaşma ihtimali daha düşüktür ve yerelde zarar görebilecek bir data da yoktur. Ayrıca, sunuculara saldırmayı hedefleyen bir programın, bu sunucuların çok iyi savunulduğunu fark etmesi gerekir.

Kullanıcılar için, web tabanlı yazılımlar _stresi azaltacak._ Bence, eğer ortalama bir Windows kullanıcısının zihnine girip bakabilseydik, bu tarife uyan yazılımlara karşı büyük ve hala kullanılmamış bir istek bulurduk. Bu potansiyel, serbest bırakıldığında, güçlü bir etkiye dönüşebilir.

**City of Code**

Yazılım geliştiriciler için, web tabanlı ve masaüstü yazılımlar arasındaki en büyük fark, web tabanlı bir uygulamanın tek bir kod bloğu olmamasıdır. Aksine, bu bir dizi farklı türde programın bir araya gelmesi anlamına gelir. Dolayısıyla web tabanlı yazılım tasarlamak, bir binayı tasarlamaktan ziyade bir şehri tasarlamaya benzer. Çünkü bir şehir inşa ederken sadece binalarla değil, aynı zamanda yollar, sokak tabelaları, alt yapı hizmetleri ile polis ve itfaiye gibi acil durum hizmetleriyle de ilgilenmeniz gerekiyor.Şimdi, **Viaweb** hikayesinin biraz daha derinine inelim. Bu hikaye sadece bir yazılım hikayesi değil, aynı zamanda bir teknoloji macerası. Viaweb'deki yazılım, kullanıcıların doğrudan iletişim kurdukları büyük uygulamalar, bu uygulamaların kullandığı programlar, arka planda sürekli çalışıp sorunları tespit eden programlar, arızalı şeyleri yeniden başlatma işlevi olan programlar, ara sıra istatistik derlemek veya aramalar için indeks oluşturmak için çalışan programlar ve daha birçok şeyi içeriyordu. 

Bu hikaye sadece yazılımla sınırlı kalmadı. Sunucu konfigürasyonları üzerinde oldukça fazla zaman geçirdik. Sunucuları, parça parça, kendimiz inşa ettik - hem para tasarrufu yapmak hem de tam olarak istediğimiz özelliklere sahip sunucuları elde etmek için. Internet servis sağlayıcımızın tüm ağ bağlantılarına yeterince hızlı bir şekilde erişip erişemeyeceğini düşünmemiz gerekti. Ard arda farklı RAID sağlayıcılarıyla görüştük.

Ancak donanım sadece dert edilecek bir şey değil. Kontrol sizde olduğunda kullanıcılarınıza daha çok şey sunabilirsiniz. Masaüstü bir uygulamada belirli bir minimum donanım belirleyebilirsiniz ama fazlasını ekleyemezsiniz. Eğer sunucuları yönetiyorsanız, gerekli donanımı kurarak, kullanıcılarınıza bir anda mesaj atma, faks gönderme, telefonla komut verme ya da kredi kartı işlemleri yapma gibi özellikleri sunabilirsiniz. 

Web tabanlı bir uygulamada yazılım, tek bir ikili dosya yerine çeşitli programlardan oluşur. Bu da demek oluyor ki, bu programları dilediğiniz dilde yazabilirsiniz. Masaüstü yazılım yazarken, genellikle işletim sisteminin dilinde yazmak zorunda kalırsınız, yani C ve C++. Bu nedenle, özellikle teknik olmayan kişiler (yöneticiler, risk sermayedarları vb.) arasında C ve C++'nın ""ciddi"" yazılım geliştirme dilleri olduğu bir algı oluşmuştur. Ancak bu, sadece masaüstü yazılımların teslim edilme şeklinden kaynaklanan bir durum. Sunucu tabanlı yazılımlar için istediğiniz dili kullanabilirsiniz.

Sunucu tabanlı yazılımla, hangi dili kullanacağınızı belirlemekte tamamen özgürsünüz. Kontrol sizde, donanıma kadar her şeyi yönetiyorsunuz. Her dilin farklı görevlerde iyi olduğunu biliyoruz ve her birini en uygun olduğu yerde kullanabilirsiniz. Rakipleriniz varsa, ""yapabilirsiniz"" demek aslında ""yapmanız gerekir"" demektir. Bu konuya daha sonra tekrar döneceğiz.Çünkü bu fırsatı kaçırırsan, rakiplerinin senin yerine kullanacağını unutma!

Rakiplerimizin çoğu C ve C++ kullanıyordu. Bu, yazılımlarının kalitesini düşürüyordu çünkü CGI scriptlerin karmaşıklığıyla başa çıkacak bir çözüm bulamıyorlardı. Bir şeyi değiştirmek istediklerinde, tüm değişiklikleri bir sayfada, altta bir ""Güncelle"" butonu ile yapmak zorunda kalıyorlardı. Ama biz, hala bir araştırma dili olarak görülen Lisp'i kullanarak, Viaweb editörünün masaüstü yazılımlar gibi davranmasını sağladık.

**Yayınlar**

Bu yeni dünyada, yazılım sürümlerini nasıl yayınladığımız en önemli değişikliklerden biri. Masaüstü yazılım sektöründe, bir sürüm yayınlamak, tüm şirketin tek bir devasa kod parçasını zorlukla yayınladığı, stresli ve yorucu bir süreç olur. Bu süreç ve sonuçta ortaya çıkan ürün, hemen hemen herkesin aklına çarpıcı benzetmeler getirebilir.

Sunucu tabanlı bir yazılımda değişiklik yapmak, kendi yazılımınızı düzenler gibi kolaydır. Yazılımı, nadiren gerçekleşen büyük güncellemeler yerine, sürekli ve küçük adımlarla güncellersiniz. Ortalama bir masaüstü yazılım firması yılda bir ya da iki güncelleme yapar. Ama biz Viaweb'de, günlük olarak üç ila beş güncelleme yapardık.

Bu yeni modele geçtiğinizde, yazılım geliştirmenin ne kadar çok yayınlanma şekliyle etkilendiğini anlarsınız. Masaüstü yazılım işinde karşılaştığınız en tatsız problemlerden birçoğu, yayınların felaket etkisi yaratan doğasından dolayıdır.

Yılda sadece bir kez yeni sürüm çıkardığınızda, hatalarla genellikle toptan olarak başa çıkarsınız. Yeni sürümün çıkış tarihinden bir süre önce, kodların yarısının yerine yenisini koyarak sayısız hata oluşturduğunuz bir sürüm hazırlarsınız. Sonra bir Kalite Kontrol ekibi devreye girer, hataları saymaya başlar ve programcılar bu listeyi kullanarak hataları düzeltirler. Ama genellikle liste sonuna kadar ulaşamazlar, hatta kimse gerçekten listenin sonunun nerede olduğunu bilmez. Bu durum, bir gölden çöp çıkarırmışçasına bir durumdur. Yazılımın içinde tam olarak neler olduğunu asla tam anlamıyla bilemezsiniz. En iyi ihtimalle, istatistiksel bir doğruluk elde edersiniz.

Sunucu tabanlı yazılım değişiklikleri genellikle küçük ve adımlı olur. Bu, hataların oluşma ihtimalini azaltır. Yazılımı yayınlamaya hazırlandığınızda en dikkatli olmanız gereken şey, en son neyi değiştirdiğinizi bilirsiniz. Bu sayede kod üzerinde daha sıkı bir kontrol sahibi olursunuz. Genel bir kural olarak, kodun içerisinde ne olduğunu bilirsiniz. Tabii ki, kaynak kodunu ezbere bilmiyoruz, ama kodu okurken, gizemli bir durumu çözen bir dedektif gibi değil, gösterge panelini tarama yapan bir pilot gibi okuruz.

Masaüstü yazılımlar, hatalar konusunda belirli bir kadercilik yaratır. Bir sürü hata içeren bir şeyi piyasaya sürdüğünüzü biliyorsunuz ve bu durumu telafi etmek için mekanizmalar bile oluşturmuşsunuzdur (örneğin, yama sürümleri). O zaman birkaç hatayı daha neden umursayasınız ki? Bir süre sonra, bozuk olduğunu bildiğiniz tüm özellikleri yayınlamaya başlarsınız. Apple bu yılın başında tam olarak bunu yaptı. Yeni işletim sistemlerini yayınlama konusunda kendilerini baskı altında hissettiler, çünkü çıkış tarihi zaten dört kez ertelenmişti ve bazı yazılımlar (CD'ler ve DVD'ler için destek gibi) henüz hazır değildi. Peki çözüm ne oldu? Apple, eksik parçalar olmadan işletim sistemini yayınladı ve kullanıcılar bu eksik parçaları daha sonra yüklemek zorunda kaldılar.

Web tabanlı yazılımlarla, yazılımınızı tam çalışmadan önce yayınlamak zorunda kalmazsınız. İşler hale geldiği anda hemen kullanıma sunabilirsiniz.

Sektör tecrübesi olan bir kişi, ""Yazılımınızı çalışmadan yayınlamamanız güzel bir fikir ama ya belirli bir tarihe kadar yeni bir sürüm çıkarma sözü verdiyseniz?"" diye düşünebilir. Ancak web tabanlı yazılımlarla, böyle bir vaadde bulunmazsınız çünkü sürüm kavramı yok. Yazılımınız sürekli ve kademeli olarak değişir.Bazı değişiklikler diğerlerinden daha büyük olabilir, ama web tabanlı yazılım dünyasında bu değişikliklerin sürüm numaralarıyla ilgisi yok. 

Eğer Viaweb'in eski günlerini hatırlayan varsa, bu konuştuğumuz şey biraz tuhaf gelebilir. Çünkü o zamanlar sürekli yeni sürümler duyuruyorduk. Ama bu, tamamen PR amaçlıydı. Ticaret basınında öğrendiğimize göre, biz sürüm numaralarına odaklanıyorduk. Yani, sürüm numarasının ilk rakamı değiştiğinde, yani büyük bir güncelleme olduğunda, geniş kapsamlı bir haber yapardık. Ama ondalık noktadan sonraki rakam değiştiğinde, yani küçük bir güncelleme olduğunda, genellikle sadece bir paragraf ayırırdık.

Rakiplerimizin bazıları masaüstü yazılım sunuyordu ve gerçekten de sürüm numaraları veriyorlardı. Ve bu sürümler, bizim için onların ne kadar geride kaldıklarının bir kanıtı olmuştu. Onlar bu sürüm numaraları sayesinde bir sürü tanıtım alıyorlardı. Biz de bu fırsatı kaçırmak istemedik ve biz de yazılımımıza sürüm numaraları vermeye başladık. Biraz daha dikkat çekmek istediğimizde, son ""sürüm""den bu yana eklediğimiz tüm özelliklerin bir listesini çıkarıp, yazılımımıza yeni bir sürüm numarası eklerdik ve yeni sürümün hemen kullanılabilir olduğunu açıklayan bir basın bildirisi yayınlardık. İnanılmaz bir şekilde, hiç kimse bu durumu eleştirecek cesareti göstermedi.

Biz satın alındığımızda, bunu zaten üç kere yapmıştık ve bu yüzden 4. sürümdeydik. Eğer doğru hatırlıyorsam, 4.1 sürümündeydik. Viaweb'in Yahoo Store'a dönüşmesiyle, artık acil bir tanıtım ihtiyacı olmadığı için, yazılım gelişirken sürüm numaraları fikri sessizce kaldırıldı.

**Hatalar**

Web tabanlı yazılımın bir diğer önemli teknik avantajı, çoğu hatayı tekrar oluşturabilmenizdir. Kullanıcı verileri hemen elinizin altında, hard diskinizde. Eğer biri yazılımınızı bozarsa, masaüstü yazılımlarda olduğu gibi ne olduğunu tahmin etmek zorunda kalmazsınız. Kullanıcıyla telefonda konuşurken bile hatayı tekrar oluşturabilirsiniz. Hatta, uygulamanızda hataları fark eden bir kodunuz varsa, hata hakkında zaten bilgi sahibi olmuş olabilirsiniz.

Web tabanlı yazılımlar dur durak bilmeden kullanılır, bu yüzden her yaptığınız anında sorgulanır. Hatalar da hemen ortaya çıkar.

Yazılım şirketlerinin bazen kullanıcılarına kendi yazılımlarını hata ayıklama görevi verdikleri iddia edilir. Ve aslında ben tam da bunu savunuyorum. Web tabanlı yazılımlar söz konusu olduğunda, bu gerçekten de iyi bir plan oluyor çünkü hatalar daha az ve geçicidir. Yazılımınızı aşamalı olarak yayınladığınızda, baştan çok daha az hata ile karşılaşırsınız. Ve hataları tekrar edip, düzeltmeleri anında uyguladığınızda, hataların çoğunu hemen bulup düzeltebilirsiniz. Gerçekte, bir seferde hiç o kadar çok hata ile karşılaşmadık ki, resmi bir hata takip sistemine başvurmamız gereksin.

Elbette, değişiklikleri uygulamadan önce test etmeniz gerekiyor, böylece büyük hataların önüne geçmiş olursunuz. Kaçınılmaz olarak bazı ufak hatalar gözden kaçabilir, ancak bunlar genellikle belirsiz durumları içerir ve genellikle biri şikayet etmeden önce karşılaşan birkaç kullanıcıyı etkiler. Hataları hemen düzelttiğiniz sürece, ortalama bir kullanıcı için net etki, çok daha az hata olacaktır. Ortalama bir Viaweb kullanıcısının hiç hata ile karşılaştığını düşünmüyorum.

Yeni çıkan hataları düzeltmek, eski hatalara göre daha kolaydır. Henüz yazdığınız bir kodda bir hatayı bulmak genellikle hızlı olur. Hata çıktığında, çoğu zaman neyin yanlış olduğunu kodu bile incelemeden anlarsınız. Çünkü zaten bilinçaltınızda bu hatayı öngörmüş olabilirsiniz. Ancak altı ay önce yazdığınız bir kodda bir hatayı düzeltmek (yılda bir kez güncelleme yaparsanız bu ortalama bir durumdur) çok daha fazla emek ister. Ve kodu tam olarak anlamadığınız için, hatayı çözerken daha çirkin bir yol seçme veya daha fazla hata ekleyebilme olasılığı daha yüksektir. 

Hataları erken yakalarsanız, bileşik hatalarla daha az karşılaşırsınız. Bileşik hatalar, birbiriyle etkileşimde olan iki ayrı hatadır: Merdivenlerden inerken tökezlersiniz ve korkuluğa tutunmak istediğinizde korkuluk elinizde kalır. Bu tür hatalar, tek başlarına önemsiz olabilir, ancak bir araya geldiklerinde büyük bir sorun haline gelebilir. Bu yüzden, hataları teker teker düzeltmek yerine, onları birleşik olarak ele almak daha akıllıca bir yaklaşım olabilir.Yazılım dünyasında, bazı hatalar diğerlerine göre daha zor bulunur ve genellikle en kötü sonuçları doğurur. Geleneksel ""her şeyi boz ve sonra hataları süz"" yaklaşımı, genellikle çok sayıda bileşik hataya yol açar. Ancak, küçük değişikliklerle sunulan yazılımlar genellikle bu tür hatalardan kaçınır. Bu, zeminleri sürekli olarak temizlemek gibidir, böylece daha sonra bir şeye takılıp sorun yaratabilecek her türlü gevşek nesneyi ortadan kaldırırsınız.

İşte bu noktada, **fonksiyonel programlama** devreye giriyor. Bu teknik, yan etkilerden kaçınmayı içerir. Genellikle ticari yazılımlarda değil, araştırma makalelerinde daha çok karşılaşırsınız ama web tabanlı uygulamalar için oldukça işlevsel oluyor. Tüm programları tamamen fonksiyonel kodlarla yazmak zor olabilir, ama programınızın büyük bir kısmını bu şekilde yazabilirsiniz. Bu, yazılımınızın bu bölümlerinin testini kolaylaştırır, çünkü durumları yoktur ve sürekli olarak küçük değişiklikler yapıp test ettiğiniz bir durumda bu çok işinize yarar. Viaweb'in editörünün büyük bir kısmını bu tarzda yazdım ve script dilimiz olan RTML'i tamamen fonksiyonel bir dil yapmayı başardık.

Masaüstü yazılım işinde olanların inanması zor olsa da, Viaweb'de hatalar neredeyse bir oyun haline geldi. Çıkan hataların çoğu genellikle karmaşık durumlarla ilgili olduğu için, bu hatalarla karşılaşanlar genellikle yazılımı sonuna kadar zorlayan deneyimli kullanıcılardı. Deneyimli kullanıcılar hataları daha anlayışla karşılarlar, çünkü bu hatalar genellikle onların istediği bir özellik eklerken ortaya çıkar. Hatta hataların nadiren görülmesi ve genellikle karmaşık işlemler sırasında ortaya çıkması nedeniyle, deneyimli kullanıcılar genellikle bir hata bulduklarında gurur duyarlar. Destek hattını aradıklarında genellikle öfke yerine zafer hissi içindeler, sanki bize karşı bir puan kazanmış gibi.

**Destek**

Hataları tekrar etme yeteneğiniz olduğunda, müşteri hizmetlerine bakış açınız değişir. Çoğu yazılım firmasında, müşteri hizmetleri genellikle müşterileri tatmin etme yoludur. Ya bilinen bir hata hakkında sizinle görüşmek için ararlar ya da bir şeyi yanlış yapıyorlardır ve sizin hatayı çözmeniz gerekir. Her iki durumda da müşteriden çok fazla şey öğrenemezsiniz. Bu yüzden, müşteri hizmetleri taleplerini genellikle geliştiricilerden olabildiğince uzak tutmak istediğiniz bir sıkıntı olarak görürsünüz.

Viaweb'de işler böyle yürümüyordu. Viaweb'de destek hizmeti bedavaydı çünkü müşterilerimizden haber almak istiyorduk. Birisi bir problemle karşılaşırsa, bunu hemen öğrenip hatayı tekrar etmek ve düzeltmek istiyorduk.

Viaweb'de geliştiriciler her zaman müşteri hizmetleriyle sıkı bir iletişim içindeydiler. Müşteri hizmetleri ekibi, yazılımcıların sadece otuz metre ötesindeydi ve gerçek bir hata raporuyla her şeyi durdurabileceklerini çok iyi biliyorlardı. Hatta yönetim kurulu toplantısını bile bir kenara bırakıp ciddi bir hatayı çözmek için harekete geçerdik.

Destek hizmetlerine yaklaşımımız herkesi mutlu etti. Müşteriler çok memnun kaldı. Destek hattını aradığınızda bir haber elçisi gibi karşılandığınızı hayal edin. Müşteri hizmetleri ekibi de bu durumdan keyif aldı çünkü artık kullanıcılara gerçekten yardımcı olabiliyor, sadece onlara metin okumak yerine. Ve tabii ki yazılımcılarımız da memnun oldu çünkü artık hataları kendileri tekrar edebiliyor ve ikinci el, belirsiz hata raporlarını dinlemek zorunda kalmıyorlardı.

**Moral Yükseltici**

Yazılımı hemen kullanıma sunabilme yeteneği, insanı oldukça motive eder. İşe giderken aklıma gelen bir değişikliği hemen o gün yapabilme fikri beni her zaman heyecanlandırmıştır. Bu durum, daha büyük özellikler için de geçerliydi. Bir özelliği yazmak iki hafta sürse bile (genellikle daha uzun sürmezdi), bitirildiği anda yazılımdaki etkisini görebileceğimi biliyordum.

Eğer bir sonraki güncelleme için bir yıl beklemek zorunda kalsaydım, bu fikirlerin çoğunu belki de bir süreliğine rafa kaldırmış olurdum. Ancak, fikirlerin en güzel yanı, daha fazla fikir üretmeleridir.Bir şeyler yazmaya oturduğunuzda, bazen en iyi fikirlerin yolda ortaya çıktığını fark ettiniz mi? İşte yazılım da tam olarak böyle bir şey. Bir fikri hayata geçirmek için çalıştıkça, daha fazla fikirin akla gelme ihtimali artar. Bu yüzden, bir fikri rafa kaldırmak sadece o fikri değil, aynı zamanda onu uygulamanın yol açacağı tüm fikirleri de kaybetmek anlamına gelir. Aslında, bir fikri rafa kaldırmak, muhtemelen yeni fikirleri engeller. Yeni bir özellik düşünmeye başladığınızda, ertelediğiniz fikirlere göz ucuyla bakar ve ""ama bir sonraki güncelleme için yapmak istediğim çok yeni şey var"" diye düşünürsünüz.

Büyük şirketler genellikle özellikleri planlamakla meşgul olurlar. Viaweb'de bazen bu durum başımıza dert olurdu. Yatırımcılar ve analistler gelecekte ne planladığımızı sorduklarında, doğru cevap aslında herhangi bir planımızın olmadığı olurdu. İyileştirmek istediğimiz şeyler hakkında genel fikirlerimiz vardı, ama eğer nasıl yapacağımızı bilseydik zaten yapmış olurduk. Gelecek altı ay içinde ne yapacaktık? En büyük kazancı sağlayacak ne varsa onu yapacaktık. Bu cevabı verme cesaretini hiç gösterip göstermediğimi bilmiyorum, ama gerçek bu. Planlar, aslında ertelediğimiz fikirler için başka bir tabir. İyi bir fikir aklımıza geldiğinde, hemen hayata geçirirdik.

Viaweb'de olduğu gibi birçok yazılım şirketinde, çoğu kodun belirli bir sahibi vardı. Ancak bir şeye sahip olduğunuzda gerçekten ona sahip olurdunuz: bir yazılımın sahibinden başka kimse bir güncellemeyi onaylamak (veya hatta haberdar olmak) zorunda değildi. Hata yapmaya karşı tek koruma, meslektaşlarına aptal gibi görünme korkusuydu ve bu fazlasıyla yeterliydi. Belki de sadece rahatça kod yazmaya devam ettiğimiz izlenimini vermiş olabilirim. Evet, hızlı gidiyorduk, ama sunuculara yazılım yüklerken çok dikkatli düşünüyorduk. Ve dikkat etmek, yavaş hareket etmekten daha önemlidir. Dikkatli olduğu için, bir donanma pilotu, 40.000 lb ağırlığındaki bir uçağı, gece, dalgalanan bir uçak gemisi güvertesine 140 mil hızla daha güvenli bir şekilde indirebilirken, ortalama bir genç bir bageli keserken daha tehlikeli olabilir.

Bu yazılım yazma yöntemi tabii ki çift taraflı bir kılıçtır. Küçük bir ekip iyi, güvenilir programcılar için çok daha iyi çalışırken, orta düzeydeki programcılardan oluşan büyük bir şirket için pek işe yaramazdı, burada kötü fikirler genellikle komiteler tarafından değil, onları ortaya atan kişiler tarafından yakalanırdı.

**Brooks'un Tersi**

Neyse ki, web tabanlı yazılım daha az programcı gerektirir. Orta büyüklükteki bir masaüstü yazılım şirketinde çalıştım ve mühendislik bölümünde 100'den fazla kişi çalışıyordu. Bunların sadece 13'ü ürün geliştirmedeydi. Geri kalan hepsi güncellemeler, portlar vb. üzerinde çalışıyordu. Web tabanlı yazılımla, en fazla ihtiyacınız olan 13 kişi olurdu, çünkü güncelleme, port vb. yoktur.

Viaweb sadece üç kişi tarafından yazıldı. [7] Her zaman daha fazla kişi işe almak için baskı altındaydım, çünkü satın alınmak istiyorduk ve alıcıların sadece üç programcısı olan bir şirket için yüksek bir fiyat ödemekte zorlanacağını biliyorduk. (Çözüm: daha fazla kişi işe aldık, ama onlar için yeni projeler oluşturduk.)

Daha az programcıyla yazılım yazabildiğinizde, size sadece para değil, daha fazlasını da tasarruf ettirir. Fred Brooks'un _The Mythical Man-Month_ adlı eserinde belirttiği gibi, bir projeye insan eklemek genellikle onu yavaşlatır. Geliştiriciler arasındaki olası bağlantıların sayısı, grubun büyüklüğüyle üssel olarak artar. Grup ne kadar büyük olursa, yazılımlarının nasıl birlikte çalışacağı konusunda toplantılarda ne kadar çok zaman harcarlar ve beklenmedik etkileşimlerden dolayı ne kadar çok hata alırlar. Neyse ki, bu süreç tersine de işler: gruplar küçüldükçe, yazılım geliştirme üssel olarak daha verimli hale gelir. Viaweb'deki programcıların aslında bir toplantı yaptığını hatırlamıyorum.Birlikte öğle yemeğine giderken, ""Bu yazılım işi ne kadar da heyecan verici, değil mi?"" diye düşünmüş müydünüz hiç? Evet, belki de hiçbir zaman öyle bir şey söyleyemeyiz, ama bu işin içinde olanlar için gerçekten de öyle. 

Bir programcı olarak, biraz da sistem yöneticisi olmanız gerektiğini biliyoruz. Çünkü yazılımınızı barındırıyorsanız, sunucuları izleyen biri olmalısınız. Ve bunu en iyi yapabilecek kişi, yazılımı yazan kişidir. Viaweb'deki sistemimiz o kadar karmaşıktı ve o kadar sık değişiyordu ki, yazılım ve altyapı arasında kesin bir sınır yoktu. Bu sınırı belirlemek, tasarım seçeneklerimizi kısıtlardı. 

Her ne kadar bir gün (""birkaç ay içinde"") her şeyin yeterince stabil hale geleceğini ve sadece sunucular hakkında endişelenen birini işe alabileceğimizi umutsak da, bu hiç gerçekleşmedi. Ürünü hala aktif olarak geliştirdiğiniz sürece, bu durumun değişmeyeceğini düşünüyorum. 

Web tabanlı yazılım, yazdığınız, kontrol ettikten sonra eve gittiğiniz bir şey olmayacak. Bu canlı bir şeydir, şu anda sunucularınızda çalışıyor. Kötü bir hata sadece bir kullanıcının işlemini çökertmekle kalmaz, hepsini çökertebilir. Diskteki bazı verileri bozan bir hatanız varsa, onu düzeltmeniz gerekiyor. Ve böyle devam eder. Sunucuları her dakika izlemeniz gerektiğini (ilk yıl veya öylesine sonra) bulduk, ancak kesinlikle son zamanlarda değiştirdiğiniz şeyleri gözlemlemek istersiniz. Gece geç saatlerde kod yayınlamaz ve sonra eve gitmezsiniz.

**Kullanıcıları Gözlemlemek**

Sunucu tabanlı yazılımla, kodunuzla daha yakın temas halinde olabilirsiniz. Kullanıcılarınızla da daha yakın temas halinde olabilirsiniz. Intuit, perakende mağazalarda müşterilere kendilerini tanıtmak ve onları eve takip etmek için ünlüdür. Yazılımınızı ilk kez kullanan birini izlediyseniz, onları nelerin beklediğini bilirsiniz.

Yazılım, kullanıcıların ne yapacağını düşündüğü şeyi yapmalıdır. Ancak onları izleyene kadar kullanıcıların ne düşüneceği konusunda hiçbir fikriniz olamaz, bana inanın. Ve sunucu tabanlı yazılım, davranışları hakkında eşi görülmemiş bilgiler verir. Küçük, yapay odak gruplarına sınırlı değilsiniz. Her kullanıcının her tıklamasını görebilirsiniz. Ne bakacağınızı dikkatlice düşünmeniz gerekiyor, çünkü kullanıcıların gizliliğini ihlal etmek istemezsiniz, ancak en genel istatistiksel örnekleme bile çok yararlı olabilir.

Sunucunuzda kullanıcılarınız olduğunda, örneğin benchmark'lara güvenmek zorunda kalmazsınız. Benchmark'lar simüle edilmiş kullanıcılardır. Sunucu tabanlı yazılımla, gerçek kullanıcıları izleyebilirsiniz. Ne optimize edeceğinize karar vermek için, sadece bir sunucuya giriş yapın ve CPU'nun tümünü neyin tükettiğini görün. Ve ne zaman duracağınızı da biliyorsunuz: Viaweb editörünü sonunda bellek sınırlı hale getirdik ve kullanıcıların veri boyutunu azaltabileceğimiz bir şey olmadığından (iyi, kolay bir şey değil), orada durmanın daha iyi olduğunu biliyorduk.

Verimlilik, sunucu tabanlı yazılım için önemlidir, çünkü donanım için ödeme yapıyorsunuz. Sunucu başına destekleyebileceğiniz kullanıcı sayısı, sermaye maliyetinin bölenidir, bu yüzden yazılımınızı çok verimli hale getirebilirseniz, rakiplerinizi daha düşük bir fiyata satabilir ve yine de kar elde edebilirsiniz. Viaweb'de, kullanıcı başına sermaye maliyetini yaklaşık 5 dolara indirdik. Şimdi daha az olurdu, muhtemelen onlara ilk ayın faturasını gönderme maliyetinden daha az. Yazılımınız makul derecede verimliyse, donanım artık ücretsizdir.

Kullanıcıları izlemek, tasarım konusunda da size rehberlik edebilir. Viaweb'de RTML adında, ileri düzey kullanıcıların kendi sayfa stillerini tanımlamasına izin veren bir betik dili vardı. RTML'nin bir tür öneri kutusu haline geldiğini gördük, çünkü kullanıcılar sadece önceden tanımlanmış sayfa stilleri istediklerini yapamadığında onu kullanırdı.Editörlerin sayfanın üzerine düğme çubukları koyduğu günleri hatırlıyor musunuz? Ama sonra bir grup kullanıcı, düğmeleri sol tarafa taşımak için RTML'yi kullanmaya başladı ve bu, önceden tanımlanmış sayfa stillerinde bir seçenek haline geldi. İşte bu yüzden, kullanıcıları dikkatlice izlemek ve onların ne zaman sıkıntı yaşadıklarını anlamak çok önemli. Sonuçta, müşteri her zaman haklıdır, değil mi?

Viaweb'de, kullanıcıları çekmenin sırrı online deneme sürüşleriydi. Bu, sadece pazarlama insanları tarafından oluşturulan bir dizi slayt değildi. Kullanıcılar, gerçekten yazılımı kullanıyorlardı. Yaklaşık beş dakika sürer ve sonunda gerçek, çalışan bir mağaza kurarlardı. Bu deneme sürüşleri, neredeyse tüm yeni kullanıcıları elde ettiğimiz yoldu. Ve benzer bir şekilde, çoğu web tabanlı uygulama için de aynı olacağını düşünüyorum. Kullanıcılar bir deneme sürüşünü başarıyla tamamlayabilirlerse, ürünü severler. Eğer kafaları karışır veya sıkılırlarsa, sevmezler. Bu yüzden, deneme sürüşünden daha fazla insanın geçmesini sağlayabilecek her şey, büyüme oranınızı artırır.

Deneme sürüşünü yapan kişilerin tıklama izlerini inceledim ve belirli bir adımda kafalarının karıştığını ve tarayıcının Geri düğmesine tıkladıklarını buldum. (Web tabanlı uygulamalar yazmayı denerseniz, Geri düğmesinin en ilginç felsefi sorunlarınızdan biri haline geldiğini göreceksiniz.) Bu yüzden, o noktada kullanıcılara neredeyse bittiğini söyleyen ve Geri düğmesine tıklamamalarını hatırlatan bir mesaj ekledim. Web tabanlı yazılımla ilgili diğer harika bir şey de, değişikliklerden anında geri bildirim almanızdır: deneme sürüşünü tamamlayan kişi sayısı hemen %60'tan %90'a yükseldi. Ve yeni kullanıcı sayısı, tamamlanan deneme sürüşlerinin sayısına bağlı olduğundan, gelir büyümemiz %50 arttı, sadece bu değişiklikten dolayı.

**Para**

90'ların başında bir makale okumuştum ve orada biri yazılım işinin aslında bir abonelik işi olduğunu söylüyordu. İlk başta bu ifade oldukça sert ve alaycı gelmişti. Ancak daha sonra fark ettim ki bu, gerçekten de yazılım geliştirmenin sürekli devam eden bir süreç olduğunu çok iyi yansıtıyor. Bence, insanları sürekli yeni sürümler satın alıp yüklemeye zorlamak yerine, abonelik ücretlerini açıkça almak çok daha dürüst ve temiz bir yaklaşım. Ve şansımıza, web tabanlı uygulamalar için faturalandırma en doğal haliyle zaten abonelik şeklinde işliyor.

Uygulama barındırma, şirketlerin freeware'ın dolduramayacağı bir rol oynayacağı bir alandır. Bu iş çok stresli ve gerçek maliyetleri var. Kimse bunu bedava yapmak istemez.

Şirketler için, web tabanlı uygulamalar, ideal bir gelir kaynağıdır. Her çeyrek başında sıfır noktasından başlamak yerine, sürekli bir gelir akışınız olur. Yazılımınız sürekli ve yavaş yavaş geliştiği için, yeni bir modelin tutmayacağı konusunda endişelenmenize gerek kalmaz. Zaten spesifik bir 'yeni model' olmasına da gerek yoktur ve eğer kullanıcıların hoşuna gitmeyen bir güncelleme yaparsanız, tepkilerini hemen öğrenebilirsiniz. Alacaklarınızı tahsil etme konusunda da sorun yaşamazsınız; eğer bir müşteri ödeme yapmayacaksa, hizmeti sadece durdurabilirsiniz. Ve yazılım korsanlığı gibi bir riskiniz de olmaz.

Bu son ""avantaj"" aslında bir soruna dönüşebilir. Bir miktar korsan yazılım kullanımı, yazılım şirketlerine avantaj sağlar. Eğer bir kullanıcı gerçekten yazılımınızı hiçbir fiyata satın almazsa, korsan bir kopyasını kullanırsa hiçbir şey kaybetmezsiniz. Aksine, kazanırsınız çünkü bir kullanıcı daha yazılımınızı standart olarak benimsemiş olur ve belki liseyi bitirip iş hayatına atıldığında, bir gün yazılımınızın lisanslı bir kopyasını satın alır.

Şirketler, mümkün olduğunda, 'fiyat ayrımcılığı' yapmayı tercih ederler. Yani, her müşteriden alabilecekleri en yüksek tutarı alırlar. [8] Yazılım, fiyat ayrımcılığı için son derece uygun bir sektördür çünkü birim maliyeti sıfıra çok yakındır.Bazı yazılımların, Intel bilgisayarlarda çalıştırıldığında daha pahalıya mal olmasının sebebi ne olabilir? İşte cevabı: Sun bilgisayarlarda çalıştırıldığında, bu yazılımlar daha pahalı hale geliyor. Şaşırdınız mı? Sun bilgisayarları kullanan bir şirket, tasarruf etmekle ilgilenmediği için, bu yazılımları daha yüksek bir fiyata satın almak zorunda kalabilir. Kulağa garip geliyor olabilir, ancak bu aslında fiyat ayrımcılığının en alt basamağıdır. Yazılım şirketlerinin bunu anladığını ve belirli türlerdeki korsanlığa göz yumduğunu düşünüyorum. Ancak, sunucu tabanlı yazılımlarla, bu durumu düzeltmek için başka bir çözüm bulmak zorunda kalacaklar.

Web tabanlı yazılımlar, masaüstü yazılımlara göre daha çok satılıyor. Neden mi? Çünkü satın alması daha kolay. Belki de insanların önce bir şeyi satın almaya karar verdiklerini, sonra da satın aldıklarını düşünüyorsunuz. Ben de Viaweb'i kurmadan önce böyle düşünüyordum. Ancak gerçekte ikinci adım, birinciyi etkileyebilir. Yani, bir şeyin satın alınması zorsa, insanlar onu isteyip istemediklerini yeniden düşünebilirler. Tersi de geçerli: Satın alması kolay olan bir ürün daha çok satar. Amazon sayesinde daha çok kitap alıyorum. Web tabanlı yazılımı satın almak, özellikle online bir demo yaptıysanız, dünyada en kolay olan şeylerden biridir. Kullanıcının yapması gereken tek şey bir kredi kartı numarası girmektir. (Eğer onları daha fazla bir şey yapmaya zorlarsanız, bu riski siz üstlenirsiniz.)

Web tabanlı yazılımlar bazen internet servis sağlayıcıları tarafından yeniden satıcı olarak sunulur. Ancak bu pek iyi bir fikir değil. Sürekli olarak hem donanımı hem de yazılımı geliştirmeniz gerektiği için, sunucuların yönetimini sizin yapmanız gerekir. Sunucuların doğrudan kontrolünü bırakırsanız, web tabanlı uygulamaları geliştirmenin çoğu avantajını da kaybedersiniz.

Birçok rakibimiz bu türden hatalarla kendilerine zarar verdiler. Genellikle, bu durum büyük potansiyeli olan bir kanalı kontrol altına almak isteyen ve bu durumun, bu kanal aracılığıyla satmayı umdukları ürünü nasıl etkileyeceğini anlamayan iş insanları yüzünden oldu. ISS'ler üzerinden web tabanlı yazılım satmak, otomat makinesinden sushi satmaya benziyor.

**Müşteriler**

Peki, bu web tabanlı yazılımları kim kullanacak? Viaweb'de başlangıçta bireyler ve küçük şirketlerdendi ve bence web tabanlı uygulamalar söz konusu olduğunda bu kural genellikle geçerli olacak. Çünkü bu kullanıcılar, daha esnek oldukları ve yeni teknolojinin daha düşük maliyetlerini tercih ettikleri için, yeni şeyler denemeye her zaman hazır oluyorlar.

Web tabanlı uygulamalar genellikle büyük firmalar için de en iyisi olacak (gerçi bunu fark etmeleri biraz zaman alabilir). En iyi intranet, internetin ta kendisi. Eğer bir firma gerçekten web tabanlı uygulamaları kullanırsa, yazılımlar daha iyi çalışır, sunucular daha uygun bir şekilde yönetilir ve çalışanlar nerede olurlarsa olsunlar sisteme erişebilirler.

Bu yaklaşımın karşıt görüşündeki ana argüman genellikle güvenlikle ilgili: Eğer çalışanlar kolayca erişebiliyorsa, kötü niyetli kişiler de aynı kolaylıkla erişebilir. Birçok büyük satıcı, müşterilerin kredi kartı bilgilerinin kendi sunucularında daha güvenli olduğunu düşünerek Viaweb'i kullanmakta tereddüt etti. Bu durumu kibarca ifade etmek kolay olmasa da, aslında verilerin bizim elde, onlarınkinden çok daha güvende olduğunu rahatlıkla söyleyebiliriz. Güvenliği yönetmek için daha yetenekli kişileri kim işe alabilir? Tek işi sunucuları yönetmek olan bir teknoloji start-up'ı mı, yoksa bir giysi satıcısı mı? Sadece daha yetenekli kişilere sahip olmakla kalmayıp, biz güvenlik konusunda daha fazla endişe duyuyorduk. Eğer biri giysi satıcısının sunucularına sızsaydı, en fazla bir satıcıyı etkiler, belki olay örtbas edilir ve en kötü ihtimalle bir kişi işten atılırdı. Ama eğer biri bizim sunucularımıza sızarsa, bu binlerce satıcıyı etkileyebilir, büyük ihtimalle CNet'te haber olur ve hatta bizi işten atma riskiyle karşı karşıya bırakabilir.

Eğer paranızı güvende tutmak isterseniz, onu evinizde yatağınızın altında mı saklarsınız yoksa bir bankaya mı yatırırsınız? İşte bu mantık, sunucu yönetiminin her noktasına uygulanabilir.Güvenlik, sistem sürekliliği, bant genişliği, yük yönetimi, yedeklemeler... İşte bizim varoluş nedenimiz. Bu işlerin hepsini doğru yapmak için buradayız. Bizim için bir sunucu problemi, bir oyuncak üreticisi için tehlikeli bir oyuncak üretmek ya da bir gıda üreticisi için salmonella salgını kadar büyük bir sorun olabilir.

Büyük bir şirket, web tabanlı uygulamalar kullanarak aslında IT'yi dışarıya taşıyor. İlk duyduğunuzda korkutucu gelebilir, ama genel anlamda bu iyi bir fikir. Şirketler, kendi sistem yöneticilerinden daha iyi bir hizmet alabilirler. Çünkü sistem yöneticileri, rekabet baskısıyla doğrudan karşılaşmadıkları için zamanla asabi ve tepkisizleşebilirler. Bir satışçı, müşterilerle başa çıkmak zorundadır; bir yazılım geliştiricisi, rakiplerinin yazılımlarıyla mücadele etmek zorundadır; ama bir sistem yöneticisi, bir bekar gibi, onu düzgün bir çizgide tutacak pek az dış etkiye maruz kalır. Ancak Viaweb'de bizimle iletişime geçenler sadece iş arkadaşlarımız değil, müşterilerimizdi. Bir sunucu sıkıştığında hemen harekete geçerdik; yıllar sonra bile sadece bunu düşünmek bile adrenalinimi yükseltiyor.

Bu yüzden, web tabanlı uygulamalar genellikle büyük şirketler için en doğru çözüm olacaktır. Ancak, masaüstü bilgisayarlar konusunda olduğu gibi, bunu anlamaları biraz zaman alacak. Ve nedeni kısmen aynı: büyük şirketlere, daha pahalı bir şeye ihtiyaçları olduğunu ikna etmek büyük bir kazanç sağlayacak.

Zengin müşteriler genellikle, ucuz çözümler daha iyi olsa bile, pahalı çözümleri tercih eder. Nedeni ise pahalı çözümleri satan firmaların, bunları satmak için daha çok para harcayabilmesidir. Viaweb'de biz bununla sürekli mücadele ettik. Bir sürü yüksek kaliteli müşteriyi, kendi sunucularında özel hazırlanmış online mağaza için yarım milyon dolar ödemeleri gerektiğine ikna eden web danışmanlarına kaybettik. Ancak genelde, Noel alışveriş sezonu geldiğinde ve sunucularındaki yoğunluk arttığında, durumun daha iyi olmadığını fark ettiler. Viaweb, bu müşterilerin çoğunun sahip olduğundan çok daha gelişmiş bir çözüm sunuyordu, ama bunu onlara anlatacak maddi gücümüz yoktu. Ayda 300 dolar karşılığında, müşterilere sunum yapacak şık giysili ve otoriter bir ekip gönderme imkanımız yoktu.

Büyük şirketlerin ekstra ödeme yaptığı önemli bir pay, pahalı şeylerin onlara satılma maliyetidir. (Eğer Savunma Bakanlığı tuvalet kapağı için bin dolar ödüyorsa, bunun bir nedeni de bin dolarlık tuvalet kapağı satmanın maliyetidir.) Ve işte bu yüzden, muhtemelen kötü bir fikir olmasına rağmen, intranet yazılımı var olmaya devam edecek. Çünkü daha pahalı. Bu durum karşısında elinizden bir şey gelmez, bu yüzden en iyisi öncelikle daha küçük müşterileri hedeflemektir. Geri kalanı zamanla kendiliğinden gelecektir.

**Sunucunun Oğlu**

Sunucuda yazılım çalıştırmak aslında yeni bir şey değil. Hatta bu, eski modelin ta kendisi: ana bilgisayar uygulamaları hep sunucu tabanlıydı. Eğer sunucu tabanlı yazılım bu kadar iyi bir fikirse, neden daha önce tutunamadı? Neden masaüstü bilgisayarlar ana bilgisayarlara gölge düşürdü?

Masaüstü bilgisayarlar ilk çıktığında pek de tehdit gibi görünmüyordu. İlk kullanıcılar genellikle hackerlar ya da o dönemde 'hobici' olarak adlandırılan kişilerdi. Onlar, mikrobilgisayarları ucuz oldukları için tercih ediyorlardı. İlk kez kendi bilgisayarınız olabiliyordu. ""Kişisel bilgisayar"" ifadesi şimdi dilimize yerleşmiş durumda, ama ilk defa kullanıldığında, bugün ""kişisel uydu"" ifadesinin sahip olduğu türden bir cüretkarlık barındırıyordu.

Masaüstü bilgisayarlar neden bu kadar yaygınlaştı dersiniz? Bence, daha iyi yazılımları vardı. Mikrobilgisayar yazılımlarının neden daha iyi olduğunu sorarsanız, bence küçük şirketlerin de yazılım üretebilmesiydi.

Birçok kişinin, bir startup'ın en ilk aşamalarında ne kadar hassas ve belirsiz olduğunun farkında olmadığını düşünüyorum. Çoğu startup, neredeyse kazara başlar - ya işi olan ya da okulda olan birkaç kişi, eğer umut verici görünürse bir şirkete dönüşebilecek bir şeyin prototipini oluşturur.Bir startup'ın hayatı, yumurta aşamasında oldukça zorlu olabilir. Her adımda, her dönemeçte bir engel çıkabilir karşınıza. Örneğin, ana makine yazılımını yazmak... Bu, baştan sona büyük bir taahhüt gerektirir. Geliştirme makineleri pahalıdır ve müşterileriniz büyük olasılıkla büyük şirketler olacaktır. Onlara satmak için etkileyici bir satış ekibine ihtiyacınız olacaktır. Yani, bir startup kurmak, akşamları Apple II'nizde bir şeyler karalamaktan çok daha ciddi bir girişim olacaktır. Bu yüzden, ana makine uygulamaları yazan çok fazla startup ortaya çıkmıyor.

Ancak, masaüstü bilgisayarların piyasaya çıkışıyla birlikte, birçok yeni yazılım da hayatımıza girdi. Çünkü, yeni girişimler için bu bilgisayarlara uygulama yazmak, ulaşılabilir bir hedef olarak görünüyordu. Yazılım geliştirmek ucuzdu ve müşteriler, bilgisayar mağazalarına ya da hatta posta yoluyla bile ulaşabileceğiniz bireysel kişilerdi.

Masaüstü bilgisayarları ana akımın içine iten uygulama, ilk elektronik tablo olan VisiCalc'ti. Bu program, bir çatı katında çalışan iki kişi tarafından yazılmıştı, ama ana bilgisayar yazılımlarının yapamayacağı şeyleri yapıyordu. VisiCalc, o zamanlar öyle bir döküm yaptı ki, insanlar sadece onu kullanabilmek için Apple II alıyorlardı. Ve bu, bir trendin başlangıcıydı: startupların onlar için yazılım yazmasıyla, masaüstü bilgisayarlar galip geldi.

Şimdi ise, sunucu tabanlı yazılımların işe yarayacağı görünüyor, çünkü startuplar onları yazacak. Bilgisayarlar o kadar ucuz ki, bizim yaptığımız gibi, bir masaüstü bilgisayarı sunucu olarak kullanıp işe koyulabilirsiniz. Ucuz işlemciler iş istasyonu pazarını neredeyse tamamen yuttu ve şimdi de sunucu pazarına göz dikti; hatta internetin en yoğun yükünü taşıyan Yahoo'nun sunucuları bile, sizin masaüstü bilgisayarınızdakiyle aynı uygun fiyatlı Intel işlemcileri kullanıyor. Yazılımınızı bir kere yazdıktan sonra, onu satmak için tek ihtiyacınız olan bir web sitesi. Kullanıcılarımızın neredeyse tümü, basın referansları ve sözlü tanıtımlar sayesinde doğrudan web sitemize geldi.

Bizim hikayemiz, Viaweb adlı bir startup'ın hikayesi. Bir şirket kurmak bizim için korkutucuydu ve ilk birkaç ay boyunca, her şeyi istediğimiz an iptal edebileceğimiz bir deneymiş gibi düşünerek kendimizi rahatlattık. Neyse ki, karşımıza çıkan engellerin çoğu teknikti. Yazılımı yazarken, web sunucumuz geliştirme için kullandığımız masaüstü bilgisayardı ve bir dial-up bağlantı aracılığıyla dış dünyaya bağlıydı. Bu dönemdeki tek masraflarımız yiyecek ve kiraydı.

Şimdi, startup'ların web tabanlı yazılım geliştirmeleri için daha çok sebep var, çünkü masaüstü yazılım yazmak artık oldukça sıkıcı bir hale geldi. Eğer hala masaüstü yazılım yazmak istiyorsanız, bunu Microsoft'un belirlediği şartlarda, onların API'lerini kullanarak ve hatalı işletim sistemlerinin etrafından dolanarak yapmak zorundasınız. Ve eğer yazdığınız uygulama popüler olursa, aslında sadece Microsoft için pazar araştırması yaptığınızı fark edebilirsiniz.

Bir şirket, startupların üzerinde inşa edeceği bir platform yaratmak istiyorsa, bunun hackerların kendilerinin de kullanmak isteyeceği bir şey olması gerekiyor. Yani bu platform ucuz ve iyi tasarlanmış olmalı. Mac, ilk çıktığı zamanlarda hackerlar arasında oldukça popülerdi ve birçokları onun için yazılım yazdı. Windows ile bu durumu pek görmüyoruz çünkü hackerlar genellikle Windows'u tercih etmiyorlar. Yazılım yazmayı iyi bilen insanlar genellikle şu sıralar Linux veya FreeBSD kullanıyorlar.

Masaüstü bir yazılım geliştirmek için bir startup kurmayı düşünmezdim çünkü masaüstü yazılımların Windows'ta çalışması gerekir ve Windows için bir yazılım geliştirebilmek için öncelikle onu kullanmak zorundayız. Fakat Web sayesinde, Windows'u devre dışı bırakıp Unix'te çalışan yazılımları doğrudan kullanıcılara tarayıcıları aracılığıyla sunabildik. Bu durum, 25 yıl önce kişisel bilgisayarların gelmesi gibi, gerçekten özgürleştirici bir duygu yaratıyor.

**Microsoft**

Masaüstü bilgisayarlar ilk çıktığında, IBM herkesin korktuğu devdi. Şimdi düşününce zor görünse de, o hissi çok iyi hatırlıyorum.Bugün sizlere, teknoloji devi Microsoft'un geleceğine dair düşüncelerimi paylaşmak istiyorum. Evet, doğru duydunuz, Microsoft. IBM'in başına gelenlerin aynısını yaşamamak için ellerinden geleni yapıyorlar. Sonuçta, Microsoft iş modelini, IBM'in gözden kaçırdığı bir alanda, bilerek ve isteyerek kurdu.

Daha önce annemin aslında bir masaüstü bilgisayara ihtiyaç duymadığını söylemiştim. Büyük ihtimalle çoğu kullanıcının da böyle bir ihtiyacı yoktur. Bu durum, Microsoft için bir problem ve bunun farkındalar. Eğer uygulamalar uzaktaki sunucularda çalışmaya başlarsa, kimseye Windows'a ihtiyaç kalmayacak. Peki Microsoft bu durumda ne yapacak? Masaüstüne olan hakimiyetlerini kullanarak bu yeni yazılım neslini engelleyebilirler mi, ya da en azından sınırlayabilirler mi?

Tahminim, Microsoft'un kontrol ettikleri sunucularla birlikte çalışacak şekilde, bir tür sunucu/masaüstü hibriti geliştireceği yönünde. En azından, dosyaları merkezi olarak kullanmak isteyen kullanıcılar için bu dosyalar erişilebilir olacak. Ancak Microsoft'un, istemci olarak sadece bir tarayıcıya ihtiyacınız olduğu ve tüm hesaplamaların sunucuda yapıldığı bir modeli tercih etmesini beklemiyorum; tabii ki bunu engelleyebilirlerse. Eğer bir istemci olarak sadece bir tarayıcıya ihtiyacınız varsa, istemci tarafında Microsoft'a ihtiyacınız yoktur ve eğer Microsoft istemciyi kontrol etmiyorsa, kullanıcıları kendi sunucu tabanlı uygulamalarına yönlendiremezler.

Microsoft'un durumu kontrol altına alması zor olacak. Kontrol etmeleri gereken çok fazla farklı türde müşteri olacak. Eğer Microsoft'un uygulamaları sadece bazı müşterilerle uyumlu çalışıyorsa, rakipler her müşteriye uyum sağlayabilen uygulamalar sunarak Microsoft'un bir adım önüne geçebilir.

Web tabanlı uygulamaların dünyasında, Microsoft için otomatik bir yer yok. Belki kendilerine bir yer açabilirler, ama masaüstü uygulamalar dünyasında olduğu gibi bu yeni dünyayı da domine edeceklerini sanmıyorum.

Sorunları, rakiplerinin onları tökezletmesi değil, kendi kendilerine çelme takmaları olacak. Web tabanlı yazılımların yükselişi ile sadece teknik sorunlarla değil, kendi hayal güçleriyle de yüzleşmek zorunda kalacaklar. Yapmaları gereken, mevcut işlerini kendi elleriyle parçalamak. Ancak bunu yapmaları pek olası görünmüyor. Bugüne kadar onları bu noktaya getiren tek yönlü düşünce artık onlara karşı çalışacak. IBM tam olarak aynı durumdaydı ve bu durumu yönetemedi. IBM, mikrobilgisayar işine geç girdi ve bu konuda pek de hevesli değildi çünkü ana bilgisayar işlerini, yani altın yumurtlayan tavuklarını tehdit etmek konusunda kararsızdılar. Microsoft da masaüstünü koruma isteği nedeniyle benzer şekilde sıkıntı yaşayacak. Altın yumurtlayan tavuk, sırtınızda oldukça ağır bir yük olabilir.

Sunucu tabanlı uygulamaları tamamen ele geçirecek biri olmayacağını demiyorum. Zamanla, muhtemelen biri bu konuda başarılı olacak. Ama bence, tıpkı mikrobilgisayarların ilk günleri gibi, uzun süre boyunca neşeli bir karmaşa dönemi yaşanacak. Bu dönem, girişimler için oldukça verimli bir zaman oldu. Bir sürü küçük şirket, harika ürünler yaparak patlama yaptı ve büyüdü.

**Start-Up'lar ve Dahası**

Klasik bir startup hızlı ve gayri resmi, az kişi ve az parayla yola çıkar. Bu az kişi çok çalışır ve teknoloji, verdikleri kararların etkisini büyütür. Eğer kazanırlarsa, büyük kazanırlar.

Bir startup'ta web tabanlı uygulamalar geliştirirken, start-up'larla ilişkilendirdiğiniz her şey bir başka boyuta taşınır. Daha az kişi ve daha az para ile bir ürün yazabilir ve piyasaya sürebilirsiniz. Daha hızlı olmanız gerekiyor ve daha samimi bir tarzda çalışabilirsiniz. Gerçekten de, bir dairenin oturma odasında oturan üç kişi olarak ve bir internet hizmet sağlayıcısında yer alan bir sunucu ile ürününüzü piyasaya sürebilirsiniz. Biz tam da bunu yaptık.

Zamanla ekipler daha küçük, daha hızlı ve daha rahat bir hale geldi. 1960'ta yazılım geliştirme, ince siyah kravatlı ve çerçeveli gözlüklü bir grup erkeğin IBM kodlama formlarında günde on satır kod yazdığı bir odayı ifade ediyordu. 1980'de ise, ofise kot pantolon giyerek gelen ve VT100'lere yazı yazan sekiz ila on kişilik bir ekip haline geldi.Bugün, bir oturma odasında laptoplarıyla rahatça oturan birkaç kişiye dönüştük. (Ve görünüşe göre, kot pantolon rahatlık konusunda son nokta değilmiş!)

Startup dünyası bazen oldukça stresli olabiliyor. Ve ne yazık ki, bu stres, web tabanlı uygulamalarla birlikte daha da artabiliyor. Çoğu yazılım firması, özellikle başlangıç aşamalarında, geliştiricilerin masalarının altında uyuduğu dönemlerden geçer. Web tabanlı yazılımlar hakkında endişe verici olan şey, bu durumun normalleşmesini engelleyecek hiçbir şeyin olmaması. Masaların altında uyuma hikayeleri genellikle ""sonunda ürünümüzü piyasaya sürdük ve hepimiz eve gidip bir hafta boyunca uyuduk"" şeklinde son bulur. Ama web tabanlı yazılım, asla tamamlanmaz. İstediğiniz sürece günde 16 saat çalışabilirsiniz. Ve çünkü yapabilirsiniz, rakipleriniz de yapabilir, bu yüzden genellikle başka seçeneğiniz olmaz. Yapabileceğin için yapman gerekiyor. Bu, adeta Parkinson'un yasasının tersine işliyor.

Aslında en zorlayıcı şey saatler değil, sorumluluk. Geleneksel olarak programcılar ve sistem yöneticileri ayrı ayrı endişelenirler. Programcılar genellikle yazılımdaki hataları düşünürken, sistem yöneticileri de altyapı sorunları üzerine kafa yorarlar. Programcılar, belki gün boyu kodlara gömülü geçirebilirler ama eninde sonunda evlerine dönüp her şeyi unutabilirler. Sistem yöneticileri ise işlerini hiçbir zaman tamamen geride bırakamazlar, ama gece 4'te acil bir durum için çağrıldıklarında genellikle çok karmaşık bir işle uğraşmazlar. Ancak web tabanlı uygulamalarla uğraşırken, bu iki tür stres bir araya gelir. Programcılar aynı zamanda sistem yöneticiliği de yapmak zorunda kalırlar ama bu sefer işin zorluğu normalde tahammül edilebilir olan sınırları aşar.

Viaweb'de ilk altı ay sadece yazılım yazarak geçti. Bir startup'ın başlangıç aşamasındaki gibi uzun saatler çalıştık. Eğer bir masaüstü yazılım şirketi olsaydık, bu yoğun çalışma dönemi bile rahat kalırdı. Çünkü sonraki aşama, kullanıcıları sunucumuza kabul etmek, ona kıyasla adeta bir tatil gibiydi. Viaweb'i Yahoo'ya satmanın para dışında en büyük ikinci yararı, tüm bu projenin son sorumluluğunu bir büyük şirketin omuzlarına bırakabilmemiz oldu.

Masaüstü yazılımlar kullanıcıları adeta birer sistem yöneticisi haline getiriyor. Web tabanlı yazılımlar ise bu görevi programcılara yüklemiş oluyor. Toplamda stres belki azalıyor ama programcılar için artıyor. Bu durum mutlaka kötü bir haber anlamına gelmiyor. Eğer büyük bir firma ile rekabet halinde olan bir startup'ta çalışıyorsanız, bu aslında iyi bir haberdir. Web tabanlı uygulamalar, rakiplerinizi geçmek için harcadığınız çabayı arttırma imkanı sağlar. Hiçbir startup'tan daha fazlasını istemezsiniz.

**Sadece Yeterince İyi**

Web tabanlı uygulamalar yazmaktan alıkoyabilecek bir durum, web sayfalarının kullanıcı arayüzü olarak biraz zayıf kalması olabilir. Evet, bu bir sorun, kabul ediyorum. HTML ve HTTP'ye eklemeyi çok istediğimiz birkaç özellik vardı. Ancak, önemli olan şu ki, web sayfaları yeterince iyi, yani iş görüyor.

Burada, ilk mikrobilgisayarlarla paralel bir durum var. Bu makinelerde kullanılan işlemciler aslında bilgisayarların beyinleri olmak için tasarlanmamıştı. Asıl hedefleri trafik ışıkları gibi basit cihazlarda kullanılmaktı. Ancak Altair'in tasarımcısı olan Ed Roberts gibi kişiler, bu işlemcilerin aslında yeterince işlevsel olduklarını keşfettiler. Bu işlemcileri biraz hafıza (ilk Altair'de sadece 256 byte) ve ön panel anahtarlarıyla birleştirince, işte karşınızda çalışan bir bilgisayar! Kendi bilgisayarınıza sahip olma fikri o kadar heyecan vericiydi ki, ne kadar sınırlı özelliklere sahip olursa olsun, almak isteyen bir sürü insan vardı.

Web sayfaları aslında uygulamalar için bir kullanıcı arayüzü olarak tasarlanmamıştı, fakat bu iş için oldukça yeterliler. Birçok kullanıcı, her tarayıcıdan erişilebilir bir yazılımın, kullanıcı arayüzündeki her türlü eksikliği telafi edecek kadar büyük bir avantaj olduğunu düşünüyor.HTML ile en şık excel tablosunu oluşturamayabilirsiniz, ama bu dilin gücünü hafife almayın. HTML, farklı yerlerden birkaç kişinin aynı anda kullanabildiği, canlı veri beslemeleri ile çalışabilen ya da belirli şartlarda sizi uyarabilen bir tablo oluşturmanıza olanak sağlar. Daha da önemlisi, henüz adları bile olmayan yepyeni türde uygulamalar yaratabilirsiniz. 

VisiCalc'in ortaya çıkışını hatırlayalım. Bu, sadece bir ana bilgisayar uygulamasının mikro versiyonu değil, tamamen yeni bir tür uygulamaydı. İşte HTML'nin de böyle bir potansiyeli var.

Tabii ki, sunucu tabanlı uygulamaların web tabanlı olması şart değil. Farklı bir tür istemci de kullanabilirsiniz. Ancak bana kalırsa bu pek de iyi bir fikir değil. Herkesin sizin istemcinizi kuracağını varsaymanın ne kadar pratik olduğunu düşünün - hatta bu durum sizin için o kadar rahat olacak ki, herkesin bunu yapacağına kendinizi kolayca ikna edeceksiniz - ama eğer yapmazlarsa, başınız belaya girebilir. 

Web tabanlı yazılımlar, istemci hakkında hiçbir varsayımda bulunmaz, bu yüzden internetin olduğu her yerde çalışır. Bu, şimdiden büyük bir avantaj ve yeni web cihazları çıktıkça bu avantaj daha da büyüyecek. Kullanıcılar sizden hoşlanacak çünkü yazılımınız hemen çalışacak ve sizin hayatınız da her yeni istemci için ayarlamalar yapmanız gerekmeyecek. 

Web'in evrimini kimden daha yakından izleyebilirim ki? Ancak müşterilerle ne olacağı konusunda tahminde bulunamam. Konverjans (birleşme) muhtemelen geliyor, ama nerede? Bir galip seçemem. Ancak tahmin edebileceğim bir şey var: AOL ve Microsoft arasında çatışma çıkacak. Microsoft'un .NET'inin ne olduğu henüz belirsiz ama büyük ihtimalle masaüstünü sunuculara bağlamayı içerecek. Eğer AOL karşılık vermezse, ya kenara itilirler ya da Microsoft'un istemci ve sunucu yazılımı arasında bir boru hattına dönüşürler. Eğer Microsoft ve AOL bir müşteri savaşına girerse, her ikisinde de çalışacağından emin olabileceğimiz tek şey web tarayıcıları olacak. Bu da demek oluyor ki, web tabanlı uygulamalar her yerde çalışabilen tek tür olacak.

Bu durum nasıl son bulacak? Bilmiyorum. Ve eğer internet tabanlı uygulamalara bahse giriyorsanız, bunu bilmenize de gerek yok. Hiç kimse, internet tarayıcısını da bozmadan, web tabanlı uygulamaların önünü kesemez. Web, yazılım dağıtmanın tek yolu olmayabilir, ama şu anda işe yarıyor ve uzun bir süre daha yaramaya devam edecek. Web tabanlı uygulamaları geliştirmek ucuz ve hatta en küçük start-up'ın bile sunması kolay. Evet, ciddi bir emek ve strese neden olabilirler, ama bu da start-up'lar için şansları artırıyor.

**Neden Olmasın?

E.B. White, bir çiftçi arkadaşından, birçok elektrikli çit üzerinde aslında hiç elektrik akımı olmadığını öğrendiğinde oldukça şaşırmıştı. Demek ki, inekler çitlere yaklaşmamayı öğreniyorlar ve bir kere bu dersi kavradıktan sonra çitin üzerinde elektrik olmasına gerek kalmıyor. ""Hadi inekler, ayağa kalkın!"" diye yazmıştı, ""Despotlar uykudayken özgürlüğünüzü elinize alın!""

Eğer bir hacker'sanız ve bir gün kendi startup'ınızı kurmayı düşünüyorsanız, bunu yapmanızı önleyen muhtemelen iki şey vardır. Birincisi, iş dünyası hakkında hiçbir şey bilmiyor oluşunuz. Diğeri ise rekabetten korkmanız. Ancak bu iki engel, aslında gözünüzde büyüttüğünüzden çok daha aşılabilir.

İş dünyasında sadece iki şeyi bilmeniz yeter: kullanıcıların seveceği bir şeyler inşa edin ve harcadığınızdan daha fazla kazanın. Bu iki noktayı doğru yaparsanız, zaten çoğu startup'tan bir adım önde olursunuz. Gerisi yolda giderken halledilir.

Başlangıçta harcamalarınızdan daha az kazanabilirsiniz, ancak bu fark hızla azalıyorsa, endişelenmenize gerek yok. Eğer az bir sermayeyle işe başlarsanız, bu durum tutumlu olmanızı teşvik edecektir. Ne kadar az harcarsanız, giderlerinizin üzerinde kazanmak da o kadar kolaylaşır. Neyse ki, bir web tabanlı uygulama başlatmanın maliyeti oldukça düşük olabilir. Biz işe 10.000 dolardan daha düşük bir bütçeyle başladık ve bugün aynı işi daha da ucuza yapabilirsiniz. Bir sunucu için binlerce dolar harcamak zorunda kaldık ve SSL almak için yine binlerce dolar daha ödedik.(O zamanlar SSL yazılımı satan tek firma Netscape'di.) Ama şimdi durum çok farklı. Daha güçlü sunucuları, hatta SSL dahil, sadece internet bağlantımız için ödediğimizden daha düşük bir ücrete kiralayabiliyoruz. Şimdi, lüks bir ofis koltuğunun maliyetinden daha az bir bütçeyle bile bir web tabanlı uygulama başlatabilirsiniz. 

Kullanıcıların bayılacağı bir şey inşa etmek istiyorsanız, işte size bazı genel tavsiyeler. Öncelikle, kendinizin kullanmak isteyeceği, sade ve basit bir şey yapmaya çalışın. Sonra, bir an önce 1.0 versiyonunu çıkarın ve yazılımı sürekli olarak iyileştirmeye devam edin. Bu süreçte, kullanıcılarınızın geri bildirimlerine kulak verin. Müşteri her zaman haklıdır, ama unutmayın, farklı müşteriler farklı konularda haklı olabilir. En tecrübesiz kullanıcılar, neyi daha basit ve anlaşılır hale getirmeniz gerektiğini gösterirken, en tecrübeli olanlar, hangi özellikleri eklemeniz gerektiğini söyler. 

Yazılımın en iyi hali, kullanımı basit olmasıdır. Ama bunu başarmanın yolu, kullanıcıların seçeneklerini kısıtlamak değil, doğru varsayılanları belirlemektir. Rakiplerinizin yazılımı kötüyse, sakın rehavete kapılmayın. Unutmayın, yazılımınızı karşılaştıracağınız standart, rakiplerinizin ne olduğu değil, sizin yazılımınızın ne olabileceğidir. 

Kendi yazılımınızı her zaman kendiniz kullanın. Mesela Viaweb, bir online mağaza oluşturucu olarak tasarlandı, ama biz de kendi sitemizi oluşturmak için onu kullandık. Sadece unvanlarına bakarak pazarlama insanlarına, tasarımcılara ya da ürün yöneticilerine kulak asmayın. Eğer onların iyi fikirleri varsa kullanın ama son karar sizindir. Yazılım, tasarımdan anlayan yazılımcılar tarafından, biraz yazılım bilen tasarımcılar tarafından değil, tasarlanmalıdır. Eğer yazılımı tasarlamak ve uygulamak konusunda yetenekli değilseniz, bir startup girişimine başlamayın.

Şimdi rekabet hakkında konuşalım. Tahminen sizin gibi hacker grupları sizin korkunuz değil, asıl bu ofisleri, iş planları, satış ekibi olan gerçek şirketlerden çekiniyorsunuz, öyle mi? İşte bu şirketler sizden çok daha çok korkuyorlar ve haklılar da. Birkaç hacker'ın ofis kiralamayı ya da satış ekibi tutmayı çözmesi, herhangi bir büyüklükteki bir şirketin yazılım yazmasından çok daha kolay. Her iki tarafı da deneyimledim, biliyorum ne demek olduğunu. Viaweb Yahoo tarafından satın alındığında, bir anda kendimi büyük bir şirkette çalışırken buldum ve bu, bel hizasına kadar suyun içinde koşmaya çalışmak gibiydi.

Yahoo'yu küçümsemek gibi bir niyetim yok. Gerçekten yetenekli hackerları vardı ve üst düzey yönetim ekibi işlerini iyi bilen kişilerdi. Büyük bir şirket olmalarına rağmen, harika iş çıkardılar. Ancak yine de küçük bir startup'ın üretkenliğinin sadece onda biri kadar üretkenlerdi. Bir şirketin bundan daha iyi olması mümkün değil. Microsoft konusunda korkunç olan şey, bu kadar büyük bir şirketin yazılım geliştirebiliyor olması. Onlar, yürüyebilen bir dağa benziyorlar.

Korkmayın. Microsoft'un yapamadığı şeyleri siz yapabilirsiniz, tıpkı sizin yapamadıklarınızı onların yapabildiği gibi. Ve hiç kimse sizi durduramaz. Web tabanlı uygulamalar geliştirmek için hiç kimseden izin almanıza gerek yok. Lisans anlaşmaları yapmaya, perakende mağazalarda raf alanı ayarlamaya ya da uygulamanızın işletim sistemiyle paketlenmesi için yalvarmaya ihtiyacınız yok. Yazılımınızı direkt olarak tarayıcıya gönderebilirsiniz ve kimse, insanların web'i gezebilmesini engellemedikçe, sizinle potansiyel kullanıcılarınız arasına giremez.

İnanmayabilirsiniz ama size söz veriyorum, Microsoft sizden korkuyor. Belki rahatına düşkün orta düzey yöneticiler korkmuyor olabilir, ama Bill Gates korkuyor. Çünkü o bir zamanlar sizin yerinizdeydi, 1975'te, yeni bir yazılım dağıtma yönteminin ortaya çıktığı son dönemde.

#### Notlar

1] Paraların çoğunluğunun hizmetlerde olduğunu fark eden, hafif istemci oluşturan şirketler genellikle bu donanımları bir [çevrimiçi hizmet ile birleştirmeye çalışmışlar. Ancak bu yaklaşım çok da başarılı olmamış.Bugün sizlere, tüketici elektroniği üretimi ile online hizmet yönetimi arasındaki farklılıkları ve zorlukları anlatmak istiyorum. İki farklı türde şirkete ihtiyaç duymanın yanı sıra, kullanıcıların bu farkı anlamakta zorlanması da bu durumu daha da karmaşık hale getiriyor. Mesela, Gillette'in ""tıraş bıçağı bedava"" stratejisi, bıçak satışlarından elde ettiği gelirle işe yarıyor. Ancak bir web terminali, bir tıraş bıçağından çok daha büyük bir yatırım anlamına geliyor. Cep telefonu üreticileri de benzer bir şekilde, hizmet gelirlerini arttırmak yerine sadece donanım satmayı tercih ediyorlar. 

Bu durum, internet istemcileri için de bir model olabilir. Eğer birisi, herhangi bir internet servis sağlayıcısı üzerinden bağlanabileceğiniz bir web tarayıcısıyla güzel görünümlü bir kutu satsa, ülkedeki teknolojiye mesafeli herkes bir tane alabilir.

[2] Güvenlik her zaman, herhangi bir tasarım kararından çok, hataları önlemeye daha çok bağlıdır. Ancak sunucu tabanlı yazılımların doğası, geliştiricilerin hatalardan kaçınmaya daha fazla odaklanmalarını sağlar. Bir sunucunun güvencesinin ihlali, öyle büyük bir zarara yol açabilir ki, işini devam ettirmek isteyen Uygulama Servis Sağlayıcıları, güvenlik konusunda daha dikkatli olmak zorunda kalacaklardır.

1995'te Viaweb'i kurduğumuzda, Java applet'lerinin herkesin sunucu tabanlı uygulamalar geliştirmek için kullanacağı teknoloji olacağı düşünülüyordu. Ancak applet'ler bize modası geçmiş bir fikir gibi geldi. Müşterinin bilgisayarında çalıştırmak için programları indirin mi? Aslında daha basit bir yol bulduk ve programları direkt sunucuda çalıştırmaya karar verdik. Applet'lere çok fazla zaman harcamadık ama eminim ki birçok diğer startup da bu türden saplantılara kapıldı. Java'yı son Explorer sürümünde bırakabilmiş olan Microsoft gibi firmaların hayatta kalabilmiş olması, bu türden saplantılardan kaçınabilmiş olan startupların sayısının çok az olduğunu gösterir.

[4] Bu noktanın sahibi Trevor Blackwell. O, ""yazılım yazma maliyeti, yazılımın boyutuyla doğrusal olmayan bir ilişki gösterir. Büyük ihtimalle, bu durum eski hataları düzeltme maliyetinden kaynaklanıyor. Ancak tüm hatalar hızlıca bulunabilirse, maliyetin artışı daha doğrusal bir çizgide ilerleyebilir"" diye ekliyor.

[5] En zor bulunan hata türü, bir hatanın başka bir hatayı tesadüfen örttüğü bileşik hata olabilir. Bir hatayı düzelttiğinizde, diğeri görünür olur. Ancak, son yapılan düzeltmenin hatalı olduğu görünür ki bu son değiştirdiğiniz şeydir.

[6] Viaweb'de bir kez, yazılımımızın en kötü yanını tanımlayacak bir yarışma düzenlemiştik. İki müşteri hizmetleri çalışanı, beni hala ürperten girişleriyle birinciliği paylaştılar. İki sorunu da hemen hallettik.""

7] Robert Morris, alışveriş yapanların siparişlerini oluşturmak için kullandıkları sistem yazıldı. Trevor Blackwell, tüccarların siparişleri almak, istatistikleri görmek ve domain adlarını ayarlamak gibi işlemler için kullandıkları resim oluşturucu ve yönetici sistemini yazdı. Ben de tüccarların sitelerini oluşturmak için kullandıkları editörü yazdım. Sipariş sistemi ve resim oluşturucu C ve C++ dillerinde, yönetici sistem genellikle Perl'de, editör ise Lisp dilinde yazıldı. [Lisp.

[8] Fiyat ayrımcılığı o kadar yaygın ki (bir perakendecinin büyük alım gücünün sizin için daha düşük fiyatlar demek olduğunu kaç kez duydunuz?) Amerika'da 1936'da kabul edilen Robinson-Patman Yasası ile yasaklandığını öğrenince şaşırdım. Ancak görünüşe göre bu yasa pek de sıkı bir şekilde uygulanmıyor.

[9] Naomi Klein'ın _No Logo_ adlı kitabında belirttiği gibi, ""şehirli gençler"" tarafından tercih edilen giyim markaları, hırsızlığı engellemek için çok uğraşmıyor. Çünkü hedefledikleri pazarda, hırsızlık yapanlar aynı zamanda moda trendlerini belirleyen kişiler oluyor.

[10] Şirketler genellikle neyi dışarıdan alıp neyi kendilerinin yapacağı konusunda kafa karışıklığı yaşarlar. İşte size bir öneri: rekabete doğrudan maruz kalmayan her işi dışarıdan alın, çünkü bu işleri dışarıdan almak, onları da rekabetin içine dahil edecektir.

[11] Bu iki kişi Dan Bricklin ve Bob Frankston'du.Hadi biraz nostalji yapalım ve bilgisayar dünyasının bazı önemli anlarını hatırlayalım. İşte size bir hikaye: Bir zamanlar, **Dan** ve **Bob**, Basic'te bir prototip oluşturmuşlardı. Sonra, bir yıl boyunca geceleri 6502 makine dilinde daha güçlü bir versiyonunu geliştirdiler. Dan o zamanlar Harvard İşletme Okulu'nda okuyordu, ama Bob, gündüzleri yazılım yazmak için onunla çalışıyordu. Bob, ""Bir iş kurmanın büyük bir riski yoktu,"" diye yazdı, ""Eğer başarısız olursa, olur biter. Büyük bir sorun değil.""

[12] Ama işin içine girdiğimde, durumun benim anlattığım kadar kolay olmadığını anladım. Ağızdan ağıza yayılmanın ne kadar zaman aldığını görmek, gerçekten çok fazla basın yayını alana kadar aylık 16.000 dolar karşılığında bir halkla ilişkiler firmasıyla anlaşma yapmak zorunda kalmak anlamına geliyordu. Ama en önemli ve etkili kanalımızın kendi web sitemiz olduğunu söyleyebilirim.

[13] Eğer Mac bu kadar mükemmel bir ürünse, neden kaybetti ki? Yine aynı sorun, maliyet. Microsoft yazılım işine odaklanırken, Apple'ın donanımına çeşitli düşük maliyetli bileşen tedarikçileri saldı. Üstelik, kritik bir dönemde yöneticilerin değişmesi de işleri pek kolaylaştırmadı.

Şimdi, web tabanlı uygulamaların işlevini artırmaya yardımcı olacak ve Microsoft'un yeni nesil yazılımlar üzerindeki etkinliğini azaltmaya yardımcı olacak bir şey düşünelim: iyi bir açık kaynaklı tarayıcı. Mozilla açık kaynaklı olmasına rağmen, uzun süre boyunca bir kurumsal yazılım olmuş olmasının ona bir miktar engel oluşturduğu görülüyor. Ama aktif olarak güncellenen, hızlı ve kompakt bir tarayıcı, kendi başına harika bir şey olacağı gibi, aynı zamanda şirketleri küçük web cihazları oluşturmaya da teşvik edebilir.

Dünyayı değiştirmek istiyorsan, yeni bir Mosaic yaz. Çok geç olduğunu mu düşünüyorsun? 1998'de birçok kişi yeni bir arama motoru fikrinin zamanının geçtiğini düşünüyordu ancak Google onların yanıldığını kanıtladı. Eğer mevcut alternatifler yeterince kötüyse, yeni bir şeyler için her zaman yer vardır. Öncelikle yeni ürününüzün tüm ücretsiz işletim sistemlerinde çalıştığından emin olun; çünkü yeni fikirler, kullanıcılarıyla beraber şekillenir ve gelişir.

[15] Bu konu hakkında belki de en çok kişisel tecrübeye sahip olan **Trevor Blackwell**'ın ifadeleri şu şekilde:

Bir adım daha ileri giderek, sunucu tabanlı yazılımın programcılar üzerindeki zorluğu nedeniyle, büyük şirketlerden ziyade küçük şirketlere doğru temel bir ekonomik kayma yaşandığını söyleyebilirim. Programcılardan, sadece kendi şirketlerinin bir parçası olduklarında gösterebilecekleri bir bağlılık ve yoğunluk beklenir. Yazılım şirketleri, çok zorlu olmayan bir ortamda çalışmak üzere yetenekli kişileri işe alabilir veya zorluklara dayanacak yeteneksiz kişileri işe alabilir, ancak yüksek yetenekli insanları sırtlarını yere getirecek bir çalışma temposunda çalıştırmak pek mümkün olmaz. Artık sermayeye ihtiyaç duyulmadığından, büyük şirketlerin masaya katabileceği çok az şey kalmaktadır.

[16] Bu yazının ilk haliinde, JavaScript'ten sakınmanızı tavsiye etmiştim. Bu, 2001 yılında iyi bir plan olabilirdi, ancak şimdi JavaScript sorunsuz bir şekilde çalışıyor.

**Özel Teşekkürler**: Bu yazının taslaklarını okuyan ve geri dönüşlerini paylaşan **Sarah Harlin**, **Trevor Blackwell**, **Robert Morris**, **Eric Raymond**, **Ken Anderson** ve **Dan Giffin**'e; VisiCalc hakkında detaylı bilgileriyle yardımcı olan **Dan Bricklin** ve **Bob Frankston**'a; ve son olarak da beni BBN'de konuşma fırsatı sunan **Ken Anderson**'a çok teşekkür ederim. Bu hikayeyi birlikte anlatmak gerçekten keyifliydi!""""

---

İlişkili Konseptler: web tabanlı uygulamalar, sunucu tabanlı yazılım, yazılım geliştirme, startup işletmeler, yazılım teslimi, yazılım verimliliği, kullanıcı arayüzü, yazılım rekabeti, Microsoft ve web tabanlı yazılım, yazılım iş modeli, yazılım sürümü, yazılım hataları, yazılımda müşteri desteği, yazılım geliştirme maliyetleri, yazılım güvenliği, yazılım optimizasyonu, yazılım tasarımı, küçük işletmeler için yazılım, büyük şirketler için yazılım, yazılım ve donanım, yazılım evrimi, yazılım ve kullanıcı verileri, yazılım ve müşteri, yazılım ve sunucu, yazılım ve internet servis sağlayıcıları, yazılım ve müşteri geri bildirimi, yazılım ve iş büyümesi, yazılım ve iş riskleri, yazılım ve programlama dilleri, yazılım ve hackerlar, yazılım ve satış, yazılım ve pazarlama, yazılım ve iş planları, yazılım ve karlılık, yazılım ve kullanıcı deneyimi, yazılım ve müşteri memnuniyeti, yazılım ve iş stratejisi, yazılım ve iş başarısı, yazılım ve iş başarısızlığı, yazılım ve iş zorlukları, yazılım ve iş fırsatları, yazılım ve iş trendleri, yazılım ve iş inovasyonu, yazılım ve iş dönüşümü, yazılım ve iş değeri, yazılım ve iş vizyonu, yazılım ve iş bilgeliği, yazılım ve işin x-faktörü, yazılım ve iş verimi, yazılım ve iş heyecanı."

Subscribe

Listen to Yiğit Konur'un Okuma Listesi using one of many popular podcasting apps or directories.

Spotify Pocket Casts Amazon Music YouTube
← Previous · All Episodes · Next →