Takip ettiğim listelerde bazen kayda değer tartışmalar oluyor. Bunlardan biri de en son teknolojilerin kullanılması ve yazılım sektörüne sağladığı yarar/zarar tartışması idi. Son teknolojileri kullanarak yazılım geliştirmek ve bunun arkasında yatan nedenler firmalara yada projelere ne kazandırıyor? gibi bir teması vardı.
Adı lazım değil; büyük firmaların, pazar payının çoğunu elinde bulundurabilmek için yaptığı reklam kampanyalarına ve yazılım uzmanlarının gözünü boyamak için yaptığı girişimlere bir bakın. Ürünlerinin adını duyurabilmek ve örütbağı üzerinde kendilerinden daha fazla söz ettirebilmek için uyguladıkları yol, Wired üzerinde okuduğum reklam kampanyası metodlarının aynı. Bir kaç tane ünlü blogcunun da sizden bahsetmesini sağlarsanız aslında her tarafı yamalarla dolu ürününüzü teknolojide ki son nokta olarak göstermek ve milyonlara satmak hakikaten kolay.
Hal böyle olunca gözü boyanmış proje müdürlerinin de bu teknolojileri kullanmak istemesi ve sonunda kabağın yazılım uzmanlarının başında patlaması da doğal tabii. Denenmiş ve iyi bilinen teknolojiler yerine, daha yeni ortaya çıkmış, tonla hatası olan, hakkında döküman olmayan veya mevcut sistemlere uymayan teknoloji parçalarını entegre etmeye çalışmak maliyetleri arttırmayacak mı?
Ben eskiden zamanımın büyük bir bölümünü sistem kurmakla ve en son çıkan ne varsa kurup denemeye ayırıyordum. TFS, SQL Server 2005, Office 2007 gibi ürünleri daha ortaya çıkmadan betalarını kurup deneme imkanım oldu ama farkettim ki sonunda -bloguma yazdığım yazılar dışında- elle tutulur bir kazancım olmuyor. Birde üstüne zaman kaybediyorum. Halbuki zamanımı refactoring veya “code review” ile geçirsem benim için daha faydalı olacaktı.
Velakin, olayın farkına varıp kurulum olaylarını bıraktım. Böylece araştırma ve geliştirmeye daha fazla vakit ayırıyorum. Kaç kere kod yazmak için bilgisayarın karşısına oturupta kendinizi Facebook’a takılırken buldunuz? İşte bunu bırakmak lazım, hatta network/modem kablosunu çekip dış dünya ile olan bağlantıyı keserek konuya konsantre olmak gerek. Beni nadiren MSN’de görenler bilirler. MSN’i sadece gerektiği zaman açıyorum.
Neyse konumuza dönecek olursak, en yeni teknolojilerin kullanılmak istendiği bir projeye adım atıyorsanız; gereksinim ve maliyet analizi yaparak elde edilecek yararları görünür hale getirmeniz lazım. Eğer yazılım uzmanlarının büyük çoğunluğu VB.NET biliyorsa kalkıpta J2EE kullanmanın ve getireceği yararları düşünerek hayal kurmanın anlamı yok. Eğer müşterinin istekleri VB.NET ile daha hızlı biçimde karşılanabilecekse mantık olarak VB.NET kullanmakta yarar var.
Bence “süper teknoloji” diye bir şey yok. En azından yazılım dünyasında. İyi yada kötü yazılımcı var ama. İyi yazılımcı elindeki teknolojiyi en iyi biçimde kullanan ve müşterinin isteklerine zamanında cevap veren yazılımcıdır bence. Tabii bizim işimiz bir ekip işi olduğu için ekip içinde çalışmanın kuralları da var işin içinde. Yazılan kodun mükemmelliği, performansı ve kolay bakım yapılabilmesi ile ölçülmeli ve yazılım uzmanına gurur vermeli. Gudubet gibi kod yazmanın ve sonrasında bakımı mümkün olmayan programlar ortaya çıkartmanın ne bize nede çalıştığımız firmaya ve ekonomiye bir katkısı olmuyor. Sonradan ya ebemiz yada aile yakınlarımız çekiyor ceremesini.
İlla AJAX kullanıp Web2.0 uygunluğunda bir şeyler ortaya çıkartacağız diye fonksiyonellik ve kullanım açısından rezalet bir web sitesini alalım ele. Teknolojiyi kullandın tamam güzel de ne yararı var insanlara. Kaç kişi senin Web2.0 özelliklerini kullanıyor. Bırakın mesh-up yapmayı İnsanlar daha RSS nedir bilmiyor. Listelerde tartışılan en az iki proje son teknolojilerin kullanılması yüzünden bu şekilde bırakılmış. Yazılan kod artık o kadar çok arap saçına dönmüş ki bakımı ve değiştirilmesi imkansız hale gelmiş. Yeni teknolojilerin Beta sürümlerinin kullanıldığı ve her yeni sürüm ile bağımlılıkların bozulması, entegre ve arayüz kodlarının yeniden yazılmasının gerekliliği işi daha da zorlaştırmış.
Her zaman son teknolojiyi kullanmak; güvenilir bir sağlayıcıdan da gelse, iyi bir şey olmayabilir. Araçların Beta sürümleri ile projeye başlamayı düşünüyorsanız, ya çok maceracı birisiniz yada tedaviniz tam bitmeden hastaneden ayrılmanıza izin veren doktoru dava etmelisiniz. 🙂
Uygulamanızın kimler tarafından kullanılacağını ve bu kullanıcıların teknik seviyeleri ile kullandıkları iş akışı modellerini iyi bilmeniz lazım ki ihtiyaçlarına cevap verecek sade ve kolay kullanılabilir bir ürün sunabilesiniz. Her türlü grafik cambazlığın yapıldığı, 3 boyutlu butonlar ve ekranlar yüzünden kullanılmaz hale gelen bir de kullanılan teknolojinin hataları yüzünden sürekli çöken bir yazılım sunarsanız piyasaya, firmanın ölüm fermanını kendi ellerinizle imzaladınız demektir.
Benim tavsiyem yeni teknolojiler tamamen pişene ve en az bir “service pack” çıkartana kadar beklemek ve sonra uygulamak olur. Zaten kısıtlı olan zaman ve finansal değerler bu uğurda heba olmaz. Bu yeni teknolojileri nasıl olsa birileri test eder.
Diğer bir gözlemimde yeni teknolojilerin ortaya çıkma sebebidir. Genelde bir müşterinin şikayet ettiği veya istediği özelliği firma yazıp ortaya çıkarır günahıyla sevabıyla ve müşteri kullanır bunu. Tabii tek bir müşteri için ne kadar büyük olursa olsun bu araştırma geliştirmeyi yapmak karlı değildir. Ne yapar bu firma o zaman. Atı boyayıp zebra diye yutturmaya çalışır değil mi? Konferanslar, medya reklamları ve sanki bir çağ kapatıp bir çağ açacak bir teknoloji gibi gösterdikleri ürünü pazarlamaya çalışırlar. Süperdir, eskisinden hızlı çalışır, her ortamda çalışır, performansı mükemmeldir, 100bin kullanıcı aynı anda kullanabilir, esnektir, genişleyebilir vs artık listeyi siz uzatın. Tabii bizde az değiliz, karga gibi parlak ne görsek atlıyoruz üstüne.
Sonuç olarak zamanınızı boşa harcamayın, çevrenizdeki herkes yeni bir şeyler öğreniyor (veya öyle görünüyor) diye kendinizi geri konumda görmeyin. Bir şeyler öğrenmek istiyorsanız bırakın önce o teknolojiler pişsin, biraz ticari projelerde kullanılsın, yamaları kapansın. Öğrenmek nasıl olsa kolay bir kitap veya yazılan kodu okuyarak. Örütbağındaki herkes Ruby On Rails öğreniyor/yazıyor diye sizde kendinizi zorlamayın. Merak ediyorum ne kadar sürecek Ruby On Rails fırtınası. Sağladığı tek yarar var o da bundaki bazı teknolojik metodların bildiğimiz dillerde de uygulanmaya çalışılması. Yani biraz dişimizi sıkacak olursak bu metod bizim programlama dilimize de gelecek.
Hadi bakim, blog okumayı bırakıp biraz kod yazalım. O refactoring yapmanız gereken sınıf vardı ya hep “nasıl olsa çalışıyor” diye göz ardı ettiğiniz. Onu bir düzeltelim, performansını arttıralım, araya bir kaç ünite testi filan koyalım; hadi bakim…