Joel on Software

Joel on Software   Joel'den Yazılım Üzerine

 

Diğer Türkçe "Joel on Software" makaleleri

Diğer İngilizce "Joel on Software" makaleleri

Yazara e-posta gönderin (Sadece İngilizce)

 

İyi yazılım On Yıl Alır, Buna Alışın


Joel Spolsky
Fikret Ulug tarafından çevrilmiştir
A. Sinan Ünür tarafından düzenlenmiştir
27 Ocak, 2001

Şu tabloya bir göz atın:

Lotus Notes installed base, chart.

[Iris Associates]

Bu tablo, Lotus Notes workgroup yazılımının piyasaya ilk çıkarıldığı tarih olan 1989’dan 2000 yılına kadar kaç yerde kurulu olduğunu göstermektedir. Aslında Notes 1.0 sürümü çıkarıldığında beş yıldan beri geliştirilmekte idi. Notes’un yeterli kaliteye erişmesi ve kullanıcıların satın almaya başlaması için geçen sürenin uzunluğuna dikkatinizi çekmek isterim. Gerçekten de 1984 yılında ilk kod satırının yazılmaya başlaması ile yukarıdaki eğrinin yükselen kısmına erişmesi için tam 11 yıl geçmesi gerekmiştir. Bu süre boyunca Ray Ozzie ve kadrosu St Barts’da buzlu viski içmiyorlardı. Nefes almaksızın kod yazıyorlardı.

Bu hikayeyi anlatmamın nedeni bunun ciddi yazılımlar için normal bir durum olduğudur. Oracle VTYS 22 yıldan bu yana kullanımdadır. Windows NT’nin geliştirilmesi 12 yıl önce başlamıştır. Microsoft Word ise kocamış denebilir; Word 1.0 DOS sürümünü lise öğrencisi iken gördüğümü hatırlıyorum (yaşımı ele verdim, değil mi? 1983 yılıydı.)

Deneyimli bir yazılımcı için bunların hiçbiri sürpriz değildir. Ürününüzün ilk sürümünü yazarsınız. Birkaç kişi kullanır: Programınızı severler belki ama eksik olan birçok özellik vardır, performans problemleri vardır. Her neyse, bir yılın ardından sürüm 2.0 hazırdır. Herkes 2.0, 3.0, 4.0 içinde hangi özelliklerin olacağını tartışır, çünkü yapılması gereken birçok önemli iş vardır. Excel günlerimden yapmamız gereken ne kadar çok “yapılması gereken” iş olduğunu hatırlıyorum. Pivot tabloları. Üç boyutlu tablolar. VBA veri erişimi. Yeni sürümü çıkardığınızda, hazır beklemekte olan kullanıcılarınız yeni sürümü almak için birbirlerini ezerler. Windows 3.1’i hatırlıyor musunuz? Kesinlikle uzun dosya isimlerine, bellek koruma sistemine, tak ve çalıştır özelliğine ve şimdi olazsa olmaz saydığımız diğer milyonlarca önemli özelliğe ihtiyacı vardı, fakat yeterli zaman yoktu ve tüm bu özellikler Windows 95’i beklemek zorunda kaldı.

Ancak tüm bunlar ilk on yıl için geçerlidir. Daha sonra kimse gerek duyduğu tek bir yeni özellikten bahsetmez. Excel 2000 veya Windows 2000’de ihtiyaç duyduğunuz fakat yapılmamış bir özelliği var mı? Office ekibindeki eski arkadaşlarıma saygıda kusu etmek istemem ama 1995’den bu yana Office ürünlerine eklenen tek bir yararlı yeni özellik olmadığını düşünmeden edemiyorum. Bu süre içinde eski-ataş ve otomatik-belge-sıkıştırma gibi eklenen birçok “özellik” sadece rahatsızlık vermekte, ve O’Reilly de bu özelliklerin nasıl kapatılacağınız anlatarak iyi para kazanmaktadır.

O halde iyi program yazımı uzun süre alır fakat program gelişimini tamamladığında herşey tamamdır. Elbette yeni gelir elde etmek üzere her bir veya iki yılda bir yeni bir sürüm çıkarabilirsiniz fakat kullanıcılar sonunda “bozuk olmayan bir şeyin tamirine ne gerek var,” diye sormaya başlarlar.

picture-fruit:

On-yıl kuralının iyi anlaşılmaması çok hatalı iş kararlarının verilmesine neden olur.

1 numaralı hata. Bir an önce büyüyelim sendromu. Bu İnternet balonu tarafından yaratılan bu safsata başka yerlerde yeterince çürütüldüğü için burada üzerinde durmayacağım. Ancak bu konuda önemli bir gözlem, amacı (kedi-köpek maması satmak değil de) yazılım geliştirmek olan nokta-kom firmalarının ürünlerini iyi bir düzeye çıkaracak zaman bulamamış olmalarıdır. Benim en favori örneğim desktop.com’dur. Bu firma eğer üzerinde 10 yıl çalışmış olsa idi gerçekten iyi bir yazılım ortaya çıkabilirdi. Fakat yap-sat yaklaşımı, gereğinden fazla personel ve gereksiz firma harcamaları, her on dakikada bir sermaye bulunması gereği, 10 yıl boyunca yazılım geliştirilmesini imkansiz hale getirdi. Bütün yazılımlar gibi bunun da 1.0 sürümü berbattı ve kimse kullanmayı düşünmüyordu. Fakat, kimbilir, belki desktop.com’un 8.0 sürümü harika bir program olabilirdi. Bunu asla öğrenemeyeceğiz.

Hata 2. Fazla reklam sendromu. 1.0 sürümünü çıkardığınızda pek de fazla reklam yapmamanız faydalı olabilir. Bütün yenilikleri izleyen ilk kulanıcıların onu keşfetmelerini bekleyin. Eğer çok büyük beklentiler oluşturacak şekilde pazarlarsanız, kullanıcılar gerçekte ne yapılmış olduğunu gördüklerinde hayal kırıklığına uğrarlar. Marimba ve Groove gibi desktop.com’da buna iyi bir örnektir: bu programlar ilk günden itibaren çok yüksek beklentiler ile piyasaya çıktı ve kullanıcılar programın özelliklerini görmek üzere 1.0 sürümünü dikkatle incelediler. Fakat tüm diğer 1.0 sürümlerinde olduğu gibi program ancak çimlerin sararmasını seyretmek kadar heyecan verici idi. Şu anda Marimba’ya 1996 yılından bu yana hiç bakmamış milyonlarca kullanıcı var, ve bu kullanıcılar hala bu programın 4 ay içinde apar topar bir araya getirilmiş, uyduruk Java apletlerini indiren bir liste kutusu olduğunu düşünüyorlar.

1.0 sürümünün sessizce ilan edilmesi, daha az satış ile karlılığa erişebilmeniz gerektiği anlamına gelir. Bu da maliyetleri düşük tutma ve daha az personel ile idare etme gereği anlamına gelir. Yazılımınızı geliştirmeye küçük bir ekiple başlamak aslında çok iyi bir fikirdir. Başlangıçta gücünüz sadece bir programcıya yetiyorsa, yazılımınızın yapısının tutarlı ve akılcı olma olasılığı, yüzlerce programcının birbiriyle çelişen fikirlerini içeren ve silbaştan yazılması gerekecek (kaynak kodunu atıp yeniden yazılması gerektiğini savunanlara göre, Netscape gibi) bir bulamaça kıyasla daha yüksektir.

Hata 3. İnternet zamanı’na inanmak. 1996 yılında New York Times ilk defa Netscape sürümlerinin kullanıcılara, Microsoft gibi firmaların geleneksel 2 yıllık güncelleme periyodu yerine, her altı ayda bir sunulduğunu fark etti. Bu gelişme “işlerin daha hızlı yürüdüğü” bir “İnternet zamanı” olduğu efsanesinin doğmasına neden oldu. Olsa iyi olurdu da gerçek bu değildi. Yazılım daha hızlı üretilmiyordu, sadece daha sık aralıklarla sunuluyordu. Yeni bir yazılım ürününün ilk aşamalarında o kadar çok yeni özellik vardır ki her altı ayda bir sürüm çıkarmanıza rağmen kullanıcıların mutlaka sahip olmaları gereken tonlarca özellik yapılmayı bekler. Bu özellikleri de yaparsınız. Bu sizin eskiye oranla daha hızlı yazılım geliştirdiğiniz anlamına gelmez. (Internet Explorer ekibine burada ayrıcalık tanımak isterim. IE’nin 3.0 ve 4.0 sürümleri arasında endüstri standartlarının on kat üzerinde bir hızla yazılım geliştirdiler. Bu hızın internet ile hiçbir ilgisi yoktu, sadece Microsoft firmasında 15 yıl boyunca ticari yazılım üretme deneyimlerinden yararlanan fevkalade donanımlı cenk urbalarını kuşanmış bir ekibe sahiptiler).

Hata 4. Yazılım tamamlandığında güncelleştirme gelirlerinin kesilmesi. Bir parça endüstri tarihi: İlk zamanlarda (1980’in sonları) PC endüstrisi o kadar hızlı gelişiyorduki hemen hemen tüm yazılımlar ilk kez kullananlara satılıyordu. Microsoft genellikle 500$ değerindeki bir ürününün güncellemesi için 30$ fiyat veriyordu. Bu durum, yeni kullanıcıların bitmekte olduğu ve düşük fiyatı nedeniyle çok miktarda güncelleme kopyalarının satıldığı farkedilinceye kadar sürdü. Ve nihayetinde bugün bulunduğumuz noktaya, yani satışların büyük bir çoğunluğunu oluşturan güncelleme ürün fiyatlarının, ürünün tam sürüm bedelinin %50-%60’ı arasında değiştiği duruma geldik Sorunlar, bir sonraki sürümünüze eklenecek yeni özellik bulamadğınızda başlar: Ataş eklersiniz, daha sonra ataşı kaldırırsınız, ve her seferinde kullanıcıya para ödetmeye çalışırsınız, ama kullancılar da bunu yutmazlar. Bu noktada baştan sadece bir yıllık lisans satmak, ve bu sayede kullanıcılarınızı ürününüze abone edip, yeni özellik eklenmese dahi paralarını alma yolunu seçmediğinize pişman olursunuz. Bu iyi bir muhasebe hilesidir: Bir yazılım paketini 100$’a satarsanız, Borsadaki değeri 100$ olur. Fakat bir yıllık lisansı 30$’a satarsanız, sonraki yıllarda da 30$’lık bir geliri garantilerseniz, bu on yıllık hasılanın değeri 200$ olur. Tada! Hisse senedi fiyatı ikiye katlanır! (Ne tesadüf ki, SAS yazılım ödemelerini bu şekilde alıyor. Her yıl %97 oranında yenileme satışı yapıyorlar.)

Microsoft’unki gibi paket yazılımlar için sorun, müşterilerin bunu yutmamasıdır. Microsoft, 90’ların başından bu yana müşterilerine abonelik planlarını kabul ettirmeye çabalıyor, fakat her seferinde çok güçlü bir müşteri direnci ile karşılaşıyor. Kullanıcılar satın aldıkları yazılıma “sahip” oldukları, ve yeni bir özellik istemedikleri sürece güncelleme yapmaları gerekmediği fikrine alıştıklarında, bu durum özellikleri tamamlanmış bir ürünü satmak isteyen firmalara çok büyük zorluklar çıkarır.

Hata 5. “Hazır olduğunda yayımlarız” sendromu. Lafı buradan açılmışken ... Mozilla’da ne halt yiyorlar Allah aşkına? Onlarla bir yıl önce epey bir dalga geçmiştim, çünkü aradan üç yıl geçmesine rağmen Allah’ın cezası şey hala piyasaya sürülmemişti. Web sitelerinde sık sık geçerliliğini yitiren bir tabloya göre 2001 yılının son çeyreğinde yayımlayacaklarını bildiriyorlar (ç.n: Bu yazı 2001 yılının ocak ayında kaleme alındı). Tahminlerini dayandıracakları takvim benzeri bir şeye sahip olmadıkları için neden böyle düşündüklerini anlayamıyorum. A evet! İnternet Zamanı Dünyası’nda yazılım geliştirme bu olmalı.

Konudan uzaklaşıyorum galiba. Evet, yazılımın yazılması 10 yıl alır, ve 10 yıl boyunca piyasaya hiçbir sürüm çıkarmayan bir şirketin asla hayatta kalma şansı yoktur. 10 yıl sonra elde edeceğiniz geliri bugün kırdırmaya kalkarsanız kocaman bir hiç elde edersiniz. Özellikle de beş yıldan sonraki tüm hasılanızı “artık değer” olarak küçümseyen, sahte, uyduruk bilanço tablolarına bakarak 100.000.000$ değer biçtikleri çorap kuklalarına yatırım yapmanın iyi bir fikir olduğuna kendilerini inandıran analistlerin olduğu bir dünyada.

Herneyse, 10 yıl boyunca iyi bir yazılım ortaya çıkarabilmek, bu on yılın en az 8 yılı boyunca müşterilerinizden yararlı yorumlar, rakiplerinizden kopyalayabileceğiniz güzel yenilikler almanız, ve 1.0 sürümünüzün istikbali olduğunu düşünerek size çalışmaya gelen insanlardan iyi fikirler almanız gerekir. Henüz tamamlanmamış erken sürümler çıkarmalısınız – fakat bu sürümleri aşırı reklamdan veya büyük tantanayla kupa finallerinde duyurmaktan kaçınmalısınız, çünkü ne kadar zeki olursanız olun ürününüz henüz yeteri kadar iyi değildir.

Hata 6.Çok sık güncelleme (Corel sendromu). Başlangıçta, yeni özellikler eklerken ve müşteri portfoyünüz henüz çok geniş değilken, her 6 ayda bir sürüm çıkarabilirsiniz ve kullanıcılar yeni özelliklerden dolayı sizi çok sever. Bu şekilde dört veya beş sürüm çıkardıktan sonra yavaşlamanız gerekir, aksi halde halihazırdaki müşterileriniz güncelleme yapmaktan vazgeçer. Sürümleri atlarlar çünkü güncelleme maliyetlerinden kaçınmak isterler. Bir güncelleme atladıklarında kendilerini daima en yeni ve en mükemmel sürüme sahip olmaları gerekmediğine inandırırlar. Corel PhotoPaint 6.0 programını 5 yıl boyunca kullandım. Evet, biliyorum, bu sürüm “bir birim kayma” hatalarıyla doluydu ama tüm birim kayma hatalarını bildiğim için ekrandaki seçimlerimi taşırken sürekli olarak olması gereken yerden bir piksel sağa kaydırarak bu hatayı dengeledim.

Roosevelt Memorial in Washington

On yıllık bir plan yapın. On yıl boyunca hayatta kalacağınızdan emin olun, çünkü yılda bir milyar dolar hasıla getiren tüm yazılım ürünlerinin hazırlanması bu kadar sürmüştür. İlk sürümünüze çok takılmayın ve ilk sürümünüzle piyasada büyük bir yer alacağınızı aklınızdan bile geçirmeyin. İyi yazılım şarap gibidir, olgunlaşması zaman alır.

 



Bu makalenin orijinali İngilizce olarak Good Software Takes Ten Years. Get Used To It başlığıyla yayımlanmıştır. 

Joel Spolski, New York şehrinde küçük bir yazılım şirketi olan Fog Creek Software'in kurucusudur. Yale Üniversitesi'nden mezun olmuş, ve programcı ve yönetici olarak Microsoft, Viacom ve Juno'da çalışmıştır.


Bu sayfaların içeriği tek bir kişinin görüşlerini yansıtır.
Her hakkı mahfuzdur. Bu sitenin bütün içeriğinin telif hakkı Joel Spolski'ye aittir. Copyright ©1999-2005

FogBUGZ | CityDesk | Fog Creek Software | Joel Spolsky