Ust Notalardan Calmak

From The Joel on Software Translation Project

Revision as of 09:31, 7 April 2010 by Mindblitz (Talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Joel Spolsky, 25 Temmuz 2005

Bu makalenin orijinali İngilizce olarak Hitting the High Notes başlığıyla yayımlanmıştır.

Serkan Erdamar tarafından çevrilmiştir.



Üst Notalara Ulaşmak

2000 yılı Mart’ında bu siteyi, çoğu insanın, başarılı bir yazılım şirketi yaratmak için bir fikre gerek olduğuna inanarak yanlış düşündüklerine dair zayıf bir iddia ile kurdum:

Genel kanı şudur ki, bir yazılım şirketi kurarken hedef daha önce çözülmemiş bir problemi çözen zarif bir fikir bulup onu uygulamak; ve servet sahibi olmaktır.

Son beş yıldır, bu teoriyi gerçek dünyada test ediyorum. 2000 yılı Eylül’ünde Michael Pryor ile kurduğum şirketin formülü şu dört aşamada özetlenebilir:

En iyi çalışma koşulları -> En iyi programcılar -> En iyi yazılım -> Kar!

Bu oldukça kullanışlı bir formül; özellikle Fog Creek’i kurarken asıl amacımız bizim çalışmak isteyeceğimiz bir yazılım şirketi kurmak olduğundan. O günlerde, iyi çalışma koşullarının (ya da tuhaf bir şekilde dünyadaki en iyi yazılım geliştiricilerinin çalışmak isteyeceği bir şirket kurmanın), aynı çikolatanın tombulluğa, ya da video oyunlarındaki çizgi film seksinin etrafa rastgele ateş açan çetecilere yol açacağı kadar kendiliğinden kara yol açacağı iddiasında bulundum.

Ama bugünlük, sadece bir sorunun cevabını vereceğim; çünkü eğer bu doğru değilse tüm teori yıkılacaktır. Soru şu: “En iyi programcılara sahip olmaktan bahsetmek dahi bir anlam taşıyor mu?”. Programcılar arasında bu kadar önem taşıyacak kadar büyük farklılıklar bulunuyor mu?

Belki bu bize aşikar geliyor ama çok sayıda insan için bu iddia kanıtlanmalı.

Yıllar evvel, daha büyük bir şirket Fog Creek’i satın almayı düşünüyordu; ben ise o şirketin CEO’sunun benim en iyi programcıları işe alma teorime gerçekte katılmadığını duyduğum anda bu işin yürümeyeceğini anlamıştım. O, İncilden bir benzetme kullanıyordu: sadece bir tane Kral Davut’un ve emirleri yerine getirecek bir askerler ordusu olması yeterlidir. Şirketinin borsadaki değeri, bir anda 20’den 5’e düştü; yani iyi ki teklifi kabul etmemişiz; ama bunu onun Kral Davut fetişine bağlamak biraz güç.

Ve aslında, birbirinin kopyası iş dünyası gazetecileri ve onlar adına düşünüp onlar adına yemeklerini çiğneyen vs. fazla para alan yönetim danışmanlarına güvenen büyük şirketler dünyasında geleneksel algılayışa göre en önemli şey programcıların maliyetini düşürmek gibi görünüyor.

Diğer bazı sektörlerde ucuz, iyi’den daha önemlidir. Wal-Mart iyi ürünler satarak değil, ucuz ürünler satarak dünya üzerindeki en büyük şirket oldu. Eğer Wal-Mart yüksek kalite ürünler satmaya çalışsaydı, maliyetleri yükselecek ve tüm ucuzluk avantajları yok olacaktı. Örneğin; eğer diyelim ki çamaşır makinesinde yıkanmak gibi olağandışı aşınmalara dayanabilecek spor çoraplar satmaya çalışsalardı, mesela pamuk gibi her türden pahalı malzeme kullanmak zorunda kalacaklar ve her bir çorabın maliyeti yükselecekti.

Öyleyse yazılım sektöründe, elde olan en ucuz programcıları kullanan bir ucuz maliyet tedarikçisine neden yer yok? (Bana hatırlatın da, Quark’a “herkesi işten çıkarıp onarlın yerine ucuz maliyetli çalışanlar getir” planının neden işe yaramadığını sorayım.)

İşte neden: Yazılımın çoğaltılması bedavadır. Bu demektir ki, yazılımcıların maliyeti, sattığınız yazılımın tüm kopyalarına dağılmış durumdadır. Yazılımda, satılan her birimin maliyetini artırmadan kalitesini artırabilirsiniz.

Temel olarak, tasarım maliyet kattığından daha hızlı değer katar.

Ya da, kabaca söylersek, eğer yazılımcılarda cimrilik ederseniz kötü yazılım üretirsiniz ve o kadar da para tasarruf etmezsiniz.

Aynı şey eğlence sektöründe de geçerlidir. Yüksek bir ücret talep etmesine rağmen son gözde filminiz için Brad Pitt ile anlaşmaya değer, çünkü o ücret sadece Brad çok seksi diye o filmi izleyen milyonlarca insana bölünebilir.

Yada başka türlü söylersek, yüksek bir ücret talep etmesine rağmen son gözde filminiz için Angelina Jolie ile anlaşmaya değer, çünkü o ücret sadece Angelina çok seksi diye o filmi izleyen milyonlarca insana bölünebilir.

Ama hala hiçbir şeyi kanıtlamadım. “En iyi programcı” olmak ne demektir, ve farklı programcılar tarafından üretilen yazılımın kalitesi arasında o kadar büyük farklılıklar var mıdır?

Bildiğimiz üretkenlikle başlayalım. Programcının üretkenliğini ölçmek oldukça güçtür; bulacağınız her türlü ölçüm yöntemi (hatalardan arındırılmış kod satır sayısı, fonksiyon sayısı, komut satırı argümanı sayısı) kolaylıkla suistimal edilebilir, büyük projelerde kesin veri elde etmek çok güçtür, çünkü iki programcıya aynı şeyi yapmalarının söylendiği çok nadirdir.

Benim güvendiğim veri Yale’deki Profesör Stanley Eisenstat’tan geliyor. Kendisi her yıl yoğun programcılık içeren, ve yapılan çalışmanın önemli biri bölümünün her biri yaklaşık iki hafta süren beş programcılık ödevinden oluştuğu CS323 dersini verir. Ödevler bir üniversite sersi için oldukça ciddi ödevlerdir: Bir Unix komut satırı kabuğu oluşturmak, ZLW dosya sıkıştırıcısı oluşturmak vs.

Öğrenciler arasında bu ders için ne kadar çalışma gerektiği ile ilgili sızlanmalar o kadar arttı ki Profesör Eisenstat öğrencilerden her bir ödev için ne kadar zaman harcadıklarını bildirmelerini istedi. Kendisi bu verileri yıllar boyunca dikkatli bir biçimde toplamaya devam etti.

Verileri incelemek için biraz zaman ayırdım. Bu bildiğim kadarı ile düzinelerce öğrencinin eş zamanlı olarak aynı teknolojiyi kullanarak birbirinin aynısı ödevler üzerinde çalıştığı tek veri grubu idi. Oldukça kontrollü bir deneydi.

Bu verilerle yaptığım ilk şey on iki adet ödeve harcanan zamanların ortalamasını, minimumunu, maksimumunu ve standart sapmasını hesaplamak oldu. Sonuçlar:

Burada fark edeceğiniz en aşikar şey devasa varyasyonlardır. En hızlı öğrenciler ortalama öğrencilerden üç ya da dört kat hızlı, en yavaş öğrencilerden de on kata kadar daha hızlı tamamlıyorlar. Standart sapma müthiş. Ben de dedim ki, hmm, belki de bu öğrencilerden bazıları berbat bir iş çıkarıyorlar. Dört saat harcayıp ortaya çalışan bir program çıkaramayan öğrencileri dahil etmek istemiyordum.Böylece veriyi daralttım ve notlara göre en üst %25’te olan öğrencileri dahil ettim. Şunu da belirtmeliyim ki, Profesör Eisenstat’ın dersindeki notlar tamamen objektifti: Notlar yazılan kodun kaç tane otomatikleştirilmiş testten geçtiğine göre çalışan bir formülle veriliyor, ve başka hiçbir şey dikkate alınmıyordu. Kötü tarz ya da geç kalmaktan dolayı not kırılmıyordu.

Sonuçta, en üstteki %25’lik dilim için sonuçlar şöyle:

Pek fark yok! En üst %25 için standart sapma neredeyse aynı. Aslında verilere daha dikkatle bakarsanız süre ve not arasında fark edilir bir korelasyon yok. Aşağıda ödevlerden birine ait tipik bir dağılım grafiği var. Öğrencilere 2001 yılında verilmiş olan, Ziv-Lempel-Welch sıkıştırma algoritmasının bir uygulaması olan COMPRESS01 ödevini seçtim, çünkü oradaki standart sapma toplam standart sapmaya çok yakındı.

Burada görülecek hiçbir şey yok, ve asıl konu da bu zaten. İşin kalitesi ve harcanan süre basitçe birbiri ile alakasız.

Bunu Profesör Eisenstat’a sordum, o ise bir şey daha işaret etti: Ödevlerin belli bir son tarihi olduğundan (genellikle geceyarısı) ve geç kalmanın cezası ağır olduğundan pek çok öğrenci proje tamamlanmadan çalışmayı bırakıyordu. Diğer bir deyişle, bu ödevlere harcanan maksimum zaman olabildiğince düşüktü, bunu kısmen sebebi ödevin teslim zamanı ile ödevin verilme zamanı arasında yeterli saat yoktu. Eğer bir öğrencinin ödev üzerinde harcayacak sınırsız zamanı olsaydı (ki bu çalışma hayatına biraz daha uyardı) dağılım daha da yükselirdi.

Bu veri tamamen bilimsel değil. İşin içinde muhtemelen biraz kopya çekme de var. Bazı öğrenciler sempati kazanma ve bir dahaki sefere daha basit ödevler alma umuduyla harcadıkları zamanı gerçeğinden daha yüksek bildirmiş olabilirler. (İyi şanslar! CS323’deki ödevler ben bu dersi aldığım 1980’li yıllardaki ile bugün de aynı.) Diğer öğrenciler zamanı tutmadıkları için daha kısa süreler bildirmiş olabilirler. Gene de bu verilerin programcıların arasında 5’e 1 ya da 10’a 1 farklar olduğunu gösterdiğini düşünmenin ileri gitmek olmadığını düşünüyorum.

Fakat bekleyin, dahası var!

Eğer programcılar arasındaki tek fark üretkenlik olsa idi, beş tane orta karar programcıyı bir tane iyi programcıyla değiştirebileceğinizi düşünebilirdiniz. Ama bunun işe yaramadığı çok açıktır. Bunun sebebi, Brooks Yasası’dır-gecikmiş bir yazılım projesine adam gücü eklemek projeyi daha da geciktirir. Tek bir iş üzerinde çalışan tek bir iyi programcının hiçbir koordinasyon veya iletişim yükü yoktur. Aynı iş üzerinde çalışan beş programcının ise koordinasyona ve iletişime ihtiyacı vardır. Bunlar epey zaman alır. Mümkün olan en küçük ekibi kullanmanın getirdiği başka kazançlar da vardır; adam-ay gerçekten de efsanevidir.

Fakat bekleyin, dahası var!

Birkaç tane iyi programcı yerine birçok orta karar programcı kullanmanın getirdiği asıl sorun; ne kadar uzun süre çalışırlarsa çalışsınlar ortaya harika programcılar kadar iyi bir şey çıkaramayacaklarıdır.

Beş tane Antonio Salieri, Mozart’ın Requiem’ini yapamaz. Asla. Yüz yıl uğraşsalar bile.

Beş tane Jim Davis – esprilerin %20’sinin Pazartesi’nin ne kdara sinir bozucu olduğu ile ilgili ve geri kalanının da kedilerin lazanyayı ne kadar sevdiği ile ilgili olan (ve bunlar da can alıcı esprileriydi) , hiç de komik olmayan çizgi kedinin yaratıcısı… Beş tane Jim Davis hayatlarının geri kalanında komedi yazmaya harcasalar asla ve asla Seinfeld’in Çorba Nazi’si bölümünü üretemez.

Creative Zen ekibi kendi çirkin iPod taklitlerini düzeltmek için yıllarını harcasalar da Apple iPod kadar güzel, tatmin edici ve zarif bir Yürütücü üretemezler. Apple’ın piyasa payında çizik bile açamayacaklar, çünkü o büyülü tasarım yeteneği orada değil işte. Bu onlarda yok.

Ortalama yetenek asla büyük yeteneklerin daima ulaştığı yüksek notalara ulaşmaz. Mozart’ın Gecenin Kraliçesi’nde f6’ya ulaşabilen diva sayısı neredeyse yok denecek kadar az; ve o ünlü f6 olmadan Gecenin Kraliçesi'ni icra edemezsiniz.

Yazılım gerçekten sanatsal yüksel notalarla mı ilgilidir? “Belki bazı şeyler öyledir” diyorsunuz, “ama ben tıbbi atık sektörü için muhasebesel kullanıcı arabirimleri ile uğraşıyorum”. Pekala. Bu tartışma, şirketin başarısının ya da başarısızlığının kodlarının kalitesinin doğrudan sonucu olduğu yazılım şirketleri ile, paket yazılımlarla alakalı.

Ayrıca, son birkaç yılda yüksek notaları, pek çok harika yazılım örneklerini gördük: ortalama yazılım geliştiricilerin yapamayacakları şeyler.

2003 yılında Nullsoft, Winamp’in yeni versiyonunu websitelerinde aşağıdaki bildiri ile birlikte yayınladı:

  • Çekici yeni görüntü!
  • Hoş yeni özellikler!
  • Çoğu şey gerçekten çalışıyor!

İşte bu son kısım…”Çoğu şey gerçekten çalışıyor!” kısmı herkesi güldüren kısımdı. Ve sonra mutlu oldular, Winamp ile ilgili o kadar heyecan duyduklar ki, onu kullandılar, arkadaşların bahsettiler, ve sadece websitelerinde “Çoğu şey gerçekten çalışıyor! Çok havalı değil mi?” yazıyor diye Winamp’in harika olduğunu düşündüler.

Windows Media Player ekibine birkaç tane daha fazladan programcı koysanız, bu yüksek notaya hiç erişebilirler mi? Bin yılda bile asla. Çünkü o ekibe daha fazlasını ekleseniz de websitesine “Çoğu şey gerçekten çalışıyor” yazmanın amatör ve toyca olacağını söyleyen bir tane huysuz çıkacaktır.

Şu yorumu da eklemeden geçmeyelim, “Winamp 3: Neredeyse Winamp 2 kadar yeni!”

İşte bu tip şeyler bize Winamp’i sevdirdi.

AOL Time Warner’daki minik kafalı takım elbiseliler o şeye bulaştıklarında, wesitesindeki o komik şeyler ortadan kalktı. Onları Amadeus filmindeki Salieri gibi burnundan soluyan, azmış ve burnu akar bir şekilde dolaşıp, insanların o ürünü sevmesine sebep olan ne varsa süpürme pahasına da olsa, belki Minnesota’daki bir yaşlı kadını korkutabilecek tüm yaratıcılık işaretlerini yok etmeye çalışırken görebilirsiniz.

Ya da, iPod’a bakın. Pilini değiştiremiyorsunuz. Yani, pil ömrü dolduğunda, çok yazık. Yeni bir iPod alacaksınız. Aslında, iPod’u fabrikaya geri gönderdiğinizde Apple pili değiştirebilir. Ama bu size $65.95’a patlar. Vay canına.

Pili neden değiştiremiyorsunuz?

Benim teorim şu ki, çünkü Apple güzel, seksi iPod’larının mükemmel derecede pürüzsüz ve kusursuz yüzeyini diğer ucuz tüketici leşlerinde gördüğünüz; her zaman kırılan küçük tırnakları olan, cep pamuğu ile dolan ve tüm o genel berbatlıktaki kötü pil kapağı ile bozmak istemezsiniz. Tek bir pil kapağı tüm çakıl taşı etkisini mahvedebilir.

Apple, tarza dayanan bir karar verdi. Aslında iPod tarza dayanan kararlarla doludur. Ve tarz da Microsoft’taki 100 programcının ya da uymamış bir ismi olan Creative’deki 200 endüstriyel tasarımcının ulaşabileceği bir şey değil, çünkü onlar Jonathan Ive’a sahip değiller; ve etrafta da çok fazla sayıda Jonathan Ive da bulunmuyor.


Özür dilerim, iPod’dan söz etmeyi kesemiyorum. O klik sesleri olan güzel parmak tekerleği… Apple, parmak tekerleğinin klik seslerinin parmak tekerleğinin kendisinden gelmesi için iPod’un kendisinin üzerine bir hoparlör koymak için masrafa girdi. Eğer klik sesleri kulaklıktan gelseydi birkaç kuruş tasarruf edebilirlerdi… Birkaç kuruş! Ama parmak tekerleği sizde kontrolün sizde olduğu hissini uyandırıyor. Kontrolün kendisinde olması insanları mutlu eder. Parmak tekerleğinin sizin komutlarınıza yumuşak, akıcı ve sesli bir şekilde yanıt vermesi sizi mutlu eder. Ama, açma kapama düğmesine bastığınızda neler olduğunu anlamak için bir dakika beklemek zorunda olduğunuz kadar uzun sürede açılan diğer 6,000 tane cep boyutundaki tüketici elektroniği ürün hurdası etmez. Kontrol sizde mi? Kimbilir? En son zaman açma düğmesine basar basmaz açılan bir cep telefonunuz oldu?

Tarz.

Mutluluk.

Duygusal çekicilik.

Bunlar yazılım ürünlerinde, filmlerde ve tüketici elektroniğinde büyük başarılara yol açan şeyler. Ve eğer bunları doğru beceremezseniz problem çözebilirsiniz ama ürününüz 1 numaralı ürün haline gelip şirketteki herkesi zengin edip hepiniz Ferrari Spider F-1 gibi tarza sahip, mutlu, çekici arabalar sürüp hala arka bahçenizde ashram kuracak paraya sahip olamazsınız.

Bu sadece “10 kat daha üretken”lik meselesi değil. Konu şu ki, “ortalama üretkenlikteki” yazılımcı asla harika yazılımı oluşturan yüksek notalara ulaşamaz.

Üzücüdür ama bu ürün-süz yazılım geliştirme için geçerli değildir. Dahili, şirket içi yazılım nadiren rock yıldızlarını işe alacak kadar önemlidir. Kimse düğünlerde şarkı söylemesi için Dolly Parton’la anlaşmaz. İşte bu yüzden, eğer yazılım geliştiricisi iseniz en tatminkar kariyerler gerçek yazılım şirketlerindedir, bir banka için IT yapmakta değil.

Yazılım piyasası bugünlerde kazanan hepsi alır tarzı bir piyasadır. Apple dışında kimse MP3 çalıcılardan para kazanamıyor. Microsoft dışında kimse hesap tablosu ve kelime işlemcilerden para kazanamıyor, ve evet, onların bu pozisyona gelebilmek için rekabet dışı işler yaptığını biliyorum, ama bu sistemin kazana hepsi alır sistemi olduğu gerçeğini değiştirmiyor.

İkinci olmayı, ya da “yeterince iyi” bir ürüne sahip olmayı göze alamazsınız. Ürününüz bahsi geçecek kadar iyi olmalı; bundan kastım insanlar ürününüzden bahsetmeli. Gerçekten, gerçekten yetenekli yazılım geliştiricilerinden aldığınız ek fayda sizin bahsi geçer olmaktaki tek umudunuzdur. Her şey planda gizli:

En iyi çalışma koşulları -> En iyi programcılar -> En iyi yazılım -> Kar!

Personal tools