0 ve 1

Mükemmeliyetçilik hakkında çok konuştum daha fazla konuşmayı planlamıyordum ama orada bahsetmediğim çok önemli bir konu daha var.

Bir sorunu çözerken, ya da bir işi yaparken genelde programcılar işi ya yapabilir ya da yapamaz, arası yoktur, en azından genelde olmadığını düşünürler. Eric Sink bu sendroma Binary Thinking adını vermiş.

Bu mükemmeliyetçilik ile bire bir ilgili bir konu, anlaşılması gereken hemen hemen her çözümün üç şekilde sonuçlandırılabilmesi:

  1. Tam bir çözüm – 1
  2. Çözememek – 0
  3. Yeterli Çözüm

Mesela Google arama motoru olayını çözmedi ama yeterli kadarını çözdü, bundan sonrası düzenli bir şekilde geliştirme aşamasında. Aynı şekilde kullanıcılarınızın %90'ını tatmin edebilecek ya da %90 durumda iyi çalışacak bir çözüme ulaştıysanız kalan %10'u çözmek eğer zorsa çözmeyebilir ve çözmeden de neredeyse aynı verimi alabilirsiniz.

Bu teknik ve teknik olmayan alanlarda düzenli şekilde karşımıza çıkan bir durum, üçüncü seçeneğin orada olduğunu bilmek lazım. (ek olarak bakınız "good enough software")

Bu Yazılar Kaçmaz
Why platform matters in web application security?
Ücretsiz Web Güvenliği Tarayıcısı

Karar

Detaylara inmeden şu konuda anlaşalım: "Yanlış karar almak, kararsızlıktan daha iyidir". 10 senenin ardından diye kısa bir yazı yazmıştım aynı temada devam edeyim.

Uzun süre bulunduğum projelerde bir çok teknik veya teknik olmayan çıkan ürünü etkileyecek özellikler, dokümantasyon, kodlama vs. ile ilgili tartışmaya girdim, saatlerce ince detaylar üzerinde konuştuk, en iyi kararları vermeye çalıştık. Ancak sonraları fark ettim ki aslında kimsenin umurunda olmadığı saçma sapan şeyler üzerine saatlerce efor harcamış, tartışmışız. Eğer eşşek* kadar bir firmaysanız o zaman böyle saçma işler ile uğraşıp 8 kişi bir tane buton tasarlayabilirsiniz o da muhtemelen bir şeye benzemez ama küçük bir firma veya tek kişilik SWAT ekibiyseniz vaktinizi harcayacak daha iyi yerleriniz var.

Yanlış anlaşılmasın genelde birlikte çalıştığınız kişi ürün geliştirme hakkındaki kararlarda ateşli tartışmalara giriyorsa bu genelde iyi bir şeydir. Gerçekten yaptığı şeyi umursuyor, yaptıktan sonra gururla onu herkese gösterebilmek istiyordur, aksi takdirde "salla gitsin" der ve uğraşmazdı.

Bu yazıyı çok daha uzun yazmayı planlıyordum ama sanırım şunu yazmak yetecek:

"Önemli olmayan konularda vaktinizi harcamayın, kararı ertelemeyin, bir karara varın ve yapın. Bu tip kararların %99.99 u daha sonradan değiştirilebilir."

*eşek kadar değil eşşek kadar yani çok büyük

10 Senenin Ardından

Bilişim sektöründeki iş hayatım 10 seneyi geçti, hala Küçükyalı’ da küçük ve yer yer çiğ köfte yapılan bir ofiste B2B sitesi yazmaya çalıştığımızı, dotmatrix yazıcılardan web monkey makaleleri bastırdığımı, okula giderken bu makaleleri okuduğumu, her defterime başka bir internet projesinin dizaynını, planını yaptığımı hatırlıyorum.

Güzel günlerdi, bilgiye açtım, materyal yoktu, etrafta anlayan adam yoktu, gelen herşeyi tüketiyordum, Amerika’ya iş yapıp karşılığında Amazon’dan kitaplar aldırıyor, sadece internete erişebilmek için ofiste kalıp, klavye başında uyuya kalıyordum. Gençtim ve salaktım ama güzel günlerdi.

Bu 10 sene boyunca düzenli olarak aklıma gelen tek şey eskiden ne kadar salak olduğumdur, sanırım ne kadar çok bilmediğimi düzenli bir şekilde öğrenmeye devam ettikçe seneler bilgi ekliyor gibi değilde eksiltiyor gibi hissettirmeye başladı. İkinci önemli husus ise bilginin ne kadar geçici olduğu, ilgilenmediğim konuların teknik detayları birer birer aklımdan silindi ve elimde sadece temelleri kaldı, hatta o kalanlardan bazılarının temelleri bile değişti.

Tarih bir şeyi kanıtladı ki doğru insanların nasihatlerini dinlemek ve deneyimlerinden faydalanmak önemli bir şey. Ben şahsen gereğinden daha çok deneme-yanılma yaptığıma inanıyorum, bunun iki nedeni var, 1)dinleyecek veya “mentor” diyebileceğimiz kişilerin piyasada, etrafımda olmaması, 2) Salak gençlik ateşinin verdiği herşeyi biliyorum havası.

Yeni nesil yeni bir internet ile karşı karşıya, herkes yazıyor, çiziyor her ne kadar herkes yazıyor olsa da takip edecek deneyimlerinden faydalanacak her konuda binlerce insan var. Sağolsunlar bizleri kendi yaptıkları hataları yapmaktan kurtarıyorlar.

Son olarak bulunduğunuz yerlerin kültürü çok önemli, doğru iş yerinde, doğru ekiple güzel kültürlerde bulunma Fikir Üretme ve Etki Tepki konusundaki gibi doğru adrese yönelmeyi sağlıyor, bugüne kadar farklı yerlerde teknik olarak kayda değer bir şey öğrenmemişimdir belki ama teknik olarak herşeyi değiştiren farklı kültürleri, çalışma yöntemlerini öğrendim, değişik karakterler ile tanıştım. Bunun yerini hiç bir şey tutamaz.

Muhtemelen on sene sonra tekrar bu yazıyı okuyup gülecek ve ne kadar salakmışım diyeceğim…

Bir sonraki bariz adım

Sanırım ilk defa bir kitapta okumuştum, yeni bir ürünün yeni bir özelliğinden bahsediyordu geliştiricisi ve ön plana çıkan bir özellik için "It was the next obvious step" demişti. Çok basit bir cümle olmasına rağmen bende bir ışığın yanmasına neden oldu. Bir sonraki bariz adım. Çünkü elimizdeki süreçlerin bir çoğu belli, hiç bir şey bir gecede çıkmıyor, genelde beslendiğimiz kaynak aynı.

O zaman fark ettim ki önemli olan on sene sonrasını tahmin edebilmek değil "bir sonraki bariz iş" i görebilmek ve diğer görebilenlerden önce yapabilmek.

Gene bu yüzden bana biri bilmediği bir konuda proje getirince ya da bahsedince pek dikkate almıyorum, çünkü o kişinin o sektör hakkında hiç bir fikri yok, her ne kadar bu ona daha serbest bir düşünce şansı tanısa da %90 o işi beceremeyecek. O sektörün bir sonraki adımlarını takip etmesi mümkün değil, çünkü önceki adımlar hakkında hiç bir fikri yok. Gene aynı nedenlerden dolayı 2000' li yıllarda bilişime başlamış herkese şiddetle Accidental Empires kitabını (ya da belgeselini) öneririm, bu sayede bu sektörün nereden, nereye, kimler ile ve nasıl olaylarla geliştiğini görebilirler.

Aynı borsada hisse senedi tanımak gibi, bir hisse senedinin ne kadar tanırsanız, geçmişini ne kadar biliyorsanız başına gelebilecekleri daha rahat tahmin edebilirsiniz. Mesela geçen senenin başında krizlerden sonra sağlam bankaların hisselerinin uzun bir süre yükselişte olacağı barizdi çünkü ya batacaklardı ya da çıkacaklardı, nitekim aylarca tüm banka hisseleri yükseldi.

Bunun yanında "Black Swan" teorisi her zaman orada olacak ama açıkçası bu teori hiç bir şeyi değiştirmiyor, aynı yarın uyandığınızda evinize bir uzay gemisi girmesinin umurunuzda olmadığı ya da buna karşı hazırlık yapma gereği duymadığınız gibi.

Sektörün her noktasına baktığınızda bir sonraki bariz adımı çok rahat görebilirsiniz, YCombinator' un yeni 26 startup' ına bir göz atın kaç tanesi gerçekten orijinal, hemen hemen hiç biri, hepsi bir sonraki bariz adım...

Yapılacaklar Listesi (todo list) Sanatı

Umarım zaten hepiniz neden bir yapılacaklar listesi tutmanız gerektiğini biliyorsunuzdur, özetlersek:

  • Ne yaptığınızı bilmek
  • Ne yapacağınızı bilmek

ama en önemlisi:

  • Binlerce şeyi aklınızda tutmak yerine bir yere not alıp beyninizden silmek

Bu son maddenin önemini yıllarca anlamamıştım, yeni yeni anlıyorum. Eğer yapılacak bir işi bir yere not almadıysanız o iş her zaman aklınızda kalacak, aynı çözemediğiniz bir bilmece ya da nedenini bulamadığınız bir bug gibi. Dolayısıyla yaptığınız işe odaklanabilmek için  o an yapmadığınız her şeyi, aklınızdan çıkarmanız lazım. Bunun da en pratik yolu bir yapılacaklar listesi tutmak.

Yapılacak listesi tutmak

  • Sistem belli olmalı ve güvenlir olmalı
    Hep aynı sistemi kullanın, küçük bir defter, todo list, tada list, remember the milk, sekreteriniz vs. Ne olduğunun önemi yok ama güvenilir ve pratik olmalı.

  • Listenizi açıklayıcı bir şekilde yazın
    Asla
    ve asla anahtar kelimeler yazıp ne de olsa sonra hatırlarım demeyin, zaten bu işin amacı aklınızdan bu konuyu çıkarmak. Aynı kod yazarken başka bir objeye verdiğiniz referansı silmezseniz memory leak olacağı gibi beyninize de o iş ile ilgili anahtar kelimelerden referanslar kurarsanız o iş aklınızdan tamamen çıkmayacak. Ya da aklınızdan çıkacak ve o işe tekrar döndüğünüzde o işin ne olduğunu hatırlamayacaksınız.

  • Adımlı detaylandırma
    Özellikle teknik konularda bazen listeye yeni bir madde eklerken çok fazla detaylara kaymak mümkün olabiliyor. Mesela “Blog’ a CAPTCHA ekle” maddesinin altında teknik olarak nasıl bir CAPTCHA kullanacağınızı dokümante etmenize ya da düşünmenize gerek yok. Bunu o maddeye gelince detaylandırabilirsiniz. Özetle önce ana notu alın, ondan sonra o işe geldiğinizde elinizdeki işi maksimum 2 saatlik yeni parçalara bölün. Eğer bir parça iki saati geçiyorsa muhtemelen gereğinden büyük bir parçadır demek ve onu da küçük parçalara bölmelisiniz. Bu yüzden ben ağaç yapısı ile girdi desteği olmayan bir todo list yazılımı kullanamıyorum, bence bu çok önemli.

    Çok büyük parçaları yapmaya çalışmak kötü sonuçlar verecektir. Mesela “Yeni CMS sistemi yaz” gibi bir madde tamamen işe yaramayan bir maddedir. Çünkü bu işin altında ne yapacağınız belli değil, ama bunu 2 saatlik işlere bölerseniz tam olarka ne yaptığınızı biliyor olacaksınız. Mesela “Database’ i tasarla”, “Yeni üye kayıt sayfasını yaz” vs.

  • Revize edin
    Düzenli bir şekilde listenizi gözden geçirin, bazı şeyleri hali hazırda yapmış olabilirsiniz, hemen listeden silin. Bazı şeyler artık gereksiz olabilir, hemen listeden silin vs. Ne kadar güncel olursa o kadar iyi çünkü bu sizin sisteminize güveninizi arttıracak bu da beyninizi rahatlatacak.

  • Önem  Sırası
    Yapılacaklar işler listenizde her bir işin ne kadar önemli olduğunu bilmeniz gerekli. Eğer işlerin önemi belli değilse planlama yapamazsınız ya da “Yeni üye kayıt sayfası“ nı bitirmeden “Google Maps API ile twitter’ ı bağlayıp, iPhone’ dan site hakkında twit gönderen kişilerin pie chart’ larının gösterilmesi“ işini yapıyor olursunuz. Ben bunu çok yaptım, klasik hata. Teknik konularda bu önem oranı 1-10 arası olabilir, genelde 1-3 arası o kadar iyi çalışmayabiliyor.
  • Kaynama yapmayın
    Bazen çalışırken aklınıza bir şey gelecektir eğer çalıştığınız konu ile bire bir alakalı önemli bir şey değilse onu yapılacaklar listenize alın ve daha sonradan o işe geçin. Direk o işe zıplamayın ya da önemsiz işler için zaten bu işi yapıyorum onu da aradan çıkartayım diye düşünmeyin.

Çalışırken şu 2 soruya cevap veriyor olabilmeniz lazım:

  1. Şu an tam olarak ne yapıyorsun ve niye? Neyin parçası, hangi işin bitmesine nasıl yardımcı olacak?
    “Kod yazıyorum” ya da “CMS yazıyorum” geçerli bir cevap değil, Doğru cevap “CMS’ i bitirmem için gerekli olan yeni kullanıcı kaydı sayfasının girdilerinin client-side kontrolü için JavaScript yazıyorum” olmalıdır.

  2. Bundan sonraki adımlar neler?

Odak

Senelerce bir çok farklı işte çalışıp küçüklü büyüklü bir çok proje yaptıktan sonra fark ettim ki bir projenin en büyük düşmanı içimizdeki diğer projeler. Ne zaman bir işe başlasam daha henüz başındayken başka projeler gelip odağımı çalıyor.

Başka projelerin odağı çalması tamamen motivasyon ile alakalı. Eğer elinizdeki iş henüz yayınlanmamışsa, yayınlanmışsa ama henüz yeterince kişi ilgilenmediyse, beklediğinizi bulamadıysanız başka projelerin odağınızı çalması çok daha basit hale geliyor.

Bunu çözmek için bir kaç yol:

  • Projelerin ayağa kalkmasının belli bir vakit süreceğiniz kabullenin. Bu vaktin genelde sandığınızdan daha fazla süreceğini de bilin.
  • Aklınıza gelen tüm diğer fikirlere şiddetle karşı çıkın
    • Bu fikirleri bir yere not alıp, unutabilirsiniz
    • Bu fikirleri blog, twitter gibi yerlerde açık açık dokümante edip kurtulabilirsiniz

Her zaman "süper" fikirler aklınıza gelecek, bunu durdurmak mümkün değil ama o fikirleri kovalamamak mümkün.

İyice Odaklanın

Elinizdeki işe odaklanmak için diğer tüm gereksiz projelerden, işlerden de kurtulmanız lazım. Vaktinizi veya aklınızı alan gereksiz tüm projelerinizi ya elden çıkartın ya da çizgi çekin.

Elden çıkart: Sat, kapat.
Çizgi Çek: Bir daha dokunma, güncelleme, tanıma.

Nasıl birden çok şeyi aynı anda yapmaktan iyi verim alınamıyorsa, birden çok projeyi aynı anda yapmak da işe yaramıyor.

Nasıl soru sorulur ve cevap alınır

Son günlerdeki öğreten adam temama yıllardır yazmak isteyip bir türlü yazamadığım bu yazı ile devam ediyorum...

Blog yazmaya başladığım ilk günden bu yana düzenli soru e-mail' ları alıyorum. "Hangi antivirüs' ü alayım?" dan tut "Erkek arkadaşım bilgisayarı benden çok daha fazla seviyor ne yapayım?" a kadar. Ciddiyim ikinci soru ve farklı varyasyonlarını bir kaç defa gördüm.

Kişisel sorulardan hiç bahsetmiyorum bile...

Henüz daha toyken hemen hemen tüm bu emaillara cevap veriyordum. Daha sonradan fark ettim ki bu emailların yarısı cevabı bile hak etmiyor. Ben de bizzat tanımadığım kişilere email ile soru soruyorum, bunların bazıları çok meşgul ya da günde 100 tane email alan kişiler. Kitap yazarları, teknik adamlar, blog yazarları vs.

Bu soruları sorarken şu kuralları izlemeye çalışıyorum:

Altın Kural
Soru sorduğum kişi bana cevap vermek zorunda değil.

Kural 1
Kendi yapabileceğim bir şeyi başkasından istemem. Mesela Google' da arama yapmak gibi!

Kural 2
Sorduğum sorunun cevabını verecek kişinin eforunu minimuma indirmem gerekiyor.

  • Soru hakkında kişinin neleri bilmesi gerektiğini düşünüp bunların hepsini daha o istemeden ilk emailda göndermeye çalışırım. Dolayısıyla sorduğum kişi bana dönüp 10 soru daha sormak zorunda kalmaz.
  • Emailı mümkün oldukça kısa tutmaya çalışırım. Kısa yazı yazmak kolay bir iş değil, dolayısıyla göndermeden sorunun üzerinden defalarca geçip yeterince kısa mı?, anlatmak istediğimi en efektif şekilde anlatabildim mi? diye düşünürüm.
  • Emailları adam gibi dil bilgisi ile yazmaya çalışırım. Yazım kuralları olabildiğince doğru olmalı. En azından bir "spell checker" kullanalım değil mi? Eğer ben yazdığım emaila 5 dakika harcayamıyorsam cevap verecek kişi neden 20 dk. uğraşıp cevap versin ki?

Kural 3
Kibar ol. Bkz: Altın Kural

Tanımadığınız insanlara tanımadığınız insanlar gibi yaklaşın. Askerde birlikte bot bağlamış gibi değil. Burada herkesin tipi farklı tabii ki, benim blog üslubumdan dolayı genelde aldığım emaillarda insanlar senli-benli hitap ediyorlar ki bence hiç bir sorun yok, hatta siz diye gelen emaillar biraz tuhafıma gidiyor ama bu durum herkes için geçerli olmayacaktır.

Buna rağmen daha kendinin kim olmadığını söylemeden, selam sabahsız emaillarda genelde anında siliniyorlar. Aradaki farkı iyi bilmek lazım.

Kural 4
Karşıdaki kişinin konusu ile alakalı bir şey sormaya çalışırım.

Mesela bana Java konusunda teknik sorular geliyor. Acaba bugüne kadar Java' yı küfretmek dışında cümle içerisinde kullandığımı kaç defa görmüşler ki?

Kural 5
Elimden gelen her şeyi yapmama rağmen kişi cevap vermezse kızmam. Dolayısıyla emailları yazarken varsayılan olarak cevap almayacağımı düşünürüm, cevabın gelmesi beni sevindirir. Bkz: Altın Kural

Altın Kural, altın kural, altın kural.... Karşıdaki kişi bana cevap verme yükümlülüğünde değil bana cevap veriyorsa bu büyük bir kıyaktır. Bunu unutmadan yazdıktan sonra gönül rahatlığı ile bir yabancıya email atıp soru sorabilirsiniz.

Bilimsel Cevaplar

Her zaman insanları okumak konusunda iyi olduğumu düşünmüşümdür ve bu hislerime güvenmediğimde başıma gelenlere bakarak sandığımdan daha da iyi olduğumu söyleyebilirim, ama zaten kendi hakkımızda ne biliyoruz ki?

Eğer birine Evet / Hayır noktasına gelebilecek bir soru sorarsanız iki farklı bilgiye dayalı iki farklı cevap gelme ihtimali var.

Mesela "Zafer evde mi?"

  • Evet, Zafer evde. Çünkü cevap veren kişi Zafer' i az önce evde gördü.
  • Hayır, Zafer evde değil. Çünkü cevap veren kişi Zafer' in evden çıktığını ve geri gelmediğini gördü.
  • Evet, Çünkü cevap veren kişi Zafer' in evde olduğunu tahmin ediyor, çünkü kendi çapında nedenleri var ama aslında Zafer' in evde olup olmadığını bilmiyor.
  • Evet, Çünkü cevap veren kişi Zafer' i gördüğünü zannediyor ama aslında hayal gördü, dolayısıyla tüm dürüstlüğüyle cevap veriyor ama aslında Zafer evde olmayabilir.

Genelde bir kişi cevabı malum yerinden atıyorsa bunu anlamak pek zor olmuyor, ki bu durumda ilk işim kanıt aramak oluyor "Zafer' i en son ne zaman gördün?" , "Eve kaçta geldi?" vs.

Örnek olarak basit bir konuyu seçtim, ben aynı diyalogu bir çok konuda yaşadım. Normal diyaloglarda insanların bunu yapmasına çok alışkınım, mesela saçma bir istatistik konusunda sanki kendileri 1000 kişi ile bizzat röportaj yapmış gibi konuşurlar. Kendilerine kaynak sorunca Hürriyet' i, amcalarının oğlu Muzaffer' i ve Wikipedia' yı gösterirler ama aslında konu hakkında sadece fikirleri vardır, buna rağmen cevapları her zaman kesindir.

Aynı komik diyalogu tarih kitaplarında da zaman zaman görülür "Padişah zötterö kendisine hastır oradan diye yeni çerinin ağlamasına kulak asmadan Mehmet ve Ahmet ile birlikte, zöttöre ağacında sallandırdı, çünkü Katerina onu gaza getirdi." Tarihçilere sorduğunuz da çok gülerler bunlara.

Açık konuşmak gerekirse bu tip kesinlikle bir şey aktaran ya da cevap veren insanların becerilerine hayranım, çünkü gerçekten bilmediğin bir konuda kesin konuşmak etkileyici bir yetenek ve iş dünyasında adam kafalamaya çok yarar, tabii ki karşında senin bunu attığını ya da gerçekten yeterli derecede bilmediğini anlayabilecek birisi yoksa. Bkz: fizzbuzz yazamayan programcı işe alan bir dünya firma.

Buna rağmen özellikle teknik konularda bunu yapmak feci bir hatadır. Ben birlikte kod yazdığım birine 10.000 elemanlık bir datayı "SortedList" te mi daha hızlı buluruz yoksa "List" te mi dediğimde kişinin cevabı ya "SortedList" ve "List" bilgisinin çok iyi olmasına dayanmalı ya da kendi bizzat bu işi denemiş ve benchmark' larını yapmış olmalı. Aksi takdirde "Bilmiyorum" ve "Emin değilim" dışında vereceği tüm yanıtlar faydadan çok zarara neden olacaktır.

Özetle tahmin ettiğiniz şeyler konusunda denemeden "Budur" ya da "Değildir" demeyin, ya da bunu söylerken çıkış datanızı belirtin. Benimle çalışmış olanlar bilirler genelde bir bilgi elime ulaşır ulaşmaz, bir sakatlık olduğunu hissedersem klasik sorularımdan biri şudur "Neye dayanarak?", bakalım boktan bir dayanak noktan mı var? Yoksa gerçekten söylediğini biliyor musun? Bazen söyleyen kişide bunu irdelememiş olabilir, normaldir, siz söyleyince düşünür o da hak verir.

İlginç bir şekilde bunun insanlar arasında inanılmaz yaygın bir davranış olduğunu gördüm, bizzat ailem, akrabalarım bir sürü arkadaşım hepsi bu şekilde ve şahsen beni deli ediyorlar. İlginç bir şekilde sanırım işin doğal bu. Eğer %50 üzerinde bir şeye inanıyorsan %100 biliyormuş gibi "Evet" veya "Hayır" deme hakkına sahipsin. Normal hayat üzerine bir uzmanlığım yok ama teknik konularda bunu yapıyorsanız ciddi sorunlar var demek.

Masanın söyleyen tarafındaysanız söylediklerinizi ve söyleyiş biçiminizi iki defa düşünmeye başlayın eğer dinleyen kısmındaysanız "all input is evil until proven otherwise" deyişindeki gibi gelen girdinin doğruluğunu onaylayın ve insanların tonundaki o emin olmama tınısını tanıma konusunda kendinizi geliştirin.

Bu aralar "öğreten adam" modunda yazmaya başladığımı fark ettim, buradaki her yazı benim naçizane deneyimlerimin çıktısıdır (doğru, yanlış, hatalı), ben kendi kişisel balonumdan yayın yapıyorum, öyle kabul edile.

Motivasyon

Dün bir e-mail aldım, bir arkadaşımız şöyle bir soru sormuş:

"Kendini bu kadar nasıl motive ediyorsun?"

Her şeyden önce motivasyon insandan insana inanılmaz derecede değişen bir şey. Kimi insanı motive etmek için gaz vermeniz lazım, kimi insana ödül göstermeniz lazım, kimisine küfretmeniz, hırslandırmanız lazım vs. vs. Mesela çoğu insan baskı altında daha iyi çalışırken ben baskı altında genelde dökülürüm ve iş yapamam.

Sizi sizden iyi bilen biri yok. Bu konuda ilk iş kendinizi neyin tetiklediğini öğrenin, hayatınız boyunca kendinizle yaşadınız, herhalde daha önceden hangi faktörlerin sizde çalışma isteği uyandırdığını bulabilirsiniz.

Motivasyon bir kaç faktöre bağlı, benim gözümde 2 ana faktör var ve onları etkileyen 2 önemli parametre var:

Faktör I - Ödül

Mesela açık kaynak kodlu bir uygulama yazıyorsanız, 2-3 ödül olabilir:

 

Faktör II - İhtimal

Eğer size günde iki saat çalışarak bir sene içerisinde ciddi bir futbol takımında oynayabileceğiniz garantisini verebilseydim, siz de bu konuda ciddi derecede motive olurdunuz, çünkü ödül büyük, çalışma mantık dahilinde ve sonuç kesin.

Gerçek hayatta sonuç hiç bir zaman kesin olmuyor onun yerine ihtimaller üzerine konuşuyoruz. Mesela yukarıdaki örnekten devam edersek açık kaynak kodlu bir yazılım yazdığınızda eğer bir sene içerisinde toplam üç milyondan fazla kullanıcıya ulaşabileceğinizi bilseydiniz bu tip bir uygulama yazarken çok daha motive olurdunuz. Tabii ki ödül seçiminizin bu olduğunu varsayıyorum, eğer derdiniz para ise üç milyon kullanıcının yüz bininin paralı bir destek alacağını umuyor olacaktınız vs.

Olaya gel, geyiğe bağladın gene

Bunlar haricinde ödül' ü etkileyen ödülün size ne anlam ifade ettiği faktörü var. Mesela para size bir anlam ifade etmiyor olabilir ama ünlü olmak çok önemlidir gibi.

Son faktör de ödüle ulaşmak için gerekli efor. Bu kritik çünkü eğer beş sene boyunca günde on iki saat çalışınca başarılı olacağınızdan emin olsanız bile bunu yapmayabilirsiniz. O yüzden gerekli efor da kritik faktörlerden biri.

Psycho Folder

Mesela Psycho Folder isimli küçük yazılımım için benim motivasyonumu inceleyelim:

  • Ödül
    Kişisel bir işi çözmek. Bunu çözünce çok büyük bir şey kazanmayacağım. O yüzden ödülün büyüklüğü az.
  • Önem:
    Bunu çözmek hayatımda ciddi bir değişiklik sağlamayacak, günde bir saat tasarruf etmeyeceğim. Dolayısıyla ödülü çok da umurumda değil.
  • İhtimal
    Başarı ihtimalim çok yüksek, çünkü yapabileceğimden eminim. Ne kodlayacağımı biliyorum, dile hakimim, teknik olarak ne yapılması gerektiğini biliyorum. 
  • Efor:
    Çok düşük bir efor ile çıkabilecek bir iş.

Dolayısıyla Psycho Folder için motivasyonum vardı ama iki günde yayınlayıp bitirecek kadar. Artık üzerinde çalışmıyorum, çünkü bundan fazla efor sarf ettiğimde alacağım ödülü karşılamaz hale geliyor.

Aynı mantık üzerinde ilerleyince neden kendi işini yapmayan bir çok kişinin çalıştığı iş yerlerinde motive olamadığını hemen anlıyoruz.

Sonuç

Motivasyon tamamen yaptığınız iş ve faktörler ile ilgili, ben son zamanlarda hayatımda hiç olmadığım kadar motive olmuş durumdayım, çünkü üzerinde çalıştığım proje için yukarıdakilerden ihtimal, ödül ve önem ciddi bir şekilde yükselişte.

Son olarak not düşmek lazım insanın kariyerinde 15m2 ofislerde tek ödülü internet ve yazıcıyı kullanabilmek olduğu zamanları da oluyor, ve ilginç bir şekilde inanılmaz bir motivasyonda da olabiliyor, dolayısıyla kariyerin belli noktalarında iniş ve çıkışlar boyunca uzun vade planlara bakıp motive olmak lazım.

Soruya cevap vermedin?

Tüm yazıyı yazmama neden soru şuydu:

"Kendini bu kadar nasıl motive ediyorsun?"

Sevmediğin işi yapma

Her şeyden önce zevk almadığım işleri yapmıyorum, bu yüzden "Efor" faktörüm genelde düşük oluyor, çünkü yaptığımdan zaten zevk alıyorum.

Bazen sevmediğiniz işleri bir süre yapmak zorunda kalacaksınız bu kaçınılmaz, bunu bir adım olarak saymak lazım. Nedenleri maddi olabilir, kariyer gereksinimi olabilir vs. Sadece sevmediğiniz bu işi çok uzun yapmayacağınızdan ve bir planınız olduğundan emin olun.

İnsanları önemseme

Ben çok fazla insana fikir sorarım ama aldığım fikirleri kullanmadan veya onlara inanmadan çok iyi analiz eder ve sorgularım. Kimseden "X böyledir" gibi bir açıklamayı kanıt olmadan kabul etmeyin. İnsanlara neden diye sorduğunuzda bir çok kişinin neden sorusunu cevaplayamadığını ya da saçma bir nedenleri olduğunu göreceksiniz. Hatta bazen onlar nedenlerini söylerken söylediklerinin saçma olduğunu anlayacaklar. Çünkü yıllardır akıllarındaki o fikri tekrar sorgulama gereği duymamışlar.

Ben bir çok insanın aksine fikirlerini, planlarını ve hayallerini paylaşmayı seven ve bu konularda açık olan biriyim. Şahsen yaptığım bir çok kariyer seçiminde çok yakın çevrem harici bir çok insan bana inanmadı. Kimi açık açık söyledi, kiminin söylemesine bile gerek olmadı, belliydi.

Genelde yanıldılar, 6 ayda bir iş değiştirmek iyi bir fikirdi, 15m2 lik boktan bir ofiste çalışmak ve kariyerimin başında tüm şerefsizlerle tanışıp daha sonradan şerefsiz ve şerefli insanları 10 dk. içerisinde birbirinden ayırma yeteneğini kazanmak iyi oldu, o firmanın bana kazık atması insanların kişisel yüzleri ile iş hayatlarının farklı olduğunu öğretti, sadece "networking" olsun diye kişisel özelliklerini sevmediğim insanlar ile takılmamak, konuşmamak iyi bir fikirdi... vs.

Özetle insanların %90' ı salaklık bariyerinde, posizyonları, durumları ve popülerlikleri ne olursa olsun. İnsanlar her projenizde bok atacak, laf sokacak sizi demotive edecekler. O durumlarda bu insanların bariyerin diğer tarafında olduğunu kendinize hatırlatın, ben öyle yapıyorum. Bu bazılarına züppemsi gelebilir ama çivi çiviyi söker. Salak insanlara karşı ya züppe olmak ya da salak taklidi yapmak gerekiyor, ona göre duruşunuzu seçin.

Çok dertliymişim bu konuda çok uzattım, özetle:

  • Başkalarında bilgi ve fikir kabul edin ama onu analiz edebilecek tek kişi sizsiniz
  • İnsanların genelde salak olduğunu unutmayın
  • Bir çok büyük ve iyi fikre bir çok insanın kafasının basmaması doğal bir şey, ne kadar zeki olurlarsa olsun, aynı şeyi göremiyor olabilirler. Bazı fikirlerin olgunlaşması için gerekli aynı şeylerden beslenmek lazım.
  • Son olarak "kalın kafalı" olmayın bazen gerçekten de haklı olabilirler, dolayısıyla insanlar genelde salak diye subjektifliği kaybetmenin bir anlamı yok.

Hedefleri büyük tut

Benim her zaman adım adım hedeflerim vardır, çok kesin şeyler değil ama kafamda büyük bir planın olması en dandik noktalarda, kısa vade ödüllerinin çok kötü olduğu zamanlarda bile devam etmemi sağlıyor.

JFRI - "Just Fuckin' Release It"

JDI ve JFDI versiyonlarından sonra bu da benim versiyonum JFRI. Bir şey yapıyorsanız ne olursa olsun onu olabildiğince hızlı şekilde yayınlayın. Kapalı bir grupta yayın yapıyor olabilirsiniz ya da tüm dünyaya açabilirsinizö önemli değil ama yaptığınız işi yayınlamak ciddi bir şekilde motivasyonunuzu arttıracaktır.

Bu da benim düzenli olarak yaptığım şeylerden biri, bence "Release Often Release Early" motto' sunun es geçilen en önemli avantajlardan biri budur. Hatta bir çok kişi motive olabilmek için projelerini bloglarında tarih ve detayları ile yazıyorlar. Bu sayede "herkese rezil olma korkusu" onları motive ediyor. Bu benim motivasyon kriterlerimden biri değil "bkz. insanları önemseme başlığı" ama sizin için işe yarayacaksa neden olmasın, kullanılabilir.

Özetle yaptığım işleri en kısa sürede yayınlamaya çalışıyorum.

Felsefe

Son olarak felsefik tipler için ödül konsepti çok havada kalacaktır, çünkü insan ödülü takip ederken hızlı şekilde "Hayatın amacı nedir?" noktasına ulaşıyor. Balıkçı kasabası adamıysanız profesyonel anlamda hemen hemen hiç bir halttan kolayca motive olamazsınız, çünkü ödül' e verdiğiniz önem sıfır olacak. O zaman esas ödülü düşünün ve hayatınızdaki öncelikleri ona göre belirleyip doğru şeylere motive olun.

Mükemmellik

Sene 1998, Duke Nukem’ in patladığı seneden bir sene sonra. 3D Realms Duke Nukem Forever’ ı duyurmuş ve E3’ de Quake II oyun motoru ile geliştirilmiş ve bir çok kısmı bitmiş olan oyunun demosunu yapmış.

Unreal oyun motoru bu dönemde çıkıyor ve Quake oyun motorundan daha gerçekçi, daha güzel grafikler sağlıyor. Bu demonun hemen ardından bir toplantıda programcının biri ”Unreal’ a geçsek nasıl olur?” diyor. Duke Nukem’ in başarısını Duke Nukem Forever ile tekrar yakalamak isteyen Broussard bu fikre katılıyor.

10 sene sonra 3D Realms hala Duke Nukem Forever’ ı yayınlayamıyor, oyunu durduyor, herkes işten çıkartılıyor. 3D Realms hala yayıncılarına karşı milyonlarca dolarlık bir dava ile uğraşmakta.

Bana Hayatınızı Değiştirecek 62 Öneri yazısı konusunda bir çok kişi neden ”Mükemmeliyetçi olmayın” dediğimi sormuştu, sanırım bu güzel bir cevap. (Duke Nukem konunun bu kısmını ben de Wired USA Ocak’ dan okuyup, yeni öğrendim.)

Süper Makale Verimli Bilgi Takibi

Eskiden bilgi yok diyen bizim artık yeni bir sorunumuz var, bilgi fazlalığı.

Sorun büyük, çözüm basit değil ama bazı huyları değiştirerek verimli şekilde hem yeni bilgiyi takip edebilir, hem bilgiye yetişebilir hem de çok kısa süreler harcayarak yapabilirsiniz.

  1. RSS okuyusu kullanın, hiç bir blogu ziyaret etmeyin, blogları ziyaret etmek bir çok nedenden dolayı oradan alacağınız bilgiye gereğinden daha fazla efor vermenize neden olur.
  2. RSS okuyusunda herşeyi okumayın, başlıkları okuyun, konu ilginizi çekiyorsa devamını okuyun.
  3. Bilgi kaçıtrmaktan korkmayın, eğer bir şey gerçekten çok iyiyse takip ettiğiniz başka bir kanaldan onu duyacaksınız ne de olsa. İnternet sandığınızdan çok daha küçük, çok fazla kişi aynı konu hakkında konuşuyor. Hepsini okumanıza gerek yok birini okumanız yeterli.
  4. Eğer bir RSS ilgilendiğiniz konudan çok ilgilenmediğiniz konularda yazıyorsa, o RSS’ i takip etmeyi bırakın. (Benim rasgele değişik konulardan yazmam bir çok kişi için bu blogu da bu kategoriye sokuyor olabilir. Eğer öyleyse korkmayın silin. Çok iyi bir şey yazarsam bir şekidle duyarsınız zaten.*)
  5. İkna olduğunuz konuları tekrar tekrar okumayın. Eğer “LinkedIn” in kariyerinize yardım edecek bir kanal olduğuna inandıysanız LinkedIn’ in neden çok iyi olduğuna dair 5 yazı daha okumanıza gerek yok.
  6. Aynı bloggerlar aynı konuları çok yazarlar, bunu gördüğünüz anda o yazıyı es geçin. Bir de bunların kendilerine “technology evangelist” falan diyenleri vardır ki onlardan koşarak kaçın.
  7. Çok az yazı baştan sonra dikkatle okumayı gerektirir, değer. Önce yazıları hızlı bir şekilde okuyun. Hızlı okuma teknikleri ile ilgili bir çok kitap ve makale var. Bunları deneyebilir ya da kendi kendinize pratik yapabilirsiniz. Mesela bunun gibi bir makaleye maksimum 4-5 dk. harcamanız gerekli. Genelde 2 dk. yeterli olacaktır. Mesela girişteki paragrafın hiç bir amacı yok, bunu geçebilirsiniz. Bir yerden sonra bu doğal bir davranış olacaktır.
  8. İlginizi çeken konuları hemen okumayın Read it Later, Evernote ya da InstaPaper gibi bir sistem kullanın. Bu sayede konsantrasyonunuzu da bozmadan ve bulduğunuz kaynağı kaybetmeden ilginizi çeken konuyu daha sonra okuyabilirsiniz.
  9. Eğer mümkünse Pocket PC, iPhone gibi bir cihaz edinin ve daha sonra okumak için işaretlediğiniz yazıları bu cihazda okuyun. Bu sayede yolculuk, sırada bekleme, köprü trafiği, berber koltuğu, ramazan pidesi sırasını verimli bir iş için kullanmış olursunuz.
  10. Twitter, FriendFeed vs. gibi sistemler bilgi takibi için tasarlanmış sistemler değiller. Geyik ve sosyalleşme harici bilgi için kullanmaya çalışmayın, verim alamayacaksınız.
  11. Kitap okurken, kitabın heryerini okumayın. 400 sayfalık bir kitapta en az 200 sayfa boşluk doldurma sayfası vardır. Bunları tespit etmek bazen zor olur ama ufak bir eforla en azından 100 sayfayı okumadan ama içindekini anlayarak geçebilirsiniz. Buna rağmen her sayfasını okumaya değecek çok az kitap vardır, o kitapların hakkını vermek lazım. Bu kitaplar genelde yazarlardından anlaşılabilir.

Bu yazıyı sevenler hayatlarını değiştirecek şu 62 öneriyi de sevdi.

* Kayıtlara geçsin diye yazıyorum, şu anki RSS üyesi 3351, bu yazından sonra bir değişiklik olacak mı bakalım göreceğiz.

Çeviklik

“Agile” kelimesi her ağıza sakız olmuş durumda, ben de parmağımı pastaya bulaştırmak istedim.

Çevik yapılar, duruma göre kendi adapte edebilen, hızlı şekilde çözüme ulaşan, durumu daha kompleks bir hale* getirmeyip basitleştiren yapılardır. Bu birey olabilir, bir yazılım geliştirme metodolojisi olarak düşünülebilir ya da bir kurumun yapısı olabilir.

Çevikliği maksimum düzeye kavuşturmak için yapılması gereken iki kritik şey var.

Al, Çal, Kaçır

(Ç)almak ya da outsourcing.

Outsourcing

Outsourcing tüm sorumluluğu başkasına atmak olarak kabul edilebilir.

Mesela bir blog açacaksanız “Wordpress” kullanmak çalmaktır. Kendiniz wordpress’ i download edersiniz, sunucunuza kurar ve kullanırsınız. Hazır bir sistemi çalıp kullandınız. Outsourcing ise blogger.com’ dan blog açmak ya da Wordpress.com üzerinden bedava bir blog almaktır.

Outsourcing çeviklikte her zaman ilk adım olmalı, buradaki kritik nokta devrettiğiniz işin üzerinde ne kadar kontrole ihtiyaç duyduğunuzdur. Örnek olarak eğer kendinize özel bir web suncusu kullanmak zorundaysanız basit bir hosting firmasından, basit bir hesap almak işinizi görmeyecektir. Outsourcing’ de yapabileceğiniz en büyük hata “ana işinizi” başkalarına devretmektir.

Mesela bir web tarayıcısı geliştiriyorsanız rendering engine’ ini geliştirmek yerine başka bir yerden alıp kullanmak yanlış olacaktır. Not düşmek gerekir iş modeli sadece devretmek üzerine kurulu firmalar istisnadır, mesela IE’ nin altyapısını kullanıp arabirimini geliştiren ya da farklılaştıran firmalar var. İkinci bir not düşecek olursak bu tip firmaların hiçbirinin uzun vadede bir başarısı olmamamıştır.

Aynı şekilde rendering engine’ ini dışarıdan programcılara outsource etmekte bir o kadar yanlış olacaktır, buna rağmen Gzip encoding’ i oturup yazmanız da bir o kadar saçma olacaktır. Gzip library’ sini outsource etmek değil çalmanız gereklidir ama o konuya biraz sonra geleceğiz.

Web 2.0 hikayesinin sosyal medya’ yı hayatımıza sokması, kişisel bilgilerin öneminin azalması, insanların internet sitelerine daha fazla güvenmesi ile SaaS (software as a service) konsepti ve oursourcing / devretme olanakları inanılmaz şekilde yükseldi. Yükselmeye de devam edecek. Bu yükseliş bizim için iki anlam ifade ediyor;

1. SaaS işinin geleceği çok iyi olduğundan dolayı bu sektörde iş yapmak

2. Kendi işimizde olabildiğince bu yüksek kalite hizmetleri kullanmak

SaaS’ ın büyümesi ve outsourcing kavramının popülerleşmesi belki son senelerde gördüğümüz internetteki kaliteli iş modellerinin ve firmaların çoğalmasındaki kritik nedenlerden biri olabilir. Yeni model firmalar kendi CRM sistemlerini kurmuyorlar, SalesForce kullanıyorlar, SVN Serverlarını kurmuyorlar, xp-dev’ den SVN server ediniyorlar, artık proje yönetim sistemi kurmuyorlar, BaseCamp kullanıyorlar.

Bu da onlara enerjilerini geçekten umursadıkları işe yönlendirme fırsatı sunuyor. Ek olarak maliyetlerin düşmesi de cabası.

Kurumların, bu tip içerideki yönetim sistemlerinin kurulumu, bakımı ve güncelliği için inanılmaz vakitler harcadıkları dönemler vardı. Hala Microsoft, Adobe gibi firmalar bu tip sistemleri kullanmıyor. SalesForce gibi ekstrem uçtaki hizmetler çıkmadıkça kullanmayacaklar da.

Bunun nedeni bu tip büyük firmaların bu tip konularda yakabilecekleri paralara sahip olmaları ve burada ekstradan yakacakları 1M$, sistemin onlara özel olmasındaki avantajlardan dolayı zaten uzun vadede kendini amorti edecektir. Ancak bu tip firmalar ile 1-150 kişi arasındaki firmaları karşılaştırmamak lazım.

Firmaların doyum noktaları vardır, doyum noktasından sonra para harcama ve iş yapma modelleri değişir. Mesela bir yazılım firmasının doyum noktası ana yazılımlarının piyasadakilerden daha çok iş yaptığı ve yakın bir takipçisinin olmadığı noktalarda olur. Mesela Skype buna güzel bir örnek.

Bu noktaya gelmiş bir yazılım firması genelde yazılıma sadece saçma özellikler ekler, elindeki büyük kadroyu mütemadiyen çalıştırması gereklidir ama yapacak işi yoktur. Yazılıma tema, animasyon gibi kimsenin umrunda olmadığı sadece %1 için bir anlam ifade eden şeyler eklerler ya da bazı MS Office sürümleri gibi sadece görsel değişiklikler yapıp yeni bir versiyon daha satmaya çalışırlar.

Özetle küçük ve çevik bir firma artık en basit işten en komplike işe kadar herşeyi outsource edebilir hale geldi. Önemli olan outsource edeceğiniz şeyleri ve outsource edeceğini kişileri, firmaları iyi seçmek.

İlk başta outsourcing işi pahalı gibi gözükse de aksine çok daha ucuzdur. Yatırım daha azdır, yönetim istemez, değiştirmek basittir, disaster recovery gibi konular sizin değil başkasının derdi olur. Vakit ciddi bir kaynaktır ve bir şeye yatırım yapma, yönetme ciddi bir kaynak gideridir. Eğer hala vakit, bakım-takip ve para arasındaki ilişkiyi matematiksel olarak kuramıyorsanız zaten kişi veya firma olarak burada anlattıklarımdan daha ciddi sorunlarınız var demektir. Önce o noktayı kavramak lazım ama oradaki ilişki başka bir yazı konusu, burada detaylandırmayayım...

(Ç)almak

Çalmak outsource edemediğiniz de yapmanız gereken şey. Mesela bir blog’ a ihtiyacınız var bu ama hali hazırdaki blog sistemleri sizin siteniz ile iyi entegre olamıyor, bu durumda gidip baştan blog sistemi yazmazsınız, hali hazırda yazılmış bir blogu kullanır ve onun üzerinde özelleştirme yaparsınız, işte bu çalmaktır.

Bir iş yapacaksınız çalışan bir iş modelini alabilirsiniz. Baştan tüm modeli oluşturmanıza gerek yok, ama eğer kendiniz çok daha gelişmiş bir iş modeli geliştirdiyseniz ve işinizi buna dayayacaksanız tabii ki bunu yapın. Çalma ile Geliştirme arasındaki çizgiyi doğru çizmek lazım.

Son örnek olarak mesela kodlama standartları dokümanı oluşturacaksınız, kendiniz sıfırdan başlamayın gidip benzer bir doküman bulun daha sonra bunu kendi takımınıza göre özelleştirin.

Çalmayı küçükten büyüğe her boyutta yapabilirsiniz, hazır bir uygulamayı alıp değiştirebileceğiniz gibi bir algoritmayı kendiniz tekrar keşfetmeye çalışmak yerine pseudocode’ unu bulup onun üzerinden yazmanız daha mantıklı olacaktır.

Dikkat edilesi

Çalarken dikkat edilecek şeyler var,

- Gereksinimlerden daha kompleks sistemleri hazır diye entegre etmeye çalışmak
Eğer ana sayfada 3 haber başlığı ve metin göstermek istiyorsanız Wordpress’ i implemente etmeye çalışmayın, kendiniz yazın. Bedava her zaman bedava demek değildir. Sahipliğin getirdiği bir masraf vardır ve kompleks sistemler de bu yük ile gelir. Dolayısıyla **basit tutun.

- Çaldığın şeyi bilmek
Eğer bir kodu ne yaptığını tam bilmeden çalıyorsanız şöyle saçma durumlar oluşabilir.

Daha önceden Hayatınızı değiştirecek 62 öneri yazımda da söylemiştim “Mükemmeliyetçilik” outsourcing’ in ve çalmanın en büyük düşmanıdır ve bunu yenmek çok zordur. Mükemmeliyetçilik ile ilişkili diğer bir kötü huyda kontrolcülüktür. Koda sahip olmak, HTML çıktısını istediğin gibi kontrol etmek, herşeyi bilme ve kontrol etme arzusu da sizi bunları yapabilmekten uzak tutacaktır. O yüzden bu tip huylardan kurtulmaya çalışmak lazım.

Çalın, outsource edin, basit düşünün, üretin.

*over-engineering
** KISS - Keep It Simple & Stupid

Zayıf Olduğunu Bilmek ve iPhone

Zayıf olduğunu bil yazısında bir iş yaparken elde neyin olup olmadığını bilmek ve ona göre hareket etmekten bahsetmiştim:

Blair Witch filmi ve benzeri yapımlar bu konuya güzel bir örnek aslında. Hollywood gibi milyonlara film çekemiyorsunuz dolayısıyla taktik değiştiriyor, interneti, dedikoduyu ve farklı bir yolu seçip bir film yapıyor ve parayı kırıyorsunuz. Komiktir aslında bu filmin iki ilginç olgusu var. Birincisi filmin tüm konusu çarpma (eski 60 kadar ülkede yasaklanmış bir gore filmden – detayları inanınki bilmek istemezsiniz), ikincisi film gerçekten kötüydü. Buna rağmen para kazandı. Sonuca bakarsak muhtemelen onlar amaçlarına ulaştı. Sanırım yüz yılın sanat filmini yapmayı planlamıyorlardı.

Ben uslanmaz bir oyuncu olduğumdan dolayı düzenli olarak iPhone oyunlarına bakıyor beğendiklerimi alıyor, oynuyorum. İnsanların iPhone ve benzeri sistemler için 3D büyük oyunlar yapmasının nedenini hiç anlayamamışımdır. Sonuç itibarı ile bu oyunu oynayan kişiler bilgisayar dünyasından gelen ve gerçek grafiklere sahip oyunları oynamış kişiler, halbuki bu platform’ un grafik desteği zayıf, ekranı küçük ve kontrol için bir gamepad’ i yok vs. vs.

Muhtemelen işte bu yüzden Doom Ressurection’ den çok Drop7 isimli muhtemelen 3 haftada yazılmış bir oyun çok daha fazla satabiliyor. Bunun yanında Lucas Arts gibi zeki firmalar eski ve iPhone’ a port edilebilecek Monkey Island gibi güzel klasikleri piyasaya sürmeye başladılar ki bu da çok güzel bir mantık.

Özetle dostlarım, elinizdekinin ve hedef platformun zayıflıklarını bilmek lazım.

Otomasyon, otomasyon, otomasyon...

Sık söylediğim laflardan biri şudur : "If you can automate it, automate it". DRY (kendini tekrarlamamak/do not repeat yourself) sadece kod yazma sırasında değil bence hayatın her noktasında önemli bir şey. Özetle eğer bir şeyi otomatiğe bağlama şansın varsa hemen şimdi bunu yap. İlk internet sitemi yayınladığımda hayat çok farklıydı siteyi en ufak bir değişiklik için FTP ile her seferinde güncellemek ve tek kişilik CMS sistemi olmak rezil bir deneyimdi. İlk blog sistemimi yazdığımda da bazı şeyler fark ettim blog yazmaya başlamam ne kadar çetrefilli ise o kadar az blog yazıyordum, yani sistemin kendi limitleri veya gereksinimleri blog yazmamı engelliyordu.

Bu sadece teknik veya vakit ile ilgili bir sorun değil bu psikolojik bir sorun. İnsan doğası sıkıcı işleri sevmiyor ve rutin işler insana sıkıcı geliyor. Bir geliştirici olarak kendinizi bir rutin içerisinde bulursanız gidişatta bir hata var demektir. Belki Ruby On Rails' ın çıkışı veya binlerce framework' ün tetikleyicisi de budur.

Yazılım geliştirirken gerekli otomasyonu yapıyor musunuz?

  • Veritabanında değişiklik yaptıktan sonra ORM' de kodların belirmesi için kaç tuşa basman gerekli?
  • Yazılıma yeni bir eklenti eklendiğinde Unit Test' ler otomatik olarak çalışıyor mu?
  • Aynı kodu tekrar ve tekrar yazıyor musun?
  • Koddaki değişiklikten yazılım paketinin internette yayınlanması arasında kaç tane manuel işlem var?

Daha önceden büyük resmi görebilmek ile ilgili bir yazı yazmıştım, yazılım geliştirirken ve başka işler yaparken de büyük resmi görebilmek lazım.

  • Sisteminizde otomatiğe bağlayabileceğiniz şeylerin listesini çıkartın
  • Listedeki her başlık için "Otomatiğe bağlamak ne kadar sürer?", "Otomatik olmadığında hata oranı nedir?", "Bu işlemin ne kadar sıklıkla yapılması gerekiyor?" sorularını kendinize sorun ve cevaplarını düşünün. Otomasyona harcayacağınız vakit kendini 1 haftada amorti ediyor olabilir ya da hata çıkma oranından dolayı potansiyel bir hata da otomasyona harcayacağınız vakit kadar hatayı düzeltmeye ya da tespit etmeye vakit harcayacak olabilirsiniz.

Eğer programcı değilseniz hala hayatınızda otomatiğe bağlayabileceğiniz şeyler var:

Bunların hepsini otomatiğe bağladıktan sonra, para kazanmayı da otomatiğe bağlayınca Kuala Lumpur' da sahilde uzanıp otomatiğe bağladığınız her şeyi unutabilir ve belki de hayatın tadını çıkartabilirsiniz…

Güle Güle Twitter ve FriendFeed

Nedense ben bu süreçten çok fazla geçiyorum, her şey IRC ile başladı, daha sonra ICQ' ya geçti, sonra MSN, skype oldu vs. Ondan sonra IM olayından tamamen koptum. Bu süreç içerisinde forum kavramı bir dönem hayatımda oldu. Bu basit dönemlerde internette sosyalleşme de basitti.

Daha sonra Facebook ve MySpace gibi delilikler başladı ki Allah' a şükür Orkut' un ilk dönemlerinden dersimi almış olduğumdan onlara hiç bulaşmadan sıyrıldım. İnsanların okul arkadaşları ile, eski dostları ile diyalogunu bu tip bir platform üzerinden sürdürebilmesi her ne kadar kulağa çok güzel gelse de, o kişi okulda arkamdaki sırada otururken bile kendisi ile görüşmediğimden, bugün kendisini bir daha bulup neden görüşmek isteyebileceğimi bilmiyorum! Bu genel bir sorun değil bu benim sorunum, olayı yeterince sosyal ya da hümanist olmadığımı söyleyerek çözümleyebiliriz sanırım. Ya da diyelim ki yapılacaklar listemde on sene önceki arkadaşlarımın bugün hangi sosyal platformda kaç kız arakladığını takip etmek yukarılarda değil.

Bu dönem hala sürerken başka bir şey başladı, Twitter ve FriendFeed. Ben açıkçası Twitter' ı çok sevdim çünkü diyaloglar tamamen pasifti. Dolayısıyla dialogdan çok monolog vardı, bu da benim sevdiğim şeylerden biri. Ek olarak blog yazan biri olarak kısa şeyleri de paylaşmayı seviyorum ve bunun için de güzel bir platformdu. Yani microblogging dedikleri hadise... Twitter' da aktif olmaya başlayınca twitter' ın yapısı yetmez olmaya başladı, sonra bir çok kişi bana FriendFeed' i önerdi ve ben de ona geçtim.

Şimdi her zaman yaptığı gibi tarih tekerrür ediyor ve ben FriendFeed ile Twitter' dan da kopuyorum. Dolayısıyla diğer bir sosyal hoppalık maceramda bu şekilde sonuçlanmış oluyor.

Neden Kullanmıyorum

  • IM Kullanmama Nedenlerim;
    • Konsantrasyonumu etkilemesi
    • Aynı diyalogun telefon üzerinden 30 dakika yerine 2 dakikada çok daha verimli olarak çözülebileceğini bilmem
    • İnsanların istedikleri zaman size ulaşabiliyor olması (bu nedenle 2 sene boyunca cep telefonu kullanmadım ama maalesef onun yararları zararlarından çok olduğundan şu an gene mecburen kullanıyorum)
    • E-mail, forum ve bilumum pasif komünikasyonun birçok konuda daha verimli olması
  • Facebook, MySpace Gibi Sosyal Ağları Kullanmama Nedenlerim;
    • Herhalde buna ciddi bir cevap vermemi beklemiyorsunuz. Bunun cevabı bariz zaten. Belki de doğru soru neden kullanayım ki?
  • Artık Forum Kullanmıyor Olmamın Nedenleri;
    • Drama, polemik vs. ana nedenler ama bunun harici kaliteli forum bulmanın pek mümkün olmaması. Zoque Forum harici bir böyle bir forum görmedim, Zoque' un da altın dönemi maalesef kapandı, her ne kadar yeni bir nesil varsa da web tasarımı konusundan çok uzaklaştığımdan dolayı eski tadı alamıyorum. Gene de hala okuyor ve arada yazıyorum. Sadece eskisine göre çok daha az.
  • Twitter' ı Az da Olsa Kullanıyor Olacağımın Nedenleri;
    • Sinirlenince bir şekilde küfretmem gerekiyor,
    • Rasgele, hatta salakça ama çok derinmiş gibi gözüken cümleleri yazabileceğim bir yere ihtiyacım var,
    • Çünkü bağırmak, saçmalamak ve cevap almamaktan daha keyifli az şey var.
  • FriendFeed' i Az Kullanıyor Olacağımın Nedenleri;
    Zoque Forum' da seneler önce Din ve Siyaset konuları tamamen yasaklanmıştı. Önce bu bana çok saçma geldi. İnsanlara "O kadar tek hücreli beyinlere sahipsiniz ki bu konuları tartışmayı bile beceremiyorsunuz" demek gibiydi. Kısa sürede öğrendim ki insalar gerçekten de tek hücreli beyinlere sahipti ve bu tip konuları mantıksal ve saygı çerçevesi içerisinde tartışamazdı. Bunun ikinci ana nedeni ise bu iki ilmin de matematik gibi kesin cevaplarının olmaması ve tamamen kişisel olmasıydı. Tabii ki bu konulardaki hakaretlerin veya çirkefliklerin kişisel olarak insanları ciddi derecede rahatsız ediyor olması da cabası. İşte FriendFeed' den uzak duracak olmamamın ana nedeni bu. 
    • Signal - Noise oranının genelde kurtarmıyor olması, bunun bir nedeni de benim ilgili olduğum konularda ilgili olan insanların sayısının benim çemberimde çok fazla olmaması.
    • Çok fazla din ve siyasi konu geçiyor olması, Din bilmeyen kişiler ile tartışılabilecek bir şey değil, dolayisıyla din ile ilgili konular genelde bok atalım izi kalsın kıvamında, hakeza siyaset konusu da o şekilde. Siyaset ile zaten ilgilenmediğimden o konuların hepsi benim için çöp oluyor ama insanların 3,5 kitap, 2 televizyon programı ve 7 internet haberi ile her renkteki siyasi olay hakkında vücutlarının bilumum organları ile ileri-geri konuşmaları hakikaten eğlendirici. Ama bu tip bir diyalog görmek istersem zaten FailBlog ya da MySpace yorumlarını okuyorum.
    • Polemik, pire ve deve mevzuları. Ama her şeyden çok drama, drama ve drama. İnsan = Drama.  Benim hayatımda yeterince drama var, kotayı doldurmak için dışarıdan yeni drama ihraç etmem gerekmiyor. Gerektiği zamanlarda da Lorenzo' nun Yağı ' nı izleyip bir milenyuma yetecek kadar drama depoluyorum.


İnternet büzemeyeceğin milyonlarca ağızdan oluşuyor, dolaysıyla biz de büzmek yerine görmezden geliyoruz. Bu platformların hepsi kişisel veya markasal marketing için süper yerler ama herkesin bildiği iki gerçek var:

  1. Joey doesn't share food
  2. Ferruh doesn't do marketing

Durdu ve Yeter Dedi

Okuduğunuz şeyler daha sık dejavu yapar hale geldiyse, yeni makalelerin başlıklarına bakıp tam olarak neden bahsettiğini tahmin edebiliyorsanız, aynı şeyi yeni metaforlar ile dinlemekten sıkıldıysanız, okumanın, öğrenmenin, daha fazla araştırmanın vakti geçmiş, harekete geçmenin vakti gelmiştir. Altı ay bir yıl sonra belki yeni bir şeyler filizlenmeye başlar o zaman tekrar dönüp, okumaya, öğrenmeye, araştırmaya başlayabiliriz… Sanırım gerçekçi kalmak için ne zaman durmak gerektiğini bilmek lazım.

Köle Olmayı Seçmek

Bu yazı arada yazdığım gibi giriş – gelişme – sonuç kavramlarından uzak, daha çok bazı duyguları düşünceleri tetiklemeye eğimli bir yazıdır. Ek olarak yazı genel bir konu üzerinde dolaşmayı bile becerememekte. Dolayısıyla diğer bir kendi halinde yazı olarak Kabul edilebilir...

İnsanoğlu kendi elleriyle hayatı o kadar komplike bir hale getirdi ki bu dünyada hayatta kalabilmesi için artık 15 sene eğitim alması gerekir hale geldi. Yaşayabilmesi için hayatının %75' ini çalışarak geçirmek zorunda kaldı. Küçüklükten başlayarak bu durumu o kadar güzel bir şekilde yeni beyinlere empoze etti ki, kişiler kendilerinin köleliğini savunur hale geldi. Para, dünya, şan, şöhret için çalışmak önemli, değerli hatta saygı duyulacak bir iş gibi gösterildi. Daha sonra öyle bir noktaya geldi ki artık herkes bunlar konusunda hem fikir olmaya başladı.

Bir insan şunu söyleyebilir hale geldi:

Eğer zengin olsaydım da bu şekilde çalışırdım

Eğer siz de haftanın 5-6 gününü geri kalan 1-2 gününü yaşayabilmek için harcadığını hazmedeyenlerdenseniz, neden bahsettiğimizi anlıyorsunuz demektir. Çalışmak için çalışan insanların olduğu bir toplumda yaşar olduk, artık bizi köle yapmıyorlar biz kendimiz "özgür" irademiz ile köle olmayı seçiyoruz. Kendimizi kendimizden azad edebilecek miyiz?

Herkese yetecek bir dünyayı paylaşamıyoruz, 1500 somalilinin öldüğü bir operasyonda 18 amerikan askeri için film çekiyoruz (çünkü 1 yankee = 100 somalili değerinde!), neyi neden yaptığımızı bilmiyoruz, nereye gideceğimizi düşünmüyoruz. Bir kaç gün önce dünyayı değiştirecek fikirleri düşünüyordum, "Her iyilik yapılan kişi üç kişiye iyilik yapsa", "The Venus Project" vs.

Sanırım "Bill Gates' i müslüman yapmak" listenin başına konulabilir. Bunun anlamı dünyanın en zengin adamlarından birinin Zekat ödeyeceği yani her sene elindeki tüm değerlerin 40/1 ini fakirlere dağıtacağı anlamına geliyor. Belki sadece Bill Gates' i müslüman yapmak tek başına dünyadaki açlığı çözmeyecektir, ama ütopik bir şekilde tüm dünyanın zekat verdiğini düşünün. Bu ütopik dünyada fakirlik diye bir sorun olmayacaktı.

Bugünün global dünyasında yaşayan insanlar olarak her saniye suçluluk duygusu içerisinde olmamak mümkün olabilir mi? Benim doğduğum yer ondan daha iyi, o daha doğarken kaybediyor. Ben komşumdan daha çok kazanıyorum, benim şansım yaver gitti, kolum ve bacağım var, görebiliyorum ve konuşabiliyorum. Oradan insanlar savaşta ölürken ben MSN' de arkadaşlarımla muhabbet edip blogumda züppelik yapıyorum, suçluluk duygusu içerisinde olmamak mümkün mü?

Sanırım bunun tek çözümü İlahi Adalet' e inanmak, bilmek değil idrak etmek. Hiç bir şeyin kimsenin yanın kalmayacağını ve kimsenin sınavının başka biri ile aynı olmadığını anlamak.

Şimdi hepinize Happy Xmas, Hannukah ve new year...

* The Venus Project ve Zeitgeist Addendum -çok tek taraflı bir film, izlerken yargınızı kaybetmemeye çalışın- bunu tetikledi

Süper Makale Fikir Üretme, Etki ve Tepki

Hiç dikkatinizi çekti mi bilmiyorum ama bir bakıyorsunuz altı tane aynı dönem şairi çok yakın arkadaşlar, çünkü hepsi aynı mahallede büyümüşler ya da bir dizi oyuncunun hepsi çocukluk arkadaşı ve hepsi de çok ünlü ve benzer projelerde çalışıyorlar. Mesela Türkiye de bir dönem çok popüler olan muhasabe yazılım firmalarının en büyük ikisinin sahibi üniversitede aynı sınıfta olmaları ya da bugünün internet ve bilgisayar dünmyasının bu hale gelmesinde MIT' nin büyük rolü ve o günün MIT' sindeki simaların bugün bu sektörde çok büyük imzalarının bulunması gibi. Örnekleri çoğaltabiliriz popüler IDS' lerin geliştiricilerinin oda arkadaşı olması gibi. [1]

Benim eski ve uçuk teorilerimden biri insanların etrafındaki kişilerin beyin dalgalarından etkilenip istem dışı olarak bilgi çalmaları ve aynı noktaya ulaşmalarıdır. A Scanner Darkly' de bir yatak muhabbetinde de bu felsefenin kırıntıları görülebilir. Yani bir nevi beyninizin diğer insanların beyin dalgalarını çalıp bilinçaltında kullanması. Tabii ki yıllardan sonra bu teorimi daha oturaklı bir hale getirdim ve şuna çevirdim:

İnsanlar çok gelişmiş makineler, lakin girdi olmadan çıktı üretemezler. Mesela henüz ergenliğe erişmemiş bir çocuğa cinsel ilişkiyi anlatamazsınız [5], o çocuk henüz o bilgiyi idrak edecek bir girdiye, içgüdüye sahip değildir. Rasgelelik konusuna hakim olanlar buradaki noktayı daha çabuk kavrayabilirler. Rasgele bir sayı üretmek için genelde bir "seed" kullanırsınız, yani rasgeleliğin temelini oluşturacak girdi. Bilgisayarlar tamamen tahmin edilebilir olduklarından bilgisayarın kendisi aslında hiç bir zaman rasgele bir şey üretemez, bu yüzden gerçek rasgelelik (TRNG) çok daha komplike bir sistem gerektirir mesela "evren" gibi, "dünya" gibi, bu tip planını yapamadığımız, bir sonraki adımını tahmin edemediğimiz sistemler bizim için rasgele olan girdiler sağlayabilirler. Bu yüzden bazı sistemler rasgelelik sağlayabilmek için dış dünya datalarını kullanırlar, sıcaklık, nem, ses, hareket, ışık vs.

Şimdi demek ki insan girdi olmadan çıktı üretemiyor, hayalgücünün belli limitleri ve şekillendiricileri var, demek ki gerçekte rasgelelik yok ama bir dizi etken ve sonuçlar var. Teoride buna dayanıyor. Eğer insanlar aynı kaynaklardan besleniyorsa ürettikleri şeyler ve ulaştıkları noktalar da benzer olacaktır. Yani aynı web sitelerinden, aynı bloglardan, aynı televizyon dizilerinden, aynı filmlerden, aynı müziklerden ve bazen aynı coğrafyadan, hatta aynı öğretemenlerden, aynı kitaplardan beslenen topluluğa dahil olan kişiler aynı ve benzer üretimler yapacaktır. Eğer yarın bir gün bir sosyal platform çıkar ve bu kaynakları tek bir yerde toplar ardından da aynı kaynaklardan beslenen kişileri eşleştirirse bu kişilerin benzer çıktılar ürettiğini gösterecektir.

Özellikle yakın dönem trendlerini tahmin etme ve bir sonraki adımı görme de bunun sonuçlarından biridir. Ancak buradaki kişi çok sevinmemeli çünkü sektörün bir sonraki adımını tahmin edebilmiş olsa da onunla aynı havuzdan beslenen diğer kişilerde bu bir sonraki adımı tahmin edebilecektir. İşte o noktada "Fikir x Harekete Geçirme x Hız" formülü sonucun değerini belirleyecektir. Fikir' i bu formülden çıkartırsanız gerçekten önemli olanın eyleme geçirme kalitesi ve bunu ne kadar hızlı yapabildiğiniz olduğunu göreceksiniz [2].

Aynı nedenlerden dolayı tarihe icatlar ile ya da yeni yaklaşımlar ile geçmiş bir çok kişi toplum tarafından "kopuk", "manyak", "deli", "sorunlu" olarak nitelendirilmiştir, ya da okuldan atılmıştır. Ressam, müzisyen ve benzeri sanatçılar olduğu kadarıyla teknik kişiler de bir istisna değildir. Ek olarak bazı bilim adamlarının büyük bir buluşa ulaşmalarını sağlayan neden onların "genel olarak kabul gören" bir şeyi kabul etmemiş olmalalarıdır. Bu da aynı "Balığa suyu anlatmak gibidir", Ne zaman balık kendini sudan bağımsız sayabilir o dakikada suyun ne olduğunu anlayabilir, aksi takdirde su onun için dogma bir bilgidir, bunu tekrar tanımlamak ve anlatmak mümkün olmayabilir.

Ana konuya dönersek iki tip girdi olduğunu görebiliriz:

Genel Girdi
Bu klasik genel kültür girdisidir, bunun sayesinde kahvede iyi bir konuşmacı olabilir ve hatta bir sonraki haftaki memleket gündemini bile çözebilirsiniz. Ek olarak bu tip girdi toplumların kanalize edilmesindeki en mükemmel yoldur, çünkü bilinçli ya da bilinçsiz (hem yayıncı hem izleyici tarafında) belli etkiler oluşur ve sonuçlar benzer çıktılara yol açar. On sene önce yayınlanan bir televizyon serisi on sene sonraki ülkenin belli yaşındaki insanları üzerinde etki yapıp, belli akımlara yol açabilir. [6]

Alternatif Girdi
Eğer "Genel Girdi" yi popüler kültür ve standart yaşam tarzı noktasına indirgersek "Alternatif Girdi" yi de normal şartlarda bulunduğun coğrafya, etnik kültürde pek bilinmeyen ve beklenmeyen bilgi ile beslenme olarak tanımlayabiliriz. Mesela İstanbul - Bostancı' daki bir adamın Afrika Etnik müziği dinlemesi tam anlamıyla o kişi için alternatif bir girdidir. Dolayısıyla bu kişinin her adımdaki çıktısını etkileyecektir. [7]


Aynı dalgadan girdiye maruz kalan insanlar istem dışı aynı şeyleri üretecektir. Mesela ben XSS Shell' i yayınladığım hafta Attack API ve BeeF te yayınlandı. 2005' te bu konunun ilk örneği geliştirilmesine rağmen tam iki sene sonra, üç farklı kişi aynı konsepti daha farklı bir şekilde birbirlerinden haberdar olmadan tekrar yaptı[3]. İlk bakışta bu her ne kadar tuhaf görünse de bu kişilerin hepsinin benzer arka plana sahip oldukları (yazılım geliştiriciliği, güvenlik ve web uygulaması güvenliği odağı),  aynı blogları takip ettiği, son zamanlardaki aynı makaleleri okudukları düşünülünce, sonuç biraz kaçınılmaz oluyor. [8] Sonuçların ikisi çok yakınken diğeri biraz farklıydı. Bunun da ana nedenini, o kişinin alternatif girdilerine bağlıyorum. Onun ürettiği yazılım tamamen JavaScript ağırlıklı idi ve kendiside diğer iki kişiye göre JavaScript ile çok daha yoğun şekilde uğraşıyordu.

Son zamanlarda okuduğum Paul Graham' ın Cities and Ambition yazısı[4] tüm bu anlattıklarıma başka bir açıdan yaklaşıyor. O da yaşadığı şehrin insana verdiği mesajdan ve insanın o mesajdan etkilenip hayat tarzını ona göre şekillendirmesinden bahsediyor ki bu da burada bahsettiğim girdi ve çıktı fikrini destekliyor.

Tüm bunlar sizin günlük hayatınızda bir anlam ifade ediyor mu? Anlam ifade ettiği tek şey nasıl bir "girdi" [9] istediğinizi tanımlamak olabilir. Bunun sonucunda da çalıştığınız iş yerini, okuduğunuz siteleri, kitapları, kaynakları, ilgilendiğiniz hobileri, gördüğünüz yerleri, yaşadığınız şehri, yaşadığınız odayı, yaşağıdınız ülkeyi değiştirmek, çeşitlendirmek olabilir.





[1] Bunların hepsini kişi ve örnekleri isimler ile detaylı vermek isterdim ama maalesef hiç biri detayları ile aklımda kalmadı, eğer benzer kesin ve güzel örnekler biliyorsunuz yorum olarak belirtebilirsiniz.
[2] Bundan sonra tabii ki bu işi pazarlama gibi noktlar var, onlara değinmiyorum
[3] Burada kimsenin birbirinden duyarak yapması mümkün değildi çünkü projenin geliştirilme aşaması bir haftadan kısa olamaz, dolayısıyla bu üç kişinin de bunu tamamen birbirlerinden bağımsız yaptıklarını söyleyebiliriz. Daha da uç bir örnek vermek gerekirse, 5-6 sene kadar önce bir web projesini henüz açmadan, aynı fikri, neredeyse aynı arabirim ile ve hatta aynı renkler ve aynı arkaplan ile (benim soldan sağa iken onunki sağdan solaydı) başka birisi benim yayın tarihimden bir hafta kadar önce açtı. Eminim sizin de bizzat tanık olduğunuz benzer örnekler vardır.
[4] Bu Paul Graham' ın diğer yazıları gibi harika bir yazı, İstanbul tam olarak ne mesaj gönderiyor, henüz ben çözemedim. Ama sanırım gönderdiği mesajlardan biri "Hayatta Kal!" .
[5] İmam-ı Gazali' nin enfes metaforlarından biri, maalesef orijinal kullanım konusu aklımda değil
[6] Sanıyorum ki açmıştır da, ama o gözlemi yapmak beni aşan konulardan biri, belki yirmi sene sonra gene bu konuda blog yazarsam, tekrar bu gözlemi yapabilirim!'
[7] Bu noktada Kelebek Etkisini unutmamak lazım, ama aynı şekilde bir zarı 1000 defa atarsanız tüm zarların ortalaması 3 olacağı gibi genel çıktılar belli ortak paydalarda buluşacaktır
[8] Burada muhtemelen çok daha fazla kişi aynı arka plana ve girdiye sahipti ancak, bir çok farklı etkenden dolayı tahmin ediyorum ki bir çok kişi bu projeyi hiç bir zaman hayata geçirmedi.

[9] Bu "girdi" kelimesi çok fena yanlış anlaşılmalara neden oluyor!

Bilgi ve YAGNI

YAGNI - You Ain't Gonna Need It,  yazılım çevrelerinde kabul gören ve benim de şiddetle izlemeye çalıştığım prensiplerden biridir. Basit şekilde "bir şeye ihtiyacın yoksa yapma, ne zaman ihtiyacın olur o zaman yaparsın" diye özetlenebilir.

Bugün aklıma şu soru geldi: Bu prensibi bilgiye de uygulayabilir miyiz? Mesela "İspanyolca öğrenmeye henüz ihtiyacım yok, niye gidip İspanyolca öğreneyim ki?" Ya da "Ruby on Rails" seksi duruyor ama henüz benim bir işime yaramıyor gibi. Bu konu hafiften Genel Kültür Çağımızın En Büyük Yalanıdır konusu ile de ilişkili, henüz ben bir karara varamadım, karara varıp varmamak pratik yaşantıda ne kadar şeyi etkileyecek emin değilim ama ilginç sonuçlar getirebilir.

Süper Makale Büyük Resmi Görebilmek

Tatilim bitti, tekrar beyaz ekranlara döndüm ***. Uzun süredir kafamda dönen, herkesin bildiği lakin göze tekrar sokulmayı hakeden bir konuda yazmak istiyorum.

Büyük resmi görmek detaylardan kopup gerçek olayı görmek, getiriyi ve götürüyü analiz edebilmektir. Bu hayatın her yerinde karşı karşıya olduğumuz bir durumdur, elimizdekine odaklanıp gerçek amacı unutmak, bir projenin bir bölgesine yoğunlaşıp uzun vadede hataya dönüşen bir karar vermek, günü kurtarmak için 5-10 dakikadan kar edip işin sonunda günler kaybetmek ile alakalıdır.

Hatta genel olarak gizli servislerin ve devletlerin suni gündem yapması da bizim büyük resmi görmemizi engellemek içindir. Bu suni ya da gerçek ekonomik sıkıntı, savaş, magazin değerli bir haber ya da tamamen gerçek dışı bir olay olabilir. Bunlar sayesinde odağın kayması ve gerçekte, büyük çapta olan olayın farkedilmemesi sağlanır.

Büyük resmi görmeye bir kaç örnek;

Toplu Taşıma Sorunlarını Çözmek:

Bir metropolde toplu taşımanın geliştirilmesi ciddi maliyetlere çıkacaktır, ancak toplu taşımayı çözmenin tek amacı sadece insanların daha mutlu olmasını sağlamak için değildir, bunun getireceği güzellikler arasında şunlar da vardır :

  • Toplu taşımada kaybedilen insan gücünün ekonomiye geri dönmesi,
  • Toplu taşımanın kötülüğünden dolayı artan kişisel araç kullanımının artması
    • Bu hava kirliliği,
    • Daha fazla benzin harcanması (paranın yurtdışına çıkması) ve
    • Daha fazla kişisel aracın satılması (paranın yurtdışına çıkması) anlamına geliyor.
  • vs. vs.

Dolayıysıyla toplu taşımayı çözmenin kendini ne kadar sürede amorti edeceği hesaba katılmalıdır, bu sadece insanlar dah fazla oy versin diye yapılması gereken bir şey değil.

Çalışanların öğle yemeği vakti:

Yapılan araştırmalarda öğle yemeğine 30 dk. yerine 60 dk. ayıran firmalar çalışanlarından daha yüksek performans alıyorlarmış*. Burada büyük resmi gören firmalar 30 dk. kar etmeye değil bunun uzun ve orta vadedeki etkilerini görebiliyorlar. Benzer bir şekilde zamanında Hayalet Çalışan başlığı altında benzer bir konudan bahsetmiştim.

TDD, Test Driven Development :

TDD bir yazılım geliştirme metodolojisidir. TDD ile yazılım geliştirirken her yazılan kod için bir de test kodu yazılır, bu da tabii ki yazılan kod oranını ciddi şekilde yükseltiyor. TDD' nin özellikle Türkiye gibi sıkışık, aceleci, henüz tam oturmamış ülkelerde yerleşememesinin en büyük nedeni de gene büyük resmi görememektir. TDD konusunda yapılan bir çok araştırmada TDD' nin uzun vadede bakım, hata ayıklama ve benzeri proseslerden kazancından dolayı çok daha verimli olduğunu ortaya konulmuştur. Bugün bir çok firma ya TDD uyguluyor ya da sadece Unit Testing yapıyor. Dolayısıyla günlük yazılım geliştirme hızı düşse de sonuçta kazanç artıyor, bu noktada büyük resmi göremeyen yazılım firmaları da günü kurtarmaya devam ediyor **.

Maalesef hayatta da büyük resmi kaçırabiliyoruz, yegane amacı kaçıyoruz. Burada bir kaç nokta var, 

  • Yaptığınız şeyleri yaparken kendinize “Neden?” sorusunu sorun,
  • Yeni bir karar verirken sadece kısa vadeyi değil ana nedeni düşünün,
    Mesela üniversite sınavlarından sonra okul seçerken sadece iyi okul seçmeyi düşünmekle yetinmeyin “Neden Okuduğunuzu” u düşünün.
  • Her işinizi yaparken arada bir adım geri atın ve tüm olayı bir bütün olarak görmeye çalışın. Detaylarda kaybolmayın. Neden başladığınızı, şu an yaptığınızı neden yaptığınızı, bu yapılan ana sonuca yardımı olup olmayacağını değerlendirin.
  • Konunun içerisinde olmayan biriyi konuya çekip hızlı şekilde fikir alın.
    Programcılıkta bir yerde saatlerce takılır ve sorunu çözemezseniz hemen etraftaki bir programcıyı bulur ve ona sorunu sorarsanız, sizin iki saattir çözemediğiniz olayı genelde o bir dakikada tespit eder. Çünkü bu sorun genelde ya yazım hatasıdır, ya yazdığınız kod ile baktığınız çıktının farklı olmasıdır. Dışarıdan gelen kişi sizin kadar işin içerisinde olmadığından varsayım yapmadan en aptalca olan şeyleri bile kontrol eder. Yani size “Sunucunun prizi takılı mı?”, “Baktığın tarayıcı cache’ in de mi tutuyor?”, “Çalıştırdığın yazılım eski verisyonu mu son olarak compil ettiğin mi?” diye sorabilir. Siz ise bunları o noktada düşünemeyebilirsiniz (Hatayla Yaşamak ve Sorun Çözmek).

Konu bundan çok daha geniş ama siz zaten konuyu biliyorsunuz, bu ise size bir hatırlatma. Şimdi bir adım geri atın ve düşünün.

 

 

* Makalenin kaynağı BA Business Life dergisi, ancak online olarak bulamadığımdan kaynağı veremiyorum.

** Bu konuda bir çok istisna var, her firma illa TDD kullanacak diye bir şey yok, her projeye uygun da olmayabilir, ama TDD başarısı kanıtlanmış metodolojilerden biri.

*** “yeşil sahalara dönme” kelime grubuna yapılan göndermedir bu, bu noktada okuyucunun suratında bir tebessüm oluşması gerekiyor.