Günlerdir 24saatfirsat.com isimli fırsat sitesinden kurumsal e-posta adresime spam mesajları alıyordum. Tabi spam olduğu için eposta listesinden çıkma özelliğini geliştirememişler daha. Bende doğal olarak iletişim panellerinden e-posta adresimi listelerinden çıkarmaları için bir mesaj gönderdim. Verdikleri yanıt ile ne kadar fırsatçı olduklarını ve isimleri ile özdeşleştiklerini ispatlar nitelikteydi.
24 Saat Fırsat:Sayın Hasan Bey; Mail Gönderimleri Tarafımızdan Yapılmıyor Uluslar Arası Mail Marketing Firması Tarafından Yapılıyor “İzinli Gönderim” Olarak. Gönderim Yapan Firmanın Mail Datalarına Erişim veya Müdahale Hakkımız Bulunmuyor Bu Nedenle İsteğinizi Yerine Getiremiyoruz. Bilgilerinize Sunarız. Saygılarımızla.
Bir an için kötü bir şaka yaptıklarını düşündüm. Benim iznim olmadan e-posta gönderimi yapılıyor ve bunun kendi müdahale alanları dışında geliştiğini söylüyorlar. Bu basit talebimi yerine getiremeyecek süper teknolojik bir spam sistemi kurdukları için kendilerine teşekkür ettim. Mesajı göndermemin üzerinden 1 saat geçmemiştiki cevabım pat diye geldi. Bu kadar hızlı bir müşteri ilişkileri alt yapısına sahip oldukları için ne kadar gurur duysalar azdır.
İşte gelen cevap:
24 Saat Fırsat: xxx@yyy.com Mail Adresi Kayıtlı Müşteri Datamızda Bulunmuyor Bu Adres Mailing Firmasının Kendi Datasında Olan Adresler Arasındadır Bu Nedenle Müdahalemiz Söz Konusu Değildir. Sitemiz Üzerinden Üye Olmuş Müşterilere Sitemiz Üzerinden Otomatik Mailler Zaten Gidiyor Onun Haricindeki Üye Olmamış Kayıtları Tarafımızda Olmayan Mail Adreslerine Mailing Firması Gönderim Yapıyor Onların Datalarına Karışma Gibi Yetkimiz Bulunmuyor. xxx@yyy.com Mail Adresi Müşteri Datalarımızda Olmadığı Halde Mailimiz Size Ulaşmışsa Bu Mailing Firması Datalarınında Bulunduğunuz Anlamına Gelir Bu Firma Size Nasıl Ulaştı Nasıl Kayıtlarına Aldı Bunu Biz Bilemeyiz. Saygılarımızla.
Kendilerini İnternet’in yüce adaletine havale ediyorum
Bilgisayar ortamında yazılan tüm kodlar en nihayetinde derlenir ve 1 ve 0′lardan oluşan bir dizi haline gelir. Gördüğün en afilli program da, en şaşalı web sitesi de, bir virüs de bu düzenin içinde var olmak zorundadır.
Yazılım geliştirme ortamları ve derleyiciler üretilecek olan bir ve sıfırların düzenli bir sırada yan yana gelmesini garanti altına alırlar ve istenilen mantıkta program akışının işlemesini sağlarlar. Eğer kod dizisindeki bazı bir ve sıfırların yerlerini değiştirirsek beklenmeyen hatalar oluşur ve %99.99… ihtimalle program çalışamaz hale gelir.
Peki ya o ufacık bir ihtimal gerçekleşirse? Kod dizisi bozulan program çalışırsa? İşte o zaman programın, yazılımcısının beklediğinden farklı bir akış ve davranış sergileceyeceği kesindir.
Ütopik bir yaklaşımla rastgele kod dizisi üreten bir program geliştirdiğimizi varsayalım. Program, rastgele olarak ürettiği kod dizisini derleyip, bulunduğu çalışma ortamında çalışabilen bir kod dizisi olup olmadığını test edebilir. Test sonucunun olumlu çıkması halinde hiç bir insanoğlunun üretmediği, bir bilgisayar tarafından geliştirilen yeni bir yazılım ortaya çıkmış olacaktır. Ortaya çıkacak yazılım ekrana anlamsız karakterler basan bir program olabileceği gibi, dünyayı yok edebilecek öğrenebilir bir yapay zeka da olabilir. Kim bilir
Rastgele olarak çalışabilir bir yazılımın üretilme ihtimali, insanlığın evrende var olması ihtimaline yakın olacaktır. Bu oranı biraz olsun arttırmak adına, gönüllü bir bilgisayar ağı kurulabilir. Programa dahil olmak isteyenler, bilgisayarlarına kuracakları bir program aracılığıyla, işlemcilerini boş zamanlarında bu proje için ayırabilirler.
Tabi “sonsuz küçük ihtimali” milyonla da çarpsak, neticede “sonsuz küçük ihtimal” olarak kalacaktır.
Bilgisayar programları, insanlardan farklı olarak bulunduğu zamana ya da mekana göre değişmeyecek kesin sonuçlar üretir. Bir yazılımdan aynı girdilere karşı aynı çıktıları alırız.
Özellikle nesneye yönelik programlama dillerinin katı kuralları olduğunu hepimiz biliriz. Tüm yazılımlar bu kurallar çerçevesi içerisinde üretilir. Kuralların dışına çıkmaya çalıştığımızda derleyici aşamasında ya da çalışma aşamasında hatalarla karşılaşırız.
Yazılımcının esas görevlerinden biri yazdığı programın ruhuna bürünerek onun gibi düşünmesidir. Ancak bu bakış açısıyla çok daha hızlı ve stabil programlar yazılabilir. Fakat bazen aklınıza öyle durumlar gelir ki yazacağınız kod satırlarının nasıl çalışacağını kestiremezsiniz.
İşte benden bir kaç örnek:
Birbirinden türeyen sınıflar
Aşağıdaki yapıda 3 adet sınıfımızın olduğunu düşünelim. A sınıfı C’den türesin, C sınıfı B’den türesin, B sınıfı da A’dan türesin. Sizce bu mümkün mü?
publicclass A extends C {
A(){}}publicclass B extends A {
B(){}}publicclass C extends B {
C(){}}
Ufak bir kafa karışıklığına neden olsa da derleyici aşamasında hata mesajını alıyoruz (cyclic inheritance involving)
Boşluk İşaretleyici (Null Pointer)
A sınıfımızın boşluk(null) döndüren getA adında bir fonksiyonu olsun. Bu fonksiyonu dışardan tetikleyip A sınıfına ait sabit test değerini alabilir miyiz?
publicclass A {staticString test ="test mesaji";
A getA(){returnnull; }
A(){}}publicclass Main {publicstaticvoid main(String[] args){
A a =new A();
String msg = a.getA().test;
System.out.println(msg);
}}
Main sınıfını çalıştırdığımızda “NullPointerException” hatası beklerken, hatasız bir şekilde konsolda “test mesaji” yazısını görüyoruz.
Konu hakkında biraz araştırma yaptığımda Java Puzzlers kitabı ile karşılaştım. Java üzerinde karşılaşılan tuzakları, tehlikeleri ve çıkmazları konu edinmiş bir kitap.
İnteraktif uygulamalar ya da oyunlar genellikle süreli olarak yayında kalan işlerdir. Projeler bir kere yayına alınırlar ve kampanya bitimiyle birlikte rafa kaldırırlırlar. Bu tarz projelerinin ortaya çıkma süreci ideal koşullarda şu adımlardan oluşmalıdır: Fikir şekillenir, projenin maketi hazırlanır, tasarım gerçekleştirilir ve son adımda yazılım süreci ile proje neticelendirilerek yayına alınır.
İnteraktif projeleri incelediğimizde hemen hemen hepsinin istenilen bitiş süresinde tamamlanamadığını hatta bazılarında ciddi aksamalar olduğunu görmekteyiz. Süreçleri detaylandırdığımızda aşağıdaki aksaklıklar göze çarpmaktadır.
“Bu proje öyle farklı olmalı, öyle acayip olmalı ki insanlar ilk duyduklarında neye uğradıklarını şaşırmalı” denilerek yola çıkılan projeler genellikle bir dünya emeğin boş yere heba olmasına neden olmaktadır. Fikir aşamasında odaklanılması gereken iki ana nokta vardır: Amaç ve gerçeklenebilirlik. Amaç çok net çizgilerle belirlenmeli, fikir bu çizgiler içerisinde yaratılmalı ve gerçeklenebilirliği fikrin doğum aşamasının her noktasında sorgulanmalıdır.
Proje yöneticilerinin uzaylı olması ve ekibe sadece “ben dostum” demesi
Proje yöneticilerinin ekipteki her çalışanın konuştuğu dili bilmesi gerekir. İş gücünün bir kısmınıda diller arasında çevirilere harcamalıdır. Tasarımcılar, yazılımcılar, teknik ekip, müşteriler arasındaki tüm konuşmalar ve yazışmalar yöneticinin üzerinden gerekli çeviriler, düzenlemeler ve filtrelemeler yapıldıktan sonra ilgili taraflara iletilmelidir. Eğer yönetici bu noktalara yeterince hakim olamassa projenin istenilen sürede planlandığı gibi yayına çıkması zorlaşmaktadır.
Tasarımcıların projeyi “6 günde ben yarattım” havası
Projelerin son kullanıcı tarafında nihai görünen kısmı tasarımcıların elinden çıkmış görsel çalışamalardır. Bu da tasarımcıları “ben yarattım” havasına sokmaya yetmektedir.Tasarımcıların projeye kullanılabilirlik ve uygulanabilirlik açısından yaklaşmadığı sürece ortaya koydukları görsel çalışmanın ne kadar sanatsal ve estetik olduğunun bir önemi yoktur. Çalışmalarını şu sorular eşliğinde yürütmelidirler: Tasarımın çıktısı sabit diskte ne kadar yer kaplar? Tasarım parçalanıp istenilen geliştirme ortamına aktarılabilir mi? Animasyonlar ne kadar işlem gücü gerektirir? Vb.
Yazılımcıların her birinin farklı bir psikolojik vaka örneği olması
Psikolojik sorunları olanlar mı yazılımcı olur yoksa yazılımcılar mı sonradan psikolojik sorunlara sahip olur. İşin içinden çıkabileceğimizi sanmıyorum. Yazılımcı bazen 5 günlük işi 1 günde yaparken bazen de 1 günlük işi 5 günde yapabilmektedir. Kodlamak ile insanın en temel bir kaç ihtiyacından biri olan üremek arasında bir benzerlik olduğuna inanıyorum. Yazılımcılar genellikle sosyal olamadıkları ya da insanları sevmedikleri için kendilerini bilgisayara hapsedebilmektedirler. Yazılımcıların kodlayarak ortaya çıkarttıkları programlar, onların üreme ihtiyaçlarını bir nebze çözmektedir. Ortaya çıkan uygulama onların çocuğu gibidir. Ona hayat öpücüğünü yazılımcı vermiştir. Yazılımcılarla anlaşmak ve çalışmak iyi yönetilmesi gereken zorlu bir süreçtir.
Projenin işlevinden çok boyuna odaklanılması
Proje geliştirilme aşamasındayken her şey istenildiği gibi gitmez. Mutlaka revizyonlar, eksikler, fazlalar ortaya çıkar. Bu gibi durumlarda adım adım işleyen süreçler tamamen birbirine girer. Bir de projenin yayına alınmasına az bir süre kalmışsa arap saçından farksız bir ortam oluşur. İşte bu noktada mühendis bakış açısıyla olaya yaklaşmak ve yapılabilecek olanın en iyisini en az kaynakla ortaya çıkarma üzerine plan yapmak gerekir. Eğer bu süreçte ayrıntılara odaklanılıp, işlevsellikten uzaklaşılırsa kaos içinde kaos vakalarına rastlayabiliriz.
Tabut, altında yığılmış insan kümesinin üzerinde acı çekmeden ilerliyordu. Tek tek insanlar canını acıtırken, topluluklar onda hiç bir acıya neden olmuyordu. Baş kısmından yeni bir el onu havaya kaldırıyor sonra o el arka sıralara düşerken tekrar inişe geçiyordu. Dalgalarda yüzen sörf tahtasından farksızdı. Tek farkı sörf tahtasındaki insanın canlı olmasıydı. İnsanlar dünyanın sonu gelmişçesine surat asarken o eğleniyordu hem de hiç olmadığı kadar.
Bu seferki kalabalık hiç birine benzemiyordu. Ön sıralardan biri “Hakkınızı helal ediyor musunuz?” diye soruyor, hemen ardından sanki tüm insanlık aynı anda “Helal olsun” diye cevap veriyordu. Tabut, kendisini bir an için mahşer gününde hissetti. İnsan selinin ortasında heyecanından kapağı küt küt atıyordu. Ağıltılar, hırıltılar ve bağırtılar yeri göğü inletiyor, bir tek içindekinden ne ses ne seda çıkıyordu. Tabut’un içindeki, bir önceki gün nefesini son kez dünyaya vermiş ve bir daha geri alamamıştı. Artık o nefes bir başka bedende can bulacak yeni öykülerin ana, yan ve atıl rollerini oynayacaktı.
Tabut her zaman yaptığı gibi camiden mezarlığa gidene kadar içindekinin hikayesini düşündü. Nasıl bir hayat yaşamıştı? Yılları, günleri, saatleri nasıl geçmişti? Kaç kere heyecandan ölecek gibi olmuştu? Her bir soruya kendince cevaplar veriyor, her bir cevap yeni soruları da beraberinde getiriyordu. Gasilhanede, kadınlar kapağını kaldırıp naaşın kefenini içine sererlerken görmüştü içine konulacak olanın saf ve üryan bedenini. Bembeyaz saçları bilgeliğini anlatıyor, göz altı çukurları kederlerini ele veriyor, tırnak dipleri çalışkanlığını ortaya çıkarıyordu. Naaşı içine yerleştirdiklerinde, tarif edemediği bir enerjinin tüm tahtasını sardığını, kıymıklarını tel tel ettiğini hissetmişti.
Düşünce bulutları arasında kaybolmuşken, Tabut’un altındaki insan devinimi bir anda durdu. Artık, kadim dostu toprak onu ve içindekini taşıyordu. Tabut’un derin sessizliğini, onlarca elin kapağını hunharca kaldırması bozdu. İçlerden ikisi mezarın içerisine girmiş, ellerini semaya kaldırmış, Tabut’un içindekinin onlara verilmesi için Allah’a dua eder gibiydi. Onlarca el, Tabut’un içindekini tek harekette koparıp, ellerini semaya dikmiş iki gence uzattılar. Gençler naaşa öyle güçlü sarılmışlardı ki, toprak gelmiş geçmiş en değerli armağınını alıyor gibiydi.
Tabut, kapağının kapatılmasının ardından, içindeki büyük boşlukla tekrar başbaşa kaldı. Bu zamanları hiç sevmiyor, nefret ediyordu. Tek isteği tüm insanlığı hiç ara vermeden gömmekti. İçindeki boşluğu düşünmeden, hissetmeden doldurabileceğini ümit ediyordu hayaller dünyasında.
Son Yorumlar