19 Ağustos 2009 Çarşamba

7 ve 0 yedi ve sıfırdan nefret ediyorum

Aslında batıl inançlarım yoktur ama hadi birlikte karar verelim. bu sayılardan nefret etmem gerekirmi...

birgün 80 kadar bilgisayrı için yeni bir network oluşturuyorum. her bir bilgisayar numaralandırılmış 1 den 80 e kadar. 2 bilgisayar hariç bütün bilgisayarlar sorunsuz çalıştı tahmin edin hangi bilgisayarlar? evet 7 ve 70 numaralı bilgisayarlar. baya ugraştırmışlardı beni.


yine başka bir dönem ve başka bir iş 20 bilgisayarın kurulumu yapılacak hayatımda ilk defa harddisk yaktım hemde ust uste 2 kez tahmin edin bilgisayar numarasını doğru! 07

hayatımdaki en kötü olaylardan birini yaşadığım tarihi duyduğunuzda gözlerinize inanamayacaksınız çoğunuz biliyorsunuz bir trafik kazası geçirdim ve yaklaşık 16 ay yattım. bu kaza yüzünden alnımda kocaman bir yara belimde platin var ayrıca sol dizimide hiç bukemiyorum. evet tarih geliyor 7 temmuz 2007 yani şöyle bakalım tarihe 07/07/07 :) sişzce 7 ve 0 rakamlarından nefret etmelimiyim? acaba gerçektende bir ugursuzluk bir gariplik yokmu bu rakamlarda benim adıma.

Sıkıcı... anlamsız...

Bu yaşıma geldim milletin (anlamadığım kısım burası) tek bir saniyesini bile kaçırmamak için türlü taklalar attığı maçları sıkılmadan nasıl izlemeye dayanabildiğini anlayamadım
hiç sevmem şu futbol olayını. izlemek tam bir işkence. hani iyi birşey mi bu maçları izlemek iyi birşeyse bende izliyeyim ama hiç bir kazancı yokki. yani futbolcular tabi çuvalla aprayı götürüyor diye koşturuyorlar o toğpun peşinde 22 kişi ama sizin kazancınız ne? hemen söyliyeyim maçı izlerken karşı takımdan yediğiniz küfür hakaret ve dayak haricinde? birde tabi zaman kaybı. arkadaşlarınızın tamamıyla aynı takımı tutamıyorsunuz ve eger takımınız yenilgiye ugradıysa arkadaşınızın alay konusu oluyorsunuz cunku takımınızın yenilgisi sizin sucunuzdur :) bıçaklamalar yaralamalar hatta ölümler bile olmuştur bu maçlar yüzünden ama kim ne kazanmış şimdiye kadar? anlamsız sıkıcı ayrıca zaman kaybı.

arabesk? nedir arabesk neden dinlenir birde damar denir damardan falan :) zaten dertlisinizdir derdinize dert katmak neden? neden daha cok canınızı yakmak istersiniz. bir gün felsefe ögretmenime sormuştum hocam arabesk müzik ve insan üzerindeki etkileri hakkında ne söyleyebilirsiniz diye? hocam şöyle dedi. arabesk sadece insanın icini karartır depresyona iter hatta ölüme bile götürebilir... bu anlamsız müziği hala severek dinliyormusunuz :) devam edin...

hayal kurmak? herşey iyi güzel hayal kurmak gerçekten bazen iyi hissettirir tabi hayaliniz duman olunca bir okadarda üzülürsünüz. hayal kurmadan yaşanmaz tabi ama hayal kurmak yerine hedef belirlemek daha mantıklı değilmidir? hayal adı üstünde haya erişilmez ulaşılmaz yda onun gibi birşey olduğu için haya ama hedef! tercümeye gerek yok.

18 Ağustos 2009 Salı

Bir programcının parmaklarının ucunda imkansız diye bir şey yoktur!

bu sözü bir çok yerde duyar görür işitir oldum yıllar önce bir projemde sisteme ters düşen bir olay üzerine iş arkadaşlarım "vazgeç artık bunu yapmak imkansız" deyip duruyorlardı ve bende onlara cevaben "Bir programcının parmaklarının ucunda imkansız diye bir şey yoktur!" dedim ve o imkansız denilen sisteme ters düşen olayı bir kaç aldatmacayla aşarak sonuca ulaşmıştım bu söz ata sözü sayılmaz belki ama o zamanlar ne program vardı ne programcı o yüzden CodeMania sözü diyelim şimdilik ilerki zamanlarda ata sözü sayılabilir ha nedersiniz :)

17 Ağustos 2009 Pazartesi

İmkansız diye birşey yoktur

Bir şeyin imkansız olduğuna inanırsanız, aklınız bunun neden imkansız olduğunu ispatlamak üzere çalışmaya başlar. Ama bir şeyin yapılabileceğine inandığınızda, aklınız onu yapmak üzere çözümler bulmanıza yardım etmek için çalışmaya başlar | Dr. David J. Schwartz

12 Ağustos 2009 Çarşamba

Şikayetim var

her zaman iyi bir bilişimci olmak size iyi bir kariyer getirsede bir çok kez başınıza dert açıyor. sırf kendileriyle çalışayım diye kafama silah dayayan rakip firma sahipleride olmadı desem yalan olur, bu işimde çok iyi olduğumu göstermez belki ama rakip görülmek istenmeyen biri olduğumuda düşündürmedi değil tabi bunun yanında etrafınızdaki herkese ücretsi danışma hattı gibi görünmeniz işin tuzu biberi olur gecenin hangi saati olursa olsun insanlar size bilişim sektoruyle alakalı soruları sorma hakkını kendinde buluyor ornegin gece 3 ve ısrarla telefon çalıyor açıyorsunuz selam müslüm ben falanca ya şöyle bir program varmı şu işi yapan cevap verirsiniz yarı uykulu senin...... tabi böyle değil var tabi işte programın adı şu googleye yaz çıkar. ve uykuya dalarsınız 15 dakikalığına yine ısrarla çalar telefonunuz, müslüm yine ben kusura bakma rahatsız ediyorum(farkındadır ama etmeye devam eder) yok estafrlh buyur o dediğin programdan başka yokmu birde msn e gir iki dakika bana sen yolla yorma beni aramakla(emradersiniz) yada bir arkadaşınız bilgisayar alacak en ucuzu en iyiyi almak ister öneri ister önerirsiniz sonra bir gün virüs bulaşır suçlusu siz olursunuz bilgisayarı siz önermişsinizdir ya. virüsün giriş sebebide siz olursunuz bir anda yada sizin önerdiğiniz bilgisayara virüs girmişse 5 para etmez bildikleriniz! daha milyonlarcası vardır, bazen keşke bu sorular yerine onlarda kafama bir silah dayayıp tetiği çekse dedirten cinsten...

11 Ağustos 2009 Salı

Yazılım geliştirmeye değişik bir bakış...

Programcılıkta sabahlamanın verdiği huzur ve tatmin çok meşhur. Programcılar sabaha kadar çalışma konusunda herkesi şaşırtan derecede istekli ve beceriklidir. Bu gece çalışması boyunca beyin bir "akış" yakalayarak saatlerin su gibi geçtiği bir çalışma ortamı oluşur. Bu çalışma sırasında beyin en derin konsantrasyon düzeylerine erişir ve genellikle zor programlar bu kesintisiz, onlarca saat süren çalışmalarda ortaya çıkar. Beyin bu stilde çalışırken kişilerin mutlu oldukları, mutluluk düzeylerinin arttığı bilimsel çalışmalarla gözlemlenmiştir. Bu çalışmalar eski Chicago Üniversitesi Psikoloji Bölüm Başkanı Mihaly Csikszentmihalyi tarafından yapılmıştır. Çalışmalarda çeşitli disiplinlerden yüzlerce kişinin günlük uğraşları incelenmiş ve bu sırada "mutluluk" düzeyleri gözlemlenmiştir. Bu çalışmaların programcılar tarafındaki bulguları ise ilginçtir. Her ne kadar programcılık bir bilim dalı (Computer Science), bir mühendislik (Software Engineering) olarak düşünülse de programcıların beyninin sanatçıların çalışma stiline sahip olduğu ortaya çıkmıştır. Programcılık sırasında beyin bir "akış" moduna geçmekte, etraftan ilişkisini kesmekte ve bir probleme günlerce konstantre olabilmektedir.

Başarılı programcıların çoğu konsantrasyon yetenekleri ile çevrelerini şaşırtır. Saatlerce sıkılmadan bir ekran başında vakit harcayabilirler. Bu saatler bir çok kez günlere kadar uzayabilir. Yaşamsal faaliyetler dışında hemen hemen her şeyden izolasyon gereklidir. Microsoft'ta Office yazılım geliştirme ekibinden bir programcının kendini odasına kilitleyip "bitmeden çıkmayacağım" demesi, Bill Gates'e bile kapıyı açmaması meşhurdur. Bu olay daha sonra Douglas Coupland'ın Microserfs (1996) kitabına konu olmuştur. Bu sırada kendini odaya kilitleyen programcının arkadaşlarının süper marketten gidip yassı yiyecekler alması ve kapının altından odaya atmaları, programcılar arasındaki dayanışmanın güzel ve sevimli bir örneği.

Bu çalışma sırasında programcı en derin düşüne moduna geçer ve etraftan kendini izole etmeye çalışır. Bir çok programcı bu amaçla müziği kullanır. Ancak müziğin programcılık sırasında beyne olan etkileri üzerine yapılan çalışmaların bulguları şaşırtıcıdır. Kreatif programlama ile müzik dinleme sırasında kullanılan beyin bölgesi aynıdır. Beyin bir müziğe konsantre olmuşken çok derin programcılık yapılamıyor. Ya da yeteri kadar iyi yapılamıyor. Programcının müziği kapatınca etraftaki gürültünün etkisi ile müziği dinlediğinde beynin gerekli bölgesinin meşgul edilmesi arasında bir tercih yapması gerekir. Tahminen bu nedenle izolasyon amaçlı müzik kullanımında elektronik müziğin, hard rock, alternatif rock ve heavy metal gibi müzik türlerinin daha fazla tercih edildiği görülür. Müzik, beyin ve programcılar üzerinde çalışmalar halen sürüyor, bu derin konu araştırılmaya devam ediyor. Şu anki bulgular, kritik kodların geliştirilmesi ve müzik dinleme sırasında kullanılan beyin bölgelerinin aynı olduğunu gösteriyor. Monoton kodlama (maintenance) diyebileceğimiz program geliştirme kısmı ise beynin başka bir bölümünde gerçekleşir. Bu tür kodların geliştirilmesi sırasında müziğin programlamaya herhangi bir negatif etkisi görülmemiştir.

Programcının kritik kodları yazmak için ihtiyaç duyduğu "akış" modunu koruyabilmesi için izolasyona ihtiyacı bulunur. Bu izolasyon arttıkça çalışma derinleşir, ilk önce beyinde yazılmak istenen programın çatısı oluşur, problem önce beyinde çözülür, daha sonra beyinde çözülen bu problem koda çevrilir. Programcının beyni pencereden dışarıyı seyrederken ya da gözler sabit bir yere bakıp dalıp gittiği zaman bu problem çözülmeye çalışılır. Hatta programcının beyni bu problemi uyurken, araba sürerken ve diğer başka monoton işleri yaparken ele almaya devam eder. Bu durumda sıfırdan ve baştan yazılan bir programa bakıldığında kodlama toplam sürenin oldukça az bir bölümünü almaktadır.

Bu çalışma sırasında beyin son derece karmaşık bir aktivite içerisine girmiştir. Var olmayan bir çözümü oluşturmak için "kreatif" süreç başlamıştır. Bu süreç duyu organlarını izole etmiş ve yaratıcılığa yoğunlaşmıştır. Bu süreç sırasında programcı onlarca konuda karar vermektedir. Değişken isimlerinden, akış yöntemlerine, parametrelerin cinsinden, kullanıcı ara birimine kadar bir programcı sürekli bir "karar alma" uğraşısı içerisindedir. Programcılar bu nedenle bir günde yüzlerce kararın altına imza atma becerisine sahip iyi birer karar vericidirler.

Tam bu yoğun programlama sırada birisinin programcının omzuna dokunduğu zaman bir "ara verme" operasyonu başlar. Bu ara verme operasyonu tam gaz giden bir arabada aniden frene basma gibidir. Derinleşen "kreatif" süreç derinliğini yitirir ve duyu organları "açılarak" omuza dokunan kişi ile iletişime geçilir. Bu geçiş çoğu zaman o kadar kolay olmamakta ve programcılar bu nedenle zor iletişim kurulan kişiler olarak görülmektedir. Bir soru sorulmaktadır. Eğer bu soru şu an üzerinde çalışılan konuyla ilgili ise mevcut kreatif süreç bu soruyu cevaplamakta kullanılır. Sorunun "bağlam" ile ilgili olması, sürecin durdurulmasını gerektirmez. Örneğin bir veri tabanı tasarımında yandaki programcı bir tablodaki alanın ne işe yaradığını sorduğunda süreç durdurulmadan cevap verilebilir. Cevabın verilmesi için gerekli bütün malzeme, zaten o sırada beynin çalışma bölgesine getirilmiş hazır halde bulunmaktadır.

Ama eğer bu soru bambaşka konularla ilgiliyse: "Bu iş ne zaman bitecek"ten tutun da , "dün maçı seyrettin mi?" ye kadar değişik açılardan gelen bir soru olabilir. Bu durumda ancak bu kreatif süreç durdurularak bu soruya cevap verilebilmektedir. Ya da çoğu programcı bu soruyu "duyacak" ama "algılamayacaktır". O an durumu kurtaracak bir cevap vereceklerdir: "yarına biter" vs gibi. Yapılan basittir: kreatif süreç bölünmeden çalışmaya devam etmek istenmektedir. Bu sırada soruyu soran kişi doğal olarak programcıların zor iletişim kurulan kişiler olduğunu düşünecektir. Oysa programcının beyni hız kesmemeye çalışmaktan başka bir şey yapmamaktadır.

Programcılar çoğu zaman konuşmayı pek sevmeyen ve zor iletişim kuran kişiler olarak bilinmektedir. Bu yanlış inancın temelinde, programcıların konsantre olma yetenekleri ve bölünmelere karşı geliştirdikleri iletişim "önlemleri" yatmaktadır. Oysa yazılım geliştirme ekipleri oldukça konuşkan olabilirler. Fark konuşulan konularda yatmaktadır... "Windows mu iyidir, Linux mu?" tartışmalarını dinleseniz programcıların az iletişim kurdukları konusundaki fikirleriniz tam tersi yönde değişecektir.

Eğer bölündüğü sırada programcı soruyu tam olarak algılayıp doğru bir cevap vermeye çalışırsa, soru "bağlam" dışı ise kreatif sürecin durması gerekmektedir. Duran bu akışın yeniden eski kaldığı noktaya geri dönebilmesi, kişiye çok bağlı olmakla beraber, on beş dakikaya kadar çıkabilmektedir. Konsantre olma yeteneği yüksek olan programcılar bölünen bu süreci daha hızlı bir sürede eski noktaya getirebilmektedir.

Programcılık sırasında beynin bu çalışma stilinin anlaşılması programlama ortamlarının ne kadar özenle seçilmesi gerektiği konusunda önemli ipuçları sağlamaktadır. Programcıların bu bölünmelerden korunması gereklidir. Daha da önemlisi programcıların kendilerini bu bölünmelerden korumaları gerekmektedir. Csikszentmihalyi ve ekibin yaptığı çalışmalar bu derin çalışma sürecinin ne kadar kırılgan olduğunu ve izolasyona ihtiyaç duyduğunu açığa çıkarmaktadır.

Kanımca bir çok yazılım hatası (bug) bu bölünmeler sırasında ortaya çıkmaktadır. Televizyonda bir motor yağı reklamını izlediğimi hatırlıyorum. Reklamda "motor ısınıncaya kadar olan sürede aşınır yıpranır oysa bu motor yağı mıknatıs özelliklerine sahiptir ve motor çeperine yapışık kalarak ısınma sırasında bile motorun yıpranmasını önler" diyordu. Bu reklamda anlatılan olayı programcılıkta çok gördüğümüzü düşünüyorum. Yeteri kadar ısınmadan, soğuk bir "beyinle" yapılmaya başlanılan programcılık sonucunda oldukça "hatalı (bogus)" kodlar üretildiğini düşünüyorum.

Meslek hayatımda karşılaştığım binlerce yazılım hatasını masaya yatırdığımda bu tür hatalarla karşılaştığımı görüyorum. Hataların bu kreatif sürecin hangi aşamasında yazılmış olabileceğini tahmin etmeye çalışıyorum. Bir programcı bölünme ile karşılaştığı zaman -üstelik bu bölünme bir SMS mesajı yazmak gibi zor ve zahmetli olup, beyni oldukça uğraştıran cinsten ise- programlama sürecinin beyinde eski aktivite düzeyine yükselmesi çoğu zaman yaklaşık 15 dakika sürecektir. Bu süreç sırasında hatasız bir kod üretimi için programcının kritik bir kod yazmaması gereklidir. Konsantrasyonun tam sağlanamayacağı bu ısınma dönemi, unutulan kontroller, atlanan olasılıklar ve hiç kodlanmayan program akış dallarına neden olacaktır.

Çağımızda bu bölünmelerin başlıca sebepleri cep telefonları, gelen SMS mesajları ve Instant Messaging programlarıdır. Bölünmemek için iletişimsizliğe ihtiyacımız varken çağımız bir iletişim çağı olmuştur. Watts Humprey, Software Engineering Institute tabanlı Personal Software Process'in (Kişisel Yazılım Süreci - PSP) geliştiricilerinden birisidir. Kendisi uzun yıllar IBM'de çalışmış, OS390 projesinde yer almış ve yazılım geliştirmenin önemli duayenlerinden birisi olmuştur. PSP bir programcının iyi program yazması konusunda kendini nasıl geliştireceğinin ana hatlarını çizer. Humprey'in PSP'yi anlattığı "Introduction to PSP" kitabını aldığımda şaşırdığım bir konu olmuştu. Kitabın ilk bölümlerinin zaman yönetimi ve bu bölünmelere karşı mücadele olduğunu görüp şaşırmıştım. Humprey, programcıları bu bölünmelerle mücadele konusunda bilinçlendirmeye çalışıyordu.

Yazılım geliştirme sürecinin tam verimiyle çalışması için bu sürecin korunmaya ihtiyacı olduğu çok açık. Bir programcının etrafında oturanlar, yöneticileri, ona SMS gönderenler bu sürecin geç cevap alacaklarının farkında olmalıdır. Böyle bir zihinsel durumdaki yazılım geliştirmeciyle olan iletişim senkron (eş zamanlı) değil asenkron (farklı zamanlarda) olmalıdır. Şu sıralar programcılıkta popüler olan yeni bir akım var. Entegre edilen sistemlerin birbirleriyle senkron bağlantılar yerine "loosely coupled" (gevşek eşleştirme) dediğimiz asenkron yöntemlerle bağlanması. Sanırım "akış" anını yakalamış bir programcı ile iletişimin de en sağlıklısı "loosely coupled" türden olacaktır.